我使用Dropbox Datastore API,它非常简单方便。我在链接帐户后想出了这个过程。但是在解除链接之后,我在一个非常常见的情况下设计同步策略时遇到了麻烦:
将设备 A 和 B 链接到Dropbox,并首次同步所有数据。稍后设备 A 已取消关联。现在有两个数据副本,Dropbox数据存储区与 B 同步。然后分别对 A 和 B 执行几项插入,删除,更新操作。在 A 再次链接到Dropbox之后,我该如何处理冲突?
这是一款Android应用。它有一个本地SQLite数据库。 Dropbox链接后,SQLite数据库和Dropbox数据存储区以镜像方式协同工作。 unlink将删除dropbox部分,但保留本地SQLite。
(我能想到的两种解决方案:
不要使用本地镜像数据库,取消链接后,所有数据都消失了,用户必须通过重新链接来获取数据。我想iCould正在做这样的事情。
取消链接删除Dropbox上的应用,只保留本地SQLite存储。
记录所有本地更改和时间戳,并在重新链接时,遍历所有数据并解决冲突。这可能很棘手,并为应用程序增加了另一层复杂性。)
任何熟悉Dropbox数据存储区API的人都会留下一些评论吗?感谢。
更新
现在我在我的本地SQLite中使用了两个id列:整数_id列仅适用于Android内容提供商&游标适配器,我把它保持在内部;另一个是由随机UUID生成的字符串类型,这实际上是主要的id列,我用它来查询,外键引用其他表。这使数据一致性变得更加容易。 Dropbox数据存储区id列是我的本地UUID字符串列。对于取消链接的情况,本地数据库仍然保留此UUID列的引用。