1

Я тестирую SymmetricDS, и у меня есть некоторые сомнения относительно того, какой подход я должен использовать для синхронизации некоторых конкретных таблиц. У меня есть два приложения, первое - ERP, а второе - PDV. Некоторые таблицы могут быть синхронизированы для всех баз данных ПДВ, однако, в некоторых таблицах строка должна синхронизироваться с конкретным PDV Например:SymmetricDS: Какой подход следует использовать для синхронизации конкретных таблиц?

entity-diagram

На этой диаграмме красные прямоугольники показывают, какие таблицы нужно синхронизировать, и зеленый стрелка показывает столбец, где мы можем определить, какой экземпляр SymmetricDS будет синхронизироваться. Мой вопрос: какой подход я должен использовать для этого (bsh, subselect, lookuptable и т. Д.) И как я это делаю?

ответ

2

Вам нужен подселективный маршрутизатор (на самом деле вам нужно три). Я только показать вам SQL для Funcionario, то вы будете в состоянии выяснить конфигурацию для Cadastro и Funcionario_funcao сами:

insert into SYM_ROUTER 
    (router_id, source_node_group_id, target_node_group_id, router_type, 
    router_expression, create_time, last_update_time) 
values 
    ('erp_to_pdv__funcionario', 'erp', 'pdv', 'subselect', 
    'c.external_id in (
     select empresa.CNPJ 
      from cadastro join empresa 
      on cadastro.id_empresa = empresa.id_empresa 
      where cadastro.CPFCGC=:ID_CADASTRO 
    )', 
    current_timestamp, current_timestamp); 

Когда запись из Funcionario таблицы маршрутизации, этот маршрутизатор выбирает все узлы с external_id равным к Empresa.CNPJ, связанного с данной Funcionario (я предположил Funcionario.id_cadastro быть ссылка на Cadastro.CPFCGC)

Примечание Я c.external_id, но вы можете использовать c.node_id (в зависимости от того, что вы положили в Empresa.CNPJ).

+1

Я бы оптимизировал 'select empresa.CNPJ' с' select distinct empresa.CNPJ' в случае, если n-n отношения вообще. –

+0

@ Raffaele Не подбирает маршрут неэффективный подход? – brevleq

+0

Нет. Позже, если вы обнаружите, что ваша производственная установка страдает от проблем с производительностью, а аппаратное обновление не может быть предоставлено, вы можете попытаться ускорить работу, используя таблицы маршрутизации/столбцы маршрутизации (это означает, что вам нужно как-то переварить маршрутизацию самостоятельно и добавить столбцы для хранения ключа узла/поиска) – Raffaele