写点什么

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

评论

发布
暂无评论

迭代器失效:99%的C++程序员都会踩的坑 !

秃头小帅oi

为Java虚拟机分配堆内存大于机器物理内存会怎么样?

电子尖叫食人鱼

Java

仿真驱动创新丨Altair仿真+AI如何赋能轨道交通数字化升级列车创新?

Altair RapidMiner

数字孪生 仿真 CAE physicsAI 轨道交通

ITSM运营:降低变更风险的自动化与流程优化实践

嘉为蓝鲸

ITSM 智能运维

AI智能体:大模型之后的下个技术革命?

测试人

人工智能

用低代码打造企业AI中台,真的可行吗?

天津汇柏科技有限公司

人工智能 低代码

信创BeeWorks-国产化企业级im即时通讯软件

BeeWorks

即时通讯 IM

LangChain4j如何自定义文档转换器实现数据清洗?

王磊

“一键登录“变”一键沦陷”?小心高校统一认证平台成黑客“后门"!

权说安全

网络安全 统一身份认证

Web3软件系统的技术架构

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

工单智能化应用有哪些,工单管理系统选型推荐

云智慧AIOps社区

用小猫的视角看世界——关于「小猫相机」的一点浪漫构想

花十君

小猫相机 浪漫视角 柔软镜头 猫咪视角

互联网人离职空窗,我该怎么回答HR最认可?

测试人

面试

Web3软件系统的开发框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

行业分享丨虚拟原型技术:颠覆传统,引领矿业装备设计新纪元

Altair RapidMiner

AI 数字孪生 仿真 CAE 离散元仿真

Web3应用的上线流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

大模型辅助科研编程实录分享:效率飙升!“分分钟搞定”,智能体编排如何加速工作流

ModelWhale

什么是数据集市(Data Mart)?

镜舟科技

数据仓库 OLAP 数据集市 多维数据模型 在线分析处理

EI与MCP的故事

京东科技开发者

KET口语陪练APP的功能

北京木奇移动技术有限公司

软件外包公司 AI口语APP KET考试

小支同学华为鲲鹏微认证——鲲鹏软件迁移实践、鲲鹏软件性能调优实践

巴库一郎

鸿蒙 HarmonyOS 鲲鹏 DevKit harmoyos 实践分享

Uniapp开发鸿蒙应用教程之自定义导航栏

幽蓝计划

鸿蒙跨平台开发

DeepSeek 谈运维:AI 时代运维资源升级,从数据资产到智能能力的进阶之路

嘉为蓝鲸

AIOPS 智能运维 DeepSeek

嘉为蓝鲸受邀出席 2025 GOPS全球运维大会·深圳站

嘉为蓝鲸

GOPS全球运维大会

VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS 集成 AQC 网卡驱动定制版

sysin

esxi

信息化、数字化、数智化之间的区别和联系

积木链小链

数字化 信息化 智能制造

TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章

合合技术团队

人工智能 算法 #大数据

财务合同MCP实践

京东科技开发者

大模型技术跃迁,容联七陌开启智能客服新纪元

人称T客

AI编程新时代,CodeBuddy 带你来体验

六月的雨在InfoQ

AI编程 CodeBuddy CodeBuddy首席试玩官 AI 代码助手

CST软件如何将Altium的PCB板子导入CST

思茂信息

cst仿真软件 CST软件 CST Studio Suite

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