relly 快速上手指南:5 步搭建 Rust 数据库开发环境
【免费下载链接】rellyRDBMS のしくみを学ぶための小さな RDBMS 実装项目地址: https://gitcode.com/gh_mirrors/re/relly
relly 是一个用 Rust 编写的迷你 RDBMS(关系型数据库)实现,专为想搞懂数据库内核原理的开发者设计。本文是一份 relly 快速上手教程,教你用 5 个简单步骤搭建一套完整的 Rust 数据库开发环境:从安装 Rust 工具链、获取源码,到编译运行第一个 B+ 树示例,零基础也能边读边写、边写边学,真正把"数据库怎么运作"这件事搞明白。
relly 是什么?一个为学习而生的迷你 RDBMS 实现
relly 是日本技术杂志《WEB+DB PRESS Vol.122》专题"作って学ぶ RDBMS のしくみ"(动手学习 RDBMS 的原理)的配套实现,代码量精简、模块划分清晰,非常适合作为 Rust 数据库开发环境的学习起点。
它的设计思路是"麻雀虽小,五脏俱全",涵盖了真实数据库最核心的几大部件:
| 核心模块 | 源码位置 | 负责什么 |
|---|---|---|
| 磁盘管理 | src/disk.rs | 按 4KB 页读写堆文件 |
| 缓冲池 | src/buffer.rs | 页缓存与替换管理 |
| B+ 树索引 | src/btree/ | branch / leaf / meta / node 四类节点 |
| 表存储 | src/table.rs | 简单表与带唯一索引的表 |
| 查询执行 | src/query.rs | 扫描、过滤等查询计划节点 |
| 元组编解码 | src/tuple.rs | 记录序列化与反序列化 |
也就是说,一次 relly 学习之旅 ≈ 亲手实现一个简化版数据库,收获远超背十遍八股文。
第 1 步:安装 Rust 工具链(最快方法)
搭建 Rust 数据库开发环境的第一步,是准备好 Rust 编译器。推荐使用官方一键安装工具 rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh安装完成后,重开终端并验证版本:
cargo --version rustc --version看到类似cargo 1.x.x的输出就说明工具链就绪了。如果安装缓慢,可参考 Rust 官方文档设置国内镜像源加速。
第 2 步:获取 relly 源码并了解项目结构
接下来把 relly 源码克隆到本地:
git clone https://gitcode.com/gh_mirrors/re/relly cd relly克隆后你会看到一个非常清爽的目录结构,这也是学习数据库内核最友好的地方:
src/:全部核心源码,按模块拆分(disk / buffer / btree / table / query)examples/:一整套可直接运行的示例,覆盖建表、插入、查询、范围扫描等场景Cargo.toml:项目配置,依赖极少(thiserror、anyhow、serde、zerocopy、bincode)
第 3 步:编译并运行第一个数据库示例(最快验证方法)
强烈建议从 examples 入手,零配置即可体验"造一个数据库"的感觉。先运行最简单的建表示例:
cargo run --example simple-table-create这个示例会在当前目录生成一个simple.rly数据文件,并向表中插入 5 条记录。接着运行扫描示例验证数据能否读回:
cargo run --example simple-table-scan能打印出符合条件的学生记录,就说明你的 Rust 数据库开发环境已经完整打通了!🎉
第 4 步:跟随示例理解数据库核心流程
环境跑通后,建议按下面的顺序"跟读"源码,把每个示例和对应模块对应起来:
- 建表与插入:examples/simple-table-create.rs 配合
src/table.rs,理解 SimpleTable 如何基于元数据页管理记录; - 顺序扫描与过滤:examples/simple-table-scan.rs 展示如何通过 B+ 树迭代器逐条读取数据;
- 查询计划:examples/simple-table-plan.rs 展示 Filter + SeqScan 组成的查询执行计划,是理解优化器的绝佳入口;
- B+ 树索引:examples/btree-create.rs 配合 src/btree/,看键值如何写入叶节点、如何分裂;
- 范围查询:examples/btree-range.rs 体验数据库最常用的范围扫描能力。
看完你会发现,所谓"高深"的数据库原理,拆开看不过是页、缓冲池、树和元组之间的协作。
第 5 步:动手改造,把"看懂"变成"会做"
学习数据库内核,动手改代码比任何教程都有效。下面这 4 个练习由易到难,全部可以在 30 分钟内完成:
- 改数据:把 examples/simple-table-create.rs 里的记录改成你喜欢的名字,重新运行看结果;
- 改条件:修改 examples/simple-table-scan.rs 中的过滤条件,观察输出变化;
- 加索引:参考 examples/table-index.rs 给表增加唯一索引,体验索引带来的查询加速;
- 压测:运行
cargo run --example table-large和cargo run --example btree-large,观察大批量数据下的性能表现。
每完成一个练习,都建议回到src/对应模块里找答案,比如"插入时页满怎么办"可以去看 src/btree/leaf.rs。
常见问题 FAQ
Q:编译报错提示 Rust 版本过低怎么办?A:运行rustup update stable升级工具链即可,relly 依赖的库需要较新的 Rust 版本。
Q:运行后生成的.rly、.btr文件是什么?A:它们是 relly 的数据库堆文件,相当于真实数据库的数据文件,删除后重新运行示例即可重建。
Q:看不懂日语注释有影响吗?A:完全没有。relly 的代码风格清晰、命名规范,配合本文的模块对应表就能顺畅阅读。
写在最后
通过这 5 个步骤,你已经成功搭建了一套可运行的 Rust 数据库开发环境,并亲手跑通了建表、插入、扫描、索引等核心流程。relly 的价值不在于"能用",而在于"看得懂"——它的每一行代码都在回答"数据库到底是怎么工作的"。接下来,继续沿着 B+ 树、缓冲池、查询执行的方向深入探索吧,数据库内核的大门已经为你敞开。🚀
【免费下载链接】rellyRDBMS のしくみを学ぶための小さな RDBMS 実装项目地址: https://gitcode.com/gh_mirrors/re/relly
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考