README

piladb Build Status GoDoc Go Report Card codecov osw

Logo

[pee-lah-dee-bee]. pila means stack or battery in Spanish.

piladb is a lightweight RESTful database engine based on stack data structures. Create as many stacks as you need, PUSH or POP elements of any kind, and have access to the one on top always in constant time.

Features

  • Stacks are auto-scalable and are only limited by the capacity of the host or by configuration.
  • Available POP, PUSH, PEEK,SIZE, and FLUSH operations for each of the stacks.
  • Manage stacks and other resources by using a REST API, so you can use it with your favorite programming language.
  • Manage elements in JSON-compatible data types: strings, numbers, arrays, objects, etc.
  • Totally configurable using a REST API, or CLI parameters.
  • In-memory store.
  • Written in Go, i.e. binaries are self-contained and distributable.

Documentation

Install

You can download binaries for Linux and Mac in the Releases page.

From Source Code

You need Go installed. Version 1.6+ recommended.

go get github.com/fern4lvarez/piladb/...
cd $GOPATH/src/github.com/fern4lvarez/piladb
make pilad

Clients

Development

You need Go installed. Version 1.6+ recommended.

go get github.com/fern4lvarez/piladb/...
cd $GOPATH/src/github.com/fern4lvarez/piladb
make all

You can also use Docker to create piladb builds or development environment. Please see the dev directory.

Dependencies

piladb aims to minimize the amount of third party dependencies and to rely on the Go standard library as much as possible.

Even though, it uses gvt to vendor its few dependencies. If you use Go 1.6+, or Go 1.5 with GO15VENDOREXPERIMENT=1 set, you're good to go, libraries in vendor directory will be used and everything will work as expected. You don't need to install, use or understand gvt.

If you are using a lower Go version, piladb will use either your current local version of the dependencies, or the latest one available. Things might break, so please consider updating to the latest version.

Code Coverage

We aim for a universal 100% code coverage for all suppackages. If some piece of code is not testable, it probably needs to be changed.

Check current code coverage of the project: https://codecov.io/gh/fern4lvarez/piladb

Release

You need Docker installed.

It's possible to get pilad binary releases by executing make release. This will cross-compile pilad in all available OS's and architectures.

Alternatively, if you don't have docker installed, you can release pilad binary with the make gox command. For this, you need a configured Go environment and gox installed.

Credits

piladb is developed by Fernando Álvarez and ≅oscillatingworks on a Dell XPS 13 laptop, running Ubuntu 14.04, and using vim-go plugin within the vim editor, in Berlin and Madrid, with the support of Gali, Godín and other friends.

Logo was designed by GraphicLoads.

Typography Lily Script One designed by Julia Petretta.

License

MIT

Documentation

Overview

    piladb is a RESTful database engine based on the stack data structure. Create an ilimited number of stacks, which can contain any kind of supported data types.

    Source Files

    Directories

    Path Synopsis
    Package config implements the configuration management of piladb.
    Package config implements the configuration management of piladb.
    vars
    Package vars defines the configuration variables and default values for piladb.
    Package vars defines the configuration variables and default values for piladb.
    Package pila represents the Go library that handles the Pila, databases and stacks.
    Package pila represents the Go library that handles the Pila, databases and stacks.
    Binary pilad provides the daemon that runs the piladb server.
    Binary pilad provides the daemon that runs the piladb server.
    pkg
    date
    Package date export date-related utilities.
    Package date export date-related utilities.
    stack
    Package stack provides a basic implementation of a stack using a linked list.
    Package stack provides a basic implementation of a stack using a linked list.
    uuid
    Package uuid provides the UUID type and helper functions.
    Package uuid provides the UUID type and helper functions.
    version
    Package version provides ways to get the version of the program.
    Package version provides ways to get the version of the program.