Code Monkey home page Code Monkey logo

depart's Introduction

DEPART: Replica Decoupling for Distributed Key-Value Storage

1. Introduction

Modern distributed key-value (KV) stores adopt replication for fault tolerance by distributing replicas of KV pairs across nodes. However, existing distributed KV stores often manage all replicas in the same index structure, thereby leading to significant I/O costs beyond the replication redundancy. We propose a notion called replica decoupling, which decouples the storage management of the primary and redundant copies of replicas, so as to not only mitigate the I/O costs in indexing, but also provide tunable performance. In particular, we design a novel two-layer log that enables tunable ordering for the redundant copies to achieve balanced read/write performance. We implement a distributed KV store prototype, DEPART, atop Cassandra. Experiments show that DEPART outperforms Cassandra in all performance aspects under various consistency levels and parameter settings. Specifically, under the eventual consistency setting, DEPART achieves up to 1.43x, 2.43x, 2.68x, and 1.44x throughput for writes, reads, scans, and updates, respectively.

Publications

  • Qiang Zhang, Yongkun Li, Patrick P. C. Lee, Yinlong Xu, Si Wu. "DEPART: Replica Decoupling for Distributed Key-Value Storage". Proceedings of the 20th USENIX Conference on File and Storage Technologies (FAST 2022), February 2022.

2. Overview

3. Minimal setup to test the prototype

  • Java >= 1.8 (OpenJDK and Oracle JVMS have been tested)
  • Python 2.7 (for cqlsh)
  • 16 GiB RAM
  • 500 GiB HDD or SSD
  • A 10Gb/s Ethernet switch
  • Ubuntu 18.04 LTS or CentOS 7.6

4. Build and install DEPART project

  • Getting the source code of DEPART
    $ git clone --recursive https://github.com/ustcadsl/depart.git

  • Compile DEPART
    $ cd depart
    $ ant clean & ant

5. Build and install YCSB

  • Clone the souce code of YCSB-0.15.0 (YCSB-0.15.0)
    $ git clone --recursive https://github.com/brianfrankcooper/YCSB.git

  • Compile the Cassandra package of YCSB (Note that the maven environment need to be first installed)
    $ mvn -pl com.yahoo.ycsb:cassandra-binding -am clean package

  • Using YCSB to generate workloads
    $ ./bin/ycsb load cassandra-cql -P workloads/workloadt -p hosts=$node IP$ -threads $N$ ...
    $ ./bin/ycsb run cassandra-cql -P workloads/workloadt2 -p hosts=$node IP$ -threads $N$ ...

6. Testing the DEPART Prototype

  • Start the Cassandra server in each node
    $ bin/cassandra

  • Using the Cassandra Query Language in a node
    $ bin/cqlsh $node IP$

  • Create keyspace (the database) and the table, so as to store user data
    $ cqlsh> create keyspace ycsb WITH REPLICATION= {'class' : 'SimpleStrategy', 'replication_factor': 3};
    $ cqlsh> create table usertable ( y_id varchar primary key,field0 varchar,field1 varchar,field2 varchar,field3 varchar, field4 varchar, field5 varchar,field6 varchar,field7 varchar, field8 varchar, field9 varchar) WITH compaction={'class' : 'LeveledCompactionStrategy' };

  • Finally, using YCSB tool on the client node to issue requests to the cassandra cluster

  • Load the database
    $ ./bin/ycsb load cassandra-cql -P workloads/workloadt -p hosts=$node IP$ -threads $N1$ -p columnfamily=usertable -p recordcount=$N2$ ...

  • Run benchmarks based on the database
    $ ./bin/ycsb run cassandra-cql -P workloads/workloadt2 -p hosts=$node IP$ -threads $N1$ -p columnfamily=usertable -p operationcount=$N2$ ...

7. Contact

depart's People

Contributors

zhangqiangustc avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.