База данных «ключ-значение»
Эта статья нуждается в дополнительных цитатах для проверки . ( сентябрь 2021 г. ) |
База данных «ключ-значение» , или хранилище «ключ-значение» , — это парадигма хранения данных, предназначенная для хранения, извлечения и управления ассоциативными массивами , а также структура данных , более известная сегодня как словарь или хеш-таблица . Словари содержат коллекцию объектов , которые , или записей в свою очередь, содержат множество различных полей , каждое из которых содержит данные. Эти записи хранятся и извлекаются с использованием ключа , который однозначно идентифицирует запись и используется для поиска данных в базе данных .
Базы данных «ключ-значение» работают совершенно иначе, чем более известные реляционные базы данных (RDB). РБД предопределяют структуру данных в базе данных как ряд таблиц, содержащих поля с четко определенными типами данных . Предоставление типов данных программе базы данных позволяет ей применить ряд оптимизаций. Напротив, системы «ключ-значение» рассматривают данные как одну непрозрачную коллекцию, которая может иметь разные поля для каждой записи. Это обеспечивает значительную гибкость и более точно соответствует современным концепциям, таким как объектно-ориентированное программирование . Поскольку необязательные значения не представлены заполнителями или входными параметрами, как в большинстве RDB, базы данных «ключ-значение» часто используют гораздо меньше памяти для хранения тех же данных, что может привести к значительному увеличению производительности при определенных рабочих нагрузках. [ нужна ссылка ]
Производительность, отсутствие стандартизации и другие проблемы на протяжении многих лет ограничивали использование систем «ключ-значение» в узкой нише, но быстрый переход к облачным вычислениям после 2010 года привел к возрождению в рамках более широкого движения NoSQL . Некоторые графовые базы данных , такие как ArangoDB , [ 1 ] также являются внутренними базами данных «ключ-значение», добавляя концепцию связей ( указателей ) между записями в качестве типа данных первого класса.
Типы и примеры
[ редактировать ]Базы данных «ключ-значение» могут использовать модели согласованности, начиная от окончательной согласованности и заканчивая сериализуемостью . Некоторые поддерживают порядок ключей.
Некоторые хранят данные в памяти (ОЗУ) , в то время как другие используют твердотельные накопители или вращающиеся диски .
Каждая сущность (запись) представляет собой набор пар ключ-значение. Ключ состоит из нескольких компонентов, заданных в виде упорядоченного списка. Основной ключ идентифицирует запись и состоит из ведущих компонентов ключа. Последующие компоненты называются второстепенными ключами. Эта организация аналогична указанию пути к каталогу в файловой системе (например, /Major/minor1/minor2/). Часть «значение» пары ключ-значение представляет собой просто неинтерпретируемую строку байтов произвольной длины. [ 2 ]
Система Unix предоставляет dbm (менеджер базы данных), который представляет собой библиотеку 1979 года, первоначально написанную Кеном Томпсоном . Он также портирован на Microsoft Windows с использованием таких языков программирования, как Perl для Win32 . База данных управляет ассоциативными массивами произвольных данных с помощью одного ключа (первичного ключа). Современные реализации включают sdbm, GNU dbm и Berkeley DB . Хотя dbm предшествует концепции NoSQL и редко упоминается в современном дискурсе, он используется во многих программах.
Более свежим примером базы данных «ключ-значение» является RocksDB , которая используется в качестве механизма хранения для других систем управления базами данных, таких как ArangoDB . Другие примеры включают Aerospike (база данных) , Amazon DynamoDB , Memcached , Redis и ScyllaDB .
См. также
[ редактировать ]- Большие данные
- Анализ данных
- Распределенное хранилище данных
- Документоориентированная база данных
- Многомодельная база данных
- Кортежное пространство
- Заказанный магазин ключей-значений
Ссылки
[ редактировать ]- ^ «Машины хранения» . АрангоДБ . Проверено 16 ноября 2020 г.
- ^ База данных Oracle NoSQL .