报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

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

评论

发布
暂无评论

在武汉Java培训费用多少

小谷哥

6个月我从小厂逆袭,薪资上涨70%,坐上美团L8技术专家!

收到请回复

Java 云计算 开源 架构 编程语言

快速构建基本的SpringCloud微服务

Java-fenn

Java

如何成为一个好的设计师 or 程序员?

宇宙之一粟

读书笔记 设计 技巧 知识 9月月更

深圳web前端培训费用多少?

小谷哥

如何通过C#/VB.NET在Excel中隐藏或显示网格线

在下毛毛雨

C# .net Excel

【CSM认证】11月1-4日在线工作日班 | 全国招生

ShineScrum

项目管理 Scrum Scrum Master 敏捷项目管理

大数据培训机构如何选择

小谷哥

Java培训可以从事哪些工作

小谷哥

技术分享 | 白盒测试方法论

霍格沃兹测试开发学社

技术分享 | 什么是软件缺陷

霍格沃兹测试开发学社

技术分享 | Bug定位方法

霍格沃兹测试开发学社

技术分享 | web前端的HTML浅析

霍格沃兹测试开发学社

字节二面:Redis 的大 Key 对持久化有什么影响?

程序知音

Java 数据库 redis 字节跳动 面试

拼多多、蚂蚁、字节2022届(大三)后端研发暑期实习

Java-fenn

Java

经典面试题-定位不到元素

霍格沃兹测试开发学社

技术分享 | Web测试方法与技术之JavaScript 讲解

霍格沃兹测试开发学社

LED显示屏人屏互动未来已来

Dylan

户外LED显示屏 led显示屏厂家

技术分享 | 测试环境搭建

霍格沃兹测试开发学社

Linux下使用LVM方式进行文件系统创建,详细教程

阿柠xn

Linux 运维 文件系统 lvm 9月月更

如何快速开发灵活自定义报表

力软低代码开发平台

京东云无线宝产品部负责人张晓东 : 京东云无线宝与开源的亲密关系 | 《大神详解开源 BUFF 增益攻略》讲座回顾

Apache IoTDB

物联网 京东云 企业号九月金秋榜

女生参加java培训前景如何

小谷哥

与未来对话:PingCAP 用户峰会亮点全放送

PingCAP

#TiDB

21个大厂Offer?这份“Java核心技能精讲”轻松收割

收到请回复

Java 云计算 开源 架构 编程语言

技术分享 | 常用测试策略与测试手段

霍格沃兹测试开发学社

经典面试题-Appium原理

霍格沃兹测试开发学社

技术分享 | 黑盒测试方法论—因果图

霍格沃兹测试开发学社

C++ 左值引用与 const 关键字

Java-fenn

Java

深入浅出用户态协议栈

C++后台开发

后台开发 TCP/IP 网络协议栈 C++开发 用户态协议栈

阿里分布式全栈手册,整整1000页,太顶了

程序知音

Java 架构 分布式 阿里 后端技术

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