-
Notifications
You must be signed in to change notification settings - Fork 135
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
PebbleDB #230
PebbleDB #230
Conversation
Codecov Report
@@ Coverage Diff @@
## master #230 +/- ##
==========================================
- Coverage 68.54% 68.48% -0.06%
==========================================
Files 27 27
Lines 2130 2126 -4
==========================================
- Hits 1460 1456 -4
Misses 595 595
Partials 75 75
|
Remaining things to do here include adding pebbledb to the iavl benchmarks |
this contains a bug affecting goleveldb that we added while messing about. I'm going to close it and submit a pr that only touches pebble stuff. |
This PR integrates pebbledb, a key-value store by Cockroachdb based on Cockroach Labs findings about cgo: * https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ Unlike any other kv store that cometbft currently supports: * pebble is actively maintained unlike: * goleveldb * boltdb * badgerdb * pebble does not require the use of CGO like: * cleveldb * rocksdb In benchmarks: * pebble performs better than goleveldb, cleveldb and rocksdb * pebble performs consistently At Notional Ventures, Pte, we've used and submitted pebble for two years for: * archive nodes that would be crushed if they used goleveldb * high performance RPC infrastructure Here are the hitstorical pull requests to merge pebble: * tendermint/tm-db#230 * tendermint/tm-db#231 * tendermint/tm-db#281 * tendermint/tm-db#282 * tendermint/tm-db#283 * tendermint/tm-db#284 * tendermint/tm-db#304 * tendermint/tm-db#321 Pebble snapshots for cosmos blockchains are available here: * https://snapshot.notional.ventures/ --- #### PR checklist - [ ] Tests written/updated - [x] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec --------- Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
This PR integrates pebbledb, a key-value store by Cockroachdb based on Cockroach Labs findings about cgo: * https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ Unlike any other kv store that cometbft currently supports: * pebble is actively maintained unlike: * goleveldb * boltdb * badgerdb * pebble does not require the use of CGO like: * cleveldb * rocksdb In benchmarks: * pebble performs better than goleveldb, cleveldb and rocksdb * pebble performs consistently At Notional Ventures, Pte, we've used and submitted pebble for two years for: * archive nodes that would be crushed if they used goleveldb * high performance RPC infrastructure Here are the hitstorical pull requests to merge pebble: * tendermint/tm-db#230 * tendermint/tm-db#231 * tendermint/tm-db#281 * tendermint/tm-db#282 * tendermint/tm-db#283 * tendermint/tm-db#284 * tendermint/tm-db#304 * tendermint/tm-db#321 Pebble snapshots for cosmos blockchains are available here: * https://snapshot.notional.ventures/ --- #### PR checklist - [ ] Tests written/updated - [x] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec --------- Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com> (cherry picked from commit 82fa3c0)
This PR integrates pebbledb, a key-value store by Cockroachdb based on Cockroach Labs findings about cgo: * https://www.cockroachlabs.com/blog/the-cost-and-complexity-of-cgo/ Unlike any other kv store that cometbft currently supports: * pebble is actively maintained unlike: * goleveldb * boltdb * badgerdb * pebble does not require the use of CGO like: * cleveldb * rocksdb In benchmarks: * pebble performs better than goleveldb, cleveldb and rocksdb * pebble performs consistently At Notional Ventures, Pte, we've used and submitted pebble for two years for: * archive nodes that would be crushed if they used goleveldb * high performance RPC infrastructure Here are the hitstorical pull requests to merge pebble: * tendermint/tm-db#230 * tendermint/tm-db#231 * tendermint/tm-db#281 * tendermint/tm-db#282 * tendermint/tm-db#283 * tendermint/tm-db#284 * tendermint/tm-db#304 * tendermint/tm-db#321 Pebble snapshots for cosmos blockchains are available here: * https://snapshot.notional.ventures/ --- #### PR checklist - [ ] Tests written/updated - [x] Changelog entry added in `.changelog` (we use [unclog](https://github.com/informalsystems/unclog) to manage our changelog) - [x] Updated relevant documentation (`docs/` or `spec/`) and code comments - [x] Title follows the [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) spec --------- Co-authored-by: Anton Kaliaev <anton.kalyaev@gmail.com>
I spoke with the Terra team, and they mentioned that because their CosmWasm usage is high, there were issues with cgo/FFI (Rocks will hit this, as will CosmWasm, and this resulted in high overhead) when using RockDB, making it a less than ideal solution for their needs. Since CosmWasm is being adopted pretty widely in Cosmos, we're experimenting with PebbleDB, which outperforms RocksDB in synthetic benchmark tests.
Currently, the goal of these changes is to be able to test them and see if they increase RPC capacity on relayers, so that the IBC relay network can be more reliable.