选择冲突解决程序时,请考虑应用程序中冲突解决的重要性,以及是否可以使用基于优先级的默认冲突解决程序,还是需要使用项目解决程序。
如果数据分区时没有多个用户写入同一分区,并且复制拓扑相对基本(一个发布服务器和几个订阅服务器),则冲突应很少或不存在。 在这些环境中,可能不需要复杂的冲突解决策略。 建议使用默认设置的冲突解决策略,即客户端订阅和“先改先赢”策略。 如果拓扑更为复杂(例如,使用重新发布订阅服务器),则具有特定优先级的服务器订阅可能更合适。
如果您的业务需求需要比默认解析器更精细的解决方案,建议使用文章解析器。 如果选择使用项目解析程序,建议使用业务逻辑处理程序。 有关详细信息,请参阅 合并同步期间执行业务逻辑。
最终,选择是使用默认解析程序还是项目解析程序应基于应用程序的数据和业务逻辑需求。 例如,考虑在不同数据库订阅者的非分区表中录入客户排名数据的员工;这些员工分布在各种职位类别(分支经理、线经理、销售人员)中,工作类别决定了谁的数据应被优先处理。 在这种情况下,可以构建一个文章解析器,该解析器使用文章中的作业类别数据来确定获胜者,如果发生冲突。
如果冲突可能以某种频率发生,以下是在实施冲突解决策略时应考虑的最重要决策。
| 关于冲突解决的难题 | 建议 |
|---|---|
| 不同类别的用户需要不同的优先级值。 | 使用默认解析程序并创建具有不同优先级值的服务器订阅。 -或- 使用识别文章中的颁发机构值列的文章解决程序来帮助解决冲突。 |
| 希望在解决冲突中首次实现胜利的改变。 | 使用默认解析程序并创建客户端订阅。 |
| 只要没有对同一列做出冲突性的更改,允许多个用户对同一数据行进行更改。 | 使用默认解析程序或启用了列级跟踪的文章解析程序。 |
| 将行中的任何值的多个更改标记为冲突。 | 使用默认解析程序或具有行级跟踪的文章解析程序。 |
| 将逻辑记录中任意值的多个更改标记为冲突。 | 将默认解析程序与逻辑记录级别跟踪配合使用(逻辑记录功能不支持自定义解析程序或业务逻辑处理程序)。 |
| 冲突结果数据需要不同于原始冲突数据。 | 使用计算新值的条目解析器。 |