0-stor

module
v0.0.0-...-3e87057 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 3, 2018 License: Apache-2.0

README

0-stor

Build Status GoDoc codecov Go Report Card license

0-stor is client library to process and store data to 0-db server.

link to group on telegram

Minimum requirements

Requirements Notes
Go version Go 1.8 or any higher stable release (it is recommended to always use the latest Golang release)
protoc version protoc 3.4.0 (protoc-3.4.0) (only required when needing to regenerate any proto3 schemas)

Developed on Linux and MacOS, CI Tested on Linux. Ready for usage in production on both Linux and MacOS.

While 0-stor probably works on Windows and FreeBSD, this is not officially supported nor tested. Should it not work out of the box and you require it to work for whatever reason, feel free to open a pull request for it.

Components

For a quick introduction checkout the intro docs.

For a full overview check out the code organization docs.

Server

0-stor uses 0-db as storage server.

See 0-db page for more information.

0-db server need to run in diret mode.

Client

The client contains all the logic to communicate with the 0-db servers.

The client provides some basic storage primitives to process your data before sending it to the 0-db servers:

  • chunking
  • compression
  • encryption
  • replication or distribution/erasure coding

All of these primitives are configurable and you can decide how your data will be processed before being sent to the 0-stor.

Metadata

Client's Write returns metadata that need to be stored in safe place for future data retrieval. If 0-stor client created with metadata storage, then the metadata is going to stored on the Write operation.

Provided metadata DB storage

0-stor also provides two metadata storage packages to be used by user:

Here is the example to use etcd storage

// creates metadata DB storage
etcdDB, err := etcd.New([]string{"127.0.0.1:2379"})
if err != nil {
	log.Fatal(err)
}

// creates metadata client with default encryption using the given key as private key
metaCli, err := metastor.NewClient("mynamespace", etcdDB, "ab345678901234567890123456789012")
if err != nil {
	log.Fatal(err)
}

// creates 0-stor client
c, err := client.NewClientFromConfig(config, metaCli, -1) // use default job count
if err != nil {
	log.Fatal(err)
}

User could also use badger as metadata DB storage by replacing

etcdDB, err := etcd.New([]string{"127.0.0.1:2379"})

line above with the respective badger code, see badger godoc for more details.

Own metadata DB storage

User could also use own implementation of metadata DB storage by implementing the DB interface.

And then replace the

etcdDB, err := etcd.New([]string{"127.0.0.1:2379"})

line above with the code to creates the metadata DB storage.

Client API

Client API documentation can be found in the godocs:

godoc

Client CLI

You can find a CLI for the client in cmd/zstor.

To install

go get -u github.com/zero-os/0-stor/cmd/zstor

Directories

Path Synopsis
benchmark
bencher
Package bencher provides the benchmarking logic
Package bencher provides the benchmarking logic
config
Package config provides the config types and helper functions for zstorbench
Package config provides the config types and helper functions for zstorbench
datastor
Package datastor defines the clients and other types, to be used to interface with a zstordb server.
Package datastor defines the clients and other types, to be used to interface with a zstordb server.
datastor/pipeline
Package pipeline is used to write/read content from/to a datastor cluster.
Package pipeline is used to write/read content from/to a datastor cluster.
datastor/pipeline/crypto
Package crypto collects common cryptographic components.
Package crypto collects common cryptographic components.
metastor/encoding/proto
Package proto is a generated protocol buffer package.
Package proto is a generated protocol buffer package.
cmd
api
api/grpc
Package grpc provides a daemon implementation, which provides gRPC interface to the 0-stor client.
Package grpc provides a daemon implementation, which provides gRPC interface to the 0-stor client.
api/grpc/schema
Package schema is a generated protocol buffer package.
Package schema is a generated protocol buffer package.
examples
utils

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL