鍵-值存儲

鍵-值數據庫(Key–value database),或鍵-值存儲,是設計用來存儲、檢索和管理關聯數組的數據存儲範式,關聯數組是現今更常稱為「字典」或散列表的一種數據結構。字典包含對對象記錄的一個收集,依次、記錄內有多個不同的「域」或稱字段,再次、每個字段都包含數據。這些記錄使用唯一標識這個記錄的「鍵」來存儲和檢索,鍵還用來在數據庫中快速的找到數據。

一個表,展示了不同的鍵關聯着不同的格式化數據

概述

同更知名的關係數據庫相比,鍵-值數據庫以與之非常不同的方式工作。關係數據庫把數據庫中數據結構預定義為一系列的表,它們包含有着明確定義的數據類型的字段。這些數據類型暴露於數據庫程序,從而允許它們應用某些優化。與之相對,鍵-值系統把數據當作一個單一的不透明的收集,對於每個記錄都可以有不同的多個字段。這提供了可觀的靈活性並更加緊密的遵循了現代概念如面向對象編程。不同於多數的關係數據庫,由於不使用占位符或輸入參數來表示可選值,鍵-值數據庫經常比同等的關係數據庫使用更少的內存

多年以來性能問題、缺乏標準化和其他一些問題限制了鍵-值系統的市場份額,然而2010年後向雲計算的快速轉移,導致它作為更廣闊的NoSQL運動的一部分而復興了。一些圖數據庫內部使用了鍵-值數據庫,增加了在記錄之間聯繫(指針)的概念,並把它作為一等數據類型。

類型和著名例子

鍵-值數據庫可以使用的一致性模型,範圍包括從結果一致性可序列化。有的支持有序的鍵。有的在內存內維持數據,而另一些採用固態硬盤旋轉硬盤

依據數據庫引擎排名[1],在2019年5月時,Redis是最流行的鍵-值數據庫實現。

另一個鍵-值數據庫的例子是Oracle NoSQL Database。Oracle NoSQL 數據庫向應用開發者提供了鍵-值範式。每個實體(記錄)都是鍵-值對的一個集合。鍵有多個成員,並指定為有序列表。主鍵標識了這個實體,並構成了這個鍵的前導成員。後續成員叫做次鍵。這種組織類似於在文件系統中的目錄路徑規定(例如:/Major/minor1/minor2/)。鍵-值對的「值」部分簡單的就是不加解釋的任意長度的字符串[2]

Unix系統提供了dbm(數據庫管理器),它是最初由Ken Thompson寫的一個庫。它的Windows操作系統平台移植,是通過了編程語言比如Perl for Win32而提供的。dbm通過單一的鍵(主鍵)來管理任意數據的關聯數組。現代實現包括sdbmGNU dbm

提供者 許可證 結果一致性 有序 RAM
Aerospike AGPL
Apache Ignite AL2
ArangoDB AL2
Berkeley DB AGPL, 專有軟件
CDB free
Clusterpoint Database Server 專有
Couchbase Server 專有
Dynamo 專有
etcd AL2
FoundationDB AL2
XAP 專有
GridGain Systems 專有
GT.M[3] AGPL, 專有軟件
Hazelcast AL2, 專有軟件
Hibari AL2
IBM Informix C-ISAM 專有
InfinityDB 專有
Keyspace 專有
LevelDB BSD3
LMDB free頁面存檔備份,存於網際網路檔案館
memcached BSD3
MemcacheDB BSD
NoSQLz free
Coherence 專有
Oracle NoSQL Database AL2, 專有軟件
Pika BSD-3
Project Voldemort AL2
Redis BSD3
Riak[4] AL2
RocksDB AL2 or GPL 2
Tarantool BSD
Tokyo Cabinet and Kyoto Cabinet GPL
OpenLink Virtuoso GPLv2, 專有軟件

引用

  1. ^ DB-Engines Ranking. DB-Engines. [2019-05-14]. (原始內容存檔於2018-12-20). 
  2. ^ "Oracle NoSQL Database" (PDF). [2019-05-14]. (原始內容 (PDF)存檔於2017-08-09). 
  3. ^ Tweed, Rob; James, George. A Universal NoSQL Engine, Using a Tried and Tested Technology (PDF): 25. 2010 [2019-05-14]. (原始內容 (PDF)存檔於2021-02-25). Without exception, the most successful and well-known of the NoSQL databases have been developed from scratch, all within just the last few years. Strangely, it seems that nobody looked around to see whether there were any existing, successfully implemented database technologies that could have provided a sound foundation for meeting Web-scale demands. Had they done so, they might have discovered two products, GT.M and Caché.....* 
  4. ^ Riak: An Open Source Scalable Data Store. 28 November 2010 [28 November 2010]. (原始內容存檔於31 December 2010). 

參見