DynamoDB is Amazon's availability-centric key-value storage. It provides a simple interface with put&get methods. Dynamo achieves full availability and partition-tolerance, sacrificing consistency in favor of eventual consistency. This design choice is a requirement for some Amazon services. One example is an online cart, where adding an item to cart should not be lost in any case.
To achieve fault-tolerance, DynamoDB stores each key on N servers. For each key, there is a preference list, which consists of M>N nodes. Preference list is constructed with consistent hashing: each node selects several numbers on a ring (tokens), then each key is hashed into the position in a ring, and preference list is constructed with next M tokens.
To achieve eventual consistency, the sloppy quorum is used. There are two parameters: R and W, R+W>N, for the put request to succeed, at least W confirmations are required, for get - at least R. Servers used for the operation are determined as top-N healthy servers from preference