我正在使用SymmetricDS 3.7。
我想要做的是,如果目标节点的外部Id等于表中的列(多租户),则SymmetricDS仅将数据发送到客户端引擎。这意味着,在服务器上我希望拥有所有行,但在客户端只有那些属于客户端的行。
我发现,我的beanshell脚本中有引擎对象。但似乎这是服务器(发送方)节点而不是客户端引擎实例。
我怎样才能做到这一点?
答案 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)