A Single device object store.
The 0-stor server is a generic object store that prodive simple storage primitives, read, write, list, delete.
Underneat 0-stor uses badger as key value store. Badger allow to store the keys and the value in two different devices. Because of this separation the LSM tree of keys can most of the time stay in memory. Typically the keys could be kept in memory and depending on the use case, the values could be served from an SSD or HDD.
Install the 0-stor server
go get -u github.com/zero-os/0-stor/cmd/zerostorserver
Here are the options of the server:
--debug, -d Enable debug logging
--bind value, -b value Bind address (default: ":8080")
--data value Data directory (default: ".db/data")
--meta value Metadata directory (default: ".db/meta")
--profile-addr value Enables profiling of this server as an http service
--auth-disable Disable JWT authentification [$STOR_TESTING]
--max-msg-size value Configure the maximum size of the message GRPC server can receive, in MiB (default: 32)
--async-write enable asynchonous writes (default: false)
--help, -h show help
--version, -v print the version
Start the server with listening on all interfaces and port 12345
./zerostorserver --bind :12345 --data /path/to/data --meta /path/to/meta
The client is where all the logic of the communicaion with the 0-stor server lies.
The client provide some basic storage primitives to process your data before sending it to the 0-stor server :
- chunking
- compression
- encryption
- replication
- distribution/erasure coding
All of these primitives are configurable and you can decide how your data will be processed before beeing send to the 0-stor.
Client API documentation is on godoc
You can find a CLI for the client in cmd/zerostorcli
.
To install
go get -u github.com/zero-os/0-stor/cmd/zerostorcli
You can find more information about both component in the /docs
folder of the repository.