УровеньБД
Разработчик(и) | Джеффри Дин , Санджай Гемават , Google Inc. |
---|---|
Стабильная версия | 1.23 [1] ![]() |
Репозиторий | |
Написано в | С++ |
Размер | 350 КБ (двоичный размер) |
Тип | Библиотека базы данных |
Лицензия | Новая лицензия BSD |
Веб-сайт | github ![]() |
LevelDB — это с открытым исходным кодом, дисковое хранилище ключей и значений созданное Google сотрудниками Джеффри Дином и Санджаем Гемаватом . [2] [3] Вдохновленный Bigtable , [4] Исходный код LevelDB размещен на GitHub под новой лицензией BSD и портирован на различные системы на базе Unix , macOS , Windows и Android . [5]
Особенности [ править ]
LevelDB хранит ключи и значения в произвольных массивах байтов, а данные сортируются по ключу. Он поддерживает пакетную запись, прямую и обратную итерацию, а также сжатие данных с помощью библиотеки сжатия Google Snappy .
LevelDB не является базой данных SQL . Как и другие хранилища NoSQL и dbm , он не имеет реляционной модели данных и не поддерживает запросы SQL. Кроме того, он не поддерживает индексы . Приложения используют LevelDB в качестве библиотеки, поскольку она не предоставляет сервер или интерфейс командной строки.
MariaDB 10.0 поставляется с механизмом хранения, который позволяет пользователям запрашивать таблицы LevelDB из MariaDB. [6]
История [ править ]
LevelDB основан на концепциях системы баз данных Google Bigtable . Реализация таблиц для системы Bigtable разрабатывалась примерно с 2004 года и основана на базе внутреннего кода Google, отличной от кода LevelDB. Эта база кода опирается на ряд библиотек кода Google, которые сами по себе не имеют открытого исходного кода, поэтому напрямую открыть исходный код этого кода было бы сложно. Джефф Дин и Санджай Гемават хотели создать систему, напоминающую стек планшетов Bigtable, которая имела бы минимальные зависимости и была бы подходящей для открытого исходного кода, а также подходила бы для использования в Chrome для реализации IndexedDB . Они написали LevelDB, начиная с начала 2011 года, с тем же общим дизайном, что и стек планшетов Bigtable, но без совместного использования кода. [7]
Использование [ править ]
LevelDB используется в качестве серверной базы данных для Google Chrome в IndexedDB и является одним из поддерживаемых серверов для Riak . [8] Кроме того, Bitcoin Core и go-ethereum хранят метаданные блокчейна, используя базу данных LevelDB. [9] Minecraft Bedrock Edition использует модифицированную версию для хранения данных фрагментов и сущностей. [10] Autodesk AutoCAD 2016 также использует LevelDB.
Производительность [ править ]
Google предоставил тесты, сравнивающие производительность LevelDB с SQLite и Kyoto Cabinet в различных сценариях. [11] LevelDB превосходит SQLite и Kyoto Cabinet в операциях записи и операциях чтения в последовательном порядке. LevelDB также превосходно справляется с пакетной записью, но работает медленнее, чем SQLite, при работе с большими значениями. Опубликованные в настоящее время тесты были обновлены после того, как в более ранней версии результатов были обнаружены ошибки конфигурации SQLite. [12] Обновленные тесты [13] показывают, что LevelDB также превосходит Berkeley DB , но эти тесты также показывают, что OpenLDAP LightningDB намного быстрее (~ в 10 раз в некоторых сценариях) в операциях чтения и некоторых типах записи (например, пакетная и синхронная запись, см. ссылку выше) и почти в остальной части теста равны.
Все приведенные выше тесты датируются периодом с 2011 по 2014 год и могут иметь историческое значение только потому, что, например, SQLite стал значительно более эффективным. [14]
Ошибки и надежность [ править ]
LevelDB имеет историю ошибок, связанных с повреждением базы данных. [15] [16] [17] [18] [19] [20] Исследование 2014 года показало, что в файловых системах без контрольной суммы база данных может быть повреждена после сбоя или сбоя питания. [21]
См. также [ править ]
Ссылки [ править ]
- ^ «Выпуск 1.23» . 23 февраля 2021 г. Проверено 13 марта 2021 г.
- ^ «Учёные и инженеры Google: Джеффри Дин» . Гугл, Инк.
- ^ «Учёные-исследователи и инженеры: Санджай Гемават» . Гугл, Инк.
- ^ «База данных NoSQL с открытым исходным кодом Google под названием LevelDB» . ЧитатьWriteWeb . 30 июля 2011. Архивировано из оригинала 16 августа 2011 года . Проверено 30 июля 2011 г.
- ^ «Блог Google с открытым исходным кодом: LevelDB: быстрое постоянное хранилище ключей и значений» . Гугл, Инк.
- ^ Механизм хранения LevelDB
- ^ Джефф Дин. «Список рассылки LevelDB: «Текущий статус LevelDB» » .
- ^ УровеньБД . Docs.basho.com. Проверено 18 сентября 2013 г.
- ^ Андреас М. Антонопулос. «Глава 7. Блокчейн» . Проверено 8 января 2015 г.
- ^ «Формат уровней Bedrock Edition» . Майнкрафт вики . Проверено 24 сентября 2023 г.
- ^ «Бенчмарки LevelDB» . Google, Inc. Архивировано из оригинала 20 августа 2011 г.
- ^ «Обсуждение LevelDB Benchmark» .
- ^ Микротесты базы данных . Архивировано 9 августа 2014 г. в Wayback Machine , Symas Corp., 9 августа 2012 г. Проверено 22 октября 2016 г.
- ^ «Измерение и снижение загрузки ЦП в SQLite» .
- ^ Восстановление LevelDB
- ^ Проблемы · google/leveldb · GitHub
- ^ Неустранимое повреждение в Chromium.
- ^ Коррупция при синхронизации
- ^ Коррупция после потери власти
- ^ Коррупция в Эфириуме
- ^ Не все файловые системы созданы равными: о сложности создания отказоустойчивых приложений . 2014. стр. 433–448. ISBN 9781931971164 .