Jump to content

Заказанный магазин ключей-значений

Упорядоченное хранилище ключей-значений (OKVS) — это тип парадигмы хранения данных, который может поддерживать многомодельную базу данных . ОКВС — это упорядоченное отображение байтов в байты. Это более мощная парадигма, чем хранилище значений ключей , поскольку OKVS позволяет создавать абстракции более высокого уровня без необходимости полного сканирования. ОКВС будет хранить пары ключ-значение, отсортированные по ключевому лексикографическому порядку. Системы ОКВС предоставляют различный набор функций и компромиссы в производительности. Большинство из них поставляются в виде библиотек без сетевых интерфейсов для встраивания в другой процесс. Большинство ОКВС поддерживают гарантии ACID . Некоторые ОКВС представляют собой распределенные базы данных . Упорядоченное хранилище ключей-значений нашло свое применение во многих современных системах баз данных, включая системы баз данных NewSQL .

Происхождение упорядоченного хранилища ключей-значений связано с работой Кена Томпсона над dbm в 1979 году. Позже, в 1991 году, Berkeley DB была выпущена , в которой использовался бэкэнд B-Tree , который позволял ключам оставаться отсортированными. Говорят, что Berkeley DB была очень быстрой и нашла применение в различных коммерческих продуктах. Он был включен в стандартную библиотеку Python до версии 2.7. [1] В 2009 году был выпущен Токийский кабинет, который был заменен Киотским кабинетом , который поддерживает как транзакционные, так и заказанные ключи. В 2011 году LMDB был создан для замены Berkeley DB в OpenLDAP . Существует также LevelDB от Google , который был разветвлен Facebook в 2012 году как RocksDB . В 2014 году WiredTiger , преемник Berkeley DB, был приобретен MongoDB и с 2019 года является основным сервером базы данных MongoDB.

Другой заметной реализацией парадигмы ОКВС является София. [2] и расширение SQLite3 LSM. Еще одним заметным применением парадигмы OKVS является многомодельная система баз данных под названием ArangoDB. [3] на основе RocksDB.

Некоторые базы данных NewSQL поддерживаются упорядоченными хранилищами ключей и значений. JanusGraph , база данных графов свойств, имеет как серверную часть Berkeley DB, так и серверную часть FoundationDB .

Ключевые понятия

[ редактировать ]

Лексикографическое кодирование

[ редактировать ]

Существуют алгоритмы, которые кодируют основные типы данных (логические, строковые, числовые) и композицию этих типов данных внутри отсортированных контейнеров (кортеж, список, вектор), сохраняющих их естественный порядок. Можно работать с упорядоченным хранилищем ключей-значений без необходимости работать напрямую с байтами. В FoundationDB это называется уровнем кортежа. [4]

Запрос диапазона

[ редактировать ]

Внутри ОКВС ключи упорядочены, поэтому можно выполнять запросы по диапазону. Запрос диапазона позволяет получить все ключи между двумя ключами, например, все выбранные ключи упорядочены.

Подпространства

[ редактировать ]

Ключевой состав

[ редактировать ]

Можно создавать ключевые пространства для построения абстракций более высокого уровня. Идея состоит в том, чтобы создать ключи, которые используют преимущества упорядоченного характера пространства ключей верхнего уровня. Воспользовавшись упорядоченностью пространства ключей, можно запрашивать диапазоны ключей, имеющих определенный шаблон.

Денормализация

[ редактировать ]

Денормализация, например, повторение одного и того же фрагмента данных в нескольких подпространствах, является обычной практикой. Это позволяет создавать вторичное представление, также называемое индексами, что позволит ускорить запросы.

Абстракции более высокого уровня

[ редактировать ]

Следующая абстракция или базы данных были построены на основе упорядоченных хранилищ ключей и значений:

  • база данных таймсерий,
  • База данных записей, [5] также известные как базы данных с хранилищем строк, они ведут себя аналогично тому, что называется RDBMS .
  • Хранилища кортежей, также известные как Triple Store или Quad Store, а также Generic Tuple Store, [6] [7]
  • База данных документов, [8] который имитирует API MongoDB,
  • Полнотекстовый поиск [9]
  • Географические информационные системы [10]
  • Граф свойств [11]
  • Версионные данные [12]

Вся эта абстракция может сосуществовать с одной и той же базой данных OKVS, и когда поддерживается ACID, операции выполняются с гарантиями, предлагаемыми системой транзакций.

Матрица функций

[ редактировать ]
Сравнение нескольких упорядоченных хранилищ ключей-значений
ОКВС Лицензия Транзакции Распределенный В памяти Несколько потоков Несколько процессов
Беркли ДБ АГПЛ Да Нет Нет да да
ПроводнойТигр лицензия GPL Да Нет Да да нет
УровеньБД Апач Нет Нет Нет нет
Киото Кабинет лицензия GPL Да Нет Нет нет
РоксДБ Апач Да Нет Нет да нет
Расширение SQLite LSM Общественное достояние Да 1 Нет Да да 2 да 2
ТиКВ Апач Да Да Нет да да
FoundationDB Апач Да Да Да да да
  1. Транзакции расширения SQLite LSM могут быть вложенными.
  2. Расширение SQLite LSM поддерживает несколько читателей и только одну запись, которая не блокирует считыватели.

См. также

[ редактировать ]
  1. ^ «11.11. bsddb — Интерфейс к библиотеке Berkeley DB — Документация Python 2.7.17» . docs.python.org . Проверено 16 января 2020 г.
  2. ^ «София — современная транзакционная библиотека хранения ключей/значений/строк» ​​. София.системы . Проверено 16 января 2020 г.
  3. ^ «Сравнение новых механизмов хранения RocksDB и MMFiles» . АрангоДБ . Проверено 16 января 2020 г.
  4. ^ «API Python — FoundationDB 6.2» . apple.github.io . Проверено 19 января 2020 г.
  5. ^ Ориентированное на записи хранилище, построенное на FoundationDB. , FoundationDB, 16 января 2020 г. , получено 17 января 2020 г.
  6. ^ «Общая база данных хранилища кортежей» . srfi.schemers.org . Проверено 17 января 2020 г.
  7. ^ «Общий магазин кортежей» . Гитхаб .
  8. ^ Модель данных документа в FoundationDB, реализующая проводной протокол MongoDB®: FoundationDB/fdb-document-layer , FoundationDB, 09 декабря 2019 г. , получено 17 января 2020 г.
  9. ^ meilisearch/MeiliSearch , MeiliSearch, 19 июня 2021 г. , получено 19 июня 2021 г.
  10. ^ «6.1. Структура индекса GeoMesa — Руководства по GeoMesa 1.3.1» . www.geomesa.org . Проверено 19 января 2020 г.
  11. ^ «Адаптер хранилища JanusGraph FoundationDB — Тед Уилмс, Expero Inc» . www.youtube.com . Проверено 17 января 2020 г.
  12. ^ «Молниеносный доклад: Entity Store: слой FoundationDB для версий… — Стивен Пиментел, — YouTube» . www.youtube.com . Проверено 17 января 2020 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f8ef3a06053998010459bc0ff79be9fd__1718707200
URL1:https://arc.ask3.ru/arc/aa/f8/fd/f8ef3a06053998010459bc0ff79be9fd.html
Заголовок, (Title) документа по адресу, URL1:
Ordered Key-Value Store - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)