这两年做了一个嵌入式 KV 存储引擎,叫 Mace https://github.com/abbycin/mace ,分享一下。 它是什么 嵌入式、事务性 KV 数据库,设计上想同时拿到 B+ Tree 读延迟可预测和 LSM Tree 写吞吐高的优点。主要特性: Bw-Tree 风格的有序索引 + MVCC snapshot isolation append-only WAL + 异步 checkpoint 大 value 分离( blob 文件) bucket 粒度管理,懒加载 merge operator 支持 可选 zstd 压缩 CRC 校验保证数据完整性 目前状态 还非常年轻,功能应该大差不差了,但还有很多细节需要打磨(比如:空间满了或许应该转为只读而不是打日志然后崩溃,诸如此类的细节)。不过好消息是,存储格式和公开 API 基本稳定,crash recovery 经过测试 为什么要做这个 两年多前看过内核和用户态文件系统的实现,就想着自己也写一个练练手,于是用 Rust 写了一个 junkfs ,其中 kv ...