banco de dados distribuídos

22
BANCOS DE DADOS DISTRIBUÍDOS Otimização de consultas e Transações

Upload: ahdail-netto

Post on 19-May-2015

4.273 views

Category:

Education


1 download

TRANSCRIPT

Page 1: Banco de Dados Distribuídos

BANCOS DE DADOS DISTRIBUÍDOSOtimização de consultas e Transações

Page 2: Banco de Dados Distribuídos

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

Page 3: Banco de Dados Distribuídos

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

Page 4: Banco de Dados Distribuídos

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

Page 5: Banco de Dados Distribuídos

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.

Page 6: Banco de Dados Distribuídos

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

Page 7: Banco de Dados Distribuídos

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

Page 8: Banco de Dados Distribuídos

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

Page 9: Banco de Dados Distribuídos

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

Page 10: Banco de Dados Distribuídos

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

Page 11: Banco de Dados Distribuídos

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

Page 12: Banco de Dados Distribuídos

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

Estação 02

Estação 03

Estação 04

Rede Particionada

Partição A Partição B

Page 13: Banco de Dados Distribuídos

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

Page 14: Banco de Dados Distribuídos

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

Gerenciador

Coordenador

Gerenciador

Coordenador

Gerenciador

Page 15: Banco de Dados Distribuídos

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

Page 16: Banco de Dados Distribuídos

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

Page 17: Banco de Dados Distribuídos

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

Page 18: Banco de Dados Distribuídos

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

Page 19: Banco de Dados Distribuídos

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

Page 20: Banco de Dados Distribuídos

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

Page 21: Banco de Dados Distribuídos

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);Y = X – 10;Write(X);

Read(X);X = X*2;Write(X);

Read(X);X = X*2;Write(X);

Read(X);X = X – 10;Write(X);

Page 22: Banco de Dados Distribuídos

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