Базы данных ключ-значение , или ключ-значение магазин , это парадигма хранения данных предназначена для хранения, извлечения и управления ассоциативные массивы , а также структура данных , более известный сегодня как словарь или хэш - таблицы . Словари содержат коллекцию из объектов или записей , которые , в свою очередь , имеют много различных полей внутри них, каждый из которых содержит данные. Эти записи сохраняются и извлекаются с использованием ключа, который однозначно идентифицирует запись и используется для поиска данных в базе данных .
Базы данных типа "ключ-значение" работают совсем иначе, чем более известные реляционные базы данных (RDB). РБД предопределяют структуру данных в базе данных как серию таблиц, содержащих поля с четко определенными типами данных . Предоставление типов данных программе базы данных позволяет применить ряд оптимизаций. Напротив, системы "ключ-значение" обрабатывают данные как одну непрозрачную коллекцию, которая может иметь разные поля для каждой записи. Это обеспечивает значительную гибкость и более точно соответствует современным концепциям, таким как объектно-ориентированное программирование . Поскольку необязательные значения не представлены заполнителями или входными параметрами, как в большинстве RDB, базы данных «ключ-значение» часто используют гораздо меньше памяти для хранения одной и той же базы данных, что может привести к значительному увеличению производительности при определенных рабочих нагрузках. [ необходима цитата ]
Производительность, отсутствие стандартизации и другие проблемы на протяжении многих лет ограничивали использование систем «ключ-значение» нишами, но быстрый переход к облачным вычислениям после 2010 г. привел к возрождению в рамках более широкого движения NoSQL . Некоторые графовые базы данных , такие как ArangoDB , [1] также являются внутренними базами данных типа «ключ-значение», добавляя концепцию отношений ( указателей ) между записями в качестве типа данных первого класса.
Типы и примечательные примеры
Базы данных типа "ключ-значение" могут использовать модели согласованности, начиная от согласованности в конечном итоге и заканчивая сериализуемостью . Некоторые поддерживают заказ ключей.
Некоторые хранят данные в памяти (ОЗУ) , в то время как другие используют твердотельные накопители или вращающиеся диски .
Каждая сущность (запись) представляет собой набор пар ключ-значение. Ключ состоит из нескольких компонентов, указанных в виде упорядоченного списка. Главный ключ идентифицирует запись и состоит из ведущих компонентов ключа. Последующие компоненты называются второстепенными ключами. Эта организация аналогична спецификации пути к каталогу в файловой системе (например, / Major / minor1 / minor2 /). «Значение» пары ключ-значение - это просто неинтерпретируемая строка байтов произвольной длины. [2]
Система Unix предоставляет dbm (менеджер баз данных), который представляет собой библиотеку 1979 года, первоначально написанную Кеном Томпсоном . Он также портирован на Microsoft Windows с помощью таких языков программирования, как Perl для Win32 . Dbm управляет ассоциативными массивами произвольных данных с помощью одного ключа (первичного ключа). Современные реализации включают Berkeley DB , sdbm и GNU dbm . Хотя dbm предшествует концепции NoSQL и редко упоминается в современном дискурсе, она используется во многих программах.
Провайдер | Лицензия | В конечном итоге последовательный | Упорядоченный | баран | Диск |
---|---|---|---|---|---|
Aerospike | AGPL | да | да | ||
Apache Ignite | AL2 | да | да | ||
ArangoDB | AL2 | да | да | ||
Berkeley DB | AGPL , проприетарный | да | |||
CDB | Всеобщее достояние | ||||
Сервер базы данных Clusterpoint | Проприетарный | ||||
Сервер Couchbase | Проприетарный | ||||
Динамо | Проприетарный | да | |||
etcd | AL2 | да | |||
FoundationDB | AL2 | да | |||
GigaSpaces | AL2 , проприетарный | да | |||
Системы GridGain | Проприетарный | да | |||
GT.M [3] | AGPL , проприетарный | ||||
Hazelcast | AL2 , проприетарный | да | |||
Хибари | AL2 | ||||
IBM Informix C-ISAM | Проприетарный | да | |||
immudb [4] | AL2 | да | |||
InfinityDB | Проприетарный | да | |||
Кврокс | BSD3 | да | |||
KeyDB | BSD3 | ||||
Keyspace | Проприетарный | ||||
LevelDB | BSD3 | да | |||
LMDB | OpenLDAP (BSD-подобный) | да | да | ||
memcached | BSD3 | да | |||
MemcacheDB | BSD | да | |||
Microsoft SQL Server | Проприетарный | да | да | ||
NoSQLz | бесплатное ПО | ||||
Согласованность | Проприетарный | да | |||
База данных Oracle NoSQL | AL2 , проприетарный | да | |||
Проект Волан-де-Морт | AL2 | да | |||
Redis | BSD3 | да | |||
Риак [5] | AL2 | да | |||
RocksDB | AL2 или GPL 2 | да | |||
Тарантоол | BSD | да | |||
Tkrzw | AL2 | да | |||
Venti | GPLv2 , BSD | да | |||
OpenLink Virtuoso | GPLv2 , проприетарный | да | да |
Смотрите также
- Большое количество данных
- Анализ данных
- Распределенное хранилище данных
- Документно-ориентированная база данных
- Многомодельная база данных
- Пространство кортежа
Рекомендации
- ^ «Машины хранения» . ArangoDB . Дата обращения 16 ноября 2020 .
- ^ База данных Oracle NoSQL .
- ^ Твид, Роб; Джеймс, Джордж (2010). «Универсальный движок NoSQL с использованием испытанной технологии» (PDF) . п. 25. Все
без исключения самые успешные и известные базы данных NoSQL были разработаны с нуля всего за последние несколько лет. Как ни странно, кажется, что никто не оглядывался вокруг, чтобы увидеть, существуют ли какие-либо существующие, успешно реализованные технологии баз данных, которые могли бы обеспечить прочную основу для удовлетворения требований веб-масштаба. Если бы они сделали это, они могли бы обнаружить два продукта, GT.M и Caché ..... *
- ^ «Хранилище ключей и значений с открытым исходным кодом со встроенными криптографическими доказательствами» .
Поток обработки внутренних транзакций и криптографическая привязка были специально разработаны для использования модели «ключ-значение». Он поддерживает индексирование, сканирование, сжатие данных среди других возможностей, которые вы ожидаете от хранилища ключ-значение. Он может быть встроен в любую систему и, следуя криптографическому протоколу, способен обеспечить неизменность в любой степени.
- ^ «Riak: масштабируемое хранилище данных с открытым исходным кодом» . 28 ноября 2010 года Архивировано из оригинала 31 декабря 2010 года . Проверено 28 ноября 2010 года .