与 SymmetricDS 的条件同步

Conditional sync with SymmetricDS

我一直在尝试与 SymmetricDS 进行条件同步。问题是,无论我做什么,它都会忽略应该有条件同步的 table,而只是无条件地同步 table。

所以我想,我用错了那些条件。我在当前版本的用户指南中找不到这个 material,所以我有以下内容:

insert into sym_router 
(router_id,source_node_group_id,target_node_group_id,router_type,router_expression,create_time,last_update_time)
values('corp_2_one_store', 'corp', 'store', 'column','STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_ID',current_timestamp, current_timestamp);

insert into sym_trigger_router 
(trigger_id,router_id,initial_load_order,initial_load_select,last_update_time,create_time)
values('item_selling_price','corp_2_one_store',100,'store_id=''$(externalId)''',current_timestamp,current_timestamp);

来自 SymmetricDS 打包的示例,但我在自己的配置中将 "store" 更改为 "client" 并将 "corp" 更改为 "server",但它不再起作用了。坦率地说,我不知道 STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_IDstore_id=''$(externalId)'' 是怎么回事,也不知道为什么会有两个。

从我从早期版本的网站上得到的这个例子:

insert into SYM_TRIGGER 
  (source_table_name, source_node_group_id, target_node_group_id, channel_id, 
   sync_on_insert, sync_on_update, sync_on_delete,
   node_select, 
   initial_load_order, last_updated_by, last_updated_time, create_time)
values
  ('sale_transaction', 'corp', 'store', 'sale_transaction', 
   1, 1, 1, 
   'and external_id = $(curTriggerValue).store', 
   105, 'demo', current_timestamp, current_timestamp);

但这显然行不通,因为一半的信息现在存储在不同的地方,但即使删除不再存在的列(谁知道,也许这些新的 tables 只存储相同的信息信息的可读性?)我无法让它工作。

有什么建议吗?

更新 当我 运行 只是训练示例时,一切正常。所以这里真正的问题是:这些是什么意思: STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_IDstore_id=''$(externalId)''?如果我的节点被称为 server 而不是 corpclient 而不是 store,我该如何更改?

更新 2 根据 this,我的路由器没问题,我的 sym_trigger_router 配置有一些问题,即 store_id=''$(externalId)''

所以,我发现了我的问题。我的 table 名称中有错字,因此没有为其创建触发器。

对于那些偶然发现这个问题的人:

1) 什么是STORE_ID=:EXTERNAL_ID or OLD_STORE_ID=:EXTERNAL_ID

明明写的是here,但是就两个字来说,STORE_ID是一个列名,OLD_表示列的前一个值 :EXTERNAL_ID 是 SymmetricDS 内部变量之一,还有 :NODE_ID 等等。

该字符串用于判断是否获取当前行,是路由器的一个参数。 (如果你决定使用其他类型的路由器,请注意,它还有其他参数,请注意!)

2) 什么是store_id=''$(externalId)''

这在某些方面进行了描述 here,但还是用两个词:在初始加载期间,默认情况下对称收集来自 table (select * from ...) 的所有数据。此参数附加到 where 子句,t 可用于引用正在同步的 table。 $(externalId) 是 SymmetricDS 在启动期间初始化的变量之一,在用户指南的某处有此类变量的列表。