Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14....
Transcript of Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14....
![Page 1: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/1.jpg)
indexação e hashingConstrução de Índices e Funções Hash
Diego Gomes Tomé - MSc. InformáticaOrientador: Prof. Dr. Eduardo AlmeidaOctober 13, 2016
Universidade Federal do Paraná
![Page 2: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/2.jpg)
indexação e hashing
Índices
∙ Conceitos Básicos∙ Classificação
Hashing
∙ Conceitos Básicos∙ Funções Hash Estáticas∙ Funções Hash Dinâmicas∙ Resolução de Colisões
1
![Page 3: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/3.jpg)
índices
![Page 4: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/4.jpg)
índices - conceitos básicos
Ás vezes, nós queremos recuperar os registros de uma tabelaespecificando os valores de um ou mais campos
∙ Encontrar todos os estudantes cujo curso é ’BCC’∙ Encontrar todos os estudantes cujo CR > 7
Um Índice recupera os registros de forma rápida. através de umachave de pesquisa
∙ Qualquer subconjunto dos campos de uma relação podem seruma chave de pesquisa
∙ Chave de Pesquisa não é uma chave primária, pois não precisanecessariamente ser única
3
![Page 5: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/5.jpg)
índices - conceitos básicos
Índice
∙ Coleção de entradas de dados que suporta a recuperaçãoeficiente de registros combinando uma certa condição depesquisa.
Seletividade
∙ Medida da quantidade de variedade existente nos valores deuma dada coluna em relação ao número total de linhas de umadada tabela.
4
![Page 6: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/6.jpg)
índices - classificação
![Page 7: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/7.jpg)
índices - classificação
Índices podem ser:
∙ Agrupados (Clustered) ou Desagrupados (Unclustered)∙ Denso ou Esparso∙ Primário ou Secundário
6
![Page 8: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/8.jpg)
índices - classificação - clustered vs unclustered
Agrupado (Clustered)∙ Se a ordem dos registros edos índices é a mesma oupróxima
Desagrupado (Unclustered)∙ Não existe ordem
7
![Page 9: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/9.jpg)
índices - classificação - denso vs esparso
Esparso∙ Um dado de entrada paracada página de arquivo
∙ Usa menos espaço dearmazenamento, porém levamais tempo para localizar umregistro dada a sua chave
Denso∙ Pelo menos um dado deentrada por chave-valor
∙ Seqüência de blocoscontendo apenas as chavesdos registros e os ponteirospara os próprios registros
8
![Page 10: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/10.jpg)
índices - classificação - primário vs secundário
Primário∙ Baseado na chave deordenação
∙ Nunca contém duplicidade
Secundário∙ Qualquer outro índice decampo não ordenado
∙ Os ponteiros não apontamdiretamente para o arquivocom registros, mas para umbucket que contém ponteirospara o arquivo
9
![Page 11: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/11.jpg)
hashing
![Page 12: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/12.jpg)
hashing - conceitos básicos
Problema
∙ Como Encontrar um cliente cujo id = 123 ? (Consultas pontuais)∙ Considerando 999.999.999 clientes (Muitos Registros)
11
![Page 13: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/13.jpg)
hashing - conceitos básicos
Bucket
∙ Um arquivo de hash armazena os dados em formato de bucket.Bucket é considerado uma unidade de armazenamento.Normalmente armazena um bloco de disco completo, que porsua vez pode armazenar um ou mais registros.
Função Hash
∙ A função hash, h, é uma função de mapeamento que mapeiatodo o conjunto de chaves de pesquisa K para o endereço ondeos registros reais são colocados. É uma função de chaves depesquisa para endereços dos Buckets.
12
![Page 14: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/14.jpg)
funções hash estáticas
![Page 15: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/15.jpg)
funções hash estáticas
Funções Hash Estáticas
∙ Transformar cada chave de busca de 0, 1, ..., N em um intervalode 0, 1, ..., M
∙ Utilizando uma função hash(key)∙ Podem ser Clustered ou Unclustered∙ Tempo médio de busca O(1)
14
![Page 16: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/16.jpg)
funções hash estáticas
Operações
∙ Insertion - Quando um registro é necessário para ser inseridousando função hash de estática, a função hash h calcula oendereço do bucket para a chave de pesquisa K, onde o registroserá armazenado Bucket address = h(K)
∙ Search - Quando um registro deve ser recuperado, a mesmafunção hash pode ser usada para recuperar o endereço dobucket onde os dados são armazenados
∙ Delete - Uma operação de busca seguida por uma de deleçãodo dado
15
![Page 17: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/17.jpg)
funções hash estáticas
Características
∙ A função hash mapeia uma chave para um determinado bucket∙ No pior caso ela mapeia várias entradas para o mesmo bucket∙ No melhor caso ela mapeia todo valor chave-pesquisa para umbucket diferente
∙ Funções hash devem ter distribuição uniforme e aleatória
E quando o banco de dados cresce e o número de buckets não ésuficiente?
16
![Page 18: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/18.jpg)
funções hash dinâmicas
![Page 19: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/19.jpg)
funções hash dinâmicas
Funções Hash Dinâmicas
∙ A função hash é modificada dinamicamente
Hash Extensível (Extendible Hashing)
∙ Calcula o hash de cada chave para uma string de bits longa,mantendo o tamanho de acordo com o necessário
∙ Mantém um diretório com ponteiros para os buckets do hash∙ A função hash gera um valor dentro de um intervalo,geralmente um b-bit = 32
18
![Page 20: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/20.jpg)
funções hash dinâmicas
Operações
∙ Insertion - O endereço do bucket é calculado∙ Caso o bucket esteja cheio deve-se adicionar mais um bucket eadicionar mais um bit para o hash
∙ Caso contrário, inserir o dado no bucket
∙ Search - Verificar a profundidade do prefixo e usar os bits paraencontrar o endereço do bucket após o hash
∙ Delete - Uma operação de busca seguida por uma de deleçãodo dado
19
![Page 21: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/21.jpg)
funções hash dinâmicas
Exemplo Hash Extensível
h(k1) = 100100h(k2) = 010110h(k3) = 110110
h(k4) = 011110
h(k4) = 011110
20
![Page 22: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/22.jpg)
resolução de colisões
O que é uma colisão?
∙ Duas chaves obtém o mesmo resultado na função hash
Como resolver uma colisão?
∙ Colocar o valor no próximo slot/bucket (Linear Probing)∙ Rehash∙ Separação em canais (Overflow chaining)
21
![Page 23: Indexação e Hashing - Construção de Índices e Funções Hash∙ Tempo médio de busca O(1) 14. funçõeshashestáticas Operações ∙ Insertion- Quando um registro é necessário](https://reader036.fdocumentos.tips/reader036/viewer/2022070212/610672b2c9e9d63e383e2c12/html5/thumbnails/23.jpg)
resolução de colisões - linear probing e overflow chaining
22