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

Slides:



Advertisements
Apresentações semelhantes
IFTO ESTRUTURA DE DADOS AULA 05 Prof. Manoel Campos da Silva Filho
Advertisements

UNICAMP Universidade Estadual de Campinas Centro Superior de Educação Tecnológica Divisão de Telecomunicações Propagação de Ondas e Antenas Prof.Dr. Leonardo.
AULA 8 Profa. Sandra de Amo GBC053 – BCC
Vamos contar D U De 10 até 69 Professor Vaz Nunes 1999 (Ovar-Portugal). Nenhuns direitos reservados, excepto para fins comerciais. Por favor, não coloque.
14/10/09 Uma animação possui: Início; Passo; Fim; 1.
Copyright (c) 2003 by Valery Sklyarov and Iouliia Skliarova: DETUA, IEETA, Aveiro University, Portugal.
1 INQUÉRITOS PEDAGÓGICOS 2º Semestre 2003/2004 ANÁLISE GERAL DOS RESULTADOS OBTIDOS 1.Nº de RESPOSTAS ao inquérito 2003/2004 = (42,8%) 2.Comparação.
Sumário Bem ou serviço compósito = dinheiro Exercícios 2 Exercícios 3.
Sumário, aula 9 Elasticidade Elasticidade arco Elasticidade no ponto
Hash Extensivel Rápido acesso a dados com um custo mínimo de processamento (overhead cost).
Indice estruturado por Hash
RESUMO DA AULA 5 Profa. Sandra de Amo GBC053 – BCC
Cálculos de Custos I/O-Arquivos Hash Introdução aos Métodos de Acesso
Indices estruturados por B-TREE
Organização de Arquivos Cálculo de Custos de I/O Arquivos Hashed AULA 7 – Parte I Profa. Sandra de Amo GBC053 – BCC
Algoritmos de Junção – BNL e IndexNL AULA 16 Profa. Sandra de Amo GBC053 – BCC
Organização de Arquivos Introdução
Algoritmos para Operação de Junção
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Estimativas de Custos: Arquivos Heap, Ordenados e Hashed Indices e Métodos de Acesso AULA 13 Profa. Sandra de Amo Programa de Pós-graduação em Ciência.
Organização de Arquivos Tipos de Indices Cálculo de Custos de I/O
AULA 10 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
Algoritmos para Seleção Simples
AULA 23 Profa. Sandra de Amo GBC053 – BCC
Gerenciamento de Arquivos, Páginas e Registros
Introdução aos Métodos de Acesso AULA 7 – Parte II Profa. Sandra de Amo GBC053 – BCC
B-tree Gerenciamento de Duplicatas Bulk Loading AULA 12 Profa. Sandra de Amo GBC053 – BCC
Método de Acesso Dinâmico - B-Tree AULA 14 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados
Método de Acesso Dinâmico: B-Tree - Deleção Chaves de busca sem duplicatas AULA 9 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operação de Junção AULA 17 Profa. Sandra de Amo Programa de Pós-Graduação em CC - UFU Sistemas de Banco de Dados
Revisão Prova 2 Métodos de Acesso: BTree e Hash AULA 20 Profa. Sandra de Amo GBC053 – BCC
Hashing Extensível o espaço de endereços disponíveis não é fixo
Arquivos Extensíveis.
Estruturas de Dados e Algoritmos
Indexação e Hashing Muitas consultas referenciam apenas uma pequena porção dos registros em uma tabela. Portanto necessitamos ser capaz de localizar estes.
Capítulo 6 Sistemas de Arquivos 6.1 Arquivos 6.2 Diretórios
Estudo de Caso 1: UNIX e LINUX
Aula 4 Nomes, Vinculações, Tipos e Escopos
Listas Encadeadas.
Classes e objetos P. O. O. Prof. Grace.
Provas de Concursos Anteriores
MATEMÁTICA PARA NEGÓCIOS
Renda até 2 SM.
Módulo Financeiro Centro de Custo.
MECÂNICA - ESTÁTICA Cabos Cap. 7.
Sistemas Operacionais
MECÂNICA - DINÂMICA Exercícios Cap. 13, 14 e 17. TC027 - Mecânica Geral III - Dinâmica © 2013 Curotto, C.L. - UFPR 2 Problema
PROGRAMAÇÃO LINEAR EXERCÍCIOS PROPOSTOS.
Árvores binárias de pesquisa com balanceamento
INF70 – Gerenciamento de Banco de Dados 2 Ordenação Externa Ilmério Reis da Silva UFU/FACOM/BCC.
Estruturas de Dados com Jogos
Indices: Estruturas Auxiliares para Otimizar Acesso aos Dados
Algorítmos e estrutura de dados III
Algorítmos e estrutura de dados III
SISTEMAS OPERACIONAIS
Revisão Prova 2 Métodos de Acesso – Parte 2 AULA 21 Profa. Sandra de Amo GBC053 – BCC.
Modelagem Estatística
Operações de Inserção e Remoção – BTree Resumo
VI Fórum Banco Central sobre Inclusão Financeira
Arquivos Estruturados por Hashing– Custos I/O
Estruturas de Dados Aula 5: Matrizes
Campus de Caraguatatuba Aula 8: Noções Básicas sobre Erros (2)
ELETRÔNICA DIGITAL Circuitos Aritméticos
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
Caminhos da Cana Relatório e show de imagens Marcos Fava Neves Prof. FEA/USP Ribeirão Preto Purdue University (2013)
AULA 21 Profa. Sandra de Amo BCC - UFU
Algoritmos de Junção – IndexNL e Sort Merge Join AULA 19 Profa. Sandra de Amo GBC053 – BCC.
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Transcrição da apresentação:

