https://github.com/prettymuchbryce/deltadb
A proof-of-concept time-series database
https://github.com/prettymuchbryce/deltadb
Last synced: over 1 year ago
JSON representation
A proof-of-concept time-series database
- Host: GitHub
- URL: https://github.com/prettymuchbryce/deltadb
- Owner: prettymuchbryce
- License: mit
- Created: 2015-03-29T23:33:57.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2015-03-30T04:08:14.000Z (over 11 years ago)
- Last Synced: 2025-03-17T16:55:45.676Z (over 1 year ago)
- Language: Go
- Size: 141 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
deltadb
====
> A proof-of-concept time-series database

## What is it ?
deltadb is a proof-of-concept document store. Deltadb maintains history of every action which mutates the state of the database. Deltadb allows for examining the database at a previous state or rolling back to a previous state in a fashion similar to a git repository. Deltadb maintains the concept of a single-branch immutable history tree where even rollbacks themselves are nodes in this tree. Deltadb also experiments with the idea of storing `messages` and `authors` for each mutable change in the database in order to provide more insight into how and why a particular operation in the past was performed.
## Why is it ?
I thought it would be interesting to build a database wherein saving past state was not optional, and was implemented at the database level rather than the application level. This could be a useful safety net for building systems which have a requirement of maintaining an accurate history of certain changes. Furthermore the concept of `messages`, and `authors` might make it easier to pin down which particular system or user was responsible for making any one particular change. For example, if you found a problematic write in the database you could see that the `author` was some particular service in your application stack.
## Status
This is first and foremost a learning project for me to learn more about databases and Go. You should not use it for anything important.
## Usage
1. Install [go](http://golang.org/)
2. `cd $GOPATH/src && git clone https://github.com/prettymuchbryce/deltadb && go get ./...`
3. Configure the `locations` directory in deltad.conf (This is where the data will live)
4. `make run`
5. (in a new terminal) `make cli`
6. in the cli `connect;`
7. Type `help;` to see a list of all commands
### TODO
- Scaling past 1 core
- Scaling past 1 machine
- Implementing locking for concurrency
- Reducing or eliminating the memory footprint of the appendix file (bloom filter or b-tree)
- Users / Auth
- Encrypted data
- go client library
- Per-document and per-collection rollbacks