Об этом проекте

LevelDB — это встраиваемая библиотека хранения ключ-значение, разработанная в Google Санджаем Гемаватом и Джеффом Дином. Она обеспечивает упорядоченное отображение строковых ключей в строковые значения и предназначена для прямой компоновки с приложением, а не для запуска в качестве отдельного сервиса. Ключевые возможности, описанные в README: - Ключи и значения — произвольные байтовые массивы, данные хранятся отсортированными по ключу. - Вызывающий код может предоставить собственную функцию сравнения для изменения порядка сортировки по умолчанию. - Основные операции: Put(key,value), Get(key) и Delete(key). - Несколько изменений могут быть применены в одном атомарном пакете. - Пользователи могут создавать временный снимок для согласованного представления данных. - Поддерживается прямая и обратная итерация по данным. - Данные автоматически сжимаются с помощью Snappy, также поддерживается Zstd. - Внешние действия, такие как операции с файловой системой, передаются через виртуальный интерфейс, что позволяет настраивать взаимодействие с ОС. Важные ограничения, указанные проектом: это не SQL-база данных, нет реляционной модели, поддержки SQL-запросов или индексов; только один процесс (возможно, многопоточный) может одновременно обращаться к базе данных; и нет встроенной поддержки клиент-сервер, поэтому приложениям, которым это нужно, придётся обернуть собственную серверную часть вокруг библиотеки. Репозиторий находится в режиме очень ограниченного сопровождения. Сопровождающие заявляют, что будут рассматривать только исправления критических ошибок, таких как потеря данных или повреждение памяти, и изменения, абсолютно необходимые для внутренне поддерживаемых клиентов LevelDB, обычно для устранения поломок из-за обновлений языка, стандартной библиотеки или ОС. Ожидается, что вклад будет нацелен на протестированные платформы (POSIX для Linux и macOS, или Windows), сохранит стабильный API, будет включать тесты и следовать Google C++ Style Guide; изменения конфигурации сборки вряд ли будут приняты. Для pull request требуется подписать Google Contributor License Agreement и выполнить squash/rebase на main. Сборка использует CMake из коробки. На POSIX типичный быстрый старт: создание каталога сборки, запуск cmake с типом сборки Release, а затем сборка. В Windows CMake может генерировать файлы проекта/решения Visual Studio 2017, с опцией для 64-битных целей, и решение можно собрать из командной строки или внутри Visual Studio. README включает отчёт о производительности от встроенной программы db_bench, использующей базу данных с миллионом записей с 16-байтовыми ключами и 100-байтовыми значениями. В нём сообщаются результаты тестов записи (fillseq, fillsync, fillrandom, overwrite) и чтения (readrandom, readseq, readreverse), отмечается, что результаты зашумлены и что фоновая компакция улучшает производительность чтения. Публичный интерфейс находится в include/leveldb/*.h, где db.h — основная точка входа, options.h — для поведения базы данных и операций, comparator.h — для пользовательской сортировки, iterator.h — для итерации, write_batch.h — для атомарных обновлений, slice.h и status.h — вспомогательные, env.h — для абстракции ОС, а table.h/table_builder.h — низкоуровневые модули, которые большинство клиентов не используют напрямую. Документация включена в дерево исходников в doc/.