Consultas em Banco de Dados Distribuídos

Propaganda
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
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
2
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
3
Processamento de consultas
Consultas em Banco de Dados
Amplamente Distribuídos
4
Otimizadores de Consultas
Recebe uma consulta feita de forma declarativa com SQL ou OQL e
encontra a melhor forma de executar a consulta;
Passos:
a)
b)
c)
d)
e)
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
5
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
6
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
7
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
8
Programação Dinâmica
Consultas em Banco de Dados
Amplamente Distribuídos
9
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
10
Programação Dinâmica
Exemplo:
Passo 1:
Mais
Rápida!
Passo 2:
Não é
Enumerada!
Consultas em Banco de Dados
Amplamente Distribuídos
11
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
12
Algoritmos Gulosos
Consultas em Banco de Dados
Amplamente Distribuídos
13
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
14
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
15
Algoritmos Gulosos
• Sistema Centralizado
– Tempo de complexidade: O(n3)
– Espaço de complexidade: O(n)
Consultas em Banco de Dados
Amplamente Distribuídos
16
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
17
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
18
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
19
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
20
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
21
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
22
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
23
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
24
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
25
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
26
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
27
Programação Dinâmica Iterativa
Consultas em Banco de Dados
Amplamente Distribuídos
28
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
29
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
30
IDP 1
Exemplo: junção com 5 tabelas, k = 3
Consultas em Banco de Dados
Amplamente Distribuídos
31
IDP 1
Consultas em Banco de Dados
Amplamente Distribuídos
32
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
33
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
34
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
35
IDP 2
Complexidade:
• Tempo: O(n * (n2 + s3 * 3k))
para muitas tabelas...
• Espaço: O(n + s x 2k + s3)
para muitas tabelas...
Consultas em Banco de Dados
Amplamente Distribuídos
36
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
otimizador existente baseado PD;
integrados
Consultas em Banco de Dados
Amplamente Distribuídos
em
um
37
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
38
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
39
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
40
IDP Standard vs Balanceada
Sub-Plano
Selecionado
pela versão
Standard
Plano Ótimo
Planos
Selecionados
Consultas em Banco de Dados
Amplamente Distribuídos
41
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
42
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
43
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
44
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
45
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
46
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
47
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
48
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
49
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
50
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
51
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
52
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
53
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
54
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
55
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
56
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
57
Agradecemos a atenção!
Consultas em Banco de Dados
Amplamente Distribuídos
58
Download