Key–value database

A key–value database, or key–value store, is a data storage paradigm designed for storing, retrieving, and managing associative arrays, and a data structure more commonly known today as a dictionary or hash table. Dictionaries contain a collection of objects, or records, which in turn have many different fields within them, each containing data. These records are stored and retrieved using a key that uniquely identifies the record, and is used to find the data within the database.

A table showing different formatted data values associated with different keys
A tabular data card proposed for Babbage's Analytical Engine showing a key–value pair, in this instance a number and its base-ten logarithm.

Key–value databases work in a very different fashion from the better known relational databases (RDB). RDBs predefine the data structure in the database as a series of tables containing fields with well defined data types. Exposing the data types to the database program allows it to apply a number of optimizations. In contrast, key–value systems treat the data as a single opaque collection, which may have different fields for every record. This offers considerable flexibility and more closely follows modern concepts like object-oriented programming. Because optional values are not represented by placeholders or input parameters, as in most RDBs, key–value databases often use far less memory to store the same database, which can lead to large performance gains in certain workloads.

Performance, a lack of standardization and other issues limited key–value systems to niche uses for many years, but the rapid move to cloud computing after 2010 has led to a renaissance as part of the broader NoSQL movement. Some graph databases are also key–value databases internally, adding the concept of the relationships (pointers) between records as a first class data type.

Types and notable examples

Key–value databases can use consistency models ranging from eventual consistency to serializability. Some support ordering of keys.

Some maintain data in memory (RAM), while others employ solid-state drives or rotating disks. Redis was the most popular implementation of a key–value database As of May 2019, according to DB-Engines ranking.[1] Another example of key–value database is Oracle NoSQL Database.

Every entity (record) is a set of key–value pairs. A key has multiple components, specified as an ordered list. The major key identifies the record and consists of the leading components of the key. The subsequent components are called minor keys. This organization is similar to a directory path specification in a file system (e.g., /Major/minor1/minor2/). The “value” part of the key-value pair is simply an uninterpreted string of bytes of arbitrary length.[2]

The Unix system provides dbm (database manager), which is a 1979 library originally written by Ken Thompson. It is also ported to Microsoft Windows, provided through programming languages such as Perl for Win32. The dbm manages associative arrays of arbitrary data by use of a single key (a primary key). Modern implementations include Berkeley DB, sdbm, and GNU dbm. Although dbm precedes the concept of a NoSQL and is rarely mentioned in modern discourse, it is used by many pieces of software.

Provider License Eventually consistent Ordered RAM Disk
Aerospike AGPL Yes Yes
Apache Ignite AL2 Yes Yes
ArangoDB AL2 Yes Yes
Berkeley DB AGPL, Proprietary Yes
CDB Public Domain
Clusterpoint Database Server Proprietary
Couchbase Server Proprietary
Dynamo Proprietary Yes
etcd AL2
FoundationDB AL2 Yes
XAP Proprietary Yes
GridGain Systems Proprietary Yes
GT.M[3] AGPL, Proprietary
Hazelcast AL2, Proprietary Yes
Hibari AL2
IBM Informix C-ISAM Proprietary Yes
InfinityDB Proprietary Yes
Keyspace Proprietary
LevelDB BSD3
LMDB OpenLDAP (BSD-like) Yes
memcached BSD3 Yes
MemcacheDB BSD Yes
NoSQLz freeware
Coherence Proprietary Yes
Oracle NoSQL Database AL2, Proprietary Yes
Project Voldemort AL2 Yes
Redis BSD3 Yes
Riak[4] AL2 Yes
RocksDB AL2 or GPL 2
Tarantool BSD Yes
Tokyo Cabinet and Kyoto Cabinet GPL
OpenLink Virtuoso GPLv2, proprietary Yes Yes
gollark: Natural ≠ good, as they say.
gollark: Some classrooms have no/broken WiFi coverage for no apparent reason despite sometimes having access points *in them*, which is a problem since because something something COVID-19 teachers got laptops instead of using the NUCs in the classrooms.
gollark: Oh, and there seems to be an issue storing preferences so Edge will ask you to set it up again on every login.
gollark: Even when you actually log in it's unusable for a while more because Windows spends a while using 100% CPU for no apparent reason. You can hear the NUCs VRRRRRRRRing as loudly as they can.
gollark: In the last few years, instead of the reasonably functional setup where people's stuff was stored on a big on-premise fileserver, someone clearly decided to cloud™, and now everyone's files are on OneDrive and login takes several minutes and often breaks randomly.

See also

References

  1. http://db-engines.com/en/ranking
  2. Oracle NoSQL Database.
  3. Tweed, Rob; James, George (2010). "A Universal NoSQL Engine, Using a Tried and Tested Technology" (PDF). p. 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. Archived from the original on 31 December 2010. Retrieved 28 November 2010.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.