Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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 «S 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 раз в некоторых сценариях) в операциях чтения и некоторых типах записи (например, пакетная и синхронная запись, см. ссылку выше) и почти одинаково в остальной части теста.

Ошибки и надежность [ править ]

LevelDB имеет историю ошибок повреждения базы данных. [14] [15] [16] [17] [18] [19] Исследование, проведенное в 2014 году, показало, что в старых файловых системах (без контрольной суммы) база данных могла быть повреждена после сбоя или сбоя питания. [20]

См. Также [ править ]

  • База данных с отображением памяти Lightning
  • RocksDB

Ссылки [ править ]

  1. ^ "Выпуск 1.23" . 23 февраля 2021 . Проверено 13 марта 2021 года .
  2. ^ "Google Research Scientists and Engineers: Jeffrey Dean" . Google, Inc.
  3. ^ "Ученые-исследователи и инженеры: Санджай Гемават" . Google, Inc.
  4. ^ "База данных NoSQL с открытым исходным кодом Google, называемая LevelDB" . ReadWriteWeb . 30 июля 2011 года Архивировано из оригинального 16 августа 2011 года . Проверено 30 июля 2011 года . CS1 maint: обескураженный параметр ( ссылка )
  5. ^ «Блог Google с открытым исходным кодом: LevelDB: быстрое постоянное хранилище ключей и значений» . Google, Inc.
  6. ^ Механизм хранения LevelDB
  7. ^ Джефф Дин. «Список рассылки LevelDB:« Текущее состояние LevelDB » » .
  8. ^ LevelDB . Docs.basho.com. Проверено 18 сентября 2013.
  9. ^ Андреас М. Антонопулос. «Глава 7. Блокчейн» . Проверено 8 января 2015 года . CS1 maint: обескураженный параметр ( ссылка )
  10. ^ https://minecraft.gamepedia.com/Pocket_Edition_level_format
  11. ^ «Тесты LevelDB» . Google, Inc. архивации от оригинала на 2011-08-20. CS1 maint: обескураженный параметр ( ссылка )
  12. ^ «Обсуждение теста LevelDB» .
  13. ^ База данных Microbenchmarks Архивировано 9 августа 2014 г.на Wayback Machine , Symas Corp., 2012-09. Проверено 22 октября 2016 г.
  14. ^ Восстановление LevelDB
  15. ^ Проблемы · google / leveldb · GitHub
  16. ^ Неустранимое повреждение в Chromium
  17. ^ Коррупция в синхронизации
  18. ^ Коррупция после потери питания
  19. ^ Коррупция в Ethereum
  20. ^ «Все файловые системы не созданы равными: о сложности создания приложений, устойчивых к сбоям» .

Внешние ссылки [ править ]

  • Официальный веб-сайт