A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Consultas em Banco de Dados Amplamente Distribuídos

Apresentações semelhantes


Apresentação em tema: "Consultas em Banco de Dados Amplamente Distribuídos"— Transcrição da apresentação:

1 Consultas em Banco de Dados Amplamente Distribuídos
UNIVERSIDADE FEDERAL DE CAMPINA GRANDE PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO (DSC / CEEI) DISCIPLINA BANCO DE DADOS / PROF. MARCUS SAMPAIO Consultas em Banco de Dados Amplamente Distribuídos Cláudio E. C. Campelo Helton Santa Cruz 26 de Abril de 2006

2 Consultas em Banco de Dados Amplamente Distribuídos
Roteiro Processamento de consultas Otimizadores de Consultas Otimizadores em Consultas Distribuidas Programação Dinâmica Iterativa IDP Standard vs Balanced BestPlan vs BestRow Seleção de bons sub-planos Avaliação de Desempenho Conclusões Referências Consultas em Banco de Dados Amplamente Distribuídos

3 Processamento de consultas
Passos na execução de consultas Análise e tradução Otimização Avaliação Consultas em Banco de Dados Amplamente Distribuídos

4 Processamento de consultas
Consultas em Banco de Dados Amplamente Distribuídos

5 Otimizadores de Consultas
Recebe uma consulta feita de forma declarativa com SQL ou OQL e encontra a melhor forma de executar a consulta; Passos: quais índices serão utilizados para executar a consulta; qual a ordem de execução das operações da consulta; enumera planos alternativos de execução; estima os custos de todos usando um modelo de custos; escolhe o plano com menor custo; Consultas em Banco de Dados Amplamente Distribuídos

6 Otimizadores de Consultas
Classes de Algoritmos de Otimização: Busca Exaustiva Tempo de complexidade Exponencial, Programação Dinâmica; Heurísticas Tempo e complexidade Polinomial, Algoritmos Gulosos; Algoritmos Randômicos Tempo de execução indefinido (Algoritmo indeterminístico); Consultas em Banco de Dados Amplamente Distribuídos

7 Consultas em Banco de Dados Amplamente Distribuídos
Programação Dinâmica Aplicável a problemas onde a solução ótima pode ser computada a partir da solução ótima previamente calculada e memorizada Componente Central de um otimizador - Estratégia de pesquisa ou o algoritmo de enumeração O algoritmo de enumeração clássico de otimizadores é baseado em programação dinâmica Consultas em Banco de Dados Amplamente Distribuídos

8 Consultas em Banco de Dados Amplamente Distribuídos
Programação Dinâmica Existe um tradeoff entre a complexidade de um algoritmo de enumeração e a qualidade dos planos gerados pelo algoritmo; Programação dinâmica representa o ponto extremo - complexidade exponencial e gera planos ótimos; Num sistema centralizado: Tempo de complexidade:O(3n ) Espaço de complexidade : O(2n) Consultas em Banco de Dados Amplamente Distribuídos

9 Consultas em Banco de Dados Amplamente Distribuídos
Programação Dinâmica Consultas em Banco de Dados Amplamente Distribuídos

10 Consultas em Banco de Dados Amplamente Distribuídos
Programação Dinâmica O algoritmo trabalha na forma bottom-up: Gera plano de acesso para todas as tabelas envolvidas – função accesPlans; considera todas as formas possíveis de junção das tabelas com chamadas à função joinPlans; Os planos de junção de n relações são passados para a função finalizePlans onde tornam-se planos completos para a consulta (operadores de projeção, junção ou group-by são incorporados, se necessário); Descarta blocos de construção anteriores a cada passo. Função prunePlans; Consultas em Banco de Dados Amplamente Distribuídos

11 Consultas em Banco de Dados Amplamente Distribuídos
Programação Dinâmica Exemplo: Mais Rápida! Passo 1: Passo 2: Não é Enumerada! Consultas em Banco de Dados Amplamente Distribuídos

12 Consultas em Banco de Dados Amplamente Distribuídos
Algoritmos Gulosos É uma alternativa para programação dinâmica. Sempre realiza a escolha que parece ser a MELHOR no momento; Rodam mais rápido que a programação dinâmica; Também apresenta três fases e constrói planos de uma forma bottom-up. Consultas em Banco de Dados Amplamente Distribuídos

13 Consultas em Banco de Dados Amplamente Distribuídos
Algoritmos Gulosos Consultas em Banco de Dados Amplamente Distribuídos

