同步实现中的时间戳

时间:2013-03-30 23:59:33

标签: database core-data architecture sync data-synchronization

我正在为需要支持离线数据访问的多客户端应用程序实施基本同步策略。我正在使用@Chris的建议来回答this question(不需要阅读)。

我想添加的一个细节是根据上次保存的更改解决冲突的能力,上次更改已同步。换句话说,如果两个客户端更新同一个项目,那么最后保存更改的客户端应该会赢,即使其他客户端稍后同步也是如此。

显然,我需要一些方法来为客户端上的每个更改添加时间戳,因此我可以在同步时比较服务器上的戳记。但是,我无法保证每个客户的内部时钟。

我想知道是否有一种既定方法可以解决这个问题?越简单越好!

2 个答案:

答案 0 :(得分:2)

我很高兴试图在时间戳的基础上做到这一点,我认为你需要寻找一个合适的版本控制解决方案。我不知道你使用的语言是什么,但我有一个完整的库来做这件事。即使库不是很有趣,你可能会发现它的文档在构建你自己的解决方案时很有用......它已经完全解释了......

该项目位于GitHub

答案 1 :(得分:1)

如果您询问客户端时钟劫持:客户端应根据从服务器获取的时间戳和本地时钟获得的时间跨度来维护自己的内部时钟。

因此,您只需将'客户端时间戳'相对于服务器更新:

  • 客户记录有CT1更新时间;
  • 在CT2时刻连接到服务器后,您会发现服务器时间是ST2;
  • 因此记录更新时间更改为ST1 = ST2 - CT2 + CT1。

另一种方法是在服务器端维护相同的转换。 (这可能更正确和安全)。

抱歉 - 只是一个注释 - 奇怪的部分是你称之为'冲突解决',当它更“最后更新获胜”并且没有执行实际解决方案时。