среда, 20 августа 2014 г.

Микро-бенчмарк RocksDB server

В полноценном смысле то что я тут хочу написать, конечно бенчмарком не является. Но вполне способно дать понимание области применения RocksDB.

RocksDB -- это довольно таки крутое хранилище, являющееся (на данный момент) встраиваемым решением.
Главной фишкой RocksDB является то, что она рассчитана на использование на flash накопителях. Т.е. на SSD дисках.

Лично я давно ждал появления таких решений. Поскольку память все еще дорагая, а жесткие диски медленные. Поэтому использование SSD для хранения данных -- очень логичный шаг.

Как я уже говорил, RocksDB -- встраиваемое решение. И не является сервером. Я честно ждал почти год, когда кто нибудь напишет или хотя бы начнет писать серверную обертку над ней. Но то что появилось за это время по разным причинам категорически меня не устраивает.
Поэтому я написал собственную серверную обертку: https://github.com/valmat/RocksServer. В настоящее время вполне функционален, протестирован и готов к работе. Но есть еще моменты требующие улучшения. Эти моменты ни как не связаны с его пригодностью к использованию, поэтому ничто не мешает уже сейчас произвести замеры производительности.

Замеры я осуществлял с помощью идущего в комплекте с сервером драйвера для PHP. Во первых мне так было удобнее, а во вторых использовать я его в ближайшее время буду из PHP.

Итак, табличка.

MultiGet со случайными ключами.

Условия проведения эксперимента:
В бд 1000000 ключей. Выбирается набор случайных ключей в случайном порядке.
Кэш не используется. Прямо перед экспериментом я перезагрузил компьютер что бы полностью исключить возможность использования файлового кэша.
Хранимые значения имеют длину 50 +-5 байт
Количество
ключей в выборке
SDDHDD
504.7 ms131.3 ms
30012.6 ms2371.4 ms (~2s)
100029.5 ms7918.4 ms (~8s)
10 000124.6 ms45229.5 ms (~45s)
100 0002346.6 ms51855.8 ms (~56s)


Следует отметить, что после попадания ключей в кэш скорость выборки на HDD возрастает и приближается к скорости выборки на SDD.

Какие выводы можно сделать из таблички? RocksDB действительно очень быстрое хранилище и подходит для использования ее на SDD дисках.

PS Сама RocksDB обладает очень богатыми возможностями. В настоящий момент я реализовал лишь базовый необходимый мне функционал. В дальнейшем, постепенно я планирую наращивать функциональные возможности RocksServer.


Комментариев нет:

Отправить комментарий