键-值存储

(重定向自鍵值存儲

键-值数据库(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). 

参见