Как разрешить SymmetricDS фильтровать загрузку данных по externalId целевого движка
Я использую SymmetricDS 3.7.
Я хочу сделать так, чтобы SymmetricDS отправлял данные только на клиентское ядро, если внешний идентификатор целевого узла равен столбцу в таблице (многопользовательский режим). Это означает, что на сервере я хочу иметь все строки, а на стороне клиента - только те, которые принадлежат клиенту.
Я обнаружил, что у меня есть объект engine в моем скрипте бобов. Но кажется, что это узел сервера (отправителя), а не экземпляр клиентского ядра.
Как мне этого добиться?
2 ответа
Используйте маршрутизатор сопоставления столбцов, как описано в руководстве пользователя: http://www.symmetricds.org/doc/3.7/html/user-guide.html
иметь столбец в таблице, который синхронизируется с целевыми машинами со значением, соответствующим внешнему идентификатору целевой машины
Да. сначала вам нужно иметь столбец в вашей таблице для идентификатора узла (store_id или client_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)