Please enable JavaScript.
Coggle requires JavaScript to display documents.
Dados em Banco de Dados Distribuídos - Coggle Diagram
Dados em Banco de Dados Distribuídos
Sistema de Banco de Dados Distribuído (SBDD)
Coleção de nós, onde cada nó mantém um banco de dados local, mas cujo conjunto atua como um único sistema de banco de dados lógico.
Dados locais, mas em acordo com um esquema de banco de dados distribuídos integrado.
Os nós podem executar consultas locais, assim como consultas que acessam dados localizados em outros nós da rede.
Banco de dados
Conjunto de dados organizados, compartilhados e integrados, que seguem um conjunto de regras de formação e conteúdo.
Normalmente este conjunto de dados se encontra centralizado, ou seja, os dados estão armazenados em apenas um local.
Apesar de existir fisicamente a distribuição dos dados, esta deve estar em um
nível lógico
para o usuário, permitindo o
acesso aos dados de maneira transparente
.
Tipos de SBDD
Homogêneo:
Todos os nós rodando o mesmo SGBD.
Heterogêneo:
Diferentes nós rodando diferentes
SGBDs (relacionais ou mesmo não relacionais).
Vantagens de SGBDD
Compartilhamento de dados e controle distribuído
: Existe um administrador global, responsável pelo sistema como um todo, mas parte das responsabilidades são delegadas a administradores locais que gozam de certa autonomia;
Maior confiabilidade:
O sistema funciona conforme o projeto;
Maior disponibilidade:
O sistema está disponível por maior percentual de tempo;
Melhor desempenho no processamento de consultas:
Sub-consultas podem ser executadas em paralelo;
Maior escalabilidade:
É mais fácil acrescentar um nó, desde que os mesmos sejam autônomos, do que substituir um sistema centralizado existente por um maior.
Desvantagens de SGBDD
Custo de desenvolvimento do software:
A alta complexidade torna mais difícil implementar um SGBDD, tornando-o mais caro.
Grande potencial para bugs:
Ocorrência de erros muito sutis na colaboração entre os nós do SGBDD.
Aumento do overhead de processamento:
Devido à troca de mensagens e à computação adicional para obter a coordenação entre os nós.
Questões de projeto específicas:
Por exemplo, replicação e fragmentação de dados.
Dificuldades para obter conhecimento global:
Por exemplo, controle de concorrência entre transações distribuídas e detecção de deadlock.
Fragmentação de dados
Uma relação é dividida em fragmentos, que são
armazenados em diferentes nós.
Fragmentação horizontal:
os fragmentos são definidos por seleção de tuplas.
Fragmentação vertical:
os fragmentos são definidos por projeção de atributos.
Replicação de dados
Réplicas dos dados em diferentes nós
Aumento do paralelismo
Aumento da disponibilidade de dados
Elevação do overhead de atualização
Melhora desempenho das operações de leitura, enquanto acarreta maior overhead nas atualizações
Atualização dos dados replicados
Replicação síncrona:
Todas as cópias de uma relação modificada (fragmentos) deve ser atualizadas antes da transação modificante fazer commit
Replicação Assíncrona:
As cópias da relação modificada só são atualizadas periodicamente; réplicas podem ficar inconsistentes por algum tempo
Processamento de consultas em SGBDD
Réplicas dos dados;
Reconstrução de relações a partir de fragmentos;
Tempo de recuperação;
Tempo de processamento;
Transmissão de dados via rede
Sincronização de Operações de requisição de locks em SGBDD
Cópia primária / secundária:
Permite tratar dados replicados como não replicados
Coordenador único:
Simples, mas com um ponto de falha e gargalo
Protocolo desviado:
Bloqueio partilhado – leitura (somente local) | Bloqueio exclusivo – escrita (todas as réplicas)
Protocolo de eleições:
Gerenciamento local e trocas de requisições
Marcador de tempo:
Centralizado (relógio local ou contador) | Distribuído (relógios lógicos)
Tratamento de deadlocks em SGBDD
Detecção de ciclos centralizada:
Os grafos locais são enviados para um nó central para concatenação e detecção de ciclos
Detecção de ciclos hierárquica:
Organização dos nós em uma hierarquia, com envio do grafo de espera de cada nó para o nó pai
Timeout:
Abortar uma transação quando esta estiver esperando por muito tempo, para recomeça-la logo depois