INF70 – Gerenciamento de Banco de Dados 2 Índices baseados em Hash Ilmério Reis da Silva UFU/FACOM/BCC

Roteiro Fundamentos Hash Estático Hash Extensível Hash Linear Considerações Finais

UFU/FACOM/BCC GBD2Página:3 Fundamentos

UFU/FACOM/BCC GBD2Página:4 Características melhor desempenho em busca por igualdade na chave, mas não melhora busca por intervalo (>, <) alguns SGBDs só implementam Árvore B+ o PostgreSql implementa também Tabelas Hash hash apresenta ganho significativo em junções EquiJoin função hash. hash : set of keys set of bucket ids Hash ideal: distribuição uniforme das entradas nos buckets conteúdo dos buckets: alternativas (1), (2) ou (3)

UFU/FACOM/BCC GBD2Página:5 Função Hash Exemplo: hash(k) = h(k) mod B, onde h : set of keys integer B : é o número de buckets disponíveis SE k é inteiro, use –h(k) = k ou –h(k) = a k + b, sendo a e b empíricos.

UFU/FACOM/BCC GBD2Página:6 Classificação Hash Estático: conjunto de buckets fixo problemas com cadeias de overflow. Hash Dinâmico: cria buckets de forma dinâmica para evitar ou reduzir cadeias de overflow Hash Extensível: usa mais um nível de indireção diretório indexado por uma sequência de bits; havendo split, a sequência de bits cresce Hash Linear: ameniza impacto do crescimento, tolerando poucos overflows; novos buckets são criados linearmente compromisso(trade-off) de Hash Estático x Hash Dinâmico é análogo ao compromisso ISAM x B-Tree

UFU/FACOM/BCC GBD2Página:7 Hash Estático

UFU/FACOM/BCC GBD2Página:8 Alocação de área para buckets Alocação de N páginas sucessivas no disco Cada bucket terá entradas de dados (Alt. 1, 2 ou 3) N-1 Páginas Primárias dos Buckets

UFU/FACOM/BCC GBD2Página:9 Alocação dinâmica de páginas de overflow Páginas de overflow são alocadas de forma dinâmica N-1 Páginas Primárias dos Buckets … … … Páginas de Overflow

UFU/FACOM/BCC GBD2Página:10 Alocação dinâmica de páginas de overflow Seja k a chave do hash, então a localização do bucket será por meio da função hash Entradas do tipo N-1 hash hash(k)=h(k) mod N k Páginas Primárias dos Buckets … … … Páginas de Overflow

UFU/FACOM/BCC Busca hash h(14) mod 6 = 2 14 … … … Páginas Primárias dos Buckets h(x) = x N = ….

UFU/FACOM/BCC Inserção hash h(7) mod 6 = 1 7 … … Páginas Primárias dos Buckets Inserindo 4 3 Cheia

UFU/FACOM/BCC Remoção hash h(25) mod 6 = 1 25 … … Suprimindo 4 3 Páginas Primárias dos Buckets

UFU/FACOM/BCC GBD2Página:14 Considerações finais sobre Hash Estático usualmente bucket = h(k) mod B, onde B = 2 L custo depende do tamanho das cadeias de overflow páginas primárias geralmente são contíguas no disco bucket não é removido, mesmo ficando sem entradas cadeia de overflow é dinâmica e degrada desempenho uma estratégia é deixar 20% de área livre nas páginas primárias

UFU/FACOM/BCC GBD2Página:15 Hash Extensível

UFU/FACOM/BCC GBD2Página:16 Evitando cadeias de overflow Solução ingênua Seja B o número de páginas primárias Solução ingênua: SE inserção em página primária cheia faça B=2 * B reorganize todos os buckets Problema: a reorganização de todos os buckets é computacionalmente cara, tornando esta solução inviável.

UFU/FACOM/BCC GBD2Página:17 Evitando cadeias de overflow Hash Extensível Um diretório de ponteiros para buckets SE inserção em página primária cheia crie um novo bucket dobre o tamanho do diretório reorganize a função hash Problema: a reorganização da função hash é um pouco complexa, mas considerando que o diretório cabe na memória, é computacionalmente viável.

UFU/FACOM/BCC Diretorio de ponteiros para buckets Diretório : so armazena ponteiros para os buckets Bucket 1 Contém todas as entradas tais que h(k) mod N = N-1 Bucket 2 0 Bucket N-1 Bucket 0

