鍵-值儲存
鍵-值資料庫(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通過單一的鍵(主鍵)來管理任意資料的關聯陣列。現代實現包括sdbm和GNU 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, 專有軟體 | 是 | 是 |
參照
[編輯]- ^ DB-Engines Ranking. DB-Engines. [2019-05-14]. (原始內容存檔於2018-12-20).
- ^ "Oracle NoSQL Database" (PDF). [2019-05-14]. (原始內容 (PDF)存檔於2017-08-09).
- ^ 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é.....*
- ^ Riak: An Open Source Scalable Data Store. 28 November 2010 [28 November 2010]. (原始內容存檔於31 December 2010).