同步冲突解决

有时,客户机提交给 DB2 Everyplace Sync Server 的更改与其它客户机或应用程序先前所作的更改或者同时对源表所作的更改之间会发生冲突。Sync Server 会跟踪复制预订中每个表中的每个记录的版本。会以类似方式跟踪每个客户机,以维持每个客户机与每个表上次同步时每个记录的版本。此信息允许 Sync Server 确定客户机是否尝试根据某行数据的过时版本来更新该行。若客户机尝试根据某行的数据的过时版本来更新该行,则更新会被拒绝。

当向中间层系统上的镜像表传送数据时,会应用冲突解决方案,如图 7 所示。这将发生在客户机的同步会话后的复制环节中。因此,在该同步期间,在响应消息返回到客户机之前,将检测不到因客户机更新而产生的冲突。将把拒绝客户机更改的信息传送回发现冲突的复制后的第一个同步会话中的客户机。如果客户机的更改基于过时的记录,则该记录的正确版本将在原始同步请求中返回。

图 7. Sync Server 如何处理冲突

开始图 4。有两个大小一样的框;一个框在另一个框的上面。上面的框表示客户机 1。下面的框表示客户机 2。这两个框都指向表示中间层系统的大一些的框。表示客户机 1 的框包含 VNMEDICALRECORD 表。在该框下的文字为“最后同步:12:02:04”。表示客户机 2 的框包含 VNMEDICALRECORD 表。在该框下的文字为“最后同步:12:02:45”。表示客户机 1 的框有一个指向表示中间层系统的框的箭头。在该箭头上的文字为“更新”。沿着箭头方向再向前的文字为“已拒绝”。表示客户机 2 的框有一个指向表示中间层系统的框的箭头。在该箭头上的文字为“更新”。表示中间层系统的框包含 M_VNURSE 镜像数据库。源自客户机 2 的箭头一直到达镜像数据库并创建 VNMEDICALRECORD 镜像表。源自客户机 1 的箭头在到达镜像数据库之前被拒绝。结束图 4。

其更新被拒绝的客户机接收到被拒绝的记录和该记录的正确版本。被拒绝的记录会记录在客户机上的日志中或通过客户机 API 提供给应用程序。该记录的正确版本将替换客户机的 DB2 Everyplace 数据库中的原始(被拒绝)记录。

当 DataPropagator 将中间层中已更改的数据应用于源数据库时,可能会发生其它类型的冲突。有关如何管理及解决这些冲突的更多信息, 请参阅 DB2 Universal Database Replication Guide and Reference 和《DB2 通用数据库管理指南》。

相关概念

相关任务