SymmetricDS:我应该使用哪种方法来同步特定的表?

时间:2014-09-01 20:29:27

标签: java database synchronization data-synchronization symmetricds

我正在测试SymmetricDS,我对使用哪种方法来同步某些特定表格存有疑问。我有两个应用程序,第一个是ERP,第二个是PDV。某些表可以同步到所有PDV数据库,但是,在某些表中,该行应该与特定的PDV实例同步:

entity-diagram

在此图中,红色矩形显示哪个表需要同步,绿色箭头显示我们可以识别哪个SymmetricDS实例将同步的列。我的问题是:我应该采用哪种方法(bsh,subselect,lookuptable等)以及我是如何做到的?

1 个答案:

答案 0 :(得分:2)

你需要一个subselect路由器(实际上你需要三个)。我只向您展示了Funcionario的SQL,然后您就可以自己找出CadastroFuncionario_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的所有节点(我假设为{ {1}}是Funcionario.id_cadastro

的引用

注意我使用了Cadastro.CPFCGC,但您可能想要使用c.node_id(取决于您放入c.external_id的内容)。