HeadlinesBriefing favicon HeadlinesBriefing.com

DoltLite:带有 Git 样式版本控制的 SQLite 分支

Hacker News •
×

我的宝贝长大了。发布仅五个月后,Dolt Lite 已进入 Beta 版,版本 0.50.0。Dolt Lite 最初是一个玩笑。我需要一个项目来测试 Steve Yegge 的创新代理编排工具 Gas Town。我需要一个真实的问题,而不是玩具。我们已经想好几年了嵌入式 Dolt,但重写 Dolt 的存储引擎转到 C 或 Rust 太过分了。SQLite 似乎是该引擎的逻辑承载者。代理团队能搞定吗?只用了大约 2,000 次拉取请求,但 Dolt Lite 进入 Beta 证明了代理团队当然可以做到。

什么是 Dolt Lite

Dolt Lite 是 SQLite 的一个分支。B 树层以上的一切都是一样的。这意味着 SQL 解析器和分析器、文件系统交互层以及测试套件都是股票 SQLite。在其他 Dolt 产品中,我们不得不在版本控制存储之上实现 SQL 引擎。编写 SQL 引擎很难。通过 Dolt Lite,我们花费的代价只是在 C 中编写版本控制存储引擎。B 树层被换成了一个由单个文件块存储支持的 Prolly Tree。Prolly Trees 是内容寻址的 B 树。这种神奇的数据结构为所有 Dolt 产品中的版本控制功能提供支持。这意味着您可以在一个 SQLite 包中获得 Dolt 和 Git 的所有版本控制功能。你想过分支、合并和 diff SQLite 吗?Dolt Lite 就是给你的。或者更 importantly,你是否想过一个由 Git-style push, pull, clone, and fetch 驱动的冲突意识 SQLite 同步引擎?Dolt Lite 就是给你的。或者更 importantly,你是否想过一个由 Git-style push, pull, clone, and fetch 驱动的冲突意识 SQLite 同步引擎?Dolt Lite 就是给你的。你甚至可以使用 Dolt Hub 作为你的同步后端。

什么是 Beta 的含义

那么,Dolt Lite 进入 Beta 对你意味着什么?Beta 意味着四件事:存储格式稳定性、SQL 兼容性、完整版本控制、生产性能以及关于功能和稳定性的实地报告普遍积极。SQLite 的测试库 truly impressive。Dolt Lite 通过了这些测试,以及自定义的 Dolt oracle 测试。Dolt Lite 已准备好让你尝试。存储格式稳定性

关于 Dolt Lite 开发过程中最大的抱怨是存储格式的跳跃。存储格式更改不兼容向后,要求用户保持同一版本或手动转储并重新导入他们的数据库。达到 Beta 需要 12 次格式更改。我们已经在当前格式上待了 57 个发布,或超过三个月的日历时间。这种格式似乎是我们可以坚持的。存储格式现在是稳定的。任何未来的破坏性更改都将有受支持的迁移路径。Dolt Lite Beta 意味着您可以在不担心破坏性存储格式更改的情况下采用。SQL 兼容性

SQLite 的 SQL 层经过极其良好的测试。Dolt Lite 通过了其中绝大多数测试,证明了 SQL 兼容性。Dolt Lite 通过了 100% 的 sqllogictest,一个 5.8M 复杂查询套件。查询层与 SQLite 相同,所以这一点是预期的。SQLite 还随附了 892,277 个 TCL 基受测试的接受测试,用于测试更广泛的 SQLite API 表面。Dolt Lite 通过了 99.46%,有 4,809 个已知的发散。每个发散必须有列出的原因。顶部原因是:表按主键键接,而不是 rowid,以支持版本控制功能。一些测试直接检查 rowid。Dolt Lite 有块,而不是页。一些测试直接检查页。不存在 WAL 或 journal 侧车。WAL 和 journal 测试被跳过。SQLite 用户会觉得 Dolt Lite 很熟悉。Dolt Lite 的操作像 SQLite,额外带有版本控制函数。完整版本控制

Dolt Lite 实现了 Dolt 核心套装的 Git-style 版本控制特性。支持本地版本控制特性。分支、合并、diff、rebase、cherry-picks、reset,诸如此类。支持远程版本控制:push, pull, clone, and fetch from a custom remot...