Nano Hash - криптовалюты, майнинг, программирование

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

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

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

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


Ответы:


1

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

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

15.09.2014

2

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

14.09.2014

3

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

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

Кроме того, LMDB является полностью транзакционной и на 100% защищенной от сбоев, в отличие от RocksDB.

23.09.2014
  • Я сравнил RocksDB и LMDB. В моей тестовой среде побеждает RocksDB. 25.09.2014
  • Я предполагаю, что LMDB выиграет, когда все данные можно будет загрузить в память. Вот моя тестовая среда: 4GB RAM VM, 10M записей, каждая запись имеет ключ размером 16 байт и значение размером 1024 байта. Вы можете видеть, что этот размер данных составляет не менее 10 ГБ. Я неоднократно пробовал случайное чтение в тестовом наборе несколько раз, и RocksDB всегда побеждает. 25.09.2014
  • Конечно, это зависит от размера значений. См. этот новый отчет о производительности на диске: symas.com/mdb/ondisk. 30.11.2014
  • @hyc Действительно ли RocksDB не является ACID? 12.11.2016
  • В 2014 году было. Я считаю, что они утверждают, что добавили ACID txns в этом году. 12.11.2016
  • Все ссылки lmdb в этом посте не работают. 22.03.2017

  • 4

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

    13.09.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..