Высокопроизводительное постоянное хранилище значений ключей для огромного количества записей

Сценарий составляет около 1 миллиарда записей. Каждая запись имеет размер данных 1 КБ и хранится в SSD. Какой магазин kv может обеспечить лучшую производительность случайного чтения? Необходимо ограничить доступ к диску только 1 раз за запрос, и все данные индекса будут храниться в памяти.

Redis работает быстро, но хранить данные объемом 1 ТБ в памяти слишком дорого. LevelDB читает диск несколько раз за запрос. Самый близкий из них, который я нашел, это fatcache, но он не постоянный. Это memcached с поддержкой SSD.

Какие-либо предложения?

4 ответа

Решение

RocksDB может быть выбором для вас, который оптимизирован для быстрого хранения, такого как память и флэш-диск, и его легко настраиваемый. Если ваше приложение доступно только для чтения после начальной массовой загрузки, то вы можете настроить RocksDB так, чтобы все упаковывалось в один большой файл. Таким образом, операции чтения гарантированно будут иметь не более одного ввода / вывода. Однако, если ваше приложение обрабатывает как чтение, так и запись, то для того, чтобы иметь не более одного ввода-вывода на чтение, вам придется пожертвовать производительностью записи, так как вам нужно очень часто конфигурировать rockdb для сжатия, а это снижает производительность записи.

Руководство по настройке для RocksDB также можно найти здесь.

Вы можете попробовать RocksDB, это библиотека facebook, которая оптимизирована для хранения SSD. Вы также можете попробовать Ardb, это совместимая с протоколом Redis NoSQL DB сборка на RockDB/LevelDB/LMDB.

Вы смотрели на аэроспайк? Я им не пользуюсь, но они утверждают, что имеют хорошие характеристики на SSD.

LMDB работает быстрее, чем RocksDB, и использует 1/3 объема памяти. Также LMDb не требует настройки; RocksDB требует тщательной настройки более 40 параметров, чтобы получить производительность, которая приближается к LMDB.

http://www.lmdb.tech/bench/inmem/scaling.html

Также LMDB полностью транзакционен и на 100% защищен от сбоев, RocksDB - ни тот, ни другой.

Другие вопросы по тегам