INF70 – Gerenciamento de Banco de Dados 2 Índices baseados em Hash Ilmério Reis da Silva...

of 41 /41
INF70 – Gerenciamento de Banco de Dados 2 Índices baseados em Hash Ilmério Reis da Silva [email protected] www.facom.ufu.br/~ilmerio/gbd2 UFU/FACOM/BCC

Embed Size (px)

Transcript of INF70 – Gerenciamento de Banco de Dados 2 Índices baseados em Hash Ilmério Reis da Silva...

  • Slide 1
  • INF70 Gerenciamento de Banco de Dados 2 ndices baseados em Hash Ilmrio Reis da Silva [email protected] www.facom.ufu.br/~ilmerio/gbd2 UFU/FACOM/BCC
  • Slide 2
  • Roteiro Fundamentos Hash Esttico Hash Extensvel Hash Linear Consideraes Finais
  • Slide 3
  • UFU/FACOM/BCC GBD2Pgina:3 Fundamentos
  • Slide 4
  • UFU/FACOM/BCC GBD2Pgina:4 Caractersticas melhor desempenho em busca por igualdade na chave, mas no melhora busca por intervalo (>,
  • UFU/FACOM/BCC GBD2Pgina:24 Regra de insero com split - Hash Extensvel Sejam: pl a profundidade local e pg a profundidade global; Incrementar pl; Criar novo bucket e Redistribuir entradas de acordo com pl-simo bit mais significativo de hash(k); SE (pl > pg), duplicar diretrio: Incrementar pg; Criar novas entradas no diretrio (i.e. duplicar); Apontar novas entradas p/ buckets originais(pl-1 bits); Atualizar ponteiro que apontar para o novo bucket, de acordo com os pl bits mais significativos de hash(k).
  • Slide 25
  • UFU/FACOM/BCC GBD2Pgina:25 Consideraes Finais Hash Extensvel diretrio geralmente cabe na memria Exemplo: 100MB em pginas de 4K 25000 entradas no diretrio remoo usa processo inverso, podendo reduzir tamanho do diretrio problema: distribuio no uniforme de chaves geram muitos splits localizados e, consequentemente, diretrio pode ter crescimento exagerado.
  • Slide 26
  • UFU/FACOM/BCC Hash Linear
  • Slide 27
  • UFU/FACOM/BCC Hash Linear No ha diretrio de buckets Pode haver pginas de overflow medida que os buckets se enchem Regularmente pginas de overflow so transformadas em novos buckets Regularmente a funo hash se modifica, dobrando a capacidade de endereamento de buckets
  • Slide 28
  • UFU/FACOM/BCC Parmetros e Contadores Nivel = indica a rodada atual, a funo de hash atual Inicializado com 0 Next = bucket que deve ser dividido, se necessrio Inicializado com 0 N m = nmero de buckets na rodada m N 0 = N N m = N*2 m Somente o bucket com nmero Next dividido. Usa-se pginas de overflow para os outros buckets, se ficarem cheios. Apos diviso, Next incrementado
  • Slide 29
  • UFU/FACOM/BCC Esquema Geral : rodada m Bucket Next a ser dividido Imagens dos buckets divididos next buckets divididos na rodada Bucket N m + next Buckets existentes no incio da rodada m N m = nmero de buckets no incio da rodada m
  • Slide 30
  • UFU/FACOM/BCC 32*44*36* 9*25*5* 14* 31*35*7* 18*10*30* 11* Nivel = 0, N = 4 = 2 2 Next = 0 h0h0 h1h1 00 01 10 11 000 001 010 011 Esta informao no armazenada ! h 0 (43) = 3 (11) 43* Next = 1 44*36* 00 Insero de 43* Insero provocando split e avano do next Paginas PrimariasPaginas de Overflow
  • Slide 31
  • UFU/FACOM/BCC 32* 9*25*5* 14* 31*35*7* 18*10*30* 11* Nivel = 0, N = 4 = 2 2 h0h0 h1h1 00 01 10 11 000 001 010 011 Busca de 18* h 0 (18) = 2 (10) 43* Next = 1 44*36* 00 2 > Next = 1 Bucket 2 no foi dividido ainda 100 Busca em bucket aps o next
  • Slide 32
  • UFU/FACOM/BCC 32* 9*25*5* 14* 31*35*7* 18*10*30* 11* Nivel = 0, N = 4 = 2 2 h0h0 h1h1 00 01 10 11 000 001 010 011 Busca de 32* e 44* h 0 (32) = 00 43* Next = 1 44*36* 00 0 < Next Bucket 0 ja foi dividido ! h 0 (44) = 00 h 1 (32) = 000 h 1 (44) = 100 Bucket 0 + 4 100 Busca em bucket antes o next
  • Slide 33
  • UFU/FACOM/BCC Insero de 37* 32* 9*25*5* 14* 31*35*7* 18*10*30* 11* 00 01 10 11 000 001 010 011 43* Next = 1 44*36* 00 100 h 0 (37) = 01 37* Insero sem split
  • Slide 34
  • UFU/FACOM/BCC Insero de 29* 32* 9*25*5* 14* 31*35*7* 18*10*30* 11* 00 01 10 11 000 001 010 011 43* Next =1 44*36* 00 100 h 0 (29) = 01 37* 5*37*29* 01101 Next =2 Insero com split e incremento no next
  • Slide 35
  • UFU/FACOM/BCC Insero do 50* 32* 9*25* 66* 31*35*7* 18*10*34* 11* 00 01 10 11 000 001 010 011 43* 44*36*00100 h 0 (50) = 10 5*37*29* 01101 14*30*22* 10110 h 1 (50) = 010 50* Next =3 Next =0 Nivel = 1 11111 31*7* 43*35*11* Insero com split e mudana de rodada
  • Slide 36
  • UFU/FACOM/BCC Comparando Duplicar diretrio x duplicar buckets Passagem de h i para h i+1 no Hash Linear corresponde a duplicar o diretorio no Hash Extensvel Hash Extensvel : diretrio duplicado num nico passo Hash Linear : duplicao do nmero de buckets se faz gradualmente
  • Slide 37
  • UFU/FACOM/BCC Comparando utilizao de espao nos buckets Hash Extensvel tem uma melhor ocupao dos buckets pois s se divide o bucket apropriado Hash Linear no precisa de diretrio: existe uma maneira precisa de se saber quais buckets foram divididos e quais devem ser divididos e em que circuntncias Buckets so alocados consecutivamente: possvel localizar a pgina do bucket m por um simples clculo de offsets.
  • Slide 38
  • UFU/FACOM/BCC Comparando Custo IO Extensvel x Linear Em busca por igualdade Hash Linear tem um custo I/O menor em caso de distribuio uniforme Hash Extensvel tem um custo menor em caso de distribuio no uniforme
  • Slide 39
  • UFU/FACOM/BCC Consideraes finais sobre Hash ndices baseados em hash so os melhores para busca com predicado de igualdade ndices baseados em hash no suportam busca por intervalo Hash esttico pode resultar em longas cadeias de overflow Hash extensvel usa diretrios para controlar crescimento do hash, evitando overflow Hash linear usa variao de funo para diminuir cadeias de overflow, gerando buckets linearmente Em geral distribuio no uniforme prejudica desempenho de ndices baseados em Hash
  • Slide 40
  • UFU/FACOM/BCC GBD2Pgina:40 Exerccios - ndices baseados em hash EXERCCIOS CAP 11 LIVRO-TEXTO
  • Slide 41
  • UFU/FACOM/BCC GBD2Pgina:41 FIM - ndices baseados em hash FIM - ndices baseados em hash* * material baseado no livro-texto e slides da Profa. Sandra de Amo