在不同存储之间使用 SymmetricDS 共享数据库



我们正在为我们的一个应用程序评估 SymmetricDS。

我们希望在多个存储之间同步数据库。数据需要从一个存储流向中央数据库,然后再流回不同的存储。

在 SymmetricDS 中,我们能够实现如下数据流:

store -> central database // whenever we modify/insert/delete data in store, 

也来自

central database -> store // whenever we modify/insert/delete data in central db

但是我们需要的是来回

store -> central database -> stores

即商店在其数据库中插入一个数据行,它应该转到中央数据库,然后返回选定的存储

编辑了下面的问题,以详细说明哪个表现在未同步

我们有以下等级制度

商店 连锁店 中央数据库拥有所有商店和连锁店的信息

每个商店都必须有一个基本信息,例如其自己连锁店中所有商店的地址。 商店可以将另一家商店添加到其连锁店中。一旦发生这种情况,添加的商店必须通过同步此链中的所有商店来获取信息。

表格如下:

STORE_CHAINS(STORE_ID、CHAIN_ID之间具有映射)。

STORE_CHAINS示例:

STORE_ID    CHAIN_ID
A           CHAIN1
B           CHAIN1
C           CHAIN1
Y           CHAIN2
Z           CHAIN2

有一个 STORES 表,其中包含每个存储的详细信息,其中STORE_ID是主键。

商店表的示例:

STORE_ID    STORE_ADDRESS   ...
A           AddrA
B           AddrB
C           AddrC
D           AddrD
...         
X           AddrX
Y           AddrY
Z           AddrZ

每个存储都与一些基本信息同步中央存储表数据库的一部分。只有那些共享同一链的商店的详细信息才会同步。

例如,如果商店 C 将新映射(D、CHAIN1)添加到表中STORE_CHAINS则新添加的商店 D 应通过同步从 STORES 表中接收映射条目本身以及有关商店 A、B、C 的详细信息,因为它们共享相同的链 CHAIN1。此外,存储 A、B 将STORE_CHAINS映射条目和 D 的存储条目发送。

我们的问题是 A、B、C 的 STORES 条目没有发送到 D。只有新创建的映射(D、CHAIN1)才会同步到 D。

表STORE_CHAINS是唯一实际更改了数据的表,STORES 表没有更改。我们如何确保每当创建新的(STORE_ID,CHAIN_ID)映射时,STORES表的触发器也会被触发,并且其数据被发送到所有相关存储。

我们对所有情况都使用子选择来选择应发送哪些商店/商店组映射条目。如果我们对任何商店进行初始加载,选择逻辑工作正常。

提前谢谢。

将sync_on_incoming_batch列的值设置为 1,如文档中所述 http://www.symmetricds.org/doc/3.8/html/user-guide.html#_bi_directional_synchronization

使用 CUSTOM_BEFORE_UPDATE_TEXT 或 CUSTOM_BEFORE_INSERT_TEXT 对需要同步的其他表中的所有依赖项行触发阳光更新

最新更新