在不同商店之间使用 SymmetricDS 共享数据库

Database sharing using SymmetricDS among different stores

我们正在为我们的一个应用程序评估 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

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

编辑问题如下,详细说明 table 现在没有同步

我们有以下层次结构

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

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

表格如下:

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

STORE_CHAINS的例子:

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

有一个 STORES table,其中包含每个商店的详细信息,STORE_ID 是主键。

商店示例 table:

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

每家商店都与 CENTRAL STORES table 数据库的一部分同步,其中包含一些基本信息。仅同步那些共享同一链的商店的详细信息。

例如这里,如果存储C向STORE_CHAINS table添加了一个新的映射(D,CHAIN1),那么新添加的存储D应该通过同步接收映射条目本身和来自 STORES table 的商店 A、B、C 的详细信息,因为它们共享同一条链 CHAIN1。还将向商店 A、B 发送 STORE_CHAINS 映射条目和 D 的商店条目。

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

tableSTORE_CHAINS是唯一一个实际有数据改变的,STOREStable没有改变。我们如何确保每当创建新的 (STORE_ID, CHAIN_ID) 映射时,STORES table 的触发器也被触发并且其数据被发送到所有相关商店。

我们在所有情况下都使用 subselect 到 select 应该发送哪些 stores/store-group 映射条目。如果我们为任何商店进行初始加载,selection 逻辑工作正常。

提前致谢。

按照文档 http://www.symmetricds.org/doc/3.8/html/user-guide.html#_bi_directional_synchronization

中的说明将列 sync_on_incoming_batch 的值设置为 1

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