Metáfora
A arquitetura é baseada na metáfora Editor (Publisher), Publicação (Publish), Assinantes (Subscriber) e Assinaturas (Subscription).
As bases de dados “master”, ou seja, as bases onde os dados sofrem modificações que devem ser replicadas, são os Editores (Publisher).
As bases de dados que recebem dados (slaves), independente se atuam ou não também como “master”, chamamos de Assinantes (Subscriber).
As tabelas da base “master” que são replicadas damos o nome de publicações (Publish), e a matriz entre publicações e assinantes damos o nome de Assinaturas (Subscription), sendo as assinaturas o relacionamento entre as publicações (tabelas) e os seus assinantes (servidores slave).
Funcionamento
O ObjectMMRS é um replicador assíncrono e bi-direcional de bases de dados, ou também chamado multi-master lazy.
É um software que prima pela simplicidade, não utiliza recursos específicos (de baixo nível ou não oficialmente documentados) de determinado SGBD, como leitura de logs de transações, etc – funciona através da coleta de informações através de uma trigger que é gerada para cada tabela a ser replicada. Esta trigger coleta informações a nível de coluna e linha alterada de forma que o replicador possa replicar única e exclusivamente dados realmente alterados e não a linha completa, reduzindo assim problemas de consumo excessivo de rede e também minimizando problemas de concorrência na atualização dos dados.
Esta trigger é gerada pelo replicador e pode até mesmo ser editada e alterada pelo cliente caso queira implementar alguma particularidade.
As informações coletadas pela trigger são armazenadas em tabelas que chamamos de “filas de operações a replicar”, e um engine (processo) consome esta fila a cada N segundos (configurável) enviando dados de forma gerenciada para os servidores apropriados, de acordo com a configuração realizada.
Em ocorrências de queda de rede, indisponibilidade do servidor remoto, etc, esta fila de operações a replicar é mantida, e a operação tem garantia de entrega assim que a rede ou o servidor remoto for restabelecido. Após um número X de tentativas, configurável, o engine pode opcionalmente enviar emails de alertas aos DBAs responsáveis para que verifiquem o problema com rede e/ou servidores.
O processamento da replicação é totalmente assíncrono e ocorre em “background”, com baixo overhead nos servidores de banco de dados.
Flexibilidade de instalação
O software ObjectMMRS pode ser instalado de N formas distintas, atendendo a várias necessidades específicas de cada projeto. Estaremos ilustrando a seguir algumas formas comuns de instalação.
Primeiro caso: Replicação unidirecional envolvendo 2 servidores – 1 master e 1 slave
Este é o caso mais simples onde o ObjectMMRS pode ser usado, e neste tipo de instalação temos a seguinte configuração padrão:
Servidor Master
Software de banco de dados
Software replicador
Dicionário de dados do replicador
Servidor Slave
Software de banco de dados
(Não necessita instalar nenhum software replicador e nem dicionário de dados)
Uma forma alternativa, em casos onde o servidor master esteja muito sobrecarregado:
Servidor Master
Software de banco de dados
Dicionário de dados do replicador
Servidor de Replicação
Software replicador
Banco de dados embedded do replicador (fila de operações a replicar)
Servidor Slave
Software de banco de dados
(Não necessita instalar nenhum software replicador e nem dicionário de dados)
Segundo caso: Replicação unidirecional envolvendo 1 master e N slaves, com N relativamente pequeno (menos de 30 por exemplo).
Servidor Master
Software de banco de dados
Software replicador
Dicionário de dados do replicador
N Servidores Slave
Software de banco de dados
(Não necessita instalar nenhum software replicador e nem dicionário de dados)
Uma forma alternativa, em casos onde o servidor master esteja muito sobrecarregado:
Servidor Master
Software de banco de dados
Dicionário de dados do replicador
Servidor de Replicação
Software replicador
Banco de dados embedded do replicador (fila de operações a replicar)
(10 threads simultâneas)
N Servidores Slave
Software de banco de dados
(Não necessita instalar nenhum software replicador e nem dicionário de dados)
Terceiro caso: Replicação unidirecional envolvendo 1 master e N slaves, com N relativamente grande (mais de 30 por exemplo).
Servidor Master
Software de banco de dados
Dicionário de dados do replicador
Servidores de Replicação (1 a cada 30 slaves)
Software replicador
Banco de dados embedded do replicador (fila de operações a replicar)
(Cada servidor de replicação rodando 1 engine com 10 threads simultâneas)
N Servidores Slave
Software de banco de dados
(Não necessita instalar nenhum software replicador e nem dicionário de dados)
OBS.: No caso de replicação bi-direcional a diferença é que teremos software replicador instalado em todos os servidores e não apenas no “master” central.
Flexibilidade de Uso
O ObjectMMRS permite total integração com softwares desenvolvidos pelo cliente, permitindo ao cliente consultar status, logs de operações a replicar, etc, diretamente no dicionário de dados do replicador, que é fornecido completamente documentado de forma a facilitar o desenvolvimento pelo cliente de qualquer interface customizada para administrar e monitorar os engines de replicação.
O engine possui “scheduler” próprio configurável para disparar ciclos de replicação a cada N segundos, este engine também pode ser configurado para disparar ciclos de replicação comandados pela aplicação do cliente.
O ObjectMMRS disponibiliza uma interface Java para que o cliente possa desenvolver classes Java que implementem esta interface e com isso podem ter total controle da replicação, podendo por exemplo desenvolver integrações com webservices, mainframes, etc.
Independente de Plataforma
O ObjectMMRS é um software 100% Java, podendo ser utilizado em qualquer ambiente operacional onde Java 5 possa ser executado. E em casos de servidores exclusivamente atuando como “slave” nenhum software é necessário, portanto basta ao servidor “slave” ser um banco de dados relacional acessível através de drivers padrão JDBC.