Created
May 17, 2017 03:23
-
-
Save neerajgoel82/9d015b78208ea52887f17c8f6061e6d6 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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