🦀 SurrealKV 对决主流嵌入式 KV:原生时间旅行 + 纯 Rust 架构的降维优势

Photos provided by Unsplash OR Pexels

SurrealKV 与同类嵌入式键值存储产品的全面详细对比

引言与背景总结

SurrealKV 是 SurrealDB 团队完全自研的纯 Rust、嵌入式、版本化、ACID 兼容的键值存储引擎,采用 LSM 树 + Wisckey 值日志 + MVCC + 可选 B+Tree 版本索引架构。它的核心目标是彻底取代 SurrealDB 中的 RocksDB 依赖,实现存储层与 SurrealDB 查询模型(尤其是时间旅行查询、历史聚合、版本化图查询)的完美对齐。

截至 2026 年 2 月(最新版本 0.20.2),SurrealKV 已全面集成到 SurrealDB 3.0 中,并在生产环境中验证。其最大亮点是原生内置时间旅行查询get_athistory),这是绝大多数同类 KV 存储引擎不具备或需二次开发的特性。

本对比选取最相关的 5 款同类产品(均支持嵌入式、高性能持久化 KV):

  • RocksDB(SurrealKV 直接替代对象,C++)
  • sled(纯 Rust 流行嵌入式 DB)
  • redb(纯 Rust B+Tree,ACID 强)
  • LMDB(通过 heed crate,内存映射极速)
  • BadgerDB(Go LSM + Wisckey 经典参考)

对比基于官方 README、SurrealDB 官方 crud-bench 基准(2025-2026)、SurrealDB 3.0 性能报告、GitHub 讨论及社区反馈。重点维度覆盖架构、功能、性能、运维、适用场景。

全面对比表格(核心维度一览)

维度SurrealKV (Rust LSM)RocksDB (C++ LSM)sled (Rust 自定义)redb (Rust B+Tree)LMDB (C 内存映射)BadgerDB (Go LSM + VLog)
语言/嵌入性纯 Rust,无外部依赖C++(需绑定)纯 Rust纯 RustC(heed Rust 绑定)Go(需 Go 运行时)
架构LSM + Wisckey + MVCC + B+Tree 版本索引LSM(LevelDB 进化)锁无关页面 + 日志结构B+Tree(纯事务)B+Tree 内存映射LSM + Wisckey
ACID 支持完整(事务模式:ReadOnly/WriteOnly)完整完整(事务)完整(强一致)完整完整
并发控制Snapshot Isolation(MVCC,无阻塞读写)Snapshot Isolation(可选)乐观并发MVCC(B+Tree)读写锁Snapshot Isolation
版本化/时间旅行原生内置(get_athistory、任意时间点 + 范围扫描)无(需手动实现)无(需扩展)
值日志分离 (Wisckey)原生支持(大值自动分离 + GC)可配置原生经典 Wisckey
持久化模式Eventual(极致性能) / Immediate(fsync)可调 sync可调强制 fsync强制 fsync可调
压缩按层(L0 无压缩,其余 Snappy)多算法无内置Snappy 等
Checkpoint/备份原生原子快照(秒级)手动/工具快照事务一致复制目录手动
性能(SurrealDB 嵌入式 CRUD,5M 记录,128 客户端)Create: ~42k OPS
Read: ~76k OPS
Update: ~38k OPS
(SurrealKV 在 SurrealDB 3.0 中较 v2 提升 25x+)
Create: ~253k OPS
Read: ~500k OPS
(更快,但无版本化)
接近 RocksDB(单机高并发强)中等(小数据集极快)极快(读写低延迟)与 RocksDB 相当
写放大/大值优化极低(Wisckey + VLog)中等低(B+Tree)极低(Wisckey)
成熟度/维护高(SurrealDB 生产验证,2026 活跃)极高(Meta 维护)高(长期维护)极高(Symas)高(Dgraph)
平台支持Linux/macOS 完美,Windows 有限,WASM 不支持全平台全平台全平台全平台全平台
许可Apache 2.0BSD-3Apache 2.0MITOpenLDAPApache 2.0
独特优势时间旅行 + SurrealDB 深度集成 + 纯 Rust 无绑定生态最成熟、插件丰富纯 Rust 高并发、轻量二进制零配置强 ACID、简单极致读性能(mmap)Go 生态 + Wisckey 经典
劣势部分 raw 性能暂落后 RocksDB(2026 仍在优化)C++ 绑定复杂、Windows 痛点无原生时间旅行大数据集写放大较大无版本化、多进程限制非 Rust、需 Go 环境

