写点什么

使用 Rust 重新实现 SQLite 以实现异步 I/O

  • 2025-01-26
    北京
  • 本文字数:1239 字

    阅读完需:约 4 分钟

使用 Rust 重新实现 SQLite 以实现异步 I/O

使用 Rust 重新实现 SQLite 以实现异步 I/O


本文最初发表于 DevClass 网站,由 InfoQ 中文站翻译分享。


Turso 是一家专注于数据库解决方案的初创公司,目前正在使用 Rust 重新实现 SQLite 数据库引擎,以实现主要的新特性,比如异步 I/O。


Turso 由 Glauber Costa 和 Pekka Enberg 在 2021 年创立。2022 年,这家当时名为 ChiselStrike 的初创公司 fork 了 SQLite,并创建了 libSQL。其基本思路是 SQLite 需要现代化,而且虽然该项目是开源的,但它不向希望对那些改进该项目的贡献者开放。


创始人现在 宣布,仅仅 fork SQLite 不足以实现他们想要的一些变更,包括异步 I/O。Enberg 开启了一个使用 Rust 重新实现 SQLite 的私人项目,这个项目已经被采纳为 Turso 的官方项目。



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


他的目标是 Limbo(这显然是一个代号,可能会更改)将与 SQLite 完全兼容,但具有“完全的内存安全性和新的现代化架构”。该项目目前正在进行中,并在 MIT 许可下在 GitHub 上开源。


SQLite 的可靠性部分归功于其广泛的测试套件。Costa 和 Enberg 表示,他们可以通过一种名为确定性模拟测试(Deterministic Simulation Testing,DST)的技术实现相同或更好的可靠性,它借助了 antithesis 的帮助,这是一款专门用于在模拟硬件和软件故障环境中进行测试的软件。Limbo 也有自己内置的 DST 框架。


在 Linux 上,Limbo 使用了内核系统调用 io_uring,它由 Meta 的一位工程师开发,用于高性能异步 I/O。新引擎扩展了 sqlite3_step,以便在数据尚未准备好使用时立即返回。Costa 和 Enberg 发现,虽然 SQLite 查询通常很快,但对于大型数据集来说,它们则可能比较慢。


Limbo 的另一个特性是编译为 Web assembly(WASM), Turso 的联合创始人说这是“SQLite 的补充”。


Limbo 的性能已经非常好了,在某些情况下比 SQLite 更快,不过,在有些情况下可能比 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/


声明:本文为 InfoQ 翻译,未经许可禁止转载。


今日好文推荐


2024 年度技术热词来袭,AI 如何在可控生成和降本增效中寻找平衡


OpenAI 史上最长宕机:自研 K8s 成“拦路虎”,导致数小时无法修复


700 多亿打水漂后,这家巨头突然舍弃了无人驾驶出租车业务!新老员工炸锅:刚还在加班、“一群傻瓜”


掀翻牌桌:定义面向未来的开发新范式


2025-01-26 11:4414357

评论

发布
暂无评论

香港 Web3 宣言两周年专访:传统企业转型 Web3 遇阻,香港虚拟资产之路如何走得更远?

TechubNews

高可用负载均衡实践

俞凡

架构

GitHub Star 数量前 5 的开源应用程序生成器

NocoBase

GitHub 开源 低代码 无代码 应用程序

掌握数据,赢得市场 —— 淘宝商品详情API让电商运营更精准

技术冰糖葫芦

API 接口 API 测试 API 协议 API 优先

袋鼠云产品功能更新报告12期|让数据资产管理更高效

袋鼠云数栈

语音识别模型

霍格沃兹测试开发学社

Vector 增加 GreptimeDB 日志写入支持,连接数十种数据源

Greptime 格睿科技

数据库 vector 集成

2024年中国IT用户满意度调研结果公布

极客天地

测试外包服务 | 从人员外包到测试工具、测试平台,提供全方位的测试解决方案~

测吧(北京)科技有限公司

测试

专业的技术、卓越的服务,为企业提供一体化测试服务,赋能企业发展创新

测吧(北京)科技有限公司

测试

云电脑的性价比高么

青椒云云电脑

云电脑

汇聚全球智慧·共绘软件蓝图,2025北京软博会

AIOTE智博会

软博会 世亚软博会 北京软博会

利用 Vector 将 Kafka 中的日志数据高效写入 GreptimeDB

Greptime 格睿科技

kafka 时序数据库 vector

鸿蒙生态崛起,开发者如何抓住这波“红利”?

最新动态

到底什么学历可以胜任程序员?

秃头小帅oi

Java EasyExcel 导出报内存溢出如何解决

不在线第一只蜗牛

Java 内存

Laravel后台极速开发框架 - 集成日历组件

YangGe

laravel

BOE(京东方)首度全面解读ADS Pro液晶显示技术众多“真像” 倡导以创新推动产业高价值增长

爱极客侠

crossover破解版Mac下载教程,crossover苹果电脑无限试用免费激活码分享

阿拉灯神丁

软件包 crossover mac 破解版 CrossOver 24虚拟机

借助ETLCloud工具,轻松同步Doris数据至Inceptor数据库

谷云科技RestCloud

数据库 Doris ETL 数据集成 lnceptor

Gamma是什么意思?5款可替代Gamma的ppt软件推荐!

职场工具箱

人工智能 PPT 办公软件 AIGC AI生成PPT

腾讯云的相关DDoS攻击问题概览

网络安全服务

腾讯云 服务器 DDoS 腾讯云服务器 DDoS 攻击

阿里巴巴商品搜索API返回值中的关键信息点

技术冰糖葫芦

API 接口 API 测试 API 协议 API 优先

淘宝商品类目API的获取与应用探索

科普小能手

API 接口 API 测试 淘宝API接口 淘宝数据采集 淘宝评论API

深度解读GaussDB逻辑解码技术原理

不在线第一只蜗牛

数据库 oracle

使用 Rust 重新实现 SQLite 以实现异步 I/O_编程语言_Tim Anderson_InfoQ精选文章