Skip to content

Latest commit

 

History

History
69 lines (53 loc) · 1.95 KB

README.md

File metadata and controls

69 lines (53 loc) · 1.95 KB

Kvs

Persistent key-value storage with client-server architecture based on bitcast algorithm.

Implementation of project from course Practical Networked Applications in Rust.

Current implementation status: Project 4: Concurrency and parallelism

Kvs-server

Server is synchronous but uses thread pool for concurrent processing of commands. Asynchronous implementation will be soon.

Two engines are supported:

  • Kvs - KvsEngine, custom implementation of bitcast algorithm. Implementation is mostly lock-free. An exception is compaction process which requires a global lock.
  • Sled - Wrapper for Sled engine.

Note that data-files of different engines are not interchangeable, so you must choose which one should be used for your dataset.

Running:

cargo run --bin kvs-server 

Usage:

USAGE:
    kvs-server [OPTIONS]

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -a, --addr <addr>           [default: 127.0.0.1:4000]
    -e, --engine <engine>       [default: kvs]  [possible values: Kvs, Sled]
    -l, --logging <logging>     [default: DEBUG]

Kvs-client

Running:

cargo run --bin kvs-server

Usage:

USAGE:
    kvs-client [OPTIONS] <SUBCOMMAND>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -a, --addr <addr>           [default: 127.0.0.1:4000]
    -l, --logging <logging>     [default: DEBUG]

SUBCOMMANDS:
    get     
    help    Prints this message or the help of the given subcommand(s)
    rm      
    set     

Commands:

kvs-client set [OPTIONS] <key> <value>
kvs-client get [OPTIONS] <key>
kvs-client rm [OPTIONS] <key>