键-值存储

键-值数据库（Key–value database），或键-值存储，是设计用来存储、检索和管理关联数组的数据存储范式，关联数组是现今更常称为“字典”或散列表的一种数据结构。字典包含对对象或记录的一个收集，依次、记录内有多个不同的“域”或称字段，再次、每个字段都包含数据。这些记录使用唯一标识这个记录的“键”来存储和检索，键还用来在数据库中快速的找到数据。

概述
同更知名的关系数据库相比，键-值数据库以与之非常不同的方式工作。关系数据库把数据库中数据结构预定义为一系列的表，它们包含有着明确定义的数据类型的字段。这些数据类型暴露于数据库程序，从而允许它们应用某些优化。与之相对，键-值系统把数据当作一个单一的不透明的收集，对于每个记录都可以有不同的多个字段。这提供了可观的灵活性并更加紧密的遵循了现代概念如面向对象编程。不同于多数的关系数据库，由于不使用占位符或输入参数来表示可选值，键-值数据库经常比同等的关系数据库使用更少的内存。

多年以来性能问题、缺乏标准化和其他一些问题限制了键-值系统的市场份额，然而2010年后向云计算的快速转移，导致它作为更广阔的NoSQL运动的一部分而复兴了。一些图数据库内部使用了键-值数据库，增加了在记录之间联系（指针）的概念，并把它作为一等数据类型。

类型和著名例子
键-值数据库可以使用的一致性模型，范围包括从结果一致性到可序列化。有的支持有序的键。有的在内存内维持数据，而另一些采用固态硬盘或旋转硬盘。

依据数据库引擎排名，在2019年5月时，Redis是最流行的键-值数据库实现。

另一个键-值数据库的例子是Oracle NoSQL Database。Oracle NoSQL 数据库向应用开发者提供了键-值范式。每个实体（记录）都是键-值对的一个集合。键有多个成员，并指定为有序列表。主键标识了这个实体，并构成了这个键的前导成员。后续成员叫做次键。这种组织类似于在文件系统中的目录路径规定（例如：/Major/minor1/minor2/）。键-值对的“值”部分简单的就是不加解释的任意长度的字符串。

Unix系统提供了dbm（数据库管理器），它是最初由Ken Thompson写的一个库。它的Windows操作系统平台移植，是通过了编程语言比如Perl for Win32而提供的。dbm通过单一的键（主键）来管理任意数据的关联数组。现代实现包括sdbm和GNU dbm。

 提供者 许可证 结果一致性 有序 RAM Aerospike     Apache Ignite     ArangoDB    Berkeley DB AGPL, 专有软件    CDB free    Clusterpoint Database Server     Couchbase Server     Dynamo     etcd     FoundationDB     XAP     GridGain Systems     GT.M AGPL, 专有软件    Hazelcast AL2, 专有软件    Hibari     IBM Informix C-ISAM     InfinityDB     Keyspace     LevelDB     LMDB free     memcached     MemcacheDB     NoSQLz free    Coherence     Oracle NoSQL Database AL2, 专有软件    Pika BSD-3  Project Voldemort     Redis     Riak     RocksDB     Tarantool     Tokyo Cabinet and Kyoto Cabinet     OpenLink Virtuoso GPLv2, 专有软件   

参考资料

参见

Category:各種類資料庫
Category:数据库理论
Category:关联数组