15

我正在开发一个需要实现数据同步算法的应用程序。

我们将有一个主服务器和多个从属设备,它们需要同步在一起。

现在,我有三种算法,我想根据你们中的任何人就哪一种是最好的算法提出建议。我真的很感谢你的意见。

1.算法的描述可以在这里找到。它是韩国汉阳大学信息和通信系 Sang-Wook Kim 的科学研究论文

http://goo.gl/yFCHG

2该算法涉及维护数据库的时间戳和版本号记录

例如,如果一个人的移动设备和服务器上的版本为 v10 ,则移动设备上的版本为 v12 ,假设与服务器上的时间戳相比,移动设备上的当前时间戳较新,

如果我们用 - 表示删除,用 + 表示插入,用 ~ 表示更改

以下更改日志与几个版本相关联:

v11: +r(44),~r(45),-r(46) v12:-r(44),~r(45),+r(47)

那么数据库的整体变化是 ,~r(45) (from v12),+r(47),-r(46)

因此可以看出,记录 r(44) 是不需要的,即使它被添加,然后随后被删除。因此不需要传输冗余数据。

整个算法可以在这里找到(我把它放在一个 pdf 中)http://goo.gl/yPC7A

3这个算法实际上 - 保留一个记录每条记录的最后更改时间戳的表。并根据时间戳对行进行排序。它仅同步那些已更改的行,我在这里看到的唯一问题是每次根据排序表到时间戳。

这是一个链接http://goo.gl/8enHO

非常感谢您的意见!:D

4

1 回答 1

2

我自己并没有直接参与其中,但是当人们在做这类事情时我就在身边。他们的设计不是由算法分析或性能搜索驱动的,而是通过与最终用户代表讨论收到冲突更新请求时该怎么做的几个小时。您可能希望与用户一起处理一些用例。用户甚至可能希望针对不同位置的不同类型数据采用不同类型的冲突解决方案。

这里的所有设计都通过传播更改来节省带宽。如果某件事导致一方不再是另一方的精确副本,那么这种不一致可能会无限期地持续下去。您至少可以通过交换校验和(如果您足够担心,则为 SHA-2 或 SHA-3)来检测此类问题。一个想法是向接收系统询问校验和,然后根据该校验和选择更新包。

于 2013-03-17T18:23:27.343 回答