База даних «ключ—значення» — Вікіпедія
Ба́за да́них «клю́ч—зна́чення» (англ. key-value database або англ. key–value store) — парадигма сховищ даних, створена для зберігання, виймання та керування асоціативними масивами — структурою даних, більш знаною як словник або геш. Словники містять колекції об'єктів або записів, які можуть мати багато різних полів з даними. Ці записи зберігаються та виймаються за допомогою ключа, який однозначно позначає записи, також він використовується для швидкого пошуку базою даних.
База даних «ключ—значення» працює зовсім інакше ніж реляційні бази даних (РБД). РБД попередньо визначають структуру даних у базі даних як сукупність таблиць, які містять поля (колонки) з чітко визначеними типами даних. Попередній опис типу даних дозволяє застосовувати численні оптимізації при програмуванні бази даних. На відміну від цього, системи «ключ—значення» ставляться до даних як до єдиної непрозорої колекції, яка може мати різні поля для кожного запису. Це забезпечує значну гнучкість і точніше слідує сучасним концепціям, таким як об'єктно-орієнтоване програмування. Оскільки необов'язкові значення не представлено заповнювачами, як це зроблено в більшості РБД, бази даних «ключ—значення» зазвичай використовують набагато менше пам'яті для зберігання такої ж бази даних, що може призводити до значного збільшення продуктивності при певних робочих навантаженнях.
Продуктивність, відсутність стандартизації та інші недоліки зробили використання систем «ключ—значення» нішевим протягом багатьох років, проте стрімкий перехід до хмарних обчислень після 2010 року призвів до ренесансу як частини ширшого руху NoSQL. Деякі графові бази даних за внутрішньою побудовою також є базами даних «ключ—значення», з додатковою концепцією відношення (вказівників) між записами як тип даних першого класу.
Бази даних «ключ—значення» можуть використовувати різні рівні узгодженості, починаючи від випадкової[en] і завершуючи серіалізованими[en] даними.
Деякі бази даних підтримують впорядковані ключі.
Існують різні реалізації апаратного забезпечення, і деякі користувачі підтримують дані в пам'яті (RAM), в той час як інші зберігають на файловій системі, використовуючи твердотільні (SSD) накопичувачі або класичні обертові (HDD) диски.
Для Unix в 1979 році Кен Томпсон написав менеджер баз даних dbm, а також бібліотеку яка була широко розповсюджена на інші операційні системи та мови програмування. DBM працює з асоціативними масивами довільних даних, до яких можна отримати доступ за допомогою ключа. Хоча dbm з'явився задового до поняття NoSQL, він заклав основу для розвитку баз Ключ-значення.
- GNU dbm
- Berkeley DB - База даних ключ-значення, реалізована у вигляді бібліотеки, розроблена в Університеті Берклі в 1986 році.
- Aerospike
- LevelDB - База даних ключ-значення, розроблена в Google, розроблена після досвіду з Bigtable.
- RocksDB - форк LevelDB, який зконцентрувався на високій продуктивності, утилізації багатоядерності та швидкості дискових систем.
- Memcached - Проста база ключ-значення в пам'яті, використовується для кешування.
- Redis - Найпопулярніша база ключ-значення в пам'яті (на травень 2018 року), згідно рейтингу DB-Engines ranking[en].[1]
- Apache Ignite[en]
- ArangoDB
- Couchbase
- Dynamo[en]
- FoundationDB[en]
- InfinityDB[en]
- MemcacheDB[en]
- MUMPS[en]
- Oracle NoSQL Database[en]
- OrientDB
- Riak
- Apache ZooKeeper[en]
- Персистентність:
- в оперативній пам'яті - зміни відбуваються в оперативній пам'яті, опціонально зберігаються на диску.
- на дисковій системи - зміни вібдуваються на диску. сервер реалізує оптимізацію зберігання змін.
- Інтерфейс доступа
- Типізація значення
- невизначена - чисте ключ-значення
- підтримує деякі структури даних
- якщо підтримується складна ієрарїічна структура, це розглядається як документо-орієнтована система керування базами даних
- Горизонтальне масштабування, та модель узгодженості.
- не дозволяє конкурентний доступ
- дозволяє конкурентний доступ
- масштабується горизонтально
- Особливості
- використання спеціальних структур індексування (дерева, фільтр Блума)
- TTL ключа для кешування
- авторизація
- ↑ Архівована копія. Архів оригіналу за 19 вересня 2018. Процитовано 23 травня 2018.
{{cite web}}
: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
- Ranking of key–value databases by popularity [Архівовано 7 липня 2013 у Wayback Machine.] (англ.)