Dolt:面向数据的 Git
一个支持 fork、克隆、分支、合并、推送和拉取的 SQL 数据库,将 Git 的版本控制能力赋予数据表。
- 源仓库
- dolthub/dolt
- Star 数
- ★ 25k
- 最近更新
- 1 天前
- License
- Apache-2.0
- 主语言
- Go
- FA 评分
- 55/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 兼容但需适配
- 费用
- 免费,无需付费服务
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 数据团队需要协作开发数据库,并希望像代码一样进行分支、合并和代码审查。
- 不适合
- 需要完整 MySQL 兼容性的团队,部分存储引擎和特性可能不支持
- 希望直接沿用现有 MySQL 数据文件、避免迁移的团队
- 对超大数据集性能要求极高的生产场景
这个 Agent 能做什么,适合哪些场景?
Dolt 是一个开源的 SQL 数据库,它像 Git 一样管理数据表,提供完整的数据版本控制功能,包括分支、合并、历史记录和回滚。它兼容 MySQL(支持 MySQL 客户端和协议),并提供了 Git 风格的命令行工具 dolt。通过 SQL 系统表和存储过程,用户可以在数据库会话中直接执行版本控制操作。Dolt 还支持数据完整性约束(如外键、检查约束)和 SQL 查询(如 JOIN)。该项目还提供了 DoltHub(数据共享平台)、DoltLab(自托管 DoltHub)和托管 Dolt 服务。Dolt 适合需要数据溯源、协作开发数据库的场景,也被用于 AI 代理的记忆存储。
Dolt 提供一个名为 dolt 的命令行工具,包含 init、add、commit、branch、merge、push、pull 等与 Git 类似的命令,但针对表操作。它还内置了一个 MySQL 兼容的服务器(dolt sql-server),允许任何 MySQL 客户端(如 mysql)连接并执行 SQL。在 SQL 中,它暴露了系统表(如 dolt_log、dolt_status、dolt_diff)和存储过程(如 dolt_add、dolt_commit、dolt_checkout、dolt_merge),用于版本控制操作。例如,用户可以通过 call dolt_commit('-m', 'message') 进行 Dolt 提交,通过 call dolt_checkout('-b', 'branch') 创建分支,通过 select * from dolt_diff('main','modifications','employees') 查看分支差异。它还支持读取特定版本的数据(如 select * from employees as of 'modifications')。此外,Dolt 提供历史表(如 dolt_history_employees)来审计单元格级的变化。
- 数据团队需要协作开发数据库,并希望像代码一样进行分支、合并和代码审查。
- 需要审计数据库变更,追踪每一行数据的修改历史和时间线。
- 希望建立可复现的数据管道,将数据快照与代码版本关联。
- AI 代理需要持久化记忆,并通过 Git 式操作管理记忆版本。
- 需要从 CSV 等文件导入数据,并使用 Git 命令管理版本。
- 希望在不同环境(开发、测试、生产)之间同步数据库结构。
如何安装或部署这个 Agent?
安装 Dolt:在 Linux 或 Mac 上,运行:sudo bash -c 'curl -L https://github.com/dolthub/dolt/releases/latest/download/install.sh | bash' 或使用 brew install dolt(Mac)。在 Windows 上,下载最新 .msi 文件。或者从源码构建:克隆仓库,进入 go 目录,运行 go install ./cmd/dolt。
如何使用这个 Agent?
安装后,配置用户名和邮箱:dolt config --global --add user.email [email protected] 和 dolt config --global --add user.name "YOUR NAME"。然后启动服务器:dolt sql-server。使用 MySQL 客户端连接:mysql --host 127.0.0.1 --port 3306 -uroot。创建数据库和表,然后使用 SQL 过程进行版本控制:call dolt_add('table1', 'table2'); call dolt_commit('-m', 'Initial commit'); 查看历史:select * from dolt_log; 创建分支:call dolt_checkout('-b', 'new-branch'); 合并分支:call dolt_merge('branch-name'); 更详细的使用方法请参考文档。
这个 Agent 有哪些优点和局限?
- 提供完整的数据库版本控制,包括分支、合并、回滚,类似 Git。
- MySQL 兼容,可以使用现有 MySQL 工具和客户端。
- 提供单元格级别的数据审计,通过历史表和 diff 追踪每一次修改。
- 支持外键、触发器、检查约束等完整性功能,适合生产级数据。
- 支持通过 SQL 过程进行版本控制,方便在应用中使用。
- 需要学习 Dolt 特有的版本控制概念和命令。
- 可能不支持所有 MySQL 高级功能(如某些存储引擎)。
- 数据仓库的存储格式与标准 MySQL 不同,可能难以直接迁移。
- 对于大型数据集,操作性能可能不如传统数据库。
这个 Agent 与同类方案有什么区别?
Dolt 与 Git 和 MySQL 有相似之处,但它是将两者结合。与 Git 相比,它版本控制的是表而不是文件;与 MySQL 相比,它增加了版本控制功能。没有其他直接替代品。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Dolt:面向数据的 Git 当前 | 55 · 缺口较多 | 命令行工具免费 | ★ 25k | 1 天前 | Go | — |
| Astronomer Agents:Airflow 数据工程 AI 工具集 | 46 · 缺口较多 | Agent 插件 / 技能免费 + 模型费 | ★ 454 | 11 天前 | Python | Claude Code |
| CocoIndex | 49 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 12k | 1 天前 | Rust | — |
| AMB 记忆基准套件 | 39 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 153 | 5 天前 | Python | — |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:Dolt 提供版本控制功能,包括分支、合并、回滚等,回滚能力(rollback)得到充分支持(3分)。源代码归属(source_attribution)通过提交日志和作者信息得到部分支持(2分)。最小权限(least_privilege)方面,有用户和授权管理,但未明确说明默认权限或最小权限原则,仅部分支持(1分)。用户确认(user_confirmation)未提及,得0分。数据流透明度(data_flow_transparency)有日志和系统表,但未明确说明数据流向,部分支持(1分)。敏感数据处理(sensitive_data_handling)有安全策略和TLS支持,但未明确说明敏感数据保护,部分支持(1分)。依赖安全(dependency_security)有依赖更新工作流,但未提供漏洞扫描证据,部分支持(1分)。外部影响(external_effects)有集群复制和远程操作,但未明确说明外部影响控制,部分支持(1分)。
证据显示:自洽性(self_consistency)方面,README和测试文件一致,但未全面验证,得2分。依赖可用性(dependency_availability)有依赖管理,但未提供可用性保证,得1分。失败消息(failure_messages)在测试中有错误匹配,但未全面覆盖,得2分。
证据显示:受众和场景(audience_and_scenarios)明确为数据版本控制,适用于多种场景,得2分。能力边界(capability_boundaries)通过命令列表和文档说明,但未明确限制,得2分。触发精度(trigger_precision)在CLI和SQL中明确,但未涉及自动化触发,得1分。环境适配(environment_fit)支持多平台和Docker,得2分。
证据显示:信息架构(information_architecture)有清晰的README和文档,得2分。安装说明(install_notes)详细,得3分。命名稳定性(naming_stability)命令命名一致,得2分。示例和FAQ(examples_and_faq)有示例,但无FAQ,得2分。已知限制(known_limitations)未明确列出,得1分。许可证(license)为Apache-2.0,得3分。版本和变更日志(versioning_changelog)有版本命令,但无变更日志,得1分。维护责任(maintenance_responsibility)有安全联系和社区,得2分。
证据显示:输出可用性(output_usability)有CLI和SQL输出,得2分。边际价值(marginal_value)提供独特的数据版本控制,得2分。成本效益(cost_benefit)免费开源,得2分。
证据显示:声明可追溯性(claim_traceability)有文档和测试,得2分。跨源佐证(cross_source_corroboration)有测试文件,但未独立验证,得1分。事实推断分离(fact_inference_separation)文档区分事实和推断,得2分。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 未发现恶意代码或明显风险,但发布者身份未验证,需谨慎。
- 依赖安全未提供漏洞扫描证据,建议检查依赖漏洞。
- 用户确认机制缺失,自动化操作需谨慎。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
v2.5.0 2.5.0
发布说明摘录
This is a minor release because it contains backwards incompatible behavioral changes: * It is now possible to commit changes on more than one branch in the same SQL transaction. Previously, such transactions would fail with an error message. * It's also possible to dolt commit to more than one branch via dolt_commit(), but only if the new session variable @dolt_multi_branch_commit is set to a true value. Previously, such procedure calls would fail with an error message. …在 GitHub 查看 ↗ -
v2.4.2 2.4.2
发布说明摘录
Merged PRs dolt * [12025](https://github.com/dolthub/dolt/pull/12025): Fixed foreign keys referencing a renamed index This fixes the issue presented in: * https://github.com/dolthub/doltgresql/issues/3517 This moves the index renaming logic so that it also covers ALTER INDEX instead of only RENAME INDEX. * [12024](https://github.com/dolthub/dolt/pull/12024): Quoted dolt_blame view identifiers with the engine's schema formatter …在 GitHub 查看 ↗ -
v2.4.1 2.4.1
发布说明摘录
Merged PRs dolt * [12016](https://github.com/dolthub/dolt/pull/12016): /{go,integration-tests}: use a more specific cache key Use the local database cache root, remote URL, and effective Git ref as the cache key so databases and custom refs cannot incorrectly share a remote handle. The SQL provider and Git remote factory share key construction, and remote opens and cache lookups share parameter construction. Validated with all eight SQL Git-remote integration tests and targeted remote configuration, factory, and database provider Go tests. Fixes #12011. …在 GitHub 查看 ↗