时间戳驱动的冲突解决方案是否可行?

时间:2013-10-30 07:49:33

标签: sqlite sync conflict offline zumero

根据Zumero for SQL Server documentation,默认的冲突解决行为是使用记录版本号。

但是,是否可以将其作为时间戳的基础?业务规则是上次更新的记录应该获胜。

此外,是否可以(并且足够简单)将每个客户端设备同步到服务器端数据库的特定子部分?

PS:假设客户端设备的时间与互联网时间大致同步 - 将定期在设备上执行检查。由于数据的性质,如果客户端的时钟是几秒钟,这不是问题。在特殊情况下,更新发生在彼此的5秒内,无论哪一个获胜都无关紧要。最重要的是,平均而且在所有客户中,最后一条记录获胜。

1 个答案:

答案 0 :(得分:1)

按时间戳解决冲突

简而言之,没有。今天不可能通过时间戳选择“获胜”的变化。但你应该质疑这是否真的是你想要的。 :)

Zumero for SQL Server文档不完整,但conflict resolution details in the cloud server docs仍然正确。 (你设置它们的方式发生了变化,但规则本身没有变化。)简而言之:

记录有版本号。除非两个用户修改相同记录的相同版本,否则始终接受最新版本,这与您使用时间戳获得的行为相同(没有与不准确的系统时钟相关的问题)。

如果两个用户修改了相同版本的行,则会发生冲突。默认的冲突解决方案是列合并:

  • 同一记录的不同的更改均已被接受。
  • 对于同一记录的同一列的冲突更改,将接受到达服务器的最后一个。

您可以更改冲突解决方案,以便服务器接受同步的最新版本,而无需列合并,这可能是您想要的。从服务器的角度来看,这是最新的记录。您可以将situation_mod_after_mod分辨率更改为action_accept

划分SQL Server数据库

1.0版(和当前的预览版)允许按表砍掉SQL Server数据库。使用ZSS Manager应用程序,您可以定义 dbfile

  • dbfile是最小的可同步单元。
  • 在客户端上,dbfile成为sqlite数据库文件。
  • 在服务器上,选择要添加到dbfile的表。
  • SQL Server表可能只属于单个dbfile。

ZSS Manager documentation中有更多详细信息。