-
Notifications
You must be signed in to change notification settings - Fork 7
Home
Welcome to the Distributed Key-Value Framework!
Key-value stores provide a simple abstraction to store and retrieve our data. Each key-value store is a set of <key, value> pairs. A key-value store has two basic operations: PUT(k, v)
and GET(k)
. PUT(k, v)
writes a new version with value v
for data item with key k
, and GET(k)
reads the value of the data item with key k
. To reduce response time, increase durability, and availability of our service, we can create several copies (i.e., replicas) of our data in different locations. Now, clients can access their local replica. Figure 1 shows the overall structure of a geo-replicated distributed key-value store.
Figure 1 A Geo-replicate Distributed Key-value Store
Typically, to achieve better performance, we let replicas update their data independently. They later can communicate with each other to inform each other about updates that have occurred in them. However, using this approach, it is possible that the data of replicas become inconsistent with each other (e.g., one replica has a data that the other does not have it). The inconsistency between replica creates anomalies in our data that make programming for application developer complicated.
DKVf is mainly designed to help researchers working on distributed data stores to investigate the effect of a given consistency protocol on the performance of the system. It also comes with a toolset that makes performing experiments more convenient.
We designed DKVF to help protocol designers to only focus on their high-level protocols. Our main goal is to provide a framework that lets researchers implement a prototype of their system by writing a minimal piece of code that is very close to the pseudo codes that they publish in their paper. To see an example of such protocols you can refer to the following papers:
- Roohitavaf, Mohammad, Murat Demirbas, and Sandeep Kulkarni. "CausalSpartan: Causal Consistency for Distributed Data Stores using Hybrid Logical Clocks." Reliable Distributed Systems (SRDS), 2017 IEEE 36th Symposium on. IEEE, 2017.
- Du, Jiaqing, et al. "Gentlerain: Cheap and scalable causal consistency with physical clocks." Proceedings of the ACM Symposium on Cloud Computing. ACM, 2014.
- Lloyd, Wyatt, et al. "Don't settle for eventual: scalable causal consistency for wide-area storage with COPS." Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. ACM, 2011.
Typically, researchers represent their protocol using an event-driven approach. This is the easiest way to express a consistency protocol for distributed data stores. DKVF lets researchers code their prototype in the exact same event-driven approach.
Watch a quick course on using DKVF to implement an eventually consistent distributed key-value store with DKVF on YouTube.