Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Banco de Dados Distribuídos

5,136 views

Published on

Published in: Education, Technology
  • Be the first to comment

  • Be the first to like this

Banco de Dados Distribuídos

  1. 1. BANCOS DE DADOS DISTRIBUÍDOS Otimização de consultas e Transações
  2. 2. Consultas Distribuídas  Definição de planos de avaliação distribuídos  Além do tempo de processamento e das operações de I/O, é preciso considerar os seguintes fatores:  A replicação dos dados  A fragmentação dos dados  O custo da transmissão dos dados  A capacidade de processamento de cada servidor  Influência da replicação  Devemos usar as réplicas que podem ser acessadas mais rapidamente  Pode ser vantajoso criar uma réplica de uma relação em um servidor que a acessa com freqüência
  3. 3. Consultas Distribuídas  Influência da fragmentação  Se a relação foi fragmentada horizontalmente usando o valor de um atributo, podemos considerar esta informação para processar a consulta  Podemos desconsiderar os fragmentos que sabemos que não possuem tuplas que irão satisfazer um determinado predicado  Podemos ignorar os fragmentos verticais que possuem atributos que não nos interessam  Influência da transmissão dos dados  Devemos evitar trasmitir uma grande quantidade de dados pela rede devido ao retardo de transmissão  É o fator preponderante em WANs
  4. 4. Consultas Distribuídas  Influência da capacidade de processamento  Devemos procurar executar as operações em servidores com maior poder de processamento  É necessário balancear a carga dos servidores  Processamento de consultas em BDs distribuídos deve garantir a transparência para o usuário  Localização física dos dados é transparente - endereços são manipulados internamente pelo SBD  Fragmentação dos dados é transparente - relações são recompostas pelo banco a partir dos fragmentos  Replicação dos dados é transparente - banco mantém atualizadas as réplicas das relações
  5. 5. Consultas Distribuídas  Otimização de Consultas Distribuídas  Podemos separar o processo de otimização de consultas distribuídas em duas etapas:  Otimização Global: consiste em otimizar a consulta global com base em informações e estatísticas sobre os fragmentos e réplicas existentes, a decompondo em consultas locais que determinam o que será feito por cada site envolvido na consulta;  Otimização Local: cada site envolvido otimiza sua consulta local com base nos dados estatísticos referentes ao esquema local e no custo dos algoritmos existentes para execução de operações.
  6. 6. Consultas Distribuídas  Otimização de Consultas Distribuídas – Exemplo:  Junção da relação r1 no site S1 com r2 em S2  Podemos transmitir r1 até S2 e calcular a junção, ou transmitir r2 até S1 e fazer o cálculo  Para definir a escala, devemos considerar:  O volume de dados a ser transportado  O tempo de transmissão entre os servidores  O poder de processamento de cada máquina  O custo total é dado pelo custo de transmissão mais o custo de processamento em cada máquina  Deve-se escolher a opção de menor custo
  7. 7. Consultas Distribuídas  Otimização de Consultas Distribuídas – Exemplo:  Otimização Global  Define se a junção será executada em S1 ou S2  Supondo que as máquinas possuem o mesmo poder de processamento, levaremos em conta apenas o tempo de transmissão pela rede  Se r1 < r2, executa em S2; caso contrário em S1  Otimização Local  A máquina na qual será executada a consulta deve otimizá-la localmente com base nos algoritmos disponíveis, levando em conta os tamanhos da relação local e da relação recebida pela rede
  8. 8. Consultas Distribuídas  Otimização com Replicação e Fragmentação  Exemplo:  Suponha agora que r1 foi replicada em S1 e S1’, e que r2 foi fragmentada horizontalmente em S2 e S2’  Otimização Global  Determinar quais fragmentos de r2 são necessários: por se tratar de uma junção e de fragmentos horizontais, ambos serão utilizados  Determinar qual das réplicas de r1 será usada  Com base no custo, definir se r1 será transmitida para S2 e S2’ ou se os fragmentos de r2 serão enviados para S1 ou S1’  Otimização Local: site escolhido otimiza localmente
  9. 9. Consultas Distribuídas  Otimização com Replicação e Fragmentação  Exemplo:  Considere agora que há uma condição de junção em um atributo chave usado para fragmentar a tabela horizontalmente por faixa  A otimização global deve determinar quais fragmentos de r2 possuem tuplas que satisfazem a condição de junção, com base nas faixas de valores usadas para dividir os fragmentos  Suponha que a chave id é usada para fragmentar r2  S2 possui as tuplas de r2 com id <= 1000  S2’ possui as tuplas de r2 com id > 1000  Se a condição de junção for id < 200, basta executar a operação em S2, pois S2’ não satisfaz a condição
  10. 10. Transações Distribuídas  Transações que afetam os dados em apenas um site são processadas como em BDs centralizados  Transações que envolvem mais de um site precisam ser coordenadas  As propriedades ACID precisam ser mantidas em todas as máquinas envolvidas na transação  Mudança de estado atômica nas várias máquinas  Todos os sites devem ter dados consistentes  Transações isoladas apesar do paralelismo  Alterações duráveis em todas as réplicas dos dados
  11. 11. Transações Distribuídas  Falhas em BDs Distribuídos  Além de falhas locais nos sites, podem ocorrer ainda falhas na comunicação entre estes  Tipos de Falhas de Comunicação:  Falha de mensagem: uma mensagem enviada pela rede é perdida, corrompida ou duplicada  Falha de desempenho: o atraso na rede faz com que timeout se esgote, afetando o funcionamento  Falha de rota: um link de rede deixa de operar, impedindo a comunicação entre servidores
  12. 12. Transações Distribuídas  Rede impede a detecção precisa de falhas  Quando um servidor não responde, não é possível saber se a máquina ou a rede falhou  Particionamento da Rede  Sites continuam ativos, mas não podem se comunicar  Cada partição acha que a outra falhou Estação 01 Rede Particionada Estação 03 Estação 02 Estação 04 Partição A Partição B
  13. 13. Transações Distribuídas  Tratamento de Falhas  Réplicas dos dados no site com falha deixam de ser atualizadas e não serão usadas em futuras consultas  Transações ativas no site com falha são abortadas  Se algum servidor central falhar, deve ser eleito um novo site para esta função (ex.: servidor de nomes, coordenador de concorrência, detector de deadlock)  Servidor deve ter o estado atualizado ao reintegrar-se ao sistema; qualquer conflito deve ser resolvido
  14. 14. Transações Distribuídas  Coordenação de transações  Um coordenador de transações coordena a execução das transações distribuídas iniciadas por um site  Um gerenciador de transações administra em cada site as transações que acessam os dados locais Site A Site B Site C Coordenador Coordenador Coordenador Gerenciador Gerenciador Gerenciador
  15. 15. Transações Distribuídas  Papel do coordenador de transações  Iniciar a execução da transação  Dividir a transação em sub-transações  Distribuir as sub-transações pelos sites apropriados para execução de cada uma delas  Fazer a efetivação ou o rollback em todos os sites  Papel do gerenciador de transações  Controlar o acesso concorrente aos dados locais de modo a suportar transações distribuídas  Manter um log de operações para permitir a recuperação de transações distribuídas
  16. 16. Transações Distribuídas  Protocolos de efetivação garantem que todos os sites efetivarão a transação ou nenhum o fará  Protocolo de efetivação em duas fases (2PC)  Inicia quando o coordenador recebe mensagens de todos os sites avisando que terminaram a execução  Fase 1: coordenador envia prepare ao gerenciador de cada site participante; cada gerenciador responde se pode fazer o commit enviando ready ou abort  Fase 2: coordenador envia commit se todas as respostas forem positivas, ou abort caso receba uma resposta negativa ou se o timeout esgotar; cada gerenciador executa a ação correspondente
  17. 17. Transações Distribuídas  Protocolo de efetivação em três fases (3PC)  Tolera até N falhas em 2N+1 sites  Fase 1: idêntica à fase 1 do protocolo de duas fases  Fase 2: o coordenador responde a todos os sites com a mensagem precommit se todos indicaram dentro do tempo limite que podem efetivar a transação, ou com abort em caso contrário; os sites devem responder com a mensagem ack (reconhecimento)  Fase 3: após receber N+1 mensagens ack, o coordenador manda a mensagem commit a todos os sites, que ao recebê-la efetivam a transação
  18. 18. Transações Distribuídas  Uso de logs nos protocolos de efetivação  Mensagens enviadas/recebidas são gravadas em logs  Caso o site reinicie após uma falha, ele deve verificar o que ocorreu com as transações registradas no seu log que ainda não foram efetivadas ou abortadas  Comparação dos protocolos de efetivação  Custo de 3PC é mais alto devido ao maior número de mensagens trocadas pela rede  2PC pode causar obstrução se o coordenador falhar  Soluções possíveis para falha do coordenador  Um coordenador de backup pode assumir o seu lugar  Um novo coordenador pode ser eleito pelos sites
  19. 19. Transações Distribuídas  Coordenador de backup  Reside em um site diferente do coordenador  Recebe as mesmas mensagens que o coordenador  Assume o lugar do coordenador ao detectar sua falha  Algoritmo de eleição de coordenador  Sites podem pedir para assumir o lugar do coordenador caso detectem que este falhou  Os sites decidem em quem votar em função de seus endereços ou de um identificador do site  O novo coordenador deve requisitar as mensagens registradas nos logs de todos os sites para poder dar continuidade às transações em andamento
  20. 20. Transações Distribuídas  Serialização de Transações Distribuídas  Serialização deve ser observada não só localmente, mas também globalmente quando os dados forem replicados para garantir a consistência entre réplicas  Sem replicação: se cada sub-transação executada por cada site envolvido na transação for serializável, então a transação completa também é serializável  Com replicação: além de serem serializáveis em cada site, as instruções conflitantes que envolvem dados replicados devem ser executadas na mesma ordem em cada réplica para manter a consistência
  21. 21. Transações Distribuídas  Serialização de Transações Distribuídas  Exemplo  Suponha que X é replicado nos sites A e B, e que as transações T1 e T2 que o alteram estão em execução  A escala abaixo não é serializável, pois executa operações conflitantes em ordem diferente nos sites, e com isso não mantém a consistência entre réplicas Site A Site B T1 T2 T1 T2 Read(X); Read(X); Y = X – 10; X = X*2; Write(X); Write(X); Read(X); Read(X); X = X*2; X = X – 10; Write(X); Write(X);
  22. 22. Exercícios I. Defina Coordenador de Transações e Gerenciador de Transações. II. Explique as duas etapas do processo de otimização de consultas. III. Por quê transações que envolvem mais de um site precisam ser coordenadas? IV. Quais são os tipos de falhas de comunicação? Defina-os. V. Num site com falhas, qual ou quais tratamentos devem ser realizados? VI. O que são protocolos de efetivação? VII. Diferencie Serialização sem Replicação de Serialização com Replicação e dê um exemplo de cada

×