Tonbo OLAP存储引擎

💡 原文中文,约5300字,阅读约需13分钟。
📝

内容提要

Tonbo是一个用Rust编写的开源嵌入式持久化数据库,提供基本的键值方法和支持类型安全的结构化数据存储。它旨在为Arrow生态系统提供高度可扩展的数据存储引擎,并长期目标支持分布式数据存储。它基于LSM树架构设计,支持高效查询结构化数据。Tonbo还支持异步方法,并计划引入新功能,如运行时架构声明和S3集成。

🔎

延伸解读

Tonbo 的定位与设计目标

Tonbo 是一个用 Rust 编写的嵌入式持久化数据库,旨在为 Arrow 生态系统提供高度可扩展的数据存储引擎。其核心设计目标是解决数据密集型应用中写入路径开发耗时的问题,让开发者能像使用 DataFusion 一样快速构建高性能的写入路径。长期目标包括支持离线优先的分布式数据存储,并集成多种存储系统如文件系统、OPFS 和 S3。

LSM 树架构带来的优势

Tonbo 基于 LSM 树架构,所有前台写入在内存中执行,后台写入顺序进行,从而实现高写入吞吐量。LSM 树对文件系统要求低,仅需支持追加操作,因此适用于从闪存到 SSD 的各种设备。通过将数据清理和压缩等任务卸载到后台,LSM 树简化了读写过程,减少了前端负载,使 Tonbo 能高效处理结构化数据查询。

类型安全与查询效率

Tonbo 支持类型安全的结构化数据存储,通过将用户定义的数据结构转换为 Arrow 模式,并利用 Arrow/Parquet 的下推操作(如限制、投影和过滤)来精确扫描数据,跳过不相关数据,可能提升查询效率十倍以上。此外,根据编译时类型提示,Tonbo 能免费将文件读取的字节转换为用户定义类型,减少序列化开销,这在数据密集型应用中可占总负载的 30% 到 50%。

异步支持与未来计划

Tonbo 完全支持异步方法,提高并发操作效率,并使其能在资源受限设备如浏览器、移动应用和嵌入式 Linux 系统上提供并发访问。通过 WASM 和异步 Rust 接口,Tonbo 构建了从 OPFS 到 JavaScript 调度程序的完整异步任务链。未来计划引入运行时架构声明(支持 JavaScript 和 Python)和 S3 集成,以实现分层 LSM 树,为自托管和云环境提供统一解决方案。

❓

Q&A

Tonbo是什么类型的数据库?

Tonbo是一个用Rust编写的开源嵌入式持久化数据库,支持键值方法和类型安全的结构化数据存储。

Tonbo的设计目标是什么?

Tonbo的设计目标是作为嵌入式数据库,为Arrow生态系统提供高度可扩展的数据存储引擎,并支持离线优先的分布式数据存储能力。

Tonbo的性能如何与RocksDB比较?

在数据扫描场景中,Tonbo的性能比RocksDB高出2.2倍。

Tonbo支持哪些新功能?

Tonbo计划引入运行时架构声明和S3集成等新功能,以支持离线优先的存储和备份服务。

Tonbo如何支持异步操作?

Tonbo完全支持异步方法,允许在资源受限的设备上提供并发访问,例如浏览器和嵌入式Linux系统。

Tonbo的架构基于什么?

Tonbo建立在LSM树架构之上,利用其高效的写入吞吐量和低文件系统要求。

🏷️

标签

➡️

继续阅读