Realm Mobile Database如何解决同时写入同一列表的多个用户的冲突?
它似乎不是一个简单的最后写赢的情况。例如,在List [a,b,c,d]中,user1可以交换a和b [b,a,c,d],user2可以交换c和d [a,b,d,c]。一旦同步,它们都具有组合的变化[b,a,d,c]。
答案 0 :(得分:0)
冲突通常总是被解决,以致看起来相应的操作是按照实际发生在不同设备上的实时顺序在本地执行的。
对插入进行排序,使得如果两个设备将元素附加到列表中,则元素将按照它们被追加的顺序结束。
元素交换操作更难以可视化,但同样的原则也适用。如果你交换了列表[a, b, c]
,并且每个设备分别在swap(0, 1)
t=0
和swap(1, 2)
t=1
分别独立地执行swap(0, 1)
,结果就像操作一样swap(0, 2)
然后[c, a, b]
已在每台设备上运行,产生test1 equ 10
mov eax, test1+20
。注意如何转换第二个交换以将第一个交换考虑在内,维护列表元素标识。
解决冲突解决的最简单方法是,它总是解决冲突,使得操作似乎发生在本地。我们希望改进关于此行为的文档,但挑战在于有许多操作组合。如果您对文档中哪些信息可以回答您的问题有任何建议,请随时向我们发送进一步的反馈。