性能备注:数据来源于 SurrealDB 官方 crud-bench(2025 测试,5M 记录,单节点 NVMe)。SurrealKV 在纯 KV 吞吐上落后 RocksDB 约 5-6 倍,但在 SurrealDB 3.0 新执行引擎下,整体查询(含版本化)提升 96%+,并开启了 RocksDB 无法实现的“历史版本聚合”功能。

深度剖析:各产品优劣与适用场景

1. SurrealKV vs RocksDB(最直接替代)

  • 胜出点:原生时间旅行(SurrealDB 独有特性)、Wisckey 值分离(写放大更低)、纯 Rust 无绑定、原子 Checkpoint、异步事务 API。
  • 落后点:raw CRUD 吞吐较低(尤其 Create/Update),早期版本在 SurrealDB 中被吐槽“牺牲耐久性换性能”(Eventual 模式)。
  • 选择建议:需要时间旅行、历史查询、版本化图的场景(审计、IoT、版本控制),直接选 SurrealKV。纯高吞吐无历史需求,仍可暂用 RocksDB(SurrealDB 默认)。

2. SurrealKV vs sled

  • sled 是纯 Rust 轻量级嵌入式 DB(二进制仅几百 KB),高并发锁无关设计。
  • SurrealKV 胜出:内置 MVCC + 时间旅行 + Wisckey + LSM 可扩展到亿级键。
  • sled 胜出:启动更快、内存占用更低、适合中小数据集。
  • 选择建议:轻量缓存/状态机用 sled;需要历史版本或 SurrealDB 集成用 SurrealKV。

3. SurrealKV vs redb

  • redb 是纯 Rust B+Tree,零依赖、强 ACID、事务简单。
  • SurrealKV 胜出:LSM 适合海量写入、Wisckey 大值优化、时间旅行。
  • redb 胜出:小数据集随机读写更快、无 compaction 停顿。
  • 选择建议:简单事务 + 小数据选 redb;大写负载 + 版本化选 SurrealKV。

4. SurrealKV vs LMDB (heed)

  • LMDB 以 mmap + B+Tree 著称,读性能极致。
  • SurrealKV 胜出:MVCC 无阻塞、时间旅行、跨进程安全 Checkpoint。
  • LMDB 胜出:单机读延迟最低、多进程共享极佳。
  • 选择建议:读多写少 + 多进程用 LMDB;写多 + 历史查询用 SurrealKV。

5. SurrealKV vs BadgerDB

  • 两者架构最相似(LSM + Wisckey)。
  • SurrealKV 胜出:Rust 原生 + 时间旅行 + B+Tree 版本索引(解决乱序时间戳问题)。
  • Badger 胜出:Go 生态成熟、部分场景 GC 更激进。
  • 选择建议:Rust 项目直接 SurrealKV;Go 项目用 Badger。

生产落地建议与注意事项

  • 性能调优:始终开启 with_vlog(true) + with_versioned_index(true) + L0 无压缩,Eventual 模式可达生产 10w+ QPS。
  • SurrealDB 3.0 实测:SurrealKV + 新查询引擎后,整体性能已接近或超越 RocksDB,同时新增版本化能力。
  • 避坑:Windows 支持有限;大数据库启动需预热;版本保留需定期 compact_version
  • 迁移路径:SurrealDB 用户可无缝切换(storage: surrealkv),旧 RocksDB 数据需导出重导。

结论:如何选择 SurrealKV?

  • 首选 SurrealKV:需要时间旅行查询、历史版本分析、版本化图数据、纯 Rust 无外部依赖的生产项目(尤其是 SurrealDB 嵌入式)。
  • 选择 RocksDB:追求极致 raw 吞吐 + 成熟生态。
  • 选择 sled/redb:轻量纯 Rust、小数据集、简单事务。
  • 选择 LMDB:极致读性能 + 多进程。
  • 选择 Badger:Go 项目 + 大值场景。

SurrealKV 的出现标志着嵌入式 KV 存储进入“版本化时代”。在 SurrealDB 生态中,它已从“实验引擎”成长为生产主力,未来分布式版本(计划中)还将挑战 TiKV/FoundationDB。

立即行动:访问 https://github.com/surrealdb/surrealkv 克隆仓库,结合 SurrealDB 3.0 基准测试你的场景,即可感受到时间旅行带来的革命性体验!

参考资料(最新 2026 年):

  • SurrealKV 官方 GitHub & README
  • SurrealDB 官方基准报告(crud-bench & 3.0 性能博客)
  • Crates.io / docs.rs
  • SurrealDB 文档(SurrealKV 章节)

本对比基于公开最新数据,如需特定工作负载定制测试,欢迎提供场景进一步深入!

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)