Replicação refere-se ao
armazenamento de dados e a estratégia de backups entre computadores em locais
distintos. É um conjunto de tecnologias utilizadas para copiar e distribuir
objetos e dados de um banco de dados para outro banco de dados, sincronizando
estes dados com a finalidade de se manter a consistência.
A replicação de dados oferece
muitas vantagens como a redundância dos dados que permite ao sistema a
propriedade de tolerância a falhas e a melhoria da escalabilidade e também da
disponibilidade. Sempre em um projeto de banco de dados, principalmente se for
SQL devido ao conceito de ACID, a característica da escalabilidade torna-se
muito importante pois indica que o sistema tem a capacidade de tratar uma
demanda crescente de trabalho (tratamento de dados) sem perda de desempenho, ou
seja, ocorre o balanceamento de carga do sistema já que com os dados disponíveis
em todas as réplicas (sincronização) o acesso pode ser feito de forma
distribuída.
Existem alguns modelos de
replicação e o tipo a ser utilizado depende de alguns fatores como o ambiente
físico, a quantidade de dados e o sentido da atualização dos dados. Pode-se
destacar a replicação síncrona, em que os dados encontrados nas réplicas são
sempre os mesmos, a replicação assíncrona, onde a sincronização só ocorre no
caso de alteração dos dados, a replicação multimaster, em que é possível a
realização das operações de leitura e gravação em qualquer réplica, e a
replicação master-slave, onde a operação de gravação só é permitida na réplica
master e a leitura em qualquer uma delas.
Dependendo do tipo de banco de
dados, diferentes tipos de replicação são adotados. No caso dos bancos de dados
SQL que possuem as propriedades ACID (Atomicidade, Consistência, Isolamento e
Durabilidade) o modelo normalmente utilizado é o master-slave (mestre-escravo)
onde um servidor atua como master e os demais atuam como slave onde todas as
operações que alteram algum dado no master são repassadas de imediato para os
servidores slaves. Um exemplo de banco de dados que utiliza este tipo de
replicação é o MySQL.
No caso dos bancos de dados NoSQL
que trabalham com a propriedade BASE (Basicamente Disponível Eventualmente
Consistente) o modelo normalmente adotado é o multimaster onde as operação de
leitura e gravação podem ser realizadas através de qualquer nó. Esse tipo de
banco de dados possui fraca consistência e tem como fator principal a
disponibilidade. Um exemplo de banco de dados que trabalha com este tipo de
replicação é o Cassandra que usa o particionamento dos dados através da
estratégia de replicação e da topologia dos clusters (distribuição dos nós).