LevelDB — это библиотека с открытым исходным кодом для хранения данных в формате ключ‑значение, разработанная инженерами компании Google. Она предназначена для встраивания в приложения, которым требуются высокая скорость записи и чтения данных при относительно компактном потреблении дискового пространства. LevelDB реализует лог‑структурированное хранение (log-structured merge tree) с акцентом на последовательные записи и быстрые точечные чтения, что делает её подходящей для рабочих нагрузок с интенсивным вводом‑выводом и большим числом обновлений.
Архитектурно библиотека опирается на запись входящих операций в журнал и последующую компактацию данных в отсортированные уровни на диске, что обеспечивает баланс между скоростью записи и эффективностью хранения. LevelDB предоставляет простое программное API для операций Put, Get и Delete, поддержку итераторов для сканирования ключей и настраиваемые параметры компактации и кэширования. Несмотря на изначальную разработку и использование внутри продуктов Google, библиотека получила широкое распространение в сообществе разработчиков и применяется в различных проектах как лёгкое и быстое локальное хранилище ключ‑значение.
- Модель данных: хранение пар ключ‑значение с произвольными бинарными значениями.
- API: простые операции Put, Get, Delete и итераторы для последовательного обхода ключей.
- Производительность: оптимизация под последовательные записи и низкую задержку точечных чтений.
- Архитектура хранения: лог‑структурированная запись с уровнями и процессом компактации для поддержания порядка и освобождения места.
- Кэширование: встроенный кэш блоков для ускорения повторных чтений.
- Точность на диске: управление файлами SSTable и WAL (журналом предзаписи) для обеспечения целостности при сбоях.
- Конфигурируемость: параметры размера мемтаблицы, порогов компактации, уровней и стратегии сжатия.
- Портируемость: реализована на C++ с простыми обёртками для других языков через сторонние биндинги.
- Ограничения: не является реляционной СУБД, не предоставляет транзакций с многоверсионностью и ограничена локальным файловым хранением.
- Сценарии использования: локальные кэши, метаданные приложений, системы очередей и компоненты распределённых систем, где требуются быстрые операции ключ‑значение.