这是一篇关于入侵Turso DB(原名 Limbo,用 Rust 重写的 SQLite)的初学者指南。
主要观点:介绍如何熟悉 Turso 的代码库、工具和测试,尽管作者未对 Turso 数据库做出贡献,但通过 6 小时的实验进行了探索。
关键信息和重要细节:
- 获取和编译:Turso 用 Rust 编写,获取代码并运行简单,如
git clone
、cargo run
,编译后可进入交互界面,作者还提到编译运行 SQLite 也简单。 - 内部原理 -
op_column
:了解到 SQLite 有 VM 解释器,查询语句转为操作码在 VM 上执行,Column
操作码负责将磁盘获取的值转换为内存数据结构,通过设置RUST_LOG=trace
追踪 VM 执行,找到op_column
的实现位置并进行修改使其返回 42。 - PRAGMA:SQLite 可用 PRAGMA 语句配置数据库,Turso 已支持,作者添加新的 PRAGMA 并修改相关代码。
- 测试:实验中存在一些 bug,还想玩 DST,需修复 bug 并添加测试,可选择性地为特定列启用该功能,也考虑在 SQLite、Postgres 或 MySQL 中添加。
- 演示:展示了修改后的效果,给出相关代码链接,认为 Turso DB 适合新手参与,还提供了一些“好的第一个问题”的链接。
- 琐事:Turso 实验性名称曾为 Ligma 用 Zig 编写,后重写为 Rust 并改名为 Limbo,博客和相关论文有更多 SQLite 内部细节。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。