如何让SymmetricDS过滤数据由目标引擎的externalId加载

时间:2016-07-12 05:38:18

标签: symmetricds

我正在使用SymmetricDS 3.7。

我想要做的是,如果目标节点的外部Id等于表中的列(多租户),则SymmetricDS仅将数据发送到客户端引擎。这意味着,在服务器上我希望拥有所有行,但在客户端只有那些属于客户端的行。

我发现,我的beanshell脚本中有引擎对象。但似乎这是服务器(发送方)节点而不是客户端引擎实例。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

使用列匹配路由器,如用户指南中所述:http://www.symmetricds.org/doc/3.7/html/user-guide.html#_router_types

在表中有一列与目标计算机同步,其值与目标计算机的externalId匹配

答案 1 :(得分:-1)

是肯定的。首先,您需要在youre表中为node(store_id或client_id)的id添加列,如果有2个表(master / detail),则只在master中添加此列。 在表sym_router中创建路由器:

routerid:myatble_header
source_node_group_id:corp
target_node_group_id:store
router_type:subselect
router_expression:c.external_id in (select :store_id)   -> for mysql ( somthing like for other databases)
create_time:now
last_update_time:now

routerid:myatble_detail
source_node_group_id:corp
target_node_group_id:store
router_type:subselect
router_expression:c.external_id in (select store_id from header_table where id=:id)   -> id is primary key and :id is primary of your detail table.
create_time:now
last_update_time:now

现在在sym_trigger_router中:

trigger_id: triger_id for your table that defined in sym_trigger table.
router_id:myatble_header (defined in previous step)

trigger_id: triger_id for your detail table that defined in sym_trigger table.
router_id:myatble_detail (defined in previous step)