Seguir @luiscarlos_j

terça-feira, 16 de setembro de 2014

REPLICAÇÃO SQL e REPLICAÇÃO NoSQL



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).

sábado, 13 de setembro de 2014

Serviços de Transporte Orientado à Conexão e Não Orientado à Conexão - Controle de Fluxo e Controle de Consgestionamento



Toda vez que uma aplicação estiver rodando em um host e precisar se comunicar com uma aplicação em um host diferente deve ter como informação o número da porta com o endereço IP. O sistema operacional gerencia cada porta das aplicações em um computador. Quando uma aplicação quer se comunicar com outra ocorre uma solicitação informando o endereço IP destino junto com a porta da aplicação destino.
Os dois tipos de serviços de transporte que a internet provê são o orientado à conexão (TCP) e o não orientado à conexão (UDP). O primeiro utiliza o protocolo TCP para a realização do transporte de dados e tem como vantagem o estabelecimento de conexão antes de qualquer transferência, confirmação de recebimento e retransmissão em caso de perdas, controle de fluxo, controle de congestionamento dentre outras características. Este tipo de serviço é utilizado em jogos interativos, email e transferência de arquivos. O serviço não orientado à conexão transporta os dados sem qualquer estabelecimento prévio de conexão, em caso de perda não oferece a retransmissão e a sequencia de dados transmitidos pode não seguir um processo ordenado. Esse segundo serviço é muito utilizado na transferência de áudio em que perda de parte dos dados não acarretará danos significativos no processo de transmissão.
O serviço orientado à conexão é realizado pelo protocolo TCP. Duas das características oferecidas por esse protocolo são o controle de fluxo e o controle de congestionamento. Nesse serviço da internet eles não são os mesmos. O que acontece no controle de fluxo é o seguinte: na comunicação entre um host A com um host B pode acontecer que o segundo tenha uma determinada capacidade de recebimento de pacotes (aqui entendido como conjunto de dados lógicos agrupados mediante solicitação prévia) e o primeiro envie esses pacotes numa quantidade que supere essa capacidade tendo que ocorrer um controle no envio para que o destinatário não seja sobrecarregado. No controle de congestionamento não é sobre o host que o controle acontece propriamente dito e sim sobre a rede. A rede possui determinada capacidade de transmissão. Para que não fique sobrecarregada e possa atender a demanda dos processos de comunicação, o controle de congestionamento entra em operação de forma que alguns hosts não enviem qualquer informação tendo que aguardar a rede a estar disponível para transmiti-la.