LegoStore is a modular distributed key-value storage system. In particular, LegoStore permits experimentation with different implementations for storage, transactional protocols, communication protocols, etc. Modularity is benefitial for two main reasons.
- Key-value storage systems that have a lot of similarities can share common infrastructure. For example, if two key-value storage systems implemented in top of LegoStore require the same consistency level, both can share the same concurrency control protocol implementation.
- LegoStore provides a common platform for efficiently comparing different implementations. In particular, developers might modify a specific module (e.g. storage module) and observe the difference in performance without touching any of the other modules (minimum changes required).
Developers can read a more detailed explanation of supported modules in the src directory. This README is oriented to explain installation and usage of LegoStore.
Instructions are suitable for Ubuntu 16.04 (possibly for other Ubuntu distributions as well)
-
Protocol Buffers - This packet is needed for serialization/deserialization of data transfered from coordinators to servers and vice versa.
You can download the source and follow the instructions here. Version >= 3.0.0 is needed. -
Google RPC - This packet is needed for RPC from coordinators to servers.
You can download the source and follow the instructions here -
Package pkg-config - Needed for Google RPC.
sudo apt install pkg-config
-
Packages flex and bison - Needed for parsing and executing user's commands (shell).
sudo apt install flex bison
-
Package doxygen - Needed for generating documentation.
sudo apt install doxygen
Simply follow the steps below.
- Download LegoStore from source (link missing).
cd LegoStore
make
make shell
for installing a shell that helps experimentation with LegoStore (optional).make docs
for generating documentation (optional).