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

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

Métodos de Acesso Indice estruturado por Hash. Plano Geral Vantagens e Limitações Hash Estático Hash Extensível Hash Linear Comparação entre Hash Extensível.

Apresentações semelhantes


Apresentação em tema: "Métodos de Acesso Indice estruturado por Hash. Plano Geral Vantagens e Limitações Hash Estático Hash Extensível Hash Linear Comparação entre Hash Extensível."— Transcrição da apresentação:

1 Métodos de Acesso Indice estruturado por Hash

2 Plano Geral Vantagens e Limitações Hash Estático Hash Extensível Hash Linear Comparação entre Hash Extensível e Linear

3 Vantagens e Limitações Hash : excelente para seleção por igualdade na chave. Não suporta seleção range (>, < ) B-Trees suportam seleção range e são quase tão boas quanto Hash para igualdade. Muitos SGBDs só implementam índices estruturados por B- Trees Técnica de indexação Hash é muito útil na implementação do operador Junção, que inclu diversas seleções por igualdade Diferença de custo entre B-Tree e Hash é significativa neste caso.

4 Hash Estático N-1 h h(chave) mod N chave Páginas Primárias dos Buckets … … … Páginas de Overflow Entradas do tipo h = função hash

5 Busca h h(14) mod 6 = 2 14 … … … h(x) = x N = ….

6 Inserção h h(7) mod 6 = 1 7 … … Inserindo 4 3 Cheia

7 Supressão h h(25) mod 6 = 1 25 … … Suprimindo 4 3

8 Função Hash Componente importante da técnica hash Deve distribuir valores das chaves de maneira uniforme nos buckets. Número de buckets = N = parâmetro h(x) = a*x + b, a, b : parâmetros de ajuste

9 Custos Páginas primárias podem ser armazenadas em páginas de disco sucessivas. Caso não haja overflow Busca requer 1 I/O Inserção e Supressão requerem 2 I/O Custo pode ser alto se existem muitas páginas de overflow. Estratégia : criar inicialmente os buckets deixando 20% de área livre em cada um.

10 Desvantagens do Hash Estático Número de buckets é fixo Se arquivo encolhe muito, o espaço é desperdiçado, já que os buckets são fixos. Crescimento do arquivo produz longas cadeias de páginas de overflow, prejudicando performance da busca.

11 Alternativas Alternativa 1 : Periodicamente, modificar a função hash e reestruturar todo o arquivo de modo a evitar páginas de overflow. « Rehash » toma muito tempo Indice não pode ser utilizado durante o processo de « rehash ». Alternativa 2 : Hash dinâmicos Extensível Linear

12 Hash Extensível Solução 1 : quando algum bucket ficar cheio Dobrar o número de buckets Distribuir as entradas nos novos buckets Defeito : o arquivo todo deve ser lido e reorganizado e o dobro de páginas devem ser escritas. Espaço em alguns buckets é alocado bem antes de sua utilização efetiva. Solução 2 : utilizar um diretório de ponteiros para os buckets. Dobrar o número de entradas no diretório Separar somente os buckets que ficaram cheios.

13 Notação Para procurar, inserir ou suprimir entrada k* Aplicar h(k) h(k) identifica um bucket Duas chaves k1 e k2 podem ter h(k1) = h(k2)

14 Exemplo Diretório dos Ponteiros Profundidade Global 4*12*32*16* 2 1*5*21* 2 10* 2 15*7*19* 2 Bucket A Bucket B Bucket C Bucket D Páginas do Indice Profundidade Local

15 Exemplo – inserção Diretório 4*12*32*16* 2 1*5*21* 2 10* 2 15*7*19* 2 Páginas do Indice Inserindo 13* 13*

16 Exemplo – inserção Diretório 4*12*32*16* 2 1*5*21* 2 10* 2 15*7*19* 2 Inserindo 20* 13* 4*12*20* 2 32*16* 2

17 Exemplo – inserção Diretório 1*5*21* 2 10* 2 15*7*19* 2 Inserindo 20* 13* 4*12*20* 3 32*16* Global Local Bucket A1 Bucket A2 Bucket D Bucket C

18 Análise Se o diretório couber na memória Seleção com igualdade : 1 I/0 Se o diretório tiver que ser armazenado em disco Seleção com igualdade : 2 I/0

19 Hash Linear Assim como o Hash Extensível, o Hash Linear é ideal para inserções e supressões; Vantagem sobre extensível Lida muito bem com colisões Oferece muita flexibilidade Cadeias de overflow podem tornar o hash linear inferior em performance ao hash extensivel

20 Parâmetros e Contadores Nivel = indica a rodada atual Inicializado com 0 Next = bucket que deve ser dividido, se necessário Inicializado com 0 N m = número de buckets na rodada m N 0 = N N m = N*2 m Somente o bucket com número Next é dividido. Usa-se páginas de overflow para os outros buckets, se ficarem cheios. Após divisão, Next é incrementado.

21 Esquema Geral : rodada k Bucket Next a ser dividido Imagens dos buckets divididos Bucket b Bucket b + m Buckets existentes no inicio da rodada k m = número de buckets da rodada k

22 32*44*36* 9*25*5* 14* 31*35*7* 18*10*30* 11* Páginas Primárias Nivel = 0, N = 4 = 2 2 Next = 0 h0h0 h1h Esta informação não é armazenada ! Inserção de 43* h 0 (43) = 3 (11) 43* Next = 1 44*36* 00

23 32* 9*25*5* 14* 31*35*7* 18*10*30* 11* Nivel = 0, N = 4 = 2 2 h0h0 h1h Busca de 18* h 0 (18) = 2 (10) 43* Next = 1 44*36* 00 2 > Next Bucket 2 não foi dividido ainda 100

24 32* 9*25*5* 14* 31*35*7* 18*10*30* 11* Nivel = 0, N = 4 = 2 2 h0h0 h1h Busca de 32* e 44* h 0 (32) = 00 43* Next = 1 44*36* 00 0 < Next Bucket 0 já foi dividido ainda h 0 (44) = 00 h 1 (32) = 000 h 1 (44) = 100 Bucket

25 Inserção de 37* 32* 9*25*5* 14* 31*35*7* 18*10*30* 11* * Next = 1 44*36* h 0 (37) = 01 37*

26 Inserção de 29* 32* 9*25*5* 14* 31*35*7* 18*10*30* 11* * Next =1 44*36* h 0 (29) = 01 37* 5*37*29* Next =2

27 Incremento de Nível 32* 9*25* 66* 31*35* 7* 18*10*34* 11* * 44*36* h 0 (50) = 10 5*37*29* *30*22* h 1 (50) = * Next =3 Next =0 Nivel = 1 31* * 43* 11*


Carregar ppt "Métodos de Acesso Indice estruturado por Hash. Plano Geral Vantagens e Limitações Hash Estático Hash Extensível Hash Linear Comparação entre Hash Extensível."

Apresentações semelhantes


Anúncios Google