Pebble

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.

History

The project started in 2018 as a replacement for RocksDB running inside of CockroachDB.

System Architecture

Embedded

Indexes

Log-Structured Merge Tree

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.

Storage Organization

Log-structured

Query Execution

Tuple-at-a-Time Model

Data Model

Key/Value

Storage Architecture

Disk-oriented

Pebble Logo
Website

https://github.com/petermattis/pebble

Source Code

https://github.com/petermattis/pebble

Tech Docs

https://github.com/petermattis/pebble/tree/master/docs

Developer

Cockroach Labs

Country of Origin

US

Start Year

2018

Project Type

Open Source

Written in

Go

Supported languages

Go

Inspired By

LevelDB, RocksDB

Compatible With

LevelDB, RocksDB

Licenses

BSD