A key-value store is the simplest kind of NoSQL database. It behaves like a giant distributed hash map: every record is a unique key associated with a value, and the store offers a small interface, essentially get a value by its key and put a value at a key. The Dynamo paper describes exactly this kind of interface, exposing get and put operations on objects identified by a key, with the value treated as an opaque blob.
Because the store does not interpret the contents of the value, it can avoid the overhead of schemas, joins, and complex query planning that relational databases carry. This restriction is what makes key-value stores fast and easy to scale. The Dynamo authors note that many of their services only need primary-key access to data and do not require the rich querying and management functionality of a relational database, so a simpler key-value model was a better fit.
The simplicity also makes the data easy to spread across many machines. Keys can be hashed and distributed across a cluster, so the system scales horizontally by adding nodes rather than by buying bigger servers. Amazon’s DynamoDB documentation describes it as purpose-built for operational workloads that require consistent performance at any scale, delivering single-digit millisecond performance whether a table serves ten users or a hundred million.
Key-value stores span a wide range of systems: in-memory caches and databases such as Redis, the original Dynamo design, and managed services such as Amazon DynamoDB. The trade-off is that the application must do more work, since the database will not enforce relationships, run aggregate queries, or join records on the server. For lookups by a known key at very high scale, that trade is often worth it.