2013-08-19 182 views
0

我很怀疑采用核心数据同步解决方案,其中不清楚冲突如何解决。不幸的是,像iCloud和Simperium这样的解决方案只是声明'冲突是自动处理的',并留在那里。通常这不是足够的信息。Simperium如何解决冲突?

举一个具体的例子,假设你有一个包含实体A和B的应用程序,它们之间有一对一的关系。想象一下,这种关系是非可选的。

从商店完全同步和两个相关对象A_0和B_0开始,device1创建一个名为B_1的新B对象,并将A_0与B_1关联。它删除B_0。

同时,设备2也删除B_0,但创建了一个名为B_2的新对象,并将其与A_0关联。

这种情况将如何解决?据推测,A_0最终会与B_1或B_2相关,可能是基于时间戳顺序,但是孤儿对象会发生什么?删除吗?它是否从一台设备回滚整个交易?

该对象不能孤立存在,因为该关系是必需的。

回答

0

我很抱歉地说,目前,关系必须标记为可选。我们有一张门票here

随着LIB(0.6.2)的最新版本,会发生什么样的是:

  • 变动表“”先入先处理“”时尚进行处理。这意味着:A_0将与B_1或B_2相关,具体取决于首先通过哪个更改。
  • 忽略重复的更改(如果两个设备删除B_0,则可以)。
  • 由于Simperium不支持(现在)必须的关系,你最终会得到一个孤儿对象。

希望有帮助!