RocksDB

Бесплатно
Открытый исходный код
Windows
macOS
Linux
Android
iOS

Сайт: rocksdb.org

RocksDB — высокопроизводительное встраиваемое key‑value хранилище, разработанное на основе Log-Structured Merge‑tree (LSM‑tree) и оптимизированное для многопоточных систем и быстрых носителей, таких как SSD. Проект представляет собой форк предыдущих реализаций и реализован на языке C++ с официальными биндингами для C и Java, а также множеством сторонних обёрток для других языков. Основная цель — предоставить быстрый и конфигурируемый движок хранения данных для встраиваемых приложений и систем, где важны задержки и пропускная способность при больших объёмах записей и одновременных запросах.

Архитектурно система использует LSM‑подход: входящие записи сначала попадают в оперативную память в виде memtable, затем периодически сбрасываются и компактизируются в наглядные уровни на диске. Движок предоставляет настройку стратегий компактации, контроля размеров уровней, сжатия и шаблонов чтения/записи, что позволяет оптимизировать поведение под конкретные рабочие нагрузки. Благодаря мультипоточному дизайну и тонкой настройке ввода‑вывода RocksDB широко применяется в распределённых системах, кешах, службах очередей и других сценариях, где требуется устойчивое и быстрое локальное хранение ключ‑значение.

  • Модель хранения: ключ‑значение с использованием LSM‑дерева, поддержка memtable и многоуровневой компактации.
  • Производительность: оптимизации для SSD и многопоточных записей, асинхронные и параллельные операции ввода‑вывода.
  • Конфигурируемость: гибкие политики компактации, параметры сжатия, размеры уровней, настройки memtable и пулов потоков.
  • Транзакции и консистентность: механизмы атомарных обновлений, WAL (write‑ahead log) для обеспечения восстановления после сбоев.
  • API и биндинги: нативный C++ API, официальные биндинги для C и Java, многочисленные сторонние обёртки для других языков.
  • Дополнительные возможности: поддержка счётчиков, итераторов, батчевых операций, фильтров (например bloom‑filter) для ускорения чтений.
  • Управление жизненным циклом данных: фоновая компактация, очистка старых версий и управление пространством на диске.
  • Использование в системах: распространён в системах хранения метаданных, очередях сообщений, распределённых базах и сервисах с высокими требованиями к пропускной способности.
Подробнее