我正在尝试使用SymmetricDS为一个中心节点和多个客户端实现多主双向同步。客户端仅与中心节点通信(星形拓扑)。我在处理主键冲突时遇到问题。
例如,数据库包含表“person”,其中包含列 id、name... 在中央数据库中,我有行:
- aaa
- bbb
- ccc
第一个客户端连接并下载初始负载,因此它具有相同的数据库。第二个客户也做同样的事情。
现在,第一个和第二个客户端在其本地数据库中创建新行。 第一:
- aaa
- bbb
- ccc
- ddd
第二:
- aaa
- bbb
- ccc
- eee
他们将尝试同步,但第 4 行存在冲突。这种冲突可以在 SymmetricDS 中轻松检测到,但现在我想通过增量 key 来解决它,直到它被插入,然后将更改发送回客户端...... 所以结果将是:
- aaa
- bbb
- ccc
- ddd
- eee
在每个数据库中。如何做呢?谢谢。
最佳答案
在处理多主双向场景时,使用自动递增 PK 并不是一个好主意。
标准做法是为 PK 创建 GUID,以避免客户端之间发生冲突。
请参阅以下网站了解更多详细信息。
Selecting an Appropriate Primary Key for a Distributed Environment
关于database - SymmetricDS - 冲突解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064266/