数据库同步算法建议



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

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

现在,我有三个算法,我想听听你们的建议,哪一个是最好的。我真的很感激你的意见。

1。算法的描述可以在这里找到。这是金尚旭的科学研究论文信息和通信司汉阳大学,韩国

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

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

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

最新更新