最近突然在想,对于那些支持离线使用的 app,是如何做同步方案的呢,特别是支持多端的,很容易冲突啊。
元思笔记在开发的桌面端也有这个问题,尤其是选择用 sqlite 来保存数据的话。一旦多端断网之后分叉,必然会产生冲突。
目前的想法
如果是存成 git 这种倒还好一点,但是很多通用的比如 webdav 协议有配额限制,不适合同步时要读写大量文件的情况。
如果大家有其他想法,也欢迎一起来分享。
关于 Git,据我已知, js 实现的版本 https://github.com/isomorphic-git/isomorphic-git dart 实现的版本 https://github.com/GitJournal/dart-git
一个 WebDAV 做的比较好的,用于多设备书签同步的浏览器扩展:https://github.com/floccusaddon/floccus
坚果云估计不行,坚果云自身都会出现冲突文件
为何我们不可以在数据恢复的时候去合并设备间的变更呢? 在从 WebDAV 中恢复备份时,不是直接粗暴的进行数据库文件的替换,而是先去对比两个版本数据库中出现差异的数据记录,之后对这部分的数据做恢复。