BANCO DE DADOS DISTRIBUÍDOS e DATAWAREHOUSING http://www.uniriotec.br/~tanaka/tin0036 tanaka@uniriotec.br Bancos de Dados Distribuídos Processamento de Consultas
Ambiente com SGBD Distribuído
Processamento de Consultas Um problema (bem) resolvido em SGBDs centralizados Tradução de consultas em linguagem de alto nível para código executável Etapas do processamento Sintática (scan/parse e validação) Otimização Geração de código executável Execução da consulta
Processamento de Consultas Consulta em Alto Nível Processador de Consultas Resultado da Consulta
Consulta em Alto Nível SQL SELECT Scan, Parse e Validação Forma intermediária de Consulta Álgebra Relacional / Árvore ou Grafo de Consulta Otimizador de Consulta Plano de Execução Estratégia de execução escolhida dentre várias Gerador de Código Código para execução da consulta Pode ser executado diretamente (Modo interpretado) Ou armazenado e executado quando necessário (Modo compilado) Processador Run Time Resultado da Consulta
Otimização de Consultas Envolve escolha de algoritmos para implementação de operações relacionais Seleção Busca linear (força bruta); busca binária; uso de índice primário (ou hashing); uso de índice de agrupamento; uso de índice secundário em árvore B+, etc. Junção Nested loop (força bruta); single-loop; sort-merge; hash-join Projeção e operações de conjuntos Operações agregadas
Otimização de Consultas Por heurística Regra que funciona bem na maioria dos casos mas não é garantido funcionar bem em todos os casos possíveis Tipicamente reordenam as operações numa árvore de consulta Por estimativa de custo O otimizador estima (através de estatísticas) e compara os custos de diferentes estratégias de execução e escolhe aquela com a menor estimativa de custo. O número de estratégias consideradas deve ser limitado. Função de custo envolve seguintes componentes: acesso a disco, armazenamento, computação, uso de memória, comunicação.
Processamento de Consultas em BDs Distribuídos Num sistema distribuído, diversos fatores adicionais complicam o processamento de consultas. O principal é o custo de transferência de dados através da rede, que envolve arquivos intermediários que são transferidos entre sites para posterior processamento, bem como arquivos com resultados finais que são transferidos para o site que necessita dos resultados. Por isso, os algoritmos de otimização de consultas em SGBDs distribuídos consideram o objetivo de reduzir o volume de transferência de dados como um critério de otimização na escolha da estratégia de eecução de uma consulta distribuída.
Exemplo
Exemplo simples Para cada empregado, obter o nome do empregado e o nome do departamento no qual o empregado trabalha. Q: p FNAME,LNAME,DNAME (EMPLOYEE DNO=DNUMBER DEPARTMENT) A consulta Q é submetida no site 3. Estratégias: 1. Transferir as relações para o site 3 e executar a junção (1.003.500 bytes transferidos) 2. Transferir EMPLOYEE para o site 2, executar a junção, e enviar o resultado para o site 3 (1.400.000 bytes transferidos) 3. Transferir DEPARTMENT para o site 1, executar a junção e enviar o resultado para o site 3 (403.500 bytes transferidos)
Outro exemplo simples Para cada departamento, o nome do departamento e o nome do gerente do departamento. Q : p FNAME,LNAME,DNAME (DEPARTMENT MGRSSN=SSN EMPLOYEE) A consulta Q também é submetida no site 3. Estratégias: 1. Transferir as relações para o site 3 e executar a junção (1.003.500 bytes transferidos) 2. Transferir EMPLOYEE para o site 2, executar a junção, e enviar o resultado para o site 3 (1.004.000 bytes transferidos) 3. Transferir DEPARTMENT para o site 1, executar a junção e enviar o resultado para o site 3 (7.500 bytes transferidos)
Exemplos usando semijoin Projetar s atributos de junção de DEPARTMENT no site 2 e transferir para o site 1. Para Q, serão transferidos 4*100 = 400 bytes (junção por DNUMBER) Para Q, serão transferidos 9*100 = 900 bytes (junção por MGRSSN) Juntar o arquivo transferido com a relação EMPLOYEE no site 1 e transferir os atributos requeridos do arquivo resultante para o site 2. Para Q serão transferidos 34 * 10.000 = 340.000 bytes (DNO,FNAME,LNAME) Para Q, serão transferidos 39 * 100 = 3.900 bytes (MGRSSN,FNAME,LNAME) Executar a consulta fazendo a junção dos arquivos transferidos com DEPARTMENT no site 2, e apresentar o resultado ao usuário no site 2. Para Q, 400 + 340.000 = 340.400 bytes Para Q, 900 + 3.900 = 4.800 bytes Mais o volume a transferir para o site 3, caso este fosse o site requisitante.