Skip to content

Instantly share code, notes, and snippets.

@neerajgoel82
Created May 17, 2017 03:23
Show Gist options
  • Save neerajgoel82/9d015b78208ea52887f17c8f6061e6d6 to your computer and use it in GitHub Desktop.
Save neerajgoel82/9d015b78208ea52887f17c8f6061e6d6 to your computer and use it in GitHub Desktop.
Dynamo DB notes
Dynamo uses a synthesis of well known techniques to achieve scalability and availability:
a) Data is partitioned and replicated using consistent hashing [10]
b) consistency is facilitated by object versioning [12].
c) The consistency among replicas during updates is maintained by a quorum-like technique and a decentralized replica synchronization protocol.
d) Dynamo employs a gossip based distributed failure detection and membership protocol.
Dynamo is a completely decentralized system with minimal need for manual administration. Storage nodes can be added and removed from Dynamo without requiring any manual partitioning or redistribution.
Bloom filters to check whether a partition has the keys or not?
This process of conflict resolution
introduces two problems: when to resolve them and who resolves
them. Dynamo is designed to be an eventually consistent data
store; that is all updates reach all replicas eventually.
This requirement forces us to push the
complexity of conflict resolution to the reads in order to ensure
that writes are never rejected.
The next design choice is who performs the process of conflict
resolution. This can be done by the data store or the application.
In Dynamo, each storage node has three main software
components: request coordination, membership and failure
detection, and a local persistence engine. All these components
are implemented in Java.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment