RocksDB与LevelDB 介绍与选型指南
RocksDB与LevelDB 组合专题介绍与选型指南:官方资料溯源的 LSM 嵌入式 KV 存储架构与版本现状(RocksDB v11.8.1、LevelDB 1.23)、两者同源关系与能力差异、官方快速上手,以及两者之间及与 LMDB、BadgerDB、Pebble 的量化选型对比。查询日期 2026-10-19,未做本地实测。
RocksDB与LevelDB 介绍与选型指南
目标:基于官方公开资料(facebook/rocksdb 与 google/leveldb 官方仓库的 README、Releases 页与官方文档)溯源介绍 RocksDB 与 LevelDB 两个同源嵌入式 KV 存储引擎的架构、版本现状与选型考量,并给出两者之间及与 LMDB、BadgerDB、Pebble 的量化对比。本文不做本地安装与运行实测,全部数据实查于 2026-10-19。
一、信息基准
1.1 查询说明
- 查询日期:2026-10-19。
- 信息获取方式:纯官方资料溯源(GitHub 官方仓库 facebook/rocksdb 与 google/leveldb 的 README、Releases 页、docs 文档目录),本文不做本地安装与运行实测。
- 版本口径说明:本专栏将 RocksDB 与 LevelDB 作为组合专题介绍(参照本站 LVS 介绍与选型指南的先例,标题不带单一版本号);「二、软件概述」分引擎列出各自的版本基准。
1.2 版本依据
| 引擎 | 实查结果(2026-10-19) | 来源 |
|---|---|---|
| RocksDB 最新稳定版 | v11.8.1(2026-08-07 发布) | github.com/facebook/rocksdb/releases |
| RocksDB 系列现状 | 11.x 主线(11.1.2 于 2026-06-25、11.1.1 于 2026-04-29、11.0.4 于 2026-04-07 发布);10.x 与 8.11.5(2026-01-21)旧线仍有补丁 | github.com/facebook/rocksdb/releases |
| LevelDB 最新稳定版 | 1.23(2021-02-23 发布,此后无新 release) | github.com/google/leveldb/releases |
| LevelDB 维护状态 | README 官方声明「本仓库仅接受极有限维护」(只审查关键 bug 修复与内部依赖性变更) | google/leveldb README |
| 许可 | RocksDB:GPLv2 与 Apache-2.0 双许可(README「License」节原文);LevelDB:BSD-3-Clause | 两仓库 LICENSE/README |
| GitHub stars | RocksDB 32207;LevelDB 39500 | GitHub 仓库元数据(2026-10-19 实查) |
1.3 官方来源清单
| 来源 | 地址 |
|---|---|
| RocksDB 仓库 | https://github.com/facebook/rocksdb |
| RocksDB Wiki | https://github.com/facebook/rocksdb/wiki |
| RocksDB 官方示例 | https://github.com/facebook/rocksdb/tree/main/examples |
| LevelDB 仓库 | https://github.com/google/leveldb |
| LevelDB 文档 | https://github.com/google/leveldb/blob/main/doc/index.md |
| LevelDB Releases | https://github.com/google/leveldb/releases |
二、软件概述
本文介绍的版本基准为:RocksDB v11.8.1(2026-08-07 发布)与 LevelDB 1.23(2021-02-23 发布)。
两个引擎同源:RocksDB 由 Facebook(Meta)数据库工程团队开发维护,官方 README 明确说明其「建立在 Sanjay Ghemawat 与 Jeff Dean 的 LevelDB 前期工作之上」。二者都是嵌入式的持久化键值存储库——以库的形式链接进宿主进程,不是独立数据库服务,不提供 SQL、索引与网络协议层。
LevelDB 是 Google 开源的快速键值存储库,提供从字符串键到字符串值的有序映射:键按用户指定比较器排序,支持原子批量写入、快照与双向迭代,数据自动经 Snappy(或 Zstd)压缩(官方 README)。其 README 现已官方声明仓库仅接受极有限维护,1.23 为最后 release。
RocksDB 官方 README 将自己定位为「面向 Flash 与 RAM 存储的持久化键值存储」,采用 LSM(Log-Structured-Merge-Database)设计,在写放大(WAF)、读放大(RAF)与空间放大(SAF)之间提供灵活权衡,支持多线程 compaction,适合单库存储数 TB 数据。11.x 主线活跃发版,Meta 官方持续维护。
三、核心架构
3.1 LSM 树写入模型
两个引擎的写入都遵循 LSM 思路:写入先进内存表(memtable)与预写日志(WAL),memtable 写满后刷盘为不可变的 SST 文件,后台 compaction 逐层合并文件、消化删除标记。LevelDB 的实现是该模型的经典最小化版本;RocksDB 在此之上提供多线程 compaction、更灵活的压缩与分层策略,官方 README 用 WAF/RAF/SAF 三个指标描述可调权衡空间。
3.2 读取路径与有序性
数据按键排序存储,读操作可能需要跨越 memtable 与多层 SST 文件。LevelDB 支持用户自定义比较器改变排序规则,支持创建瞬态快照(snapshot)获得一致视图,并支持前向/后向迭代(官方 README Features 节)。RocksDB 沿用并扩展了这套有序存储模型。
3.3 进程与部署边界
两者均为进程内库:LevelDB 官方 README「Limitations」明确列出——不是 SQL 数据库、不支持关系模型与索引、同一时间仅允许单进程(可多线程)访问一个数据库、不内置客户端-服务端支持,需要服务化的应用须自行包装。RocksDB 同样以嵌入形态为主,官方通过 Wiki 与 examples 目录提供使用指引。
四、功能特性
4.1 LevelDB:精简的有序 KV 能力集
官方 README Features 节列出的能力:键值为任意字节数组、按键排序存储、可自定义比较器、Put/Get/Delete 基础操作、原子批量写(batch)、瞬态快照、双向迭代、Snappy 自动压缩(另支持 Zstd)、经虚拟文件系统接口适配不同操作系统环境。
4.2 RocksDB:面向服务器级负载的扩展集
RocksDB 在 LevelDB 模型上扩展出面向生产负载的能力族:多线程 compaction、灵活的压缩与缓存(BlockCache)配置、列族(Column Family)、事务与合并操作符等高级特性,配套 Wiki 深度文档与官方调优指引;本站已发布的《RocksDB 配置与选项详解》按 DB Options、ColumnFamilyOptions、ReadOptions 等配置对象做了系统整理,可作为深入调优的入口。
4.3 版本与维护活跃度对比
RocksDB 11.x 主线自 2026 年以来连续发布 11.0.x、11.1.x、11.8.x 多个系列补丁,10.x 与 8.11.5 旧线仍在接收修复(Releases 页实查);LevelDB 最后一个 release 停留在 2021-02-23 的 1.23,且 README 官方声明仅接受极有限维护——「稳定但不演进」是其当前最准确的画像。
五、快速上手
以下内容转述自两项目官方仓库的 README 与文档,本文不做本地实测。
5.1 LevelDB:构建与最小示例(官方 README / doc/index.md)
官方 README 给出的构建方式:
git clone --recurse-submodules https://github.com/google/leveldb.git
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
官方 doc/index.md 给出的打开数据库示例(节选):
#include "leveldb/db.h"
leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
assert(status.ok());
更多读写、批量、快照用法见官方文档:https://github.com/google/leveldb/blob/main/doc/index.md ,本站《LevelDB 选项与使用示例》提供了更完整的选项与示例整理。
5.2 RocksDB:官方示例入口
RocksDB 官方 README 将使用入口指向仓库 examples 目录(https://github.com/facebook/rocksdb/tree/main/examples ),其中提供打开数据库、基础读写、列族等最小 C++ 示例;深入解释见官方 Wiki(https://github.com/facebook/rocksdb/wiki )。本站的编译部署与调优实践另见专栏内的安装与配置详解两篇文档。
六、适用场景与限制
6.1 适用场景
- RocksDB:写密集、数据量大(TB 级)的嵌入式存储引擎场景;作为自研存储服务的数据面引擎;对压缩、缓存、compaction 策略需要细粒度控制的服务端应用。
- LevelDB:需求简单有序 KV、单进程访问、希望依赖面极小的场景;作为阅读 LSM 实现的教学与研究基准。
6.2 限制与注意事项
- 两者都不是数据库服务:无 SQL、无索引、无网络层,需宿主进程自行封装;
- LevelDB 单进程访问限制与极有限维护状态,使其不适合承载持续演进的新项目核心存储;
- RocksDB 配置面宽(WAF/RAF/SAF 权衡、compaction、缓存),默认参数未必贴合具体负载,调优成本需计入选型;
- RocksDB 为 GPLv2/Apache-2.0 双许可,集成方式应核对许可证合规要求。
七、同类选型对比
7.1 候选概览
| 引擎 | 定位 | 许可 |
|---|---|---|
| RocksDB 11.8 | Meta 维护的 LSM 嵌入式 KV(C++) | GPLv2 / Apache-2.0 双许可 |
| LevelDB 1.23 | Google 经典 LSM 嵌入式 KV(C++) | BSD-3-Clause |
| LMDB 1.0.2 | 内存映射 B+tree 嵌入式 KV(C) | OpenLDAP Public License |
| BadgerDB 4.9 | Go 原生 LSM 嵌入式 KV | Apache-2.0 |
| Pebble 2.1 | Go 实现的 RocksDB/LevelDB 系 KV | BSD-3-Clause |
7.2 量化对比(2026-10-19 实查)
| 维度 | RocksDB 11.8.1 | LevelDB 1.23 | LMDB 1.0.2 | BadgerDB 4.9.6 | Pebble 2.1.7 |
|---|---|---|---|---|---|
| 许可 | GPLv2/Apache-2.0 双许可 | BSD-3-Clause | OpenLDAP Public License | Apache-2.0 | BSD-3-Clause |
| GitHub stars | 32207 | 39500 | 3053(openldap.org 镜像仓库) | 15784 | 6057 |
| 最新版本与日期 | v11.8.1(2026-08-07) | 1.23(2021-02-23) | LMDB_1.0.2 tag(2026-09-08) | v4.9.6(2026-08-05) | v2.1.7(2026-08-24) |
| 维护活跃度 | 活跃:11.x 主线年内多系列发版,旧线仍有补丁 | 极有限维护(README 官方声明) | 镜像仓库持续同步(openldap.org 为上游) | 活跃 | 活跃(CockroachDB 团队所在 org 维护) |
| 实现语言 | C++ | C++ | C | Go | Go |
| 存储模型 | LSM(WAF/RAF/SAF 可调) | LSM | 内存映射 B+tree | LSM + 值日志分离 | RocksDB/LevelDB 系 LSM |
| 进程模型 | 嵌入库 | 嵌入库(单进程访问) | 嵌入库(多进程读支持,官方口径) | 嵌入库 | 嵌入库 |
(stars 与发版信息取自各项目 GitHub 仓库/Releases 页与 LMDB 镜像 tag 时间戳的 2026-10-19 实查;LMDB 上游为 openldap.org 官方仓库。)
7.3 选型建议
在 RocksDB 与 LevelDB 之间选择时,把「维护与演进」作为第一判据:需要活跃维护、TB 级写密集负载与细粒度调优空间的选 RocksDB;只需要稳定最小依赖的有序 KV、且能接受官方声明的极有限维护,才考虑 LevelDB。若团队技术栈是 Go,BadgerDB 提供 Go 原生的 LSM 实现,Pebble 则以 RocksDB 系语义的 Go 复刻出现(见《BadgerDB 4.9.6 介绍与选型指南》);读多写少、追求微秒级读延迟与多进程只读共享的嵌入式场景,LMDB 的内存映射模型值得单独评估。
八、参考链接
- RocksDB 仓库:https://github.com/facebook/rocksdb
- RocksDB Releases:https://github.com/facebook/rocksdb/releases
- RocksDB Wiki:https://github.com/facebook/rocksdb/wiki
- LevelDB 仓库:https://github.com/google/leveldb
- LevelDB 文档:https://github.com/google/leveldb/blob/main/doc/index.md
- LMDB 文档:https://lmdb.tech/doc/ (GitHub 镜像仓库 https://github.com/LMDB/lmdb ,上游为 openldap.org 官方仓库)
- BadgerDB 仓库:https://github.com/dgraph-io/badger
- Pebble 仓库:https://github.com/cockroachdb/pebble