Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[KVStore] Implement RocksDB as a KVStore submodule #38

Open
11 tasks
h5law opened this issue Jan 10, 2024 · 1 comment
Open
11 tasks

[KVStore] Implement RocksDB as a KVStore submodule #38

h5law opened this issue Jan 10, 2024 · 1 comment
Assignees
Labels
enhancement New feature or request kvstore

Comments

@h5law
Copy link
Collaborator

h5law commented Jan 10, 2024

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

@h5law h5law added enhancement New feature or request kvstore labels Jan 10, 2024
@h5law h5law self-assigned this Jan 10, 2024
@h5law
Copy link
Collaborator Author

h5law commented Jan 11, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request kvstore
Projects
Status: Ready
Development

No branches or pull requests

1 participant