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

Initial import of KV-snapshot benchmark #1

Merged
merged 12 commits into from
Mar 1, 2021
Merged

Initial import of KV-snapshot benchmark #1

merged 12 commits into from
Mar 1, 2021

Conversation

tzdybal
Copy link
Member

@tzdybal tzdybal commented Feb 5, 2021

  • General benchmark structure
  • KV-store interface
  • RocksDB store implementation
  • Initial approach to plotting with Gnuplot

* General benchmark structure
* KV-store interface
* RocksDB store implementation
* Initial approach to plotting with Gnuplot
@pkieltyka
Copy link

https://github.com/cockroachdb/pebble is another very strong RocksDB-compat KV to try out. My prediction is it will be the best

Both KV stores doesn't support querying past state yet.
For badger we need to store timestamp on commit, and use it for
retrieval.
RocksDB should open a new DB handle from checkpointed version directory.

Badger insert performance is probably caused by adding KV-pairs one by
one, on single goroutine. Batch or WriteBatch probably will improve
performance.
@robert-zaremba
Copy link

how about merging this PR?

@robert-zaremba
Copy link

https://github.com/cockroachdb/pebble is another very strong RocksDB-compat KV to try out. My prediction is it will be the best

@pkieltyka - did you benchmark pebble with RocksDB or baddger using a batched updates?

As expected, without any form of batching it's very slow (still waiting
for results).
@liamsi
Copy link
Member

liamsi commented Feb 25, 2021

Can you link to the results in a comment here? The plots still seem empty.

@tzdybal
Copy link
Member Author

tzdybal commented Feb 25, 2021

Can you link to the results in a comment here? The plots still seem empty.

I still wait for them to finish generating ;)

@@ -0,0 +1,20 @@
package main

type KV interface {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be the tm-db interface. That we can test what is already in use and possibly how we can modify the interface to better suit the needs here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I created new interface for maximum flexibility (and no dependencies). For example I need snapshots, but don't need "Sync" version of functions.

Copy link

@tac0turtle tac0turtle Feb 25, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

makes sense. I would hope the sdk would remove tm-db so this along with my plans.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's firstly have a PoC and validate the approach with benchmarks.

@tzdybal tzdybal merged commit c2aebdc into main Mar 1, 2021
@liamsi liamsi deleted the scratch branch March 2, 2021 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants