Repolode
dgraph-io

dgraph-io/badger

纯 Go 编写的可嵌入式持久化键值数据库,支持 ACID 事务,面向 SSD 优化。

Star
15,786
Fork
1,334
未关闭 Issue
76
最近提交
昨天

这是什么?

BadgerDB 是一个完全用 Go 编写的可嵌入式持久化键值数据库。它直接运行在应用进程内,而不是作为独立服务部署,同时也是分布式图数据库 Dgraph 的底层存储引擎。

Badger 基于 LSM 树并将值单独存放在 value log 中,采用 WiscKey 论文的设计,把值从键索引中分离出来,以降低 SSD 上的写放大。它支持并发 ACID 事务与可串行化的快照隔离,提供前缀和键范围扫描的迭代器、按键保留多个版本以及 TTL 功能。由于不依赖 Cgo,可直接用标准 Go 工具链构建。

项目还提供命令行工具,可用于离线备份与恢复等操作,以 Go 模块 github.com/dgraph-io/badger/v4 的形式引入。

核心功能

  • 01纯 Go 实现的可嵌入键值存储,不依赖 Cgo。
  • 02支持并发 ACID 事务,提供可串行化的快照隔离。
  • 03键值分离存储,通过 value log 降低 SSD 上的写放大。
  • 04迭代器支持前缀和键范围扫描,并可访问每个键的多个版本。
  • 05支持 TTL,可自动使键过期。
  • 06提供命令行工具,用于离线备份与恢复。

适用场景

  • 在 Go 服务或命令行工具中嵌入快速的本地持久化存储。
  • 作为分布式系统或图数据库的底层存储层。
  • 在 Go 应用中构建 Raft 日志或元数据存储。
  • 在 SSD 上存储大规模数据集,对读写吞吐有较高要求的场景。

快速上手

  1. 1

    在 Go 项目中安装该库

    go get github.com/dgraph-io/badger/v4
  2. 2

    从已检出的仓库安装 Badger 命令行工具

    cd badger go install .

使用前须知

  • 需要 Go 1.23 或更高版本。

标签

常见问题

badger 是什么?
纯 Go 编写的可嵌入式持久化键值数据库,支持 ACID 事务,面向 SSD 优化。 BadgerDB 是一个完全用 Go 编写的可嵌入式持久化键值数据库。它直接运行在应用进程内,而不是作为独立服务部署,同时也是分布式图数据库 Dgraph 的底层存储引擎。
badger 可以免费使用吗?用的什么许可证?
badger 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
badger 还在维护吗?
活跃维护中。badger 最近一次提交是在 2026年10月20日。
badger 适合用来做什么?
在 Go 服务或命令行工具中嵌入快速的本地持久化存储。 作为分布式系统或图数据库的底层存储层。 在 Go 应用中构建 Raft 日志或元数据存储。 在 SSD 上存储大规模数据集,对读写吞吐有较高要求的场景。
badger 怎么安装和运行?
在 Go 项目中安装该库: go get github.com/dgraph-io/badger/v4 从已检出的仓库安装 Badger 命令行工具: cd badger go install .
在哪里获取 badger?
源代码和安装说明在 GitHub 上:https://github.com/dgraph-io/badger

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目