Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/fern4lvarez/piladb

Lightweight RESTful database engine based on stack data structures
https://github.com/fern4lvarez/piladb

database go linux macos rest-api stack

Last synced: about 1 month ago
JSON representation

Lightweight RESTful database engine based on stack data structures

Awesome Lists containing this project

README

        

piladb [![Build Status](https://travis-ci.org/fern4lvarez/piladb.svg?branch=master)](https://travis-ci.org/fern4lvarez/piladb) [![GoDoc](https://godoc.org/github.com/fern4lvarez/piladb?status.svg)](https://godoc.org/github.com/fern4lvarez/piladb) [![Go Report Card](https://goreportcard.com/badge/github.com/fern4lvarez/piladb)](https://goreportcard.com/report/github.com/fern4lvarez/piladb) [![codecov](https://codecov.io/gh/fern4lvarez/piladb/branch/master/graph/badge.svg)](https://codecov.io/gh/fern4lvarez/piladb) [![osw](https://img.shields.io/badge/%E2%89%85osw-supported-blue.svg)](http://oscillating.works)
======

![Logo](http://i.imgur.com/tjQbm56.png)

> _[pee-lah-dee-bee]_. _pila_ means _stack_ or _battery_ in Spanish.

**piladb** is a lightweight RESTful database engine based on [stack data structures](
https://en.wikipedia.org/wiki/Stack_%28abstract_data_type%29).
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
-------------

* [Main documentation page](http://docs.piladb.org).
* [Go `pila` package documentation](https://godoc.org/github.com/fern4lvarez/piladb/pila).
* [`pilad`'s RESTful API documentation](pilad/).

Install
-------

You can download binaries for Linux and Mac in the
[**Releases**](https://github.com/fern4lvarez/piladb/releases/latest)
page.

### From Source Code

> You need Go installed. Version 1.6+ recommended.

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

Clients
-------

* shell: https://github.com/oscillatingworks/piladb-sh:

```
source <(curl -s https://raw.githubusercontent.com/oscillatingworks/piladb-sh/master/piladb.sh)
piladb_help
```

Development
-----------

> You need Go installed. Version 1.6+ is mandatory.

```bash
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`](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 [`dep`](https://golang.github.io/dep/) to vendor its few
dependencies.

**piladb** also provides a `go.mod` file, which turns this project into a Go module.
To learn more about Go modules and the `vgo` prototype, please read the
[Go & Versioning](https://research.swtch.com/vgo) series by Russ Cox.

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`](https://github.com/mitchellh/gox) installed.

Credits
-------

**piladb** is developed by [Fernando Álvarez](https://www.twitter.com/fern4lvarez)
and [≅oscillatingworks](https://www.oscillating.works) on a Dell XPS 13 laptop, running Ubuntu,
and using [`vim-go`](https://github.com/fatih/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](http://www.iconarchive.com/artist/graphicloads.html).

Typography [_Lily Script One_](http://www.fontspace.com/julia-petretta/lily-script-one) designed
by [Julia Petretta](http://www.fontspace.com/julia-petretta).

License
-------

MIT