Database 数据库同步算法建议

Database 数据库同步算法建议,database,algorithm,sync,Database,Algorithm,Sync,我正在开发一个需要实现数据同步算法的应用程序 我们将有一个主服务器和多个附属设备,需要同步在一起 现在,我有三种算法,我想听听大家对哪一种算法最好的建议。我非常感谢你们的意见 1.可以在这里找到该算法的描述。这是金相宇的一篇科学研究论文 信息和通信司 韩国汉阳大学 2此算法涉及维护数据库的时间戳和版本号记录 例如,如果一个人的移动设备上有版本v10,而服务器上有版本v12,则移动设备上的当前时间戳比服务器上的时间戳要短 如果我们用-,表示删除,用+表示插入,用+表示更改~ 以下更改日志与几个版

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

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

现在,我有三种算法,我想听听大家对哪一种算法最好的建议。我非常感谢你们的意见

1.可以在这里找到该算法的描述。这是金相宇的一篇科学研究论文 信息和通信司 韩国汉阳大学

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中)

3此算法有效-保留一个表,记录每条记录的上次更改时间戳。并根据时间戳对行进行排序。它仅同步已更改的行,我在这里看到的唯一缺点是每次根据时间戳对表进行排序

这里有一个链接


非常感谢你的意见D

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


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

数据同步可能是一个极其困难的问题,我会不惜一切代价避免自己解决它。ofc没有“最佳”方法,一切都取决于您的用例。尝试确定(并最小化)可以同时更新的位置,然后搜索最简单的拟合解决方案。我想现在你已经选择了一个。我很好奇是否有一种算法更容易查询当前数据。我需要一个可以使跨数据库连接同一个表相对简单的表。