UFU/FACOM/BCC GBD2Página:19 Funcionamento Função hash não varia O número N de entradas no diretório varia A medida que os buckets se enchem, estes se duplicam, e o diretório de buckets também pode duplicar. Atenção somente um bucket por vez é duplicado Resultado: se um único bucket duplica, o diretório todo pode duplicar vários ponteiros do diretório podem apontar para o mesmo bucket só duplicam os buckets que ficam cheios. ao contrário do hash estático, registros em buckets duplicados (decorrentes de um overflow) podem ser facilmente localizados através do novo ponteiro no diretório de buckets.

UFU/FACOM/BCC Exemplo Diretorio 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 Paginas de dados Profundidade Local N = 4 = 2 2 Ultimos 2 digitos da representação binaria de h(k)

UFU/FACOM/BCC Inserção simples Diretorio 4*12*32*16* 2 1*5*21* 2 10* 2 15*7*19* 2 Paginas de dados (buckets) Inserindo 13* 13*

UFU/FACOM/BCC Diretorio 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 Inserção em bucket cheio Split do bucket

UFU/FACOM/BCC Diretorio 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 N = 8 = 2 3 Ultimos 3 digitos da representação binaria de h(k) 110 Inserção em bucket cheio Duplica diretório e reorganiza da função hash

UFU/FACOM/BCC GBD2Página:24 Regra de inserção com split - Hash Extensível 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 diretório: Incrementar pg; Criar novas entradas no diretório (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).

UFU/FACOM/BCC GBD2Página:25 Considerações Finais – Hash Extensível diretório geralmente cabe na memória Exemplo: 100MB em páginas de 4K entradas no diretório remoção usa processo inverso, podendo reduzir tamanho do diretório problema: distribuição não uniforme de chaves geram muitos splits localizados e, consequentemente, diretório pode ter crescimento exagerado.

UFU/FACOM/BCC Hash Linear

UFU/FACOM/BCC Hash Linear Não ha diretório de buckets Pode haver páginas de overflow à medida que os buckets se enchem Regularmente páginas de overflow são transformadas em novos buckets Regularmente a função hash se modifica, dobrando a capacidade de endereçamento de buckets

UFU/FACOM/BCC Parâmetros e Contadores Nivel = indica a rodada atual, a função de hash 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. Apos divisão, Next é incrementado

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 início da rodada m N m = número de buckets no início da rodada m

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 h1h Esta informação não é armazenada ! h 0 (43) = 3 (11) 43* Next = 1 44*36* 00 Inserção de 43* Inserção provocando split e avanço do next Paginas PrimariasPaginas de Overflow

UFU/FACOM/BCC 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 = 1 Bucket 2 não foi dividido ainda 100 Busca em bucket após o next

UFU/FACOM/BCC 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 ja foi dividido ! h 0 (44) = 00 h 1 (32) = 000 h 1 (44) = 100 Bucket Busca em bucket antes o next

UFU/FACOM/BCC 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* Inserção sem split

UFU/FACOM/BCC 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 Inserção com split e incremento no next

UFU/FACOM/BCC Inserção do 50* 32* 9*25* 66* 31*35*7* 18*10*34* 11* * 44*36*00100 h 0 (50) = 10 5*37*29* *30*22* h 1 (50) = * Next =3 Next =0 Nivel = *7* 43*35*11* Inserção com split e mudança de rodada

UFU/FACOM/BCC Comparando Duplicar diretório x duplicar buckets Passagem de h i para h i+1 no Hash Linear corresponde a duplicar o diretorio no Hash Extensível Hash Extensível : diretório é duplicado num único passo Hash Linear : duplicação do número de buckets se faz gradualmente

UFU/FACOM/BCC Comparando utilização de espaço nos buckets Hash Extensível tem uma melhor ocupação dos buckets pois só se divide o bucket apropriado Hash Linear não precisa de diretório: existe uma maneira precisa de se saber quais buckets foram divididos e quais devem ser divididos e em que circuntâncias Buckets são alocados consecutivamente: é possível localizar a página do bucket m por um simples cálculo de offsets.

UFU/FACOM/BCC Comparando Custo IO Extensível x Linear Em busca por igualdade Hash Linear tem um custo I/O menor em caso de distribuição uniforme Hash Extensível tem um custo menor em caso de distribuição não uniforme

UFU/FACOM/BCC Considerações finais sobre Hash índices baseados em hash são os melhores para busca com predicado de igualdade íındices baseados em hash não suportam busca por intervalo Hash estático pode resultar em longas cadeias de overflow Hash extensível usa diretórios para controlar crescimento do hash, evitando overflow Hash linear usa variação de função para diminuir cadeias de overflow, gerando buckets linearmente Em geral distribuição não uniforme prejudica desempenho de índices baseados em Hash

UFU/FACOM/BCC GBD2Página:40 Exercícios - Índices baseados em hash EXERCÍCIOS CAP 11 LIVRO-TEXTO

UFU/FACOM/BCC GBD2Página:41 FIM - Índices baseados em hash FIM - Índices baseados em hash* * material baseado no livro-texto e slides da Profa. Sandra de Amo