Realm 移动数据库如何解决多个用户同时写入同一个列表的冲突?
这似乎不是一个简单的最后写入获胜的情况。例如在 List [a, b, c, d] 中,user1 可以交换 a 和 b [b, a, c, d],user2 可以交换 c 和 d [a, b, d, c]。同步后,它们都具有组合更改 [b, a, d, c]。
冲突通常总是被解决,这样看起来相应的操作是按照它们在不同设备上实际发生的实时顺序在本地执行的。
插入是这样排序的,如果两个设备将元素添加到列表中,元素将按照它们被添加的顺序结束。
元素交换操作有点难以想象,但同样的原则也适用。如果您交换了列表[a, b, c]
并且每个设备分别独立地执行swap(0, 1)
att=0
和swap(1, 2)
at t=1
,则结果将就好像操作swap(0, 1)
然后swap(0, 2)
已在每个设备上运行一样,产生[c, a, b]
. 请注意第二个交换是如何转换为考虑第一个交换的,从而保持列表元素标识。
推理冲突解决的最简单方法是它总是解决冲突,使得操作看起来是在本地发生的。我们希望围绕此行为改进我们的文档,但挑战在于存在多种操作组合。如果您对文档中的哪些信息可以回答您的问题有任何建议,请随时向我们发送进一步的反馈。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句