写点什么

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

评论

发布
暂无评论

游戏代练行业新趋势:代练护航系统小程序的价值与潜力

DUOKE七七

音乐NFT系统的运维

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

区块链技术 软件外包公司 音乐NFT

【每日学点HarmonyOS Next知识】上下拉动作、图片预览、组件边距、this获取、svg旋转

轻口味

HarmonyOS HarmonyOS NEXT

30分钟搞定电商系统核心业务逻辑!AI工具实战演示高效开发秘诀

飞算JavaAI开发助手

音乐NFT系统的测试

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

区块链技术 软件外包公司 音乐NFT

【每日学点HarmonyOS Next知识】抽屉效果、树状组件、离屏渲染、上下文获取、Tab声明周期

轻口味

HarmonyOS HarmonyOS NEXT

资产管理系统建设解决方案,项目实施运维方案

金陵老街

资产管理 系统方案

音乐NFT系统的网络安全

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

区块链技术 软件外包公司 音乐NFT

【每日学点HarmonyOS Next知识】点赞动画实现、Grid当前显示条目、刷新组件、代码规范、状态变量

轻口味

HarmonyOS HarmonyOS NEXT

【连载 22】性能测试实践——超时结账第二回合

FunTester

音乐NFT软件系统的开发

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

区块链技术 软件外包公司 音乐NFT

音乐NFT系统的协议

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

区块链技术 软件外包公司 音乐NFT

【第 8 期】搜索客 Meetup - Elasticsearch 的一些“双刃剑”特性

极限实验室

Meetup Elastic Search 搜索客社区

【每日学点HarmonyOS Next知识】tab拦截、组件方法做参数、自定义组件链式调用、多次观察者监听、横竖屏切换

轻口味

HarmonyOS HarmonyOS NEXT

全链路赋能游戏鸿蒙化适配,鸿蒙游戏开发者服务焕新升级

最新动态

记录一下 简单udp和sni 代理 done

八苦-瞿昙

C# Proxy

【每日学点HarmonyOS Next知识】页面引用问题、Json三方库、路由表使用、下拉刷新问题、视频播放错误

轻口味

HarmonyOS HarmonyOS NEXT

五大方向全面对比 IoTDB 与 OpenTSDB

Apache IoTDB

SvelteKit 最新中文文档教程(3)—— 数据加载

冴羽

JavaScript 前端开发 前端框架 Svelte SvelteKit

【每日学点HarmonyOS Next知识】防截屏、作用域问题、观察器问题、对话框关闭、判断对象包含某个字段

轻口味

HarmonyOS HarmonyOS NEXT

【每日学点HarmonyOS Next知识】路由栈问题、图片圆角、颜色资源转十六进制字符串、数据集变化崩溃、组件声明周期

轻口味

HarmonyOS HarmonyOS NEXT

【每日学点HarmonyOS Next知识】自定义对象传参、页面生命周期、自定义弹窗、路由打开对话框,网络图片

轻口味

HarmonyOS HarmonyOS NEXT

当低代码遇见麒麟OS:深度兼容统信UOS的图形渲染引擎改造技术揭秘

不在线第一只蜗牛

低代码

故障测试助力系统稳定性

FunTester

懒猫微服助我生活工作穿梭无忧

玄兴梦影

NAS 远程访问 懒猫微服 微型服务器 私有云助手

《Operating System Concepts》阅读笔记:p309-p330

codists

操作系统

【每日学点HarmonyOS Next知识】类型判断、刘海高度、隐私弹窗、滑动下一页效果、清楚缓存

轻口味

HarmonyOS HarmonyOS NEXT

【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)

码界西柚

redis 数据结构 字典 redis 底层原理 数据库 nosql

【每日学点HarmonyOS Next知识】路由返回、滚动到中间、worker取消任务、文本选择多级联动

轻口味

HarmonyOS HarmonyOS NEXT

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