加载中...

Badger 是 Dgraph Labs 用纯 Go 语言开发的嵌入式键值存储引擎,2017 年开源,目标是为 Go 生态提供无需 CGO 封装 RocksDB 的高性能 LSM 引擎,最初服务于图数据库 Dgraph 的底层存储。
Badger 的核心设计来自威斯康星大学的 WiscKey 论文:键值分离(key-value separation)。LSM 树中只存键与指向值的指针,较大的值单独顺序追加到值日志(value log)中。compaction 只需搬移小小的键,不再反复重写大值,写放大显著降低;SSD 的高随机读性能则弥补了读值需要额外一跳的开销。值日志通过垃圾回收清理过期数据。
支持 ACID 事务(SSI 可串行化快照隔离)、TTL、流式备份;纯 Go 实现使交叉编译与部署简单。
Dgraph、IPFS(部分配置)、Jaeger(可选后端)等项目使用 Badger。与同为 Go 的 BoltDB 相比,Badger 写吞吐高得多,但实现复杂、空间回收需要调优。

登录 后参与讨论
暂无讨论,来发表第一条评论吧