Skip to content
forked from infinit/memo

The memo elastic and resilient key-value store.

License

Notifications You must be signed in to change notification settings

TheodorKleynhans/memo

 
 

Repository files navigation

memo, an elastic and resilient key-value store

Logo - Memo

The memo project combines a value store (where you manipulate blocks and addresses) and a key-value store (where you manipulate arbitrary data and arbitrary keys).

memo is supported by Docker and is used as backend by the Infinit Storage Platform project.

What is the difference between the value store and the key-value store

The key-value store uses the value store to provide a higher-level interface like common key-value stores (etcd, ZooKeeper, etc.), where arbitrary data can be stored under an arbitrary name.

The value store is the lowest brick of the architecture, providing the fundamental object named blocks, declined in a few flavors. Those blocks are cryptographically protected, their addresses are chosen randomly to guarantee a homogeneous distribution and prevent XXX(squating) and all operations are atomic, but the caller is responsible for keeping addresses.

For more details you can consult XXX: When shoould I use the value store against the key-value store.

How to get memo

To download the source code and build memo by yourself, get it from GitHub.

git clone https://github.com/infinit/memo --recursive # Clone memo and its submodules.

Note: If you cloned it using the GitHub "clone" button, do not forget to run git submodules update --init --recursive!

How to build memo

Requirements

Core library

memo uses Elle, Infinit's core library.

Build system

memo uses Drake and has it as a submodule.

How to compile

For a detailed procedure, visit our wiki: How to build.

First you need to install Python dependencies.

sudo pip3 install -r drake/requirements.txt

Note: If you don't want dependencies to be installed system-wide, you should consider using virtualenv.

Change directory to _build/<architecture> where you can find a generic Drake configuration script.

GNU/Linux

cd _build/linux64
./drake //build -j 4 # Build everything (using 4 jobs).

macOS

cd _build/osx
./drake //build -j 4 # Build everything (using 4 jobs).

This will result on bin/memo.

Maintainers

About

The memo elastic and resilient key-value store.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 81.8%
  • Python 15.8%
  • Makefile 0.8%
  • Go 0.6%
  • C 0.5%
  • Roff 0.2%
  • Other 0.3%