Dynamo (storage system)

Dynamo is the name given to a set of techniques that when taken together can form a highly available key-value structured storage system[1] or a distributed data store.[2] It has properties of both databases and distributed hash tables (DHTs). Amazon DynamoDB derives its name from Dynamo, but is not at all related in any other way. Dynamo has a multi-master design requiring the client to resolve version conflicts whereas DynamoDB has a single master design.

Principles of Dynamo Systems


Techniques Used in Dynamo Systems

Problem Technique Advantage
dataset partitioning Consistent Hashing Incremental, possibly linear scalability in proportion to the number of collaborating nodes.
highly available writes Vector Clock or Dotted-Version-Vector Sets, reconciliation during reads Version size is decoupled from update rates.
handling temporary failures Sloppy Quorum and Hinted Handoff Provides high availability and durability guarantee when some of the replicas are not available.
recovering from permanent failures anti-entropy using Merkle tree Can be used to identify differences between replica owners and synchronize divergent replicas pro-actively.
membership and failure detection gossip-based membership protocol and failure detection Avoids having a centralized registry for storing membership and node liveness information, preserving symmetry.

Implementations

See also

References

  1. Dynamo: Amazon’s Highly Available Key-value Store, SOSP 2007
  2. Decandia, G.; Hastorun, D.; Jampani, M.; Kakulapati, G.; Lakshman, A.; Pilchin, A.; Sivasubramanian, S.; Vosshall, P.; Vogels, W. (2007). "Dynamo". Proceedings of twenty-first ACM SIGOPS symposium on Operating systems principles - SOSP '07. p. 205. doi:10.1145/1294261.1294281. ISBN 9781595935915.

External links