DBMS Distribuído - Estratégias de Design

No último capítulo, apresentamos diferentes alternativas de design. Neste capítulo, estudaremos as estratégias que auxiliam na adoção dos projetos. As estratégias podem ser amplamente divididas em replicação e fragmentação. No entanto, na maioria dos casos, uma combinação dos dois é usada.

Replicação de Dados

A replicação de dados é o processo de armazenamento de cópias separadas do banco de dados em dois ou mais sites. É uma técnica popular de tolerância a falhas de bancos de dados distribuídos.

Vantagens da replicação de dados

  • Reliability - Em caso de falha de algum site, o sistema de banco de dados continua funcionando, pois uma cópia fica disponível em outro (s) site (s).

  • Reduction in Network Load- Uma vez que cópias locais de dados estão disponíveis, o processamento de consultas pode ser feito com uso reduzido da rede, especialmente durante o horário nobre. A atualização dos dados pode ser feita fora do horário comercial.

  • Quicker Response - A disponibilidade de cópias locais de dados garante um processamento rápido de consultas e, consequentemente, um tempo de resposta rápido.

  • Simpler Transactions- As transações requerem menos número de junções de tabelas localizadas em locais diferentes e coordenação mínima em toda a rede. Assim, eles se tornam mais simples na natureza.

Desvantagens da Replicação de Dados

  • Increased Storage Requirements- A manutenção de várias cópias de dados está associada a maiores custos de armazenamento. O espaço de armazenamento necessário é em múltiplos do armazenamento necessário para um sistema centralizado.

  • Increased Cost and Complexity of Data Updating- Cada vez que um item de dados é atualizado, a atualização precisa ser refletida em todas as cópias dos dados nos diferentes sites. Isso requer técnicas e protocolos de sincronização complexos.

  • Undesirable Application – Database coupling- Se mecanismos de atualização complexos não forem usados, a remoção da inconsistência de dados requer uma coordenação complexa no nível do aplicativo. Isso resulta em acoplamento indesejável de aplicativo - banco de dados.

Algumas técnicas de replicação comumente usadas são -

  • Replicação de instantâneo
  • Replicação quase em tempo real
  • Replicação de pull

Fragmentação

A fragmentação é a tarefa de dividir uma mesa em um conjunto de mesas menores. Os subconjuntos da tabela são chamadosfragments. A fragmentação pode ser de três tipos: horizontal, vertical e híbrida (combinação de horizontal e vertical). A fragmentação horizontal pode ainda ser classificada em duas técnicas: fragmentação horizontal primária e fragmentação horizontal derivada.

A fragmentação deve ser feita de forma que a tabela original possa ser reconstruída a partir dos fragmentos. Isso é necessário para que a tabela original possa ser reconstruída a partir dos fragmentos sempre que necessário. Este requisito é chamado de "reconstrutividade".

Vantagens da Fragmentação

  • Como os dados são armazenados perto do local de uso, a eficiência do sistema de banco de dados é aumentada.

  • As técnicas de otimização de consulta local são suficientes para a maioria das consultas, pois os dados estão disponíveis localmente.

  • Uma vez que dados irrelevantes não estão disponíveis nos sites, a segurança e a privacidade do sistema de banco de dados podem ser mantidas.

Desvantagens da Fragmentação

  • Quando dados de fragmentos diferentes são necessários, as velocidades de acesso podem ser muito altas.

  • No caso de fragmentações recursivas, o trabalho de reconstrução exigirá técnicas caras.

  • A falta de cópias de backup dos dados em sites diferentes pode tornar o banco de dados ineficaz em caso de falha de um site.

Fragmentação Vertical

Na fragmentação vertical, os campos ou colunas de uma tabela são agrupados em fragmentos. Para manter a reconstrutividade, cada fragmento deve conter o (s) campo (s) de chave primária da tabela. A fragmentação vertical pode ser usada para garantir a privacidade dos dados.

Por exemplo, vamos considerar que um banco de dados de Universidade mantém registros de todos os alunos registrados em uma tabela de Alunos com o seguinte esquema.

ALUNA

Regd_No Nome Curso Endereço Semestre Honorários Marcas

Agora, os detalhes das taxas são mantidos na seção de contas. Neste caso, o designer irá fragmentar o banco de dados da seguinte forma -

CREATE TABLE STD_FEES AS 
   SELECT Regd_No, Fees 
   FROM STUDENT;

Fragmentação Horizontal

A fragmentação horizontal agrupa as tuplas de uma tabela de acordo com os valores de um ou mais campos. A fragmentação horizontal também deve confirmar a regra da reconstrutividade. Cada fragmento horizontal deve ter todas as colunas da tabela base original.

Por exemplo, no esquema do aluno, se os detalhes de todos os alunos do Curso de Ciência da Computação precisam ser mantidos na Escola de Ciência da Computação, o designer irá fragmentar horizontalmente o banco de dados da seguinte forma -

CREATE COMP_STD AS 
   SELECT * FROM STUDENT  
   WHERE COURSE = "Computer Science";

Fragmentação Híbrida

Na fragmentação híbrida, uma combinação de técnicas de fragmentação horizontal e vertical são usadas. Esta é a técnica de fragmentação mais flexível, pois gera fragmentos com o mínimo de informações estranhas. No entanto, a reconstrução da tabela original costuma ser uma tarefa cara.

A fragmentação híbrida pode ser feita de duas maneiras alternativas -

  • Em primeiro lugar, gere um conjunto de fragmentos horizontais; em seguida, gere fragmentos verticais de um ou mais dos fragmentos horizontais.

  • Em primeiro lugar, gere um conjunto de fragmentos verticais; em seguida, gere fragmentos horizontais de um ou mais dos fragmentos verticais.