返回

文章详情

DoltLite:一个具有 Git 风格版本控制的 SQLite 分支,基于 2000 个代理 PR 构建

Hacker News2026年9月1日 01:25

我的宝贝正在成长。在推出仅五个月之后,DoltLite 已进入 Beta 阶段,版本 0.50.0。DoltLite 最初是个玩笑。我需要一个宠物项目来测试 Steve Yegge 的创新代理编排器 Gas Town。我想要一个真实的问题,而不是玩具。我们想要一个嵌入式的 Dolt 版本已经很久了,但将 Dolt 的存储引擎重写为 C 或 Rust 对我们来说是个难题。SQLite 似乎是那个引擎的逻辑主机。一个代理团队能否做到呢?大约 2000 个 pull 请求后,DoltLite 的 Beta 证明了代理团队确实可以做到。本文解释了 DoltLite 是什么以及 Beta 发布意味着什么。 ## 什么是 DoltLite DoltLite 是 SQLite 的一个分支。B-树层以上的一切都是一样的。这意味着 SQL 解析器和分析器、文件系统交互层和测试工具都是标准 SQLite。与其他 Dolt 产品相比,我们不得不在受版本控制的存储之上实现一个 SQL 引擎。构建 SQL 引擎是困难的。借助 DoltLite,我们只需编写一个受版本控制的存储引擎的 C 代码便得到了一个 SQL 引擎。B-树层被一个由单个文件块存储支持的 Prolly Tree 替换。Prolly Trees 是内容地址的 B 树。这种神奇的数据结构为所有 Dolt 产品中的版本控制功能提供了动力。这意味着您将获得 Dolt 和 Git 的所有版本控制功能,打包在 SQLite 中。您有没有想过对 SQLite 进行分支、合并和比较?DoltLite 是为您准备的。或者更重要的是,您是否希望拥有一个由 Git 风格的推送、拉取、克隆和获取驱动的冲突感知的 SQLite 同步引擎?DoltLite 是为您准备的。您甚至可以使用 DoltHub 作为您的同步后端。 ## Beta 代表什么? 那么,DoltLite 进入 Beta 对您意味着什么?Beta 有四个意思: 1. 存储格式稳定性 2. SQL 兼容性 3. 完整的版本控制 4. 生产性能 来自现场的功能和稳定性报告普遍积极。SQLite 的测试集确实令人印象深刻。DoltLite 通过了这些测试以及一套定制的 Dolt oracle 测试。DoltLite 已经准备好供您尝试。 ### 存储格式稳定性 对 DoltLite 开发过程最大的不满是存储格式的变化。存储格式的更改并不向后兼容,这要求用户保持在同一版本上,或手动导出并重新导入其数据库。经过 12 次格式更改,我们终于进入了 Beta。我们在当前格式下已经发布了 57 个版本,超过三个日历月。这个格式似乎是一个可以稳定下来的格式。存储格式现在是稳定的。未来的任何破坏性更改都将有支持的迁移路径。DoltLite Beta 意味着您可以无忧使用,无需担心破坏性的存储格式更改。 ### SQL 兼容性 SQLite 的 SQL 层经过了极其严格的测试。DoltLite 也通过了绝大多数测试,证明了其 SQL 兼容性。DoltLite 100% 通过了 sqllogictest,这是一个包含 580 万个复杂查询的测试套件。查询层与 SQLite 是一样的,因此这是可以预期的。SQLite 还配备了一套 892,277 个基于 TCL 的验收测试,用于测试 SQLite API 的更广泛表面。DoltLite 99.46% 的通过率和 4,809 个已知偏差。每个偏差都必须有列出的原因。主要原因是:表通过主键而非 rowid 键入,以支持版本控制功能。一些测试直接检查 rowid。DoltLite 使用块而不是页面。一些测试直接检查页面。没有 WAL 或日志旁路。跳过 WAL 和日志测试。SQLite 用户会感觉 DoltLite 就像是回到家一样。DoltLite 的操作方式与 SQLite 类似,额外提供版本控制功能。 ### 完整的版本控制 DoltLite 实现了 Dolt 的 Git 风格版本控制功能的核心套件。支持本地版本控制功能。包括分支、合并、差异、变基、樱桃选择和重置等。支持远程版本控制:从自定义远程或 DoltHub 推送、拉取、克隆和获取。您甚至拥有完整的 Dolt Workbench GUI,附带代理模式。让一个代理操控您的 SQLite,并在出现问题时使用 dolt_reset('--hard')。 ### 生产性能 DoltLite 为您提供微秒级的嵌入式数据库性能,但带有版本控制写性能税。在读取方面接近持平。每晚,都会在 GitHub 上发布一份比较 DoltLite 和 SQLite 的标准 sysbench 风格基准的性能报告。昨晚的报告显示,内存中的 DoltLite 数据库在读取时比 SQLite 慢 10%,写入时慢 60%。文件支持的数据库在读取方面持平,批量写入比 SQLite 慢 10%。最大的异常是小的自动提交写入,比 SQLite 慢 3.1 倍。对性能敏感的 DoltLite 工作流应尽可能利用批量写入。即使是自动提交写入,我们也在谈论微秒级(即毫秒以下)的单次写入性能:在一个小型 GitHub 运行者上,SQLite ~125 微秒,而 DoltLite ~400 微秒。 ## 结论 DoltLite 现在是 Beta 版!我们现在只在等待用户。今天就试试 DoltLite 吧!

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