[firebase-br] Melhor forma de replicar firebird

Gladiston Santana gladiston em vidy.com.br
Qua Mar 1 16:45:55 -03 2017


No conceito de replicação você precisa identificar os papeis de assinante,
publicador e distribuidor para os objetos de seu banco de dados.
Acho que tem outros tipos de papeis, mas na época que estudei e implementei
isso no MSSQL eram só estas.
Por exemplo, sua filial pode ser assinante de uma lista de clientes e
fornecedores, então ela apenas recebe da matriz esses dados. Quando uma
filial precisa de um fornecedor novo, ela envia essa ficha para a matriz, a
mesma cadastra e distribui depois aos assinantes.
Mas, a filial tem que lançar suas contas a pagar e nesse caso não depende
da autorização da matriz, então faz essa operação localmente e o conjunto
dessas tabelas envolvidas seriam depois transferidos para a matriz que
apenas consome essas informações, mas não irá distribui-las depois, então
nesse caso, as tabelas de contas a pagar da filial poderiam ser encaradas
como distribuidor e (talvez) publicador.

Então, quando se fala em replicação a ideia que muitos tem na mente é a da
sincronização com a finalidade de espelhar os bancos de dados.
Mas uma replicação pode ser muito diferente disso, bancos de dados como
Oracle e MSSQL tem entidades e serviços para lidar com cada situação no
lado do servidor, incluindo um tal de two-phase commit para que se qualquer
coisa der errado, ser possivel voltar ao estado anterior nos dois(ou mais)
bancos.
Optando ou não por usar ferramentas de terceiros, você escreve o banco de
dados pensando nos papeis de assinante, publicador e distribuidor. Por
exemplo, acrescentando nas tabelas o codigo da filial sendo um dos campos
da PK, assim os dados podem ser misturados e conciliados mais facilmente.
Se optar por uma ferramenta de terceiros, provavelmente a mesma terá
mecanismo para lidar com os papeis de assinante, publicador e distribuidor
e as vezes a ferramenta para isso se torna tão complexa quanto a própria
programação, se isso acontecer, ou você se torna especialista neste app ou
partirá para escrever seu próprio programa para lidar com a transferência e
conciliação de dados.

Embora, ultimamente não tenho feito qq trabalho envolvendo replicação,
Replicação e Full Text Search são duas coisas que tá na minha lista de
desejos do Firebird.

Um abraço e boa sorte.


Em 24 de fevereiro de 2017 17:45, Marcelo <marcelo em magnosystem.com.br>
escreveu:

> Boa tarde pessoal.
>
> Estou para começar um desenvolvimento de replicação firebird para
> integrarmos matriz x filial. A principio estou pensando através das
> triggers gerar os comandos de insert, update e delete das tabelas
> envolvidas e ir guardando em uma tabela de script em ordem cronológica. Os
> comando seriam armazenados em um campo BLOB TEXT desta tabela de scripts e
> aí minha dúvida. Como serão gerados muitos comandos, isto pode inchar o
> banco, ou o BLOB TEXT é tranquilo de trabalhar ?
>
> Outras idéias e formas de replicação também serão bem vindas.
>
> Obrigado.
>
>



Mais detalhes sobre a lista de discussão lista