dstore

dstore is a distributed storage framework inspired from the FAASM project.

Database

Built as an in-memory datastore with dual layer architecture that enables the storage of Key-Value pairs on nodes in coherence with a single ‘Global’ datastore for synchronization purposes. Keys are UIDs and should technically only be associated with a Value for eternity. Hopefully that will be implemented with the hash of said Value being used for the same.

Architecture

The two layer architecture consists of an in-memory datastore on each node called ‘Local’, which stores copies of data-objects as Key-Value pairs where the Key acts as a UID and enables the user to have a single copy of the data on each node, thus decreasing network access to access the same.

Demo

To demo the working of Dstore, we have created a CLI based Key-Value database that isn’t fully featured, to try it out, follow the steps given below:

  1. Download the code:
    git clone https://github.com/vyuham/dstore
    
  2. Run the server(ensure cargo is installed with rustup):
    cargo run --example global
    

    Ensure the following is showing on the terminal:

    Dstore server listening on 127.0.0.1:50051
    
  3. On another terminal, start a client:
    cargo run --example local
    

    Ensure the following is showing on the terminal:

    dstore v0.1.0 (addr: 127.0.0.1:50052)
    This is an experimental database, do contribute to further developments at https://github.com/vyuham/dstore. 
    Use `.exit` to exit the repl
    db > 
    

    Now you know some of the workings of dstore :D

REPL Commands

The demo’s REPL uses commands similar to KVDB, you may use the following to interact with it:

Contribution

Please consider opening an issue to discuss possible feature additions and use cases for the framework. We would love to review genuine PRs to fix bugs, solve issues and add feature, so do consider opening some!

As always, maintain decorum and follow the rust-lang code of conduct. Thank you!