[KVStore] Implement RocksDB as a KVStore submodule
Opened this issue · 2 comments
h5law commented
Objective
Implement a submodule in the kvstore
directory for a RocksDB
- Look into IOTA's
rocksdb
and see whether this can be used. The repo - Look into
Pebble
by CockroachDB a Go implementation based on RocksDB they use at CockroachDB - Look into
grocksdb
which is a wrapper in Go for RocksDB being actively maintained - Look into
gorocksdb
developed by cosmos as their Go wrapper for RocksDB
Origin Document
RocksDB is known for its speed and effiiency, having it not only as a nodestore backing the SMT would improve performance in prod but also a wrapper around RocksDB
that exposes extra methods would be highly sought after.
Goals
- Find an appropriate library to base the submodule on
- Create a submodule and expose an interface for easy use
- Ensure it conforms to
MapStore
and can be used with theSMT
- Add documentation
Deliverables
- Create a
RocksDB
submodule with wrapping functions to provide extra capabilities - Add extensive testing
- Add documentation
- Add runnable examples
- Expose a
RocksDBKVStore
interface that conforms to theMapStore
interface - Add documentation on how it can be used with the
SMT
- Add runnable examples
Non-goals / Non-deliverables
- Change the existing
MapStore
interface - Change any existing submodules
- Rewrite
RocksDB
- use an existing implementation
General deliverables
- Comments: Add/update TODOs and comments alongside the source code so it is easier to follow.
- Testing: Add new tests (unit/fuzz/benchmarks) to the test suite.
- Makefile: Add new targets to the Makefile to make the new functionality easier to use.
- Documentation: Update architectural or development READMEs; use mermaid diagrams where appropriate.
Creator: @h5law
h5law commented
As a reference for future submodules: https://github.com/cosmos/cosmos-db
okdas commented
Very interesting page by erigon who currently are happy with MDBX - https://github.com/erigontech/erigon/wiki/Choice-of-storage-engine.