Banco de Dados Distribuídos
-
Upload
ahdail-netto -
Category
Education
-
view
4.274 -
download
1
Transcript of Banco de Dados Distribuídos
BANCOS DE DADOS DISTRIBUÍDOSOtimização de consultas e Transações
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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);
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