database - SymmetricDS - 冲突解决

标签 database synchronization multi-master-replication symmetricds

我正在尝试使用SymmetricDS为一个中心节点和多个客户端实现多主双向同步。客户端仅与中心节点通信(星形拓扑)。我在处理主键冲突时遇到问题。

例如,数据库包含表“person”,其中包含列 id、name... 在中央数据库中,我有行:

  1. aaa
  2. bbb
  3. ccc

第一个客户端连接并下载初始负载,因此它具有相同的数据库。第二个客户也做同样的事情。

现在,第一个和第二个客户端在其本地数据库中创建新行。 第一:

  1. aaa
  2. bbb
  3. ccc
  4. ddd

第二:

  1. aaa
  2. bbb
  3. ccc
  4. eee

他们将尝试同步,但第 4 行存在冲突。这种冲突可以在 SymmetricDS 中轻松检测到,但现在我想通过增量 key 来解决它,直到它被插入,然后将更改发送回客户端...... 所以结果将是:

  1. aaa
  2. bbb
  3. ccc
  4. ddd
  5. eee

在每个数据库中。如何做呢?谢谢。

最佳答案

在处理多主双向场景时,使用自动递增 PK 并不是一个好主意。

标准做法是为 PK 创建 GUID,以避免客户端之间发生冲突。

请参阅以下网站了解更多详细信息。

Selecting an Appropriate Primary Key for a Distributed Environment

关于database - SymmetricDS - 冲突解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22064266/

相关文章:

php - 加快对mysql的sql查询?

algorithm - 1 位作者,M 位读者消费同一个项目

postgresql - 如何将多个 postgres 数据库中的只读副本创建到单个数据库中?

mysql - Lua mySQL更新语句和where子句

mysql - SQL表逻辑,哪种方式是正确的

c++ - Mutex 概念与 C++ 中的 Lockable 有何不同?

google-app-engine - 一次同步如何在 Google App Engine 上与开发数据存储同步?

database - 是否有可自定义复制级别的多主数据库?

sql-server - 访问 Azure 数据库 - 防火墙问题