14 Consultas em Banco de Dados Amplamente Distribuídos
Algoritmos Gulosos Também faz uso das mesmas funções para gerar planos(accessPlan, joinPlans e finalizePlans). Na segunda fase ela faz uma simples e rigorosa seleção das ordens das junções. Aplica uma função de avaliação de plano para selecionar a melhor nova junção. Consultas em Banco de Dados Amplamente Distribuídos

15 Consultas em Banco de Dados Amplamente Distribuídos
Algoritmos Gulosos Exemplo: Uma junção da consulta com as tabelas A,B,C,D e E. A função de avaliação de plano poderia determinar que a junção de A e D deveria ser primeiro. Depois faz a junção do resultado de A e D com C. Depois B e E. E finalmente a junção seria o resultado: O resultado depende da função de avaliação de plano. Consultas em Banco de Dados Amplamente Distribuídos

16 Consultas em Banco de Dados Amplamente Distribuídos
Algoritmos Gulosos Sistema Centralizado Tempo de complexidade: O(n3) Espaço de complexidade: O(n) Consultas em Banco de Dados Amplamente Distribuídos

17 Otimizadores em Consultas Distribuidas
Otimizadores de consultas baseados em programação dinâmica, são facilmente estendidos ! Como o algoritmo pode estendido para otimizar consultas de sistemas de banco de dados distribuídos ?? R- variações nas funções: accessPlans, joinPlans e finalizePlans Consultas em Banco de Dados Amplamente Distribuídos

18 Otimizadores em Consultas Distribuidas
Se a tabela for replicada, a função accessPlans deve gerar diferentes planos de acesso para todos os locais onde a tabela estiver replicada; A função joinPlans deve gerar diferentes planos de junção em ordem para especificar que a junção pode ser realizada: no local em que a tabela exterior foi produzida; no local em que a tabela interna foi produzida; em todos os outros lugares interessantes; Consultas em Banco de Dados Amplamente Distribuídos

19 Otimizadores em Consultas Distribuidas
A função finalizePlans deve acrescentar um operador de transporte se o plano não for executado no local onde os resultados da consulta devem ser retornados. Precisamos ajustar a função prunePlans e ter cuidado quando for dispensar planos que produzem seus resultados em diferentes locais. Consultas em Banco de Dados Amplamente Distribuídos

20 Otimizadores em Consultas Distribuidas
Exemplo: Se a tabela Emp estiver armazenada em Patos e Sousa e a tabela Dept estiver armazenada somente em Patos não podemos excluir o plano de acesso table_scan(Emp, Patos) até mesmo se ela é mais cara que o plano de acesso table_scan(Emp,Sousa) Consultas em Banco de Dados Amplamente Distribuídos

21 Otimizadores em Consultas Distribuidas
Um plano de acesso ou de junção P1 deve ser excluído se existir outro plano de acesso ou de junção P2 que envolve as mesmas tabelas e obedece os critérios seguintes: Para todo i є locais_interessantes(P1) : custo(ship(P1,i)) >= custo(ship(P2,i)) (eq. 1) Consultas em Banco de Dados Amplamente Distribuídos

22 Otimizadores em Consultas Distribuidas
Se a fonte e o destino entre dois locais são idênticos, o custo de um ship 0. Ex: cost(ship(table_scan(Emp, Patos), Patos)) = cost(table_scan(Emp, Patos). Outro caso em que P1 deve ser descartado é se: custo(P1) >= custo(ship(P2,x)) (eq. 2) x = local em que P1 produz os resultados Consultas em Banco de Dados Amplamente Distribuídos

23 Otimizadores em Consultas Distribuidas
Complexidade: Num sistema distribuído: tempo: O(S3 x 3n) espaço: O(S x 2n + S3) s = (numero de locais onde existe ao menos uma das tabelas envolvidas na consulta) + (o local para onde retorna os resultados) Consultas em Banco de Dados Amplamente Distribuídos

24 Otimizadores em Consultas Distribuidas
Cada ponto representa a consulta na junção de 10 relações Tempo de execução cresce de acordo com o número de lugares ! Precisamos de caminhos alternativos para otimizar consultas em sistemas de banco de dados distribuídos. Consultas em Banco de Dados Amplamente Distribuídos

25 Consultas em Banco de Dados Amplamente Distribuídos
Problema A maioria dos otimizadores comerciais de hoje são baseados em um algoritmo de programação dinâmica; Devido a sua alta complexidade, o processamento de consultas complexas podem fazer com que o algoritmo não seja interessante; Consultas em Banco de Dados Amplamente Distribuídos

26 Programação Dinâmica Iterativa
Nova classe de algoritmos de enumeração: Iterative Dynamic Programming Idéia da IDP: aplicar programação dinâmica iterativamente; IDP tem complexidade razoável (polinomial); Consultas em Banco de Dados Amplamente Distribuídos

27 Programação Dinâmica Iterativa
Combinação de programação dinâmica com algoritmo guloso; Oito variações: Quando uma iteração ocorre (IDP1 vs IDP2); Os blocos gerados em toda iteração (standard vs balanced); O numero de blocos produzidos em toda iteração(bestPlan vs bestRow). Consultas em Banco de Dados Amplamente Distribuídos

28 Programação Dinâmica Iterativa
Consultas em Banco de Dados Amplamente Distribuídos

29 Consultas em Banco de Dados Amplamente Distribuídos
IDP 1 Respeita os limites de recursos de uma máquina/aplicação; Usuário pode limitar o tempo. Consultas em Banco de Dados Amplamente Distribuídos

30 Consultas em Banco de Dados Amplamente Distribuídos
IDP 1 Vamos assumir os planos de junção de k relações para uma consulta com n tabelas, com n > k; Não há memória para considerar os planos de junção de (K + 1) ! O que IDP1 faz nesse ponto ? IDP1 pára quando: foram enumerados planos de acesso de k relações; a memória está cheia; acaba o time-out. Consultas em Banco de Dados Amplamente Distribuídos

31 Consultas em Banco de Dados Amplamente Distribuídos
IDP 1 Exemplo: junção com 5 tabelas, k = 3 Consultas em Banco de Dados Amplamente Distribuídos

32 Consultas em Banco de Dados Amplamente Distribuídos
IDP 1 Consultas em Banco de Dados Amplamente Distribuídos

33 Consultas em Banco de Dados Amplamente Distribuídos
IDP 1 Quanto maior o valor de k, maiores recursos; Se k >= n , se comporta igual a programação dinâmica; Se k = 2, se comporta igual a algoritmo guloso. Consultas em Banco de Dados Amplamente Distribuídos

34 Consultas em Banco de Dados Amplamente Distribuídos
IDP 1 Complexidade em BD Distrubuído: Tempo: O(s3 * nk) , para 2 < k < n ; Espaço: O(s * nk + s3). Consultas em Banco de Dados Amplamente Distribuídos

35 Consultas em Banco de Dados Amplamente Distribuídos
IDP 2 Aplica algoritmo guloso em cada iteração; Em seguida, aplica programação dinâmica para encontrar planos; Continua aplicando o processo nas tabelas temporárias(T) ... Consultas em Banco de Dados Amplamente Distribuídos

36 Consultas em Banco de Dados Amplamente Distribuídos
IDP 2 Complexidade: Tempo: O(n * (n2 + s3 * 3k)) para muitas tabelas... Espaço: O(n + s x 2k + s3) Consultas em Banco de Dados Amplamente Distribuídos

37 Consultas em Banco de Dados Amplamente Distribuídos
IDP 1 vs IDP 2 Ambos os algoritmos aplicam heurísticas para selecionar subplanos; Ambos fazem uso da programação dinâmica; Ambos podem facilmente ser integrados em um otimizador existente baseado PD; Consultas em Banco de Dados Amplamente Distribuídos

38 Consultas em Banco de Dados Amplamente Distribuídos
IDP 1 vs IDP 2 IDP2 decisões heurísticas primeiro; aplica a programação dinâmica depois; IDP1 começa com a programação dinâmica; aplica as decisões heurísticas depois; IDP1 é adaptável e k é um parâmetro opcional; No IDP2 k tem que ser configurado antes de começar o algoritmo; IDP2 tem complexidade assintótica menor que IDP1; Consultas em Banco de Dados Amplamente Distribuídos

39 IDP Standard vs Balanced
Diferem nas restrições que eles impõem no tamanho dos blocos selecionados; A Standard não impõe restrição; A balanceada restringe o tamanho dos blocos selecionados de duas formas: O numero de tabelas envolvidas nos subplanos selecionados deve: ser o mesmo; ser menor ou igual a | d/2 |, para d = numero de tabelas na lista TODO. Consultas em Banco de Dados Amplamente Distribuídos

40 IDP Standard vs Balanceada
Melhores planos: Balanceadas - em situações em que um plano “bushy” é necessário; Standard - em outras situações porque consideram blocos maiores. Consultas em Banco de Dados Amplamente Distribuídos

41 IDP Standard vs Balanceada
Sub-Plano Selecionado pela versão Standard Plano Ótimo Planos Selecionados Consultas em Banco de Dados Amplamente Distribuídos

42 Consultas em Banco de Dados Amplamente Distribuídos
BestPlan vs BestRow BestPlan - Somente um único plano é selecionado em cada iteração; BestRow - estende BestPlan retendo toda entrada da estrutura optPlan; - vários planos incomparáveis envolvendo as mesmas tabelas. BestRow produz melhores planos que BestPlan; BestRow possui maior tempo de execução e consome mais memória; Consultas em Banco de Dados Amplamente Distribuídos

43 Selecionar bons Sub Planos
Três classes de funções de avaliação de planos: - Flat; - Ballooning; - Híbrida; Consultas em Banco de Dados Amplamente Distribuídos

44 Selecionar bons Sub Planos
“Flat” Verifica apenas as propriedades do plano; Fácil de implementar; Tempo constante; “Ballooning” Gera um plano completo a partir do sub plano e utiliza o custo do completo como métrica para avaliar o sub-plano Aumenta muito a complexidade, mas gera os melhores planos; Híbrida - Seleciona alguns sub-planos com uma função “flat” e então aplica “ballooning” para gerar um único. Consultas em Banco de Dados Amplamente Distribuídos

45 Avaliação de desempenho (entre as variantes)
Tempo de otimização IDP1 / k variável / consulta em cadeia com 10 tabelas Consultas em Banco de Dados Amplamente Distribuídos

46 Avaliação de desempenho (entre as variantes)
Tempo de otimização IDP2 / k variável / consulta em cadeia com 10 tabelas Consultas em Banco de Dados Amplamente Distribuídos

47 Avaliação de desempenho (entre as variantes)
Tempo de execução da primeira iteração comparado com as demais para “IDP1-standard-bestRow” Consultas em Banco de Dados Amplamente Distribuídos

48 Avaliação de desempenho (entre as variantes)
Custos IDP1 / k variável / consulta em cadeia com 10 tabelas Consultas em Banco de Dados Amplamente Distribuídos

49 Avaliação de desempenho (entre as variantes)
Custos IDP1 / k variável / consulta em estrela com 10 tabelas Consultas em Banco de Dados Amplamente Distribuídos

50 Avaliação de desempenho (entre as variantes)
Custos IDP2 / k variável / consulta em cadeia com 10 tabelas Consultas em Banco de Dados Amplamente Distribuídos

51 Avaliação de desempenho (entre as variantes)
Custos IDP2 / k variável / consulta em estrela com 10 tabelas Consultas em Banco de Dados Amplamente Distribuídos

52 Avaliação de desempenho (entre as variantes)
Conclusões As variantes “bestRow” produzem planos melhores que “bestPlan”; As variantes “Balanced” produzem planos melhores que as “Standard” Tanto para IDP1 como para IDP2 a melhor opção é “Balanced-bestRow” Consultas em Banco de Dados Amplamente Distribuídos

53 Avaliação de desempenho (IDP X “Dynamic Programming” X 2PO)
Custos por tempo de execução s = 3 / consulta com 10 tabelas Estrela Cadeia Consultas em Banco de Dados Amplamente Distribuídos

54 Consultas em Banco de Dados Amplamente Distribuídos
Conclusões IDP produz, na maioria das situações, planos muito bons devido a programação dinâmica e overhead aceitável usando heurísticas se necessário; O IDP produz melhores planos que outros algoritmos em situações que a programação dinâmica não viável; Facilmente integráveis a um otimizador existente baseado em programação dinâmica; Consultas em Banco de Dados Amplamente Distribuídos

55 Consultas em Banco de Dados Amplamente Distribuídos
Conclusões IPD também é capaz de se adaptar em casos onde não existem recursos suficientes disponíveis ou a consulta é muito complexa para a programação dinâmica. IDP é melhor que aproximações randômicas e heurísticas para otimização de consultas. Consultas em Banco de Dados Amplamente Distribuídos

56 Consultas em Banco de Dados Amplamente Distribuídos
Conclusões IDP1 e IDP2 poderiam ser combinados - Assim, o otimizador sempre gerará planos seguros porque IDP1 é adaptável e usuários podem sobrescrever valores “default” de k quando for usar IDP2 no processo de otimização. Testes se tornam difiíceis diante da alta complexidade. Consultas em Banco de Dados Amplamente Distribuídos

57 Consultas em Banco de Dados Amplamente Distribuídos
Referências DONALD KOSSMANN and KONRAD STOCKER. ACM Transactions on Database Systems, Vol. 25, No. 1, March 2000, Pages 43–82. Consultas em Banco de Dados Amplamente Distribuídos

58 Consultas em Banco de Dados Amplamente Distribuídos
Agradecemos a atenção! Consultas em Banco de Dados Amplamente Distribuídos


Carregar ppt "Consultas em Banco de Dados Amplamente Distribuídos"

Apresentações semelhantes


Anúncios Google