Skip to content

[KVStore] Implement RocksDB as a KVStore submodule #38

@h5law

Description

@h5law

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Ready

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions