Dynamo: Amazon's Highly Available Key-value Store
Dynamo chooses availability over consistency: writes are always accepted, replicas are placed with consistent hashing, and conflicting versions are kept with vector clocks for the application to reconcile. Sloppy quorums, hinted handoff, and anti-entropy keep data flowing through failures.
Key ideas
- Always-writable storage means conflicts are a feature to handle, not a bug to prevent
- Consistent hashing with virtual nodes spreads load and simplifies membership
- Quorum parameters let each application tune durability against latency
Why read it now
It is the origin of most techniques in the NoSQL toolbox and the clearest worked example of a deliberate consistency trade-off.
Question to keep in mind
Which part of the design would you change first if the workload demanded read-your-writes consistency?