cockroachdb/pebble

RocksDB/LevelDB inspired key-value database in Go

View on GitHub ↗Jump to charts ↓Open shareable report →

Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 38 minutes ago
Type:Library / SDKCategory(s):NoSQL, Key-Value & CachesDatabases & Storage
Added to GitGenius on July 11th, 2024
Created on July 17th, 2018
Open Issues & Pull Requests: 168 (+0)
GitHub issues: Enabled
Number of forks: 590
Total Stargazers: 6,050 (+0)
Total Subscribers: 96 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 14.6 hours
Mean response time: 87.0 days
90th percentile: 149.2 days
Tracked items: 787

How this project is maintained

About 16% of issues opened in the past year have never received a reply. 70% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Work labelled "C-test-failure" is answered fastest, typically in about 10 hours, while "no-issue-activity" waits about 4 days. 67% of tracked open issues have had no activity in three months, so the open count overstates what is actively being worked. 84% of issues opened in the past year have been closed, leaving a working backlog.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 143
New in 7 days: 2
Closed in 7 days: 1
Avg open age: 567 days
Stale 30+ days: 121
Stale 90+ days: 113

Recent activity

Opened in 7 days: 2
Closed in 7 days: 1
Comments in 7 days: 2
Events in 7 days: 4

Top labels

  • T-storage (1,208)
  • A-storage (1,205)
  • C-test-failure (467)
  • O-robot (187)
  • no-issue-activity (186)
  • X-stale (160)
  • release-blocker (108)
  • O-metamorphic (73)

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

Pebble is a key-value store written in Go that draws inspiration from LevelDB and RocksDB but is specifically designed for performance and integration with CockroachDB. The project inherits RocksDB's file formats while adding extensions such as range deletion tombstones, table-level bloom filters, and updates to the MANIFEST format. Rather than attempting to replicate every RocksDB feature, Pebble deliberately targets the specific use case and feature set required by CockroachDB, implementing capabilities like block-based tables, checkpoints, indexed batches, level-based compaction, merge operators, prefix bloom filters, range deletion tombstones, reverse iteration, SSTable ingestion, snapshots, and single delete operations.

Pebble was introduced as an alternative storage engine in CockroachDB v20.1 in May 2020 and became the default storage engine in CockroachDB v20.2 in November 2020. The project is production-ready and has been deployed at scale by CockroachDB users.

The database implements several performance improvements over RocksDB.

Pebble v1 maintains forward compatibility with RocksDB 6.2.1, meaning databases generated by RocksDB can be upgraded for use with Pebble. However, Pebble v2 and newer versions do not support opening RocksDB-generated databases. The project uses format major versions to manage backwards-incompatible changes, with 19 distinct format versions documented from FormatMostCompatible through FormatColumnarBlocks. Different CockroachDB releases support different ranges of these format versions, with migrations either occurring in the background or blocking until completion. The repository explicitly warns that Pebble may silently corrupt data if used with RocksDB databases employing unsupported features, and it does not implement numerous RocksDB capabilities including backups, column families, FIFO compaction, hash table formats, memtable bloom filters, persistent caches, plain table formats, sub-compactions, transactions, and universal compaction styles.

The codebase is classified across multiple storage-related categories including LSM-tree architecture, log-structured storage, sstables, compaction, transaction support, and memory management. The project maintains nightly benchmarks and provides comprehensive documentation on implementation differences from RocksDB, making it accessible for developers integrating it into their systems.