数据库同步算法建议

Ana*_*nt 12 database algorithm sync

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

我们将拥有一台主服务器和多个从属设备,这些设备需要同步在一起.

现在,我有三个算法,我想根据你们中的任何一个建议哪一个是最好的.我真的很感激你的意见.

这里可以找到算法的描述.这是韩国汉阳大学信息与通信部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)(来自v12),+ r(47), - r(46)

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

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

3这个算法有效 - 保留一个表,记录每条记录的最后一个更改时间戳.并保持行按时间戳排序.它只同步那些已经改变的行,这里唯一看到的是每次按表排序表到时间戳.

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

非常感谢您的意见!:d

mcd*_*lla 2

我本人并没有直接参与此事,但当人们从事此类工作时我就参与其中。他们的设计不是由算法分析或性能搜索驱动的,而是由与最终用户代表讨论收到冲突的更新请求时应采取的措施所花费的时间来驱动的。您可能希望与用户一起完成一些用例。用户甚至可能希望针对不同位置的不同类型的数据采用不同类型的冲突解决方案。

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