Especificação funcional: Sincronização de dados

Syncdatasystem

Essa ferramenta foi desenvolvida para sincronizar tabelas de dados entre bases de dados de estrutura semelhante a fim de evitar retrabalho de população de dados por parte do usuário. Um exemplo claro para a utilização dessa ferramenta seria a sincronização de dois sistemas iguais que funcionam para em um mesmo cliente, ex: a empresa utiliza dois sistemas (Facture-e), um para a matriz e outro para filial, porém os destinatários cadastrados são os mesmos para as duas empresas.

Com a configuração da sincronização entre o sistema da matriz e o da filial, o usuário só precisará cadastrar o destinatário uma vez no sistema pois ele será replicado para a outra base de dados no mesmo instante.

A ferramenta sincroniza n base de dados, ou seja eu posso configurar quantas bases de mesma estrutura quanto eu desejar. Outra característica é que o fluxo de dados é cíclico e percorre todas as bases sincronizadas.

Descrição

A ferramenta depende do funcionamento do serviço do SymMetricDS, que é o serviço que replicará os registros das bases de dados de acordo com a configuração feita. Por isso uma pasta contendo os binários desse serviço acompanha a instalação da ferramenta.

O Syncdatasystem prepara as bases de dados com tabelas específicas do serviço SymMetricDS, configura todo ambiente necessário para a sincronização e inicia o serviço no windows. O Syncdatasystem configura a sincronização entre bases de dados de quaisquer sistema, porém para que o funcionamento da sincronização seja eficaz um arquivo de configuração, com os sistemas e seus dados a serem sincronizados, foi adicionado ao projeto para que apenas sistemas e tabelas ali representados pudessem ser sincronizados. Com isso a sincronização entre as bases não é full entre todas as tabelas.

Estrutura do arquivo SistemasConfig.xml

  • A tag superior <Sistemas> é a tag que abre e fecha o arquivo.
  • A tag <Sistema> separa os sistemas que serão exibidos no combo de sistemas da ferramenta.
  • Dentro da tag <Sistema> temos as tags <Nome>, <Opções>, <Tipo> e <Tab>.
  • A tag <Nome> informa o nome do sistema a ser sincronizado para a ferramenta.
  • A tag <Opções> informa o <Tipo> de dado a ser sincronizado e as <Tab> tabelas que serão sincronizadas para que o dado não perca sua credibilidade entre os sistemas.
  • Para cada <Sistema> o arquivo poderá conter n tags <Opções>, pois são elas que irão informar os dados a serem sincronizados.

Observação: A tag <tab> possui um atributo chave e um valor. O valor informa o nome da tabela e a chave informa o nome da chave primária incremental. Caso a tabela não possua chave primária incremental informar NULL para o valor do atributo. É fundamental informar o atributo na tag <Tab> pois o merge entre as bases de dados se dará com base no nome da tabela e na chave primária incremental. Chaves primárias oriundas de outras tabelas não sofrerão alterações no momento do merge, por isso o valor NULL para esse tipo de chave.

Os dados desse arquivo *.xml servem basicamente para a configuração das triggers que são disparadas de acordo com a ação na tabela configurada, e como os dados são opcionais esse arquivo é de suma importância para o funcionamento da ferramenta.

AdjustsTriggers

Cada sistema poderá possuir uma particularidade com relação as triggers geradas pelo serviço do SymMetricDs, por exemplo: Caso uma trigger deva estar inativa no momento do merge de dados, um script de ajuste poderá marcar a trigger como inativa antes do merge. Para que isso aconteça um script com nome “AdjustsTriggers <Nome Opção selecionada>.sql” deverá ser criado dentro da pasta do sistema localizada na pasta conf do SymMetricDs.

Triggers

O espelhamento do dado é disparado no momento em que uma trigger (responsável pelo espelhamento de dados de uma tabela com outra) é acionada. Uma trigger poderá ser acionado em um insert ou um update. Ela será chamada após uma dessas condições informadas.

Delay

Quando o serviço do SymMetricDS é executado na máquina ele precisa de um tempo de processamento para que a sincronização seja ativada, por isso foi criado um delay dentro do Syncdatasystem para que esse tempo de sincronização seja sempre respeitado. Esse delay é ativado sempre que a ferramenta habilita o serviço SymMetricDS ou quando a ferramenta termina de sincronizar as rotas de triggers e desabilita o serviço em seguida.

