AgateDB:TiKV团队以Rust重构LSM引擎,挑战存储技术格局

GitHub April 2026
⭐ 887
来源:GitHub归档:April 2026
广受部署的TiKV分布式键值存储项目团队近日发布了AgateDB,这是一款采用Rust语言编写的嵌入式存储引擎。它基于LSM-tree架构,但针对现代硬件与内存安全进行了深度优化,承诺为数据库系统和有状态应用提供更低延迟与更高吞吐。此举旨在抢占市场对可靠、高性能存储基础组件的增长需求。

AgateDB是经验丰富的TiKV工程团队推出的一个聚焦项目,旨在打造一个生产级的嵌入式键值存储层。其核心设计哲学在于充分利用日志结构合并树(LSM-tree)架构——这是一种经过验证的、适用于写密集型工作负载的模式,由Google的LevelDB和Facebook的RocksDB等系统推广普及——同时使用Rust语言从头开始重新实现。这一选择是深思熟虑的:Rust提供了编译时内存安全保证,且无需垃圾回收器,这对于存储系统实现可预测的低延迟性能至关重要。该引擎被定位为基础构建模块,而非独立数据库,目标是与需要持久化状态的大型系统集成,例如新型数据库项目、缓存层、队列系统或状态机。团队强调其设计优先考虑简单性、可观测性和可维护性,避免功能膨胀。通过开源发布,PingCAP希望吸引社区贡献,并推动Rust在系统编程领域的进一步采用。

技术深度解析

AgateDB的架构是对LSM-tree的现代诠释,旨在规避其创建者在其他实现(如Go语言的Badger和C++的RocksDB)中观察到的缺陷。LSM-tree的核心是将写入操作缓存在内存结构(memtable)中,然后将其刷新到磁盘上不可变的、已排序的文件(SSTable)中,并通过后台的压缩过程定期合并这些文件。AgateDB通过多项针对Rust语言和性能的优化,精炼了这一模型。

一个关键的差异化特性在于其对预写日志(WAL)的处理。为了确保持久性,写入操作必须在被确认之前持久化到顺序日志中。AgateDB采用了组提交机制,将多个并发写入批量处理为单个I/O操作,以分摊fsync的成本,而fsync是常见的性能瓶颈。其WAL格式专为恢复期间的零拷贝反序列化而设计,充分利用了Rust的所有权模型和高效的序列化框架(如`serde`)。

SSTable格式是另一个重点领域。每个SSTable文件包含数据块、索引块和布隆过滤器。AgateDB在块内使用前缀压缩来减少存储放大并提高缓存效率。布隆过滤器对于避免在点查询不存在的键时进行不必要的磁盘读取至关重要,AgateDB使用高度优化的位向量操作来实现。团队还探索了集成SuRF(简洁范围过滤器)类结构以支持更高效的范围查询,不过这似乎仍处于实验阶段。

压缩,即合并SSTable的过程,是任何LSM引擎中最复杂的部分。糟糕的压缩策略会导致写入停顿和不可预测的延迟。AgateDB实现了分层+层级混合压缩策略。较小、较新的SSTable以分层方式合并(类似于Cassandra的STCS),以实现高写入吞吐量;而较旧、较大的数据则组织成层级结构(类似于RocksDB的LCS),以优化读取性能和空间放大。该策略旨在平衡写入放大和读取放大之间的权衡。

从工程角度来看,Rust实现提供了若干优势。没有垃圾回收器消除了“全局停顿”现象。类型系统和借用检查器防止了数据竞争,而数据竞争是并发C++系统中常见且难以察觉的错误来源。像用于并发数据结构的`crossbeam`和用于异步I/O(在适用场景下)的`tokio`等库构成了其基础。然而,Rust的严格性也带来了挑战,尤其是在管理底层缓存和缓冲区管理代码中复杂的生命周期依赖关系时。

虽然针对成熟竞品的全面公开基准测试仍然有限,但项目仓库中的早期微基准测试数据显示了引人注目的数字,尤其是在写密集型工作负载方面。

| 操作 | AgateDB (早期) | RocksDB (v8.0) | Badger (v4.0) |
|---|---|---|---|
| 随机写入 (顺序) | ~120K 操作/秒 | ~90K 操作/秒 | ~80K 操作/秒 |
| 随机读取 (缓存) | ~1.2M 操作/秒 | ~1.0M 操作/秒 | ~900K 操作/秒 |
| 95%分位写入延迟 | < 5ms | 8-12ms | 10-15ms |
| 存储放大 (估计) | 1.8x | 2.1x | 2.5x |

*数据解读:* 早期数据表明,在合成测试中,AgateDB相比成熟的引擎实现了更优的写入吞吐量和更低的尾部延迟,这很可能归功于其优化的WAL和压缩策略。然而,这些仅是微基准测试;在不同数据规模和访问模式下的生产工作负载性能才是真正的考验。

关键参与者与案例研究

AgateDB背后的主要推动力量是PingCAP的TiKV团队。TiKV本身是一个云原生、分布式、支持事务的键值存储,作为TiDB数据库的存储基础。它使用Rust编写,并已在金融、电商和互联网规模的公司中经过实战检验。关键工程师如Brian Anderson(前Rust核心团队成员)和胡建飞在建立TiKV性能和可靠性的声誉方面发挥了重要作用。他们的经验直接赋能了AgateDB;他们深刻理解大规模运行LSM-tree的痛点——例如写入停顿、空间放大和棘手的配置问题。

AgateDB进入了一个拥挤但层次分明的市场。在顶级梯队中,RocksDB(Meta)是嵌入式存储的事实标准,被用于MySQL(MyRocks)、Cassandra以及无数专有系统中。其优势在于庞大的功能集和可配置性,但这也是一个弱点——复杂性和错误配置的可能性很高。BadgerDB(Dgraph)用Go编写,因其设计避免了Linux页面缓存以获得更好的控制而受到欢迎,但其垃圾回收机制可能引入延迟峰值。LevelDB(Google)是原始版本,但对于现代需求而言,现在被认为有些简单。

新一波的引擎包括WiredTiger(MongoDB的默认存储引擎,使用C语言),

更多来自 GitHub

MCP协议崛起:安全集成AI工具的关键基础设施Model Context Protocol(模型上下文协议)标志着AI助手从对话界面向能与外部世界交互的智能体演进的关键转折。该协议最初由Anthropic开发以扩展Claude的能力,现已迅速发展成为开放标准,定义了AI模型如何发现、描RustFS以2.3倍性能飞跃挑战MinIO对象存储霸权在S3兼容性已成标配的拥挤对象存储赛道,RustFS代表着一项重要的工程突破。该项目的核心创新不在于协议支持,而在于其架构实现——通过Rust的内存安全与并发特性达成卓越性能,尤其针对困扰众多AI和事务型工作负载的小对象操作。项目在GitHmillionco/cli-to-js 弥合 CLI 与 JavaScript 鸿沟,实现工具链自动化集成在 Node.js 与 DevOps 社区中,开源项目 millionco/cli-to-js 已成为一款引人注目的实用工具,它旨在化解从 JavaScript 应用内部调用外部命令行工具时的摩擦。其核心理念优雅而简洁:为任何命令行工具提供查看来源专题页GitHub 已收录 647 篇文章

时间归档

April 20261012 篇已发布文章

延伸阅读

Madara:Rust驱动的Starknet客户端如何重塑Layer 2主权与性能新范式Madara作为Starknet的高性能混合客户端,正成为模块化区块链发展的关键力量。它通过将Starknet的Cairo虚拟机与Substrate的Rust灵活框架深度融合,为开发者提供了对Layer 2执行层的空前控制权。本次技术深潜将Mise 对决 asdf:Rust 驱动的开发工具如何重塑开发者工作流开发工具领域正经历一场重大变革,基于 Rust 的环境管理器 mise 迅速崛起。它定位为老牌工具 asdf 的高性能替代品,承诺以前所未有的速度和简洁性统一语言版本、运行时和工具链。本文深入剖析其技术优势能否撼动现有工具的生态壁垒。MCP协议崛起:安全集成AI工具的关键基础设施一场静默的AI基础设施革命正在进行中。Model Context Protocol(MCP)正确立为连接AI模型与外部工具的事实标准。e2b-dev MCP服务器实现展示了开发者如何在对话式AI与现实能力间构建安全桥梁,从根本上改变AI助手RustFS以2.3倍性能飞跃挑战MinIO对象存储霸权对象存储领域迎来开源新锐,其性能表现直指行业现状。采用Rust编写的S3兼容存储系统RustFS,在处理4KB小对象时展现出相较MinIO 2.3倍的速度优势,或将重塑AI工作负载与延迟敏感应用的基础设施格局。

常见问题

GitHub 热点“AgateDB: TiKV Team's Rust-Powered LSM Engine Challenges Storage Status Quo”主要讲了什么?

AgateDB emerges as a focused project from the experienced TiKV engineering group, aiming to deliver a production-grade, embedded key-value storage layer. Its core design philosophy…

这个 GitHub 项目在“AgateDB vs RocksDB performance benchmarks 2024”上为什么会引发关注?

AgateDB's architecture is a modern interpretation of the LSM-tree, designed to avoid the pitfalls its creators observed in other implementations like Badger (Go) and RocksDB (C++). At its core, an LSM-tree buffers writes…

从“How to integrate AgateDB into a Rust database project”看,这个 GitHub 项目的热度表现如何?

当前相关 GitHub 项目总星标约为 887,近一日增长约为 0,这说明它在开源社区具有较强讨论度和扩散能力。