在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

使用 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:4414511

评论

发布
暂无评论

BeanDefinition解密:构建和管理Spring Beans的基石

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 8 月 PK 榜

软件测试 | 什么是Web应用

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

测试

第五期(2022-2023)传统行业云原生技术落地调研报告——央国企篇

York

容器 云原生 IT 平台工程 央国企数字化转型

软件测试 |Object类 - 匿名内部类

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

测试

小灯塔系列-中小企业数字化转型系列研究——费控测评报告

向量智库

打造自己的站长在线工具箱

echeverra

站长工具

岳阳等保测评机构有几家?在哪里?电话是多少?

行云管家

等级保护 等保测评 岳阳

小灯塔系列-中小企业数字化转型系列研究-BPM测评报告

向量智库

软件测试 | 查看网页的HTML源代码

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

测试

流计算 Oceanus 操作效率提升指南(一)

腾讯云大数据

流计算 Oceanus

大数据传输的定义与大数据传输解决方案的选择

镭速

大数据传输 大数据传输技术

大环境下,企业如何找到大数据传输解决方案

镭速

大数据传输

《操作系统实战 45 讲》笔记1——引导部分

袁世超

操作系统 Cosmos LMOS

基于SDK方式的小程序监控

郑州埃文科技

网络性能

TypeChat入门指南:从安装到对话流程设计

星辰编程理财

typescript typechat

软件测试 | Object类-接收任意引用类型的对象

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

测试

明道云联合EMQ基于IIoT场景技术白皮书

明道云

网络加速与文件传输软件:如何通过优化网络提升文件传输速度

镭速

文件传输 文件传输软件

一篇让小孩都看的懂的ChatGPT原理解析

小宝

大模型 ChatGPT

实践指南-前端性能提升 270% | 京东云技术团队

京东科技开发者

性能优化 前端 企业号 8 月 PK 榜

那些把爱好当事业的人,最后怎么样了?

最新动态

SaaS,PaaS和IaaS:有什么区别,应该使用哪个?

2D3D前端可视化开发

云计算 可视化 IaaS PaaS SaaS

直播弹幕源码开发很难?一招教你解决

山东布谷网络科技

直播源码

从生成式AI到合成式AI ,MarTech下一步如何进化

ToB行业头条

软件测试 | 什么是安全测试

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

测试

精准测试探索 | 京东云技术团队

京东科技开发者

测试 精准测试 代码覆盖率 企业号 8 月 PK 榜 静态链路

所谓的职场抗压,到底咋回事

老张

职场经验

对线面试官 - TCP_IP四层网络模型经典连环问

派大星

TCP/IP Java 面试题

数据库运维是什么意思?主要工作包含哪些?

行云管家

数据库 数据库运维 IT运维

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