SQLite 在 Rust 中重新实现,以实现异步 I/O 等变化

科技   2024-12-20 23:54   北京  

导读:Turso 是一家专注于数据库解决方案的开发提供商,他们正在使用 Rust 重新实现 SQLite 数据库引擎,以便实现异步 I/O 等主要的新功能。

Turso 由 Glauber Costa 和 Pekka Enberg 于 2021 年创立。2022 年,这家当时名为 ChiselStrike 的初创公司分叉 SQLite并创建了 libSQL。理由是 SQLite 需要现代化,尽管该项目是开源的,但并不向希望增强它的贡献者开放。

创始人现在声称,仅仅分叉 SQLite 不足以实现他们想要做的某些更改 - 包括异步 I/O。

Enberg 现在启动了一个个人项目,用 Rust 重新实现 SQLite,该项目已被采纳为官方 Turso 项目。

Limbo,一个用 Rust 重新实现 SQLite 的项目


其目的是让 Limbo(显然是项目代号,可能会更改)与 SQLite 完全兼容,但“具有完全的内存安全性和全新的现代架构”。该项目目前正在进行中,并在GitHub 上根据 MIT 许可证发布。

GitHub:https://github.com/tursodatabase/limbo

SQLite 的可靠性部分归功于它广泛的测试套件。

Costa 和 Enberg 这样表示说,他们可以使用一种称为确定性模拟测试 (DST) 的技术实现相同或更好的可靠性,并借助另一位开发人员antithesis的帮助,这位开发人员专门在模拟硬件和软件故障的环境中测试软件。

Limbo 还内置了自己的 DST 框架。

Linux 上的 Limbo 使用内核系统调用 io_uring,这是 Meta 的一名工程师为实现高性能异步 I/O 而开发的。新引擎扩展了 sqlite3_step,如果数据尚未准备好使用,则会立即返回。

Costa 和 Enberg 观察到,尽管 SQLite 查询通常很快,但对于大型数据集,它们可能会很慢。

Limbo 的另一个功能是编译为 Web 程序集 (WASM),Turso 联合创始人称这是“SQLite 的后续想法”。 

Limbo 的性能目前已经很好了,在某些情况下比 SQLite 快,在其他情况下会慢。“这里的目标不是声称它更快,尽管(事实并非如此)……而是要强调我们在项目早期,就已经达到了良好的性能水平,”Costa 在Hacker News 的评论中如此写道。

我们能够在 Mac 上编译和运行 Limbo,但我们需要将 Rust 编译器更新到最新版本以克服错误。 

用 Rust 重新实现 SQLite 是一个值得的项目吗?

“考虑到代码质量和严格的测试,SQLite 可能是最后一个应该重写的项目,”一位开发人员评论道。

话虽如此,重写的目的不是为了避免 C 或 C++ 代码中常见的漏洞,而是为了添加功能(考虑到 SQLite 项目本身相对封闭),并利用 Rust 语言来实现 C 语言难以实现的功能。

各位觉得怎么看?欢迎评论。

编译:场长

相关参考:

https://devclass.com/2024/12/12/sqlite-re-implemented-in-rust-to-achieve-asynchronous-i-o-and-other-changes/

https://turso.tech/blog/introducing-limbo-a-complete-rewrite-of-sqlite-in-rust

https://antithesis.com/

https://news.ycombinator.com/item?id=42379988

相关阅读:

21CTO
21CTO(21CTO.com),开发者的学习与服务平台。提供高品质文章、课程与训练营、招聘等产品。
 最新文章