slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
SQLite 在 Rust 中重新实现,以实现异步 I/O 等变化
17611538698
webmaster@21cto.com

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

编程语言 0 871 2024-12-21 12:13:55

图片

导读: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

评论