Pebble is a key-value store written in Go and developed by Cockroach Labs. It is based on an unfinished Go port of LevelDB. Furthermore, additional features and optimizations are inspired by parts of RocksDB. Pebble is specifically created to suit the needs of CockroachDB, and has unique features that neither LevelDB nor RocksDB have.
- Source Code
- https://github.com/petermattis/pebble[01]
- Developer
- Country of Origin
- US
- Start Year
- 2018 [03]
- Project Type
- Open Source
- Written in
- Go
- Supported Languages
- Go
- License
- BSD License
Pebble is a key-value store written in Go and developed by Cockroach Labs. It is based on an unfinished Go port of LevelDB. Furthermore, additional features and optimizations are inspired by parts of RocksDB. Pebble is specifically created to suit the needs of CockroachDB, and has unique features that neither LevelDB nor RocksDB have.
Data Model
Pebble uses two types of keys - user keys suited for the user API and 'Internal Keys' which are composed of the user key, a sequence number, and a value signifying the key type. The Internal Key type is used to support the needs of the LSM tree.
Indexes
Pebble uses a LSM tree to store writes. All records are stored in batches, which in turn are stored in in-memory memtables and sstables. There is a separate skiplist implementation which contains offsets of the records within their batch in order to perform reads.
Citations
3 sources- https://github.com/petermattis/pebble github.com
- https://github.com/petermattis/pebble/tree/master/docs github.com
- Initial fork (leveldb -> pebble) github.com