pokt-network/smt

[KVStore] Implement RocksDB as a KVStore submodule

Opened this issue · 2 comments

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 the SMT
  • 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 the MapStore 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

As a reference for future submodules: https://github.com/cosmos/cosmos-db

Very interesting page by erigon who currently are happy with MDBX - https://github.com/erigontech/erigon/wiki/Choice-of-storage-engine.