# Graft - 支持部分复制的同步引擎

LLMS 索引： [llms.txt](/llms.txt)

---

一个新的同步引擎，可以在此之上构建需要同步功能的应用（当然是用 Rust 写的）。

主要特性是将数据视作多个页面（page），页面本身存储在对象存储上；客户端使用（例如需要读取数据时）先获取元数据，再根据实际需要获取所需的页面，而不需要每次都拉取全量数据。每个页面可以有多个版本，由此可以得到快照和时间点恢复。

当然和任何分布式系统一样，某个客户端可能会尝试在一个旧版本上写入再提交。（想象在 git 中一个在旧未更新的分支上 commit 再 push）对这种情况，Graft 提供了多种冲突处理方式，可以让客户端在最新版本上重放变更（rebase），或是尝试和新版本做语义合并（merge），或是干脆分叉出一个新的分支。

作者的博客描述了和现有各种方案的对比，看起来在易用性和功能上取得了最佳的平衡。


src: https://github.com/orbitinghail/graft

blog: https://sqlsync.dev/posts/stop-syncing-everything/

via: https://simonwillison.net/2025/Apr/8/stop-syncing-everything/#atom-everything
