我正在尝试使用SymmetricDS为一个中心节点和许多客户端实现多主双向同步。客户端仅与中心节点(星形拓扑)通信。处理主键冲突时遇到问题。
例如,数据库包含具有列id,name,...的表“person”。在中央数据库中,我有行:
第一个客户端连接并下载初始加载,因此它具有相同的db。第二个客户做同样的事。
现在,第一个和第二个客户端在其本地数据库中创建新行。 第一:
第二
他们会尝试同步,但4.行中存在冲突。可以在SymmetricDS中轻松检测到此冲突,但现在我想通过递增键解决它,直到它被插入然后将更改发送回客户端... 结果将是:
在每个数据库中。怎么做到呢?谢谢。
答案 0 :(得分:3)
在处理多主双向场景时,使用自动递增PK不是一个好主意。
标准做法是为PK创建GUID以避免客户端之间的冲突。
有关详细信息,请参阅以下网站。
Selecting an Appropriate Primary Key for a Distributed Environment