2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

评论

发布
暂无评论

华为云OBS,助力企业海量、安全、高可靠、低成本数据存储

轶天下事

云计算,

Tars-Cpp 协程实现分析

vivo互联网技术

协程 TARS

Spring循环依赖为何使用三级缓存?

Java你猿哥

Java spring 缓存 bean spring ioc

GitHub排名第一《lntellij IDEA软件开发与应用实战手册》限时开源

Java你猿哥

Java spring ssm IDEA

华为云大数据BI解决方案,助力企业数字化运营

轶天下事

中国信通院“OSCAR开源生态建设沙龙”成功召开

中国IDC圈

开源

THREE.JS实现炫酷的3D简历网站

知心宝贝

前端 后端 3D ThreeJS 三周年连更

Guava的EventBus事件机制实现

Java你猿哥

Java 源码 ssm Guava EventBus

数据灾备方案,华为云为何受众多企业信赖与选择?

平平无奇爱好科技

面试还不懂JVM调优,看这篇就够了

程序员小毕

程序员 面试 后端 架构师 jvm调优

企业上云,华为云桌面兼顾效率与安全

平平无奇爱好科技

率失真函数的性质

timerring

信息论与编码

AI降临,前端启用面壁计划

京东科技开发者

人工智能 AI 前端 企业号 4 月 PK 榜

华为云虚拟专用网络VPN常见问题解答

YG科技

4月26日-30日,KaiwuDB 在数字中国等你!

KaiwuDB

数字中国 KaiwuDB

从源码全面解析 ArrayBlockingQueue 的来龙去脉

Java 源码 ArrayBlockingQueue

阿里云机器学习PAI发布基于HLO的全自动分布式系统 TePDist,并宣布开源!

阿里云大数据AI技术

深度学习 分布式系统 开源项目 企业号 4 月 PK 榜

华为云大数据BI方案为房地产行业数字化发展赋能

轶天下事

云计算,

阿里开发实录:慢SQL拖垮数据库并引发故障

Java永远的神

数据库 sql 程序员 后端 架构师

复旦MOSS大模型开源了「中国版ChatGPT」,Github和Hugging Face同时上线

肥晨

三周年连更

Matlab实现粒子群算法

Shine

三周年连更

七大关键技术,华为云数据库GaussD承载金融级核心系统

平平无奇爱好科技

云计算,

Bytebase 体验官之 MySQL 「SQL 审核」

朱亚光

ES的索引结构与算法解析

京东科技开发者

搜索引擎 elasticsearch 索引结构 ES 企业号 4 月 PK 榜

简直人生外挂,直接涨薪25K,跪谢这份Java性能调优实战宝典

Java 性能优化 JVM 性能调优

面试官:介绍一下什么是缓存雪崩、缓存击穿、缓存穿透?

Java redis 缓存穿透 缓存击穿 缓存雪崩

企业数据的最后防线——华为云数据灾备

YG科技

云计算,

NPM 实用命令与快捷方式

SEAL安全

JavaScript npm 企业号 4 月 PK 榜

从原理聊JVM(二):从串行收集器到分区收集开创者G1

京东科技开发者

G1 JVM 垃圾回收器 java 企业号 4 月 PK 榜

NFT加密钱包交易系统开发搭建技术

薇電13242772558

NFT

PHP 中数组是如何灵活支持多数据类型的?

架构精进之路

php 数组 后端 三周年连更

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