Introduction
At this point, most of you are probably ready to understand and implement a Dynamo-style
key-value storage; this assignment is about implementing a simplified version of Dynamo. (And
you might argue that it’s not Dynamo any more ;-) There are three main pieces you need to
implement: 1) Partitioning, 2) Replication, and 3) Failure handling.
The main goal is to provide both availability and linearizability at the same time. In other words,
your implementation should always perform read and write operations successfully even under
failures. At the same time, a read operation should always return the most recent value. To
accomplish this goal, this document gives you a guideline of the implementation. However, you
have freedom to come up with your own design as long as you provide availability and
linearizability at the same time (that is, to the extent that the tester can test). The exception is
partitioning and replication, which should be done exactly the way Dynamo does.
This document assumes that you are already familiar with Dynamo. If you are not, that is your
first step. There are many similarities between this assignment and the previous assignment for
the most basic functionalities, and you are free to reuse your code from the previous
assignment.
Get Free Quote!
449 Experts Online