Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 时间戳驱动的冲突解决是否可行?_Sqlite_Sync_Conflict_Offline_Zumero - Fatal编程技术网

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

Sqlite 时间戳驱动的冲突解决是否可行?,sqlite,sync,conflict,offline,zumero,Sqlite,Sync,Conflict,Offline,Zumero,根据标准,默认的冲突解决行为是使用记录版本号 但是,是否可以改为基于时间戳?业务规则是上次更新的记录应获胜 另外,是否可以(并且足够简单)将服务器端数据库的特定部分向下同步到每个客户端设备 PS:假设客户端设备的时间与互联网时间大致同步-将定期对设备执行检查。由于数据的性质,如果客户机的时钟超时几秒钟,这不是问题。在例外情况下,每次更新都在5秒内进行,哪一次成功并不重要。最重要的是,平均而言,在所有客户端中,最后一条记录获胜。按时间戳解决冲突 简而言之,不可能。今天不可能按时间戳选择“获胜”的更

根据标准,默认的冲突解决行为是使用记录版本号

但是,是否可以改为基于时间戳?业务规则是上次更新的记录应获胜

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

PS:假设客户端设备的时间与互联网时间大致同步-将定期对设备执行检查。由于数据的性质,如果客户机的时钟超时几秒钟,这不是问题。在例外情况下,每次更新都在5秒内进行,哪一次成功并不重要。最重要的是,平均而言,在所有客户端中,最后一条记录获胜。

按时间戳解决冲突 简而言之,不可能。今天不可能按时间戳选择“获胜”的更改。但你应该质疑这是否真的是你想要的

Zumero for SQL Server文档不完整,但仍然正确。(设置规则的方式会改变,但规则本身不会改变。)简言之:

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

如果两个用户修改同一行的同一版本,则存在冲突。默认冲突解决方案为列合并:

  • 对同一记录的不同列的更改都被接受
  • 对于同一记录的同一列的冲突更改,接受最后到达服务器的更改
您可以更改冲突解决方案,以便服务器接受同步的最新版本,而不进行列合并,这可能是您想要的。从服务器的角度来看,这是最新的记录。要做到这一点,您可以将
情况\u mod\u after\u mod
解析更改为
操作\u accept

分割SQL Server数据库 1.0版(以及当前的预览版)允许按表分割SQL Server数据库。使用ZSS管理器应用程序,您可以定义一个数据库文件

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

有关更多详细信息,请参见。

是否有任何方法可以自定义从某些表中进行部分选择的行为(通常基于关系,例如,用户a被分配给X公司,并且只有链接到X公司的数据才应同步到本地设备)。当前版本中没有。今天,只按表格进行分割。