我们有两个通常无法相互通信的离线系统.两个系统都保持相同的有序项目列表.他们很少能够彼此通信以同步列表.
项目标有修改时间戳以检测编辑.项目由UUID标识,以避免在插入新项目时发生冲突(与使用自动递增整数相反).检测到同步新UUID并将其复制到另一个系统时.删除也是如此.
上述数据结构适用于无序列表,但我们如何处理排序?如果我们添加整数"rank",那么在插入新项目时需要重新编号(因此需要同步所有后继项目,因为只有1次插入).或者,我们可以使用小数排名(使用前一项和后继项的排名的平均值),但这似乎不是一个强大的解决方案,因为当插入许多新项时,它会很快遇到准确性问题.
我们还考虑将其作为双重链接列表实现,每个项目都包含其前任和后续项目的UUID.但是,当插入1个新项目时,仍需要同步3个项目(或者当删除1个项目时同步2个剩余项目).
优选地,我们想要使用仅需要同步新插入的项的数据结构或算法.这样的数据结构是否存在?
编辑:我们需要能够处理将现有项目移动到其他位置!
algorithm synchronization linked-list html-lists data-structures