RocksDB与LevelDB 介绍与选型指南

RocksDB与LevelDB 组合专题介绍与选型指南:官方资料溯源的 LSM 嵌入式 KV 存储架构与版本现状(RocksDB v11.8.1、LevelDB 1.23)、两者同源关系与能力差异、官方快速上手,以及两者之间及与 LMDB、BadgerDB、Pebble 的量化选型对比。查询日期 2026-10-19,未做本地实测。

RocksDB与LevelDBRocksDB嵌入式数据库KV存储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 starsRocksDB 32207;LevelDB 39500GitHub 仓库元数据(2026-10-19 实查)

1.3 官方来源清单

来源地址
RocksDB 仓库https://github.com/facebook/rocksdb
RocksDB Wikihttps://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 Releaseshttps://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.8Meta 维护的 LSM 嵌入式 KV(C++)GPLv2 / Apache-2.0 双许可
LevelDB 1.23Google 经典 LSM 嵌入式 KV(C++)BSD-3-Clause
LMDB 1.0.2内存映射 B+tree 嵌入式 KV(C)OpenLDAP Public License
BadgerDB 4.9Go 原生 LSM 嵌入式 KVApache-2.0
Pebble 2.1Go 实现的 RocksDB/LevelDB 系 KVBSD-3-Clause

7.2 量化对比(2026-10-19 实查)

维度RocksDB 11.8.1LevelDB 1.23LMDB 1.0.2BadgerDB 4.9.6Pebble 2.1.7
许可GPLv2/Apache-2.0 双许可BSD-3-ClauseOpenLDAP Public LicenseApache-2.0BSD-3-Clause
GitHub stars32207395003053(openldap.org 镜像仓库)157846057
最新版本与日期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++CGoGo
存储模型LSM(WAF/RAF/SAF 可调)LSM内存映射 B+treeLSM + 值日志分离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 的内存映射模型值得单独评估。

八、参考链接