A proof-of-concept time-series database
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.
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.
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.
- Install go
cd $GOPATH/src && git clone https://github.com/prettymuchbryce/deltadb && go get ./...
- Configure the
locations
directory in deltad.conf (This is where the data will live) make run
- (in a new terminal)
make cli
- in the cli
connect;
- Type
help;
to see a list of all commands
- 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