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.
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, optimize data placement, fault tolerance and more. All operations are atomic. The main drawback being the responsability of keeping blocks addresses is transfered to the caller.
For more details you can consult When shoould I use the value store against the key-value store.
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 submodule update --init --recursive
!
memo
uses Elle, Infinit's core library.
memo
uses Drake and has it as a submodule.
For a detailed procedure, visit our wiki: How to build.
First you need to install Python dependencies.
sudo pip3 install -r 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.
cd _build/linux64
./drake //build -j 4 # Build everything (using 4 jobs).
cd _build/osx
./drake //build -j 4 # Build everything (using 4 jobs).
This will result on bin/memo
.
- Website: https://memo.infinit.sh
- Email: open+memo@infinit.sh