Simperium如何解决冲突?

时间:2013-08-19 11:11:33

标签: core-data simperium

我怀疑采用核心数据同步解决方案,其中不清楚如何解决冲突。不幸的是,像iCloud和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相关,可能基于时间戳顺序,但孤立对象会发生什么?删除吗?它是否从一台设备回滚整个交易?

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

1 个答案:

答案 0 :(得分:0)

我很遗憾地说,目前,关系必须标记为可选。我们有here的票证。

使用最新版本的lib(0.6.2),会发生什么:

  • 更改以“先进先出”方式处理。这意味着:A_0将与B_1或B_2相关,具体取决于首先进行的更改。
  • 忽略重复更改(如果两个设备删除B_0,则可以。)
  • 由于Simperium不支持(目前)强制关系,因此您最终会得到一个孤儿对象。

希望有所帮助!