我们正在为我们的某个应用程序评估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在其数据库中插入一个数据行,它应该转到中央数据库,然后返回选定的商店
编辑以下问题以详细说明现在未同步哪个表格
我们有heirarchy
商店 商店链 中央数据库具有所有商店和链的信息
每个商店必须有一个基本信息,如自己链中所有商店的地址。 商店可以在其链中添加另一个商店。一旦发生这种情况,添加的商店必须通过同步该链中的所有商店来获取信息。
表格如下:
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是主键。
STORES表的示例:
STORE_ID STORE_ADDRESS ...
A AddrA
B AddrB
C AddrC
D AddrD
...
X AddrX
Y AddrY
Z AddrZ
每个商店都会同步一部分CENTRAL STORES表数据库中的一些基本信息。只有那些商店的详细信息才会同步,它们共享相同的链条。
例如,在这里,如果商店C将新映射(D,CHAIN1)添加到STORE_CHAINS表,则新添加的商店D应该通过同步接收映射条目本身以及有关商店A,B,C的详细信息。 STORES表因为它们共享相同的链CHAIN1。商店A,B也将被发送STORE_CHAINS映射条目和ST的STORES条目。
我们的问题是A,B,C的STORES条目没有被发送到D.只有新创建的映射(D,CHAIN1)才会同步到D.
表STORE_CHAINS是唯一一个实际更改了数据的表,STORES表没有更改。每当创建新的(STORE_ID,CHAIN_ID)映射时,我们如何确保触发STORES表并将其数据发送到所有相关的存储。
我们在所有情况下都使用subselect来选择应该发送哪些store / store-group映射条目。如果我们为任何商店进行初始加载,选择逻辑就可以正常工作。
提前致谢。
答案 0 :(得分:2)
按照文档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从需要同步的其他表中触发所有依赖行的晴天更新