YCSB не выполняет шифрование само по себе, но полагается на java-драйвер MongoDB. Вы пробовали документацию MongoDB?
Какой тип шифрования вы используете?
Я не нахожу ваш результат таким уж удивительным. Согласно вашему вопросу, ваш файл рабочей нагрузки выглядит так:
recordcount=10000000
operationcount=100000
readproportion=0
updateproportion=0
scanproportion=0.95
insertproportion=0.05
requestdistribution=zipfian
maxscanlength=100
scanlengthdistribution=uniform
Это очень интенсивная рабочая нагрузка сканирования. Во-первых, сканирование — это самая медленная операция в хранилищах столбцов. Во-вторых, если предположить, что шифрование занимает 250 мс, а дешифрование — 400 мс, то и клиент, и REST-сервер должны делать это для каждой операции, поэтому это займет: (0.25 + 0.4)*100000
секунд, т. е. около 18 часов.
ИЗМЕНИТЬ
Согласно вашим комментариям, вы используете AES256 и сравниваете рабочие нагрузки A и E. Рабочая нагрузка A составляет около 50% чтения и 50% записи. Если вы используете стандартный размер строки YCSB, каждая строка представляет собой 1 КБ (10 полей по 100 байт каждое).
Итак, для 100 тыс. операций вы манипулируете следующими объемами данных:
- Рабочая нагрузка А:
100000*0.5*1kB + 100000*0.5*1kB = 100 MB
- Рабочая нагрузка E:
100000*0.95*100*1kB + 100000*0.05*1kB = 9505 MB
, потому что ваши сканы представляют 100 строк!
Поскольку AES является дистрибутивным, то есть AES(A + B) = AES(A) + AES(B)
, вы шифруете в 95 раз больше данных с рабочей нагрузкой E, что объясняет разницу во времени.
person
Phenyl
schedule
12.07.2017