Академический Документы
Профессиональный Документы
Культура Документы
2/48
3/48
Dado a consulta:
SELECT EMPRESTIMO_ID FROM CONTA WHERE NOME_AGENCIA = SHOPPING AND SALDO = 1000,00;
4/48
Usar o ndice sobre NOME_AGENCIA e encontrar todos os registros pertencentes a agncia SHOPPING;
Usar o ndice sobre SALDO para encontrar todos os registros com saldo igual a 1000,00;
Usar o ndice sobre NOME_AGENCIA e encontrar todos os registros pertencentes a agncia SHOPPING; Usar o ndice sobre SALDO para encontrar todos os registros com saldo maior igual a 1000,00; Calcular a interseo dos dois conjuntos de ponteiros, o qual determina os valores procurados; Essa a nica estratgia que tira proveito da existncia de vrios ndices;
6/48
Existem muitos registros pertencentes a agncia SHOPPING; Existem muitos registros pertencentes a contas comum saldo igual a 1000,00; Existem apenas alguns registros pertencentes a ambas as condies;
Nessas condies necessrio varrer uma grande quantidade de ponteiros para produzir resultados pequenos;
7/48
(a1, a2) < (b1, b2) se; a1 < b1, ou; a1=b1 e a2 < b2;
8/48
ndice (NOME_AGENCIA,SALDO) podem retornar somente os registros que satisfaam ambas as condies:
SELECT EMPRESTIMO_ID FROM CONTA WHERE NOME_AGENCIA = SHOPPING AND SALDO = 1000,00
Uso de ndice separado podem resultar em menor eficincia, visto que podem retornar registros que contm somente uma das condies;
9/48
Uso eficiente:
SELECT EMPRESTIMO_ID FROM CONTA WHERE NOME_AGENCIA = SHOPPING AND SALDO < 1000,00; SELECT EMPRESTIMO_ID FROM CONTA WHERE NOME_AGENCIA = SHOPPING ;
Tambm no caso:
10/48
Uso No eficiente:
SELECT EMPRESTIMO_ID FROM CONTA WHERE NOME_AGENCIA < SHOPPING AND SALDO = 1000,00;
11/48
A criao de buckets de ponteiros de registros para lidar com chaves de busca no exclusivas;
Se o sistema admitir ids de registro; Ou um nmero que seja exclusivo entre todos os registros com o mesmo valor de chave;
ndice de Cobertura
So ndices que armazenam valores de alguns atributos (fora os atributos da chave de busca) junto com os ponteiros do registro;
Armazenar valores de atributo extra til com os ndices secundrios, pois podem responder algumas perguntas usando apenas o ndice, sem sequer pesquisar os registros reais;
13/48
Algumas organizaes de arquivos (exemplo rvores B+), podem mudar o local dos registros mesmo quando os registros no foram atualizados;
Exemplo: quando uma pgina de folha dividida em uma organizao de arquivo de rvore B+;
Essa operao pode exigir muitas operaes de I/O para atualizar todos os ndices secundrios afetados;
Uma tcnica para lidar com esse problema nos ndices secundrios, no lugar de ponteiros para os registros indexados, armazenamos os valores dos atributos de chave de busca do ndice primrio;
14/48
Assim, a relocao de registros devido a divises de pgina de folha no exige qualquer atualizao sobre tal ndice secundrio;
Primeiro, usado o ndice secundrio para encontrar os valores de chave de busca do ndice primrio; Segundo, usar o ndice primrio para encontrar os registros correspondentes;
Essa tcnica reduz o custo da atualizao de ndice embora aumente o custo do acesso aos dados, usando ndice secundrio;
15/48
16/48
Hashing Esttico
Desvantagem da organizao de arquivo sequencial o acesso a estrutura de ndice para localizar dados, ou uma busca binria; As organizaes de arquivo baseadas na tcnica de hashing permitem evitar o acesso a uma estrutura de ndice;
Indica uma unidade de armazenamento que pode armazenar um ou mais registros; Normalmente um bloco de disco;
17/48
Hashing Esttico
Em uma organizao de arquivo de hash, obtemos o endereo do bloco de disco contendo um registro desejado diretamente calculando uma funo sobre o valor de chave de busca do registro; Em uma organizao de ndice de hash, organizamos as chaves de busca, com seus ponteiros associados, para uma estrutura de arquivo de hash;
18/48
Hashing Esttico
Funo de hashing (h) uma funo para um conjunto de todos os valores de busca (K) para o conjunto de todos os endereos de bucket (B);
Para inserir um registro com chave de busca Ki, calculamos h(ki), que oferece o endereo do bucket para esse registro; Para realizar uma pesquisa sobre o valor de chave de busca Ki, simplesmente calculamos h(ki), depois pesquisamos o bucket com esse endereo;
Da mesma maneira usado para pesquisa usado para operaes de excluso e insero;
19/48
Hashing Esttico
Registros com diferentes chaves de busca podem ser mapeados para o mesmo bucket;
Nesses casos, temos de verificar o valor de chave de busca de cada registro no bucket para verificar se o registro o que procuramos;
20/48
Funes de Hash
A pior funo de hash possvel mapeia todos os valores de chave de busca para o mesmo bucket; A funo de hash ideal distribui as chaves armazenadas uniformemente por todos os buckets, de modo que cada um tenha o mesmo nmero de registros;
21/48
Funes de Hash
Qualidade da distribuio:
Uniforme:
A funo hash atribui a cada bucket o mesmo nmero de valores de chave de busca do conjunto de todos os valores de chave de busca possvel; No caso mais comum, cada bucket ter quase o mesmo nmero de valores atribudos a ele, independente da distribuio real dos valores de chave de busca;
Aleatria:
O valor de hash no estar relacionado a qualquer ordenao exteriormente visvel sobre os valores da chave de busca;
22/48
Funes de Hash
As funes hash tpicas realizam clculos sobre a representao de mquinas binrias interna dos caracteres na chave de busca; Uma funo hash simples desse tipo, primeiro calcula a soma das representaes binrias dos caracteres de uma chave, depois retorna o mdulo da soma dos nmeros dos buckets;
23/48
Funes de Hash
Uma funo hash errada pode resultar em um tempo de pesquisa proporcional ao nmero de chaves de busca no arquivo; Uma funo bem projetada oferece um tempo de pesquisa mdio constante (e pequeno), independente do nmero de chaves de busca no arquivo;
24/48
Estouro de bucket quando um bucket no tiver mais espao suficiente; Motivos para estouro de bucket:
Bucket insuficientes:
O nmero de buckets deve ser suficiente para armazenar o nmero total de registros pelo nmero de registros que podem ser armazenados em um bucket; Quando armazenado mais registros em um determinado bucket do que nos demais;
Distoro:
Vrios registros com mesma chave de busca; Distribuio no uniforme pela funo hash;
25/48
( nr / fr ) * ( 1 + d ), onde:
nr o nmero total de registros; fr o nmero de registros suportado por um bucket; d o fator de fudge, normalmente 0,2; Mas diminui a probabilidade de estouro;
26/48
Buckets de estouro;
Todos os buckets de estouro de determinado bucket so encadeados em uma lista interligada; Chamado de encadeamento de estouro;
27/48
Hashing fechado;
Hashing aberto:
Conjunto de buckets fixo; Quando um bucket estiver cheio, o sistema insere registros em algum outro bucket no conjunto inicial de buckets;
28/48
ndices de Hash
O hashing pode ser usado no apenas para organizao de arquivo, mas tambm para criao da estrutura de ndice; Um ndice de hash organiza as chaves de busca, com seus ponteiros associados em uma estrutura de arquivo de hash; aplicado uma funo hash sobre uma chave de busca para identificar um bucket;
ndices de Hash
ndice de hash;
Estritamente, os ndices de hash so apenas estruturas de ndice secundrias: Um ndice de hash nunca necessrio como uma estrutura de ndice agrupado;
Se um arquivo j estiver organizado por hashing, no ser necessria uma estrutura de ndice de hash separada sobre este arquivo; Mas podemos utilizar um arquivo organizado de hashing tambm possuindo um ndice de hash agrupado;
30/48
31/48
Hashing Dinmico
So tcnicas que permitem que a funo de hash seja modificada dinamicamente para acomodar o crescimento ou encolhimento do banco de dados; Usando hashing esttico, temos as opes:
Escolha uma funo hash com base no tamanho do arquivo atual, depreciando o desempenho quando o banco de dados crescer: Escolha uma funo hash com base no tamanho antecipado do arquivo em algum tempo futuro, alocando espao extra inicialmente; Reorganizao peridica da estrutura de hash em resposta ao crescimento do arquivo;
Escolha de nova funo hash, recalculo da nova funo hash e gerando novas organizao dos buckets;
Estrutura de Dados
O hashing extensvel lida com as mudanas no tamanho do banco de dados, dividindo e unindo os buckets enquanto o banco de dados cresce;
Mantem a eficincia de espao alocado; Como a reorganizao realizada somente em um bucket de cada vez, a sobrecarga resultante no desempenho aceitavelmente baixa;
33/48
Estrutura de Dados
Com o hash extensvel, escolhemos uma funo de hash h com as propriedades desejveis de uniformidade e aleatoriedade;
Porm, essa funo de hash gera valores por um intervalo relativamente grande;
Inteiros binrios de b bits, sendo um valor tpico de b 32, o que seria 232 mais de 4 bilhes; No usado os b bits inteiros de hash inicialmente;
Esses i bits so usados como um deslocamento para uma tabela adicional de endereos de buckets;
Estrutura de Dados
O i que aparece acima da tabela de endereos de buckets indica que i bits do valor de hash h(k) so necessrios para determinar o bucket correto para k; Esse nmero mudar de acordo com o tamanho do arquivo; Embora i bits sejam necessrios para encontrar a entrada correta na tabela de endereos de bucket, vrias entradas de tabela consecutivas podem apontar para o mesmo bucket;
35/48
Consultas e Atualizaes
36/48
Desempenho no diminui quando o arquivo aumenta; Sobrecarga mnima de espao; Embora a tabela de endereos de buckets gere uma sobrecarga adicional, contm um ponteiro de para cada valor de hash para o tamanho de prefixo atual; Nenhum bucket precisa ser reservado para crescimento futuro:
37/48
O sistema precisa acessar a tabela de endereos de bucket antes de acessar o prprio bucket;
Hash extensvel:
38/48
39/48
Considerar as questes:
O custo da reorganizao peridica da organizao de ndice ou hash aceitvel? Qual a frequncia relativa de insero ou excluso? desejvel otimizar o tempo mdio de acesso as custas de aumentar o tempo de acesso no pior caso? Que tipo de consultas os usurios provavelmente realizaram?
40/48
Indexao ordenada, a menos que se saiba com antecedncia que as consultas de intervalos sero pouco frequentes, quando seria escolhido o hashing; As organizaes de hash so particularmente teis para arquivos temporrios criados durante o processamento da consulta, se as pesquisas baseadas em um valor de chave forem exigidas, mas nenhuma consulta de intervalo ser realizada;
41/48
42/48
So um tipo especializado de ndice projetado para facilitar a consulta sobre chaves mltiplas;
Embora cada ndice de mapa de bits seja baseado em uma nica chave;
Particularmente fcil de se conseguir se os registros tiverem tamanho fixo e alocados em blocos consecutivos de um arquivo;
O nmero de registro pode ser traduzido para um nmero de bloco e um nmero de bloco que identifica o registro dentro do bloco;
43/48
44/48
Em sua forma mais simples, um ndice de mapa de bits sobre o atributo A da relao r consiste em um mapa de bits para cada valor que A pode assumir; Cada mapa de bits possui tantos bits quanto quanto o nmero de registros da relao; Os ndices de mapa de bits so teis para selees principalmente quando existem selees sobre chaves mltiplas;
Se a frao for grande, a varredura da relao continua sendo a alternativa mais barata;
Importante estratgia quando se quer determinar o nmero de tuplas que satisfaz determinada restrio;
45/48
Um mapa de bits geralmente no passa de uma frao do tamanho real da relao; A excluso de registros cria lacunas nas sequencias de registros, pois seria dispendioso;
46/48
Para relaes em que alguns valores de atributo so extremamente comuns; E tambm, para valores com um frequncia muito baixa;
47/48
Referncias
[ELMSARI-2005] Ramez Elmasri e Shamkant B, Navathe, Sistemas de Banco de Dados, Pearson Addison Wesley, 2005; [SILBERSCHATZ-2006] Abraham Silverschatz, Henry F. Korth e S. Sudarshan, Sistema de Banco de Dados, Editora Campus, 2006;
48/48