lognplot icon indicating copy to clipboard operation
lognplot copied to clipboard

Storage backend using RocksDB database

Open TimonTerBraak opened this issue 5 years ago • 2 comments

The RocksDB library provides a persistent key value store. Keys and values are arbitrary byte arrays. The keys are ordered within the key value store according to a user-specified comparator function.

Implementation is in C++, there are rust and python binding available. The database is stored in a single directory (not single-file).

https://github.com/facebook/rocksdb/blob/gh-pages-old/intro.pdf?raw=true https://github.com/facebook/rocksdb/wiki

Python bindings for rocksdb: https://python-rocksdb.readthedocs.io/en/latest/index.html

Rust bindings for rocksdb: https://github.com/rust-rocksdb/rust-rocksdb

TimonTerBraak avatar Feb 02 '20 08:02 TimonTerBraak

This looks nice!

Having a database backed datastore is very good. Also the key-value pair is handy. It would be nice to be able to change the database, so the key-value API would be a good abstraction for the database.

windelbouwman avatar Feb 02 '20 13:02 windelbouwman

I am writing the layer on top on the Python rocksDB API to be able to read/write the nodes of the btree. That seems to work fine. However, the data structure manipulations are not implemented. That should remain in the btree class.

API is then something like this:

key = addNode(self, left = -1, right = -1, aggregation = [])
key = addLeaf(self, samples)
get(self, key)

TimonTerBraak avatar Feb 02 '20 14:02 TimonTerBraak