mirror of
https://github.com/donnemartin/system-design-primer.git
synced 2024-03-22 13:11:35 +08:00
Add Key-value store section
This commit is contained in:
parent
c83d146def
commit
c6ac09f0fc
17
README.md
17
README.md
|
@ -1077,3 +1077,20 @@ NoSQL is a collection of data items represented in a **key-value store**, **docu
|
||||||
* **Eventual consistency** - the system will become consistent over a period of time, given that the system doesn't receive input during that period.
|
* **Eventual consistency** - the system will become consistent over a period of time, given that the system doesn't receive input during that period.
|
||||||
|
|
||||||
In addition to choosing between [SQL or NoSQL](#sql-or-nosql), it is helpful to understand which type of NoSQL database best fits your use case(s). We'll review **key-value stores**, **document-stores**, **wide column stores**, and **graph databases** in the next section.
|
In addition to choosing between [SQL or NoSQL](#sql-or-nosql), it is helpful to understand which type of NoSQL database best fits your use case(s). We'll review **key-value stores**, **document-stores**, **wide column stores**, and **graph databases** in the next section.
|
||||||
|
|
||||||
|
#### Key-value store
|
||||||
|
|
||||||
|
> Abstraction: hash table
|
||||||
|
|
||||||
|
A key-value store generally allows for O(1) reads and writes and is often backed by memory or SSD. Data stores can maintain keys in [lexicographic order](https://en.wikipedia.org/wiki/Lexicographical_order), allowing efficient retrieval of key ranges. Key-value stores can allow for storing of metadata with a value.
|
||||||
|
|
||||||
|
Key-value stores provide high performance and are often used for simple data models or for rapidly-changing data, such as an in-memory cache layer. Since they offer only a limited set of operations, complexity is shifted to the application layer if additional operations are needed.
|
||||||
|
|
||||||
|
A key-value store is the basis for more complex system systems such as a document store, and in some cases, a graph database.
|
||||||
|
|
||||||
|
##### Source(s) and further reading: key-value store
|
||||||
|
|
||||||
|
* [Key-value database](https://en.wikipedia.org/wiki/Key-value_database)
|
||||||
|
* [Disadvantages of key-value stores](http://stackoverflow.com/questions/4056093/what-are-the-disadvantages-of-using-a-key-value-table-over-nullable-columns-or)
|
||||||
|
* [Redis architecture](http://qnimate.com/overview-of-redis-architecture/)
|
||||||
|
* [Memcached architecture](https://www.adayinthelifeof.nl/2011/02/06/memcache-internals/)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user