TEMA 05 Flashcards
Como pode ser realizada a distribuição de dados?
A distribuição de dados pode ser realizada de duas formas: replicação e fragmentação.
A replicação obtém os mesmos dados e os copia em múltiplos nodos.
A fragmentação coloca dados diferentes em nodos diferentes.
Ambas as técnicas podem ser usadas de forma isolada ou em conjunto.
O mais recomendado é não utilizar distribuição, mantendo o banco de dados em um único servidor.
Embora se tenha uma forte associação entre bancos de dados NoSQL com execução em cluster, a opção em um único servidor é mais facilmente gerenciada e menos complexa para os desenvolvedores, por não terem que se preocupar com a distribuição dos dados no desenvolvimento das aplicações. No entanto, “a medida em que o volume de dados cresce, aumenta a necessidade de escalabilidade e melhoria de desempenho”. Podemos considerar também outros fatores como, por exemplo:
A necessidade de aumentar o processamento e armazenamento das máquinas, assim como o acesso a diferentes partes de dados.
Para essa conjuntura, é necessária a utilização de recursos de distribuição e consequentemente um aumento de máquinas que possam realizar o armazenamento e processamento de dados
Como funciona a técnica de fragmentação?
Também conhecida por sharding , possibilita escalabilidade horizontal, direcionando o acesso a diferentes partes de dados em diferentes servidores. Cada servidor desempenha o papel de gerenciar um subconjunto de dados, que representa um fragmento, o qual lê e grava seu próprio dado.
A complexidade de uso da fragmentação está no modelo de dados, o qual deve ser projetado com a agregação mais adequada possível, de modo que o acesso a um servidor (nodo) possibilite ao usuário encontrar a maior parte dos dados. Consequentemente, isso possibilita que esse conjunto de agregados sejam distribuídos uniformemente pelos nodos.
Como funciona a replicação?
A replicação copia os dados para múltiplos servidores, de modo que cada parte dos dados pode ser encontrada em múltiplos lugares. Sendo assim, esta diminui o tempo de recuperação de informações e propicia escalabilidade.
Quais são os dois tipos de replicação? Fale sobre elas:
Há dois tipos de replicação: mestre-escravo e ponto a ponto.
Na replicação mestre-escravo, os dados são copiados para múltiplos nodos, sendo um nodo designado como mestre e os demais escravos. O nodo mestre é “a fonte oficial dos dados e, geralmente, fica responsável por processar quaisquer atualizações nesses dados”. Os nodos escravos recebem os dados por um processo de sincronização com o mestre e são fontes apenas para leitura, o que proporciona escalabilidade horizontal quando há muitas solicitações de leitura.
A replicação mestre-escravo ajuda com a escalabilidade de leitura, mas não com a escalabilidade de gravação.
Já na replicação ponto a ponto, não há diferenciação entre os nodos, e todos permitem leitura e gravação de dados, sendo possível “contornar falhas nos nodos sem perder o acesso aos dados. Além disso, você pode “adicionar facilmente nodos para melhorar o seu desempenho”
Outro paradigma que difere os bancos de dados NoSQL dos bancos de dados relacionais é a forma como se trata a consistência dos dados, denominada consistência eventual , pois é preciso criar recursos programáveis para estabelecer a consistência dos dados.
Com isso, podemos ter conflitos de gravação e de leitura-gravação. Explique como ocorre os conflitos e cite duas abordagens de controle de concorrência:
O primeiro ocorre, por exemplo, quando temos dois usuários tentando gravar os mesmos dados simultaneamente.
Já o segundo ocorre quando um usuário lê um dado inconsistente durante uma gravação que está sendo realizada por outro usuário.
Perante esses conflitos, é possível atacar duas abordagens de controle de concorrência: pessimista e otimista.
Abordagens pessimistas bloqueiam os registros de dados para evitar conflitos.
Abordagens otimistas detectam conflitos e os resolvem.
Embora a consistência seja algo importante para a integridade dos dados, às vezes precisamos correr o risco de perdê-la a fim de não sacrificar outras características. Como esse balanceamento pode ser contornado?
Esse balanceamento é contornado estabelecendo recursos programáveis que podem ser definidos no desenvolvimento da aplicação.