Scripts de configuração

  • GenerateStructure.Sql: Esse script é responsável por gerar as tabelas do SymMetricDs nas bases de dados informadas pelo usuário. Qualquer alteração nesse script, que não aconselhada pela empresa responsável pelo serviço, poderá acarretar em quebra no funcionamento do SymMetricDs.
  • TriggersStructure.Sql: Esse script é responsável pela criação da trigger que irá incrementar o id da tabela SYM_DATA.
  • InsertNodesStructure.Sql : Esse script configura as tabelas SYM_NODE e SYM_NODE_SECURITY de acordo com o sistema e as bases de dados informadas.
  • InsertStructure.Sql: Esse script configura as tabelas SYN_NODE_IDENTITY, SYM_NODE_GROUP, SYM_NODE_GROUP_LINK E SYM_ROUTER de acordo com o sistema e as bases de dados informadas.
  • TriggersRoutesStructure.Sql: Esse script é responsável pela configuração das triggers responsáveis pela sincronização dos dados. Ele configura as tabelas SYM_TRIGGER e SYM_TRIGGER_ROUTER.
  • Monnae\AdjustsTriggers Pessoas.Sql: Esse script altera os triggers de after insert e after update executados através de ações na TABPESSOAS. Ele também altera a trigger TGR_PESSOAS da tabela SYM_TRIGGER_HIST informando apenas os campos que sofrerão alterações com a sincronização.
  • Monnae\AdjustsTriggers Plano de contas.Sql: Esse script altera os triggers de after insert e after update executados através de ações na TABCONTAS. Ele também altera a trigger TGR_CONTAS da tabela SYM_TRIGGER_HIST informando apenas os campos que sofrerão alterações com a sincronização.
  • Monnae\AdjustsTriggers Produtos e serviços.Sql: Esse script altera os triggers de after insert e after update executados através de ações na TABSERVICOS. Ele também altera a trigger TGR_SERVICOS da tabela SYM_TRIGGER_HIST informando apenas os campos que sofrerão alterações com a sincronização.
  • Facture-e\AdjustsTriggers Transportadores (veículos e motoristas): Esse script está inativando as triggers das tabelas de ligação entre os transportadores e motoristas(TABMOTORISTASTRANSPORTADORES), transportadores e veículos(TABVEICULOSTRANSPORTADORES).

Tabelas do SymMetricDs

O serviço SymMetricDs adiciona à base de dados 42 tabelas de dados. As mais utilizadas serão citadas abaixo contendo informações sobre sua função dentro do serviço:

  • SYM_NODE_IDENTITY: Essa tabela é basicamente responsável pela identificação da base de dados. No caso da ferramenta Syncdatasystem essa identificação será feita através do caminho da base de dados no computador do usuário.
  • SYM_NODE: Responsável por guardar a identificação de cada base, o grupo a que cada base pertence e o identificador externo utilizado nas engines do SymMetricDs. O campo SYNC_ENABLED informa se a sincronização está ativa ou não.
  • SYM_NODE_SECURITY: Guarda o identificador da base de dados, o password e guarda a informação de registro habilitado.
  • SYM_NODE_GROUP: Guarda a identificação do grupo compartilhado entre as bases sincronizadas.
  • SYM_NODE_GROUP_LINK: Guarda as identificações dos grupos de envio e de recebimento de dados. Guarda também o tipo de evento realizado por cada grupo (Push, Pull). O fluxo de dados sempre será do Source para o Target.
  • SYM_TRIGGER: Guarda as informações das triggers que são disparadas através dos inserts, updates e dos deletes realizados nas tabelas informadas no campo source_table_name. Essa tabela registra quais ações irão disparar uma trigger (insert, update ou delete).
  • SYM_ROUTER: Guarda as informações do fluxo dos dados, ou seja guarda o grupo que envia informação e o grupo que recebe informação.
  • SYM_TRIGGER_ROUTER: Vincula a identificação da trigger com a identificação da rota de dados.
  • SYM_TRIGGER_HIST: Guarda informações como nome da trigger, a tabela que enviará os dados quando a trigger é disparada, as colunas da tabela que enviarão ou receberão os dados e a(s) chave(s) primária(s) da source table.
  • SYM_OUTGOING_BATCH: Guarda o identificador da base que enviar os dados e o status do lote de dados enviados. Os status podem assumir os seguintes valores: roteamento (RE), pronta para a reprodução (NE), consultando no banco de dados (QE), enviado para a outra base (SE), pronto para ser carregado (LD), dados enviados corretamente (OK) ou erro no envio (ER).
  • SYM_INCOMING_BATCH: É usada para rastrear o status do carregamento de um outgoing_batch de outra base. Os dados vindos de uma outra base são alocados como um lote de dados. Os status dessa tabela podem ser sucesso (OK) ou erro (ER).
  • SYM_INCOMING_ERROR: Essa tabela guarda o lote de incoming_batch que possui status de erro. Ela informa os dados que estão com problemas para serem inseridos na base de dados.
  • SYM_DATA: Guarda a tabela, o evento e o que foi alterado na tabela.

Requisitos

  • .Net framework 4.5 ou superior.
  • Instalação do SymMetricDS.

Pontos de verificação

  • A ferramenta deverá verificar a versão do .Net framework e avisar se a versão for inferior a 4.5.
  • A ferramenta deverá verificar se o arquivo SistemaConfig.xml existe e informar ao usuário se não existir.
  • A ferramenta deverá validar se ao menos duas bases de dados foram selecionadas.
  • A ferramenta deverá validar se ao menos um dado a sincronizar foi selecionado.
  • O instalador gerado pelo teste deverá instalar o serviço do SymMetricDS na máquina do usuário.
  • A ferramenta deverá realizar um merge entre os dados de uma tabela que será sincronizada em bases de dados já sincronizadas.
  • A ferramenta atualiza os generators dos campos incrementais das tabelas sincronizadas, porém é interessante conferir se os valores estão de acordo para que o sistema não apresente erros ao incluir um novo registro após a sincronização.
  • Antes da sincronização de bases do Facture-e é obrigatório rodar o Script de correção de chaves Facture-e.
  • Seria interessante realizar um Backup e um Restore em uma base nova do Facture-e antes da sincronização.
  • Caso a opção de transportadores (Facture-e) seja selecionada para a sincronização o Script de ativação de triggers Facture-e deverá ser rodado ao final da sincronização (Isso deverá ser informado no Leia-me disponibilizado no instalador do Syncdatasystem).
  • A ferramenta deverá permitir a edição do caminho dos bancos de dados inclusos na lista. Obs: (Talvez o usuário utilize Alias, ou o caminho da rede não contém o diretório)

Limitações da ferramenta

  • A ferramenta não valida bases de dados.
  • A ferramenta não valida tipo e versão de sistemas.
  • A ferramenta ainda não valida a estrutura das tabelas que serão sincronizadas.
  • O arquivo SistemasConfig.xml não possui validação de informações, portanto se o usuário modificar o arquivo o sistema tentará ler da mesma forma podendo apresentar erro.
  • Em máquinas com pouco processamento ou processamento lento pode ocorrer de o delay não ser suficiente para que o serviço do SymMetricDS seja ativado. Caso ocorra problemas por conta da inicialização do SymMetricDS o desenvolvedor deverá ser informado para que o time do delay seja modificado.
  • Tabelas de ligação deverão ter suas triggers inativadas através dos scrips de “adjusts” e logo após o termino da sincronização elas deverão ser ativadas. Isso garantirá que não haverá quebras durante o merge dos dados na sincronização e garantirá a troca de informações entre as bases após a ativação das triggers.
  • A ferramenta inclui os bancos a serem sincronizados através de seleção, portanto um BD que esteja em rede deverá conter o caminho completo da rede com diretório informando a localização exata do BD. Por isso a string do caminho do BD é editável, basta clicar apenas uma vez sobre o caminho do BD que ele abrirá para edição. Isso foi implementado pois o usuário poderá informar o caminho correto ou utilizar o caminho do Alias presente no arquivo Alias.conf na pasta do Firebird da estação cliente.
  • Dependendo da performance da rede do cliente, a sincronização de bancos em rede poderá apresentar falhas ou demoras que não puderam ser tratadas durante o desenvolvimento.

Padrão do caminho da base de dados em rede: hostName:caminhoDataBase.FDB (ex: Desenvolv8:C:\BandoDados.fdb).

Padrão do caminho da base de dados em rede com Alias configurado: hostName:NomeAlias (ex: 192.168.0.18:NomeAlias).

Antes de rodar a sincronização verifique se a conexão com as bases de dados, em rede, é funcional. Utilize o IBExpert ou qualquer IDE que conecte a uma base firebird para executar o teste.

Password do certificado de segurança da aplicação

Password: d3e5v4t2e1c4s2y9s

 
softwares/facture-e/requisitos/sync.txt · Última modificação: 01/12/2021 11:45 (edição externa)
 
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki