Buscar

ArmazenamentoFísicoHashing-2

Prévia do material em texto

Armazenamento, Armazenamento, 
Estrutura de Arquivos e 
Hashing
Armazenamento, Armazenamento, 
Estrutura de Arquivos e 
Classificação das mídias de 
armazenamento físico
 Velocidade com a qual os dados podem ser 
acessadosacessados
 Custo por unidade de dados
 Confiabilidade
 Dados perdidos na falha de potência ou falha do sistema
 Falha física do dispositivo de armazenamento
 Pode diferenciar o tipo de armazenamento em:
Armazenamento volátil: perde o conteúdo quando a  Armazenamento volátil: perde o conteúdo quando a 
potência é desligada
 Armazenamento não-volátil
 O Conteúdo persiste mesmo quando a potência é desligada.
 Inclui armazenamento secundário (discos) ou armazenamento on
line; e o terciário ou offline (fitas).
Classificação das mídias de 
armazenamento físico
Velocidade com a qual os dados podem ser 
Custo por unidade de dados
Dados perdidos na falha de potência ou falha do sistema
Falha física do dispositivo de armazenamento
Pode diferenciar o tipo de armazenamento em:
perde o conteúdo quando a perde o conteúdo quando a 
volátil:
O Conteúdo persiste mesmo quando a potência é desligada.
Inclui armazenamento secundário (discos) ou armazenamento on-
line; e o terciário ou offline (fitas).
Mídias de Armazen
 Cache – A mais rápida e custosa forma de 
armazenamento; volátil; gerenciada pelo hardware 
do sistema computacional.do sistema computacional.
 Memória principal:
 Acesso rápido (10s a 100s nanosegundos; 1 nanosegundo
= 10–9 segundos)
 geralmente muito pequena (ou muito cara) para armazenar 
todo o banco de dados
 capacidades da ordem de Gigabytes (8 a 16 GB 
256 GB – servidores)256 GB – servidores)
 Capacidades têm aumentado e custos por byte têm diminuído 
constantemente e rapidamente (em aproximadamente um 
fator de 2 cada 2 a 3 anos)
 Volátil — conteúdo da memória principal normalmente se 
perde se houver falta de energia ou uma falha do sistema.
namento Físico
A mais rápida e custosa forma de 
armazenamento; volátil; gerenciada pelo hardware 
do sistema computacional.do sistema computacional.
Acesso rápido (10s a 100s nanosegundos; 1 nanosegundo
geralmente muito pequena (ou muito cara) para armazenar 
capacidades da ordem de Gigabytes (8 a 16 GB – Laptops; 
Capacidades têm aumentado e custos por byte têm diminuído 
constantemente e rapidamente (em aproximadamente um 
fator de 2 cada 2 a 3 anos)
conteúdo da memória principal normalmente se 
perde se houver falta de energia ou uma falha do sistema.
Mídias de armazena
 Memória Flash
 Dados sobrevivem à falta de energia
Dados podem ser escritos em um lugar uma vez, mas o lugar 
pode ser apagado e escrito de novopode ser apagado e escrito de novo
 Pode suportar um número limitado de ciclos de apagamento (de 10K a 
1M).
 Para escrever sobre a memória que já foi escrita tem que ser apagado a
cela inteira de memória
 Leituras são aproximadamente tão
principal
 Mas as escritas são lentas (pouco
lentolento
 O custo por unidade de armazena
ao da memória principal
 Amplamente usado em sistemas e
digitais.
 É um tipo de EEPROM (Electricall
Only Memory)
amento físico (Cont.)
Dados sobrevivem à falta de energia
Dados podem ser escritos em um lugar uma vez, mas o lugar 
pode ser apagado e escrito de novopode ser apagado e escrito de novo
Pode suportar um número limitado de ciclos de apagamento (de 10K a 
Para escrever sobre a memória que já foi escrita tem que ser apagado a
o rápidas quanto da memória 
os microssegundos), apagar é mais 
namento é aproximadamente similar 
embutidos em portáteis ou câmeras 
lly Erasable Programmable Read-
Mídias de armazena
 Discos Magnéticos
 Os dados são armazenados em discos, e são lidos/gravados 
magneticamente
 Principal meio para armazenamento de dados on Principal meio para armazenamento de dados on
prazo; normalmente armazena todo o banco de dados.
 Os dados devem ser movidos
para serem acessados, e os
no disco
 Acesso muito mais lento que o da memória principal
 Acesso direto – é possível ler dados do disco em qualquer 
ordem, ao contrário da fita magnética.
 O tamanho dos discos magnéticos pode alcançar hoje em dia  O tamanho dos discos magnéticos pode alcançar hoje em dia 
capacidades maiores a 400 GB
 Muito maior capacidade e menor custo/byte que as memórias principal 
e flash
 Crescimento constante e rápido com os avanços tecnológicos (fator 
de 2 a 3 cada 2 anos)
 Sobrevive a falhas de energia e falhas do sistema
 Falhas de disco podem destruir dados, mas são raras
amento físico (Cont.)
Os dados são armazenados em discos, e são lidos/gravados 
Principal meio para armazenamento de dados on-line a longo Principal meio para armazenamento de dados on-line a longo 
prazo; normalmente armazena todo o banco de dados.
movidos do disco para a memória principal
os modificados são gravados de volta
Acesso muito mais lento que o da memória principal
é possível ler dados do disco em qualquer 
ordem, ao contrário da fita magnética.
O tamanho dos discos magnéticos pode alcançar hoje em dia O tamanho dos discos magnéticos pode alcançar hoje em dia 
capacidades maiores a 400 GB
Muito maior capacidade e menor custo/byte que as memórias principal 
Crescimento constante e rápido com os avanços tecnológicos (fator 
Sobrevive a falhas de energia e falhas do sistema
Falhas de disco podem destruir dados, mas são raras
Mídias de armazena
 Armazenamento óptico
 Os dados não-voláteis, são lidos da forma ótica usando um 
laser
 CD-ROM (700 MB) e DVD (4.7 a 17 GB) as formas mais 
populares
 Write-one, read-many (WORM) discos óticos são usados 
para armazenamento histórico (CD
 Versões para múltiplas gravações també são disponíveis 
(CD-RW, DVD-RW, DVD+RW, e DVD
 Leituras e gravações são mais lentas que com discos 
magnéticosmagnéticos
 Sistemas de Juke-box, com grandes números de discos 
removíveis, poucos drives, e um mecanismo para carga e 
descarga automática de discos disponíveis para o 
armazenamento de grandes volumes de dados.
amento físico (Cont.)
voláteis, são lidos da forma ótica usando um 
ROM (700 MB) e DVD (4.7 a 17 GB) as formas mais 
many (WORM) discos óticos são usados 
para armazenamento histórico (CD-R, DVD-R, DVD+R)
Versões para múltiplas gravações també são disponíveis 
RW, DVD+RW, e DVD-RAM)
Leituras e gravações são mais lentas que com discos 
, com grandes números de discos 
removíveis, poucos drives, e um mecanismo para carga e 
descarga automática de discos disponíveis para o 
armazenamento de grandes volumes de dados.
Mídias de armazena
 Armazenamento em fita
 não-volátil, usado principalmente para backup 
(recuperação de falhas de disco), e para 
armazenamento e arquivo
 Acesso seqüencial – muito mais lento que os discos
 Capacidade muito grande (40 a 300 GB)
 Fitas podem ser removidas da unidade (drive) 
custos de armazenamento muito mais baratos que 
disco, porém as unidades são mais custosas
 Bibliotecas de fitas (jukeboxes) disponíveis para o 
armazenamento de quantidades massívas de dadosarmazenamento de quantidades massívas de dados
 Centos de terabytes (1 terabyte = 10
petabyte (1 petabyte = 10
amento físico (Cont.)
Armazenamento em fita
volátil, usado principalmente para backup 
(recuperação de falhas de disco), e para 
armazenamento e arquivo
muito mais lento que os discos
Capacidade muito grande (40 a 300 GB)
Fitas podem ser removidas da unidade (drive) 
custos de armazenamento muito mais baratos que 
disco, porém as unidades são mais custosas
Bibliotecas de fitas (jukeboxes) disponíveis para o 
armazenamento de quantidades massívas de dadosarmazenamento de quantidades massívas de dados
Centos de terabytes (1 terabyte = 109 bytes) até um 
petabyte (1 petabyte = 1012 bytes)
Fonte: Elmasri e Navathee, 2016 7ª. Edição.
Hierarquia de AArmazenamento
Hierarquia de Arma
 Armazenamento principal
armazenamento mais rápido mas volátil (cache, 
memória principal).memória principal).
 Armazenamento secundário
hierarquia,não-volátil, tempo de acesso 
moderadamente rápido
 Também chamado armazenamento on
 Ex: memória flash, discos magnéticos
 Armazenamento terciário Armazenamento terciário
hierarquia, não-volátil, tempo de acesso lento
 Também chamado armazenamento off
 Ex: fita magnética, armazenamento ótico
azenamento (Cont.)
Armazenamento principal: O médio de 
armazenamento mais rápido mas volátil (cache, 
Armazenamento secundário: próximo nível na 
volátil, tempo de acesso 
armazenamento on-line
Ex: memória flash, discos magnéticos
Armazenamento terciário: nível mais baixo na Armazenamento terciário: nível mais baixo na 
volátil, tempo de acesso lento
armazenamento off-line
Ex: fita magnética, armazenamento ótico
Mecanismo de disco
PS: Diagrama é esquemático, e simplifica
o duro magnético
a estrutura de unidades disco reais 
Bancos de Dados –
 Bancos de Dados armazenam grandes 
quantidades de dados por períodos longos 
de tempo em meios de armazenamento 
secundário;
 Estruturas de dados em memória principal 
armazenam quantidades limitadas de dados 
por curtos períodos de tempo;por curtos períodos de tempo;
 Fitas são usadas para 
Nível Físico
Bancos de Dados armazenam grandes 
quantidades de dados por períodos longos 
de tempo em meios de armazenamento 
Estruturas de dados em memória principal 
armazenam quantidades limitadas de dados 
por curtos períodos de tempo;por curtos períodos de tempo;
Fitas são usadas para backup
Bancos de Dados –
 Técnicas usadas para armazenamento e 
manipulação de grandes quantidades de dados manipulação de grandes quantidades de dados 
armazenados em memória secundária;
 Técnicas eficientes para discos ópticos são 
diferentes;
 Um SGBD provê geralmente várias opções para 
organização física dos dados.
 Projeto Físico de Banco de Dados: Projeto Físico de Banco de Dados: 
determinar o melhor tipo de organização dos dados, 
dentre todas as possíveis, para uma determinada 
aplicação;
Nível Físico
Técnicas usadas para armazenamento e 
manipulação de grandes quantidades de dados manipulação de grandes quantidades de dados 
armazenados em memória secundária;
Técnicas eficientes para discos ópticos são 
Um SGBD provê geralmente várias opções para 
organização física dos dados.
Projeto Físico de Banco de Dados: Busca Projeto Físico de Banco de Dados: Busca 
determinar o melhor tipo de organização dos dados, 
dentre todas as possíveis, para uma determinada 
Arquivos e
 Sistema Operacional / Sistema de Arquivos: 
Fornece ao SGBD os serviços básicos 
manipulação de arquivos. O SGBD utiliza 
estes serviços para prover outras facilidades 
(nível lógico).
 Registros:
Campos ou ítens; Campos ou ítens;
 Tipo/Formato de Registros;
 Tipo de dados de cada campo.
e Registros
Sistema Operacional / Sistema de Arquivos: 
Fornece ao SGBD os serviços básicos 
manipulação de arquivos. O SGBD utiliza 
estes serviços para prover outras facilidades 
Tipo/Formato de Registros;
Tipo de dados de cada campo.
Arquivos e
 Arquivos: Seqüências de registros
 Tamanho fixo: Todos os registros possuem o 
mesmo tamanho exatamente;
 Tamanho variável:
 Um ou mais campos têm tamanho variável;
 Campos com múltiplos valores (campos repetidos);
 Campos opcionais;
 Registros de tipos diferentes;
e Registros
Arquivos: Seqüências de registros
Tamanho fixo: Todos os registros possuem o 
mesmo tamanho exatamente;
Um ou mais campos têm tamanho variável;
Campos com múltiplos valores (campos repetidos);
Registros de tipos diferentes;
Regisstros
Arquivos e
 Blocos: Unidades de transferência da 
memória secundária para memória principal;memória secundária para memória principal;
 Alocação de registros de um arquivo são 
feitas em blocos do disco;
 Modos de alocação: registros nem sempre 
cabem perfeitamente em um bloco;
 Fator de Bloco Fator de Bloco
 Alocação espalhada X 
espalhada
e Registros
Blocos: Unidades de transferência da 
memória secundária para memória principal;memória secundária para memória principal;
Alocação de registros de um arquivo são 
feitas em blocos do disco;
Modos de alocação: registros nem sempre 
cabem perfeitamente em um bloco;
X Alocação não 
Blocos de
Não espalhada: os registros
Espalhada: os registros pode
Registros
devem estar em um só bloco
em estar distribuídos em dois blocos
Organização de Arquivos
 Registros Desordenado
 Registros Ordenados
 Organização por Hash
quivos
dos
hing
Arquivos de Registr
 Busca de registros é li
 Inserção é feita no fina
 Remoção é lógica: ma
 Reorganização periód
 Ordenação externa;
 Arquivo Relativo :
 Registros de tamanho f
 Alocação não espalhad
 Fácil localização de reg
ros Não Ordenados
inear;
al do arquivo;
arca de remoção
dica;
fixo;
hada e contígua;
gistros;
Arquivos de Regi
 Registros ordenados de acordo como um campo de 
ordenação;ordenação;
 Chaves de Ordenação : ordenação baseada em 
um campo chave;
 Busca de registros pelo campo de ordenação é 
eficiente: busca binária;
 Inserção: arquivo auxiliar (arquivo de 
transação/overflow)
 Remoção: marcação para remoção física;
 Reorganização periódica;
istros Ordenados
Registros ordenados de acordo como um campo de 
: ordenação baseada em 
Busca de registros pelo campo de ordenação é 
Inserção: arquivo auxiliar (arquivo de 
Remoção: marcação para remoção física;
Reorganização periódica;
Arquivos OOrdenados
Organização por Ha
 Função de endereçamento
Determina a posição
ser inserido;
 Campo de Hashing : Usado como argumento 
da função;
 Objetivo : Melhorar o acesso com critério de 
busca;busca;
ashing
endereçamento ou de Hashing :
onde um registro deve
Campo de Hashing : Usado como argumento 
Objetivo : Melhorar o acesso com critério de 
Organização por Ha
 Hashing Interno:
 Usado em memória principal;
 Cada registro ocupa uma posição em um arranjo;
 A função de Hashing retorna a posição do registro 
baseada no valor do campo de Hashing;
 Tratamento de Colisões
Endereçamento Aberto; Endereçamento Aberto;
 Encadeamento;
 Hashing Múltiplo;
ashing
Usado em memória principal;
Cada registro ocupa uma posição em um arranjo;
A função de Hashing retorna a posição do registro 
baseada no valor do campo de Hashing;
Tratamento de Colisões
Endereçamento Aberto;Endereçamento Aberto;
Organização por Haashing
Organização por Ha
 Hashing Externo:
Função de Hashing retorna o número de um  Função de Hashing retorna o número de um 
número de uma posição no arranjo;
 Um bucket pode conter um ou mais blocos do arquivo;
 Uma tabela associa o nr. do bucket ao endereço do primeiro (ou 
único) bloco do bucket;
 Registros com diferentes valores da chave de busca podem ser 
mapeados ao mesmo bucket; assim todo o bucket tem que ser 
pesquisado seqüencialmente para localizar um registro.pesquisado seqüencialmente para localizar um registro.
 Podem haver m registros por bucket;
 Colisão ocorre quando o m + 1
ashing
Função de Hashing retorna o número de um bucket, ao invés do Função de Hashing retorna o número de um bucket, ao invés do 
número de uma posição no arranjo;
Um bucket pode conter um ou mais blocos do arquivo;
Uma tabela associa o nr. do bucket ao endereço do primeiro (ou 
Registros com diferentes valores da chave de busca podem ser 
mapeados ao mesmo bucket; assim todo o bucket tem que ser 
pesquisado seqüencialmente para localizar um registro.pesquisado seqüencialmente para localizar um registro.
registros por bucket;
+ 1-ésimo registro deve ser inserido;
Hashing Externo
Exemplo de uma organização
arquivo de Hash
Uma organização de arquivo de Hash de Contas, usando o nome_agência 
como chave (Veja figura no próximo slide.)
Existem 10 buckets,
A representação binária do I-ésimo caracter do alfabeto é assumida 
como o inteiro i.
A função de hash retorna a suma das representações binárias dos 
caracteres módulo 10caracteres módulo 10
 Ex. h(Perryridge) = 5 h(Round Hill) = 3
de uma organização deUma organização de arquivo de Hash de Contas, usando o nome_agência 
como chave (Veja figura no próximo slide.)
ésimo caracter do alfabeto é assumida 
A função de hash retorna a suma das representações binárias dos 
h(Round Hill) = 3 h(Brighton) = 3
Exemplo de uma organiza
Uma organização de arquivo de Hash de Contas, usando o 
nome_agência como chave (veja slide anterior para detalhes).
ação de arquivo de Hash
Uma organização de arquivo de Hash de Contas, usando o 
nome_agência como chave (veja slide anterior para detalhes).
Funções
 A pior função mapeia todos os valores das chaves de busca 
para o mesmo bucket; isto faz o tempo de acesso 
proporcional ao número de valores das chaves de busca no proporcional ao número de valores das chaves de busca no 
arquivo.
 Uma função de hash ideal é uniforme
é atribuído o mesmo número de valores das chaves de 
busca do conjunto de todos os possíveis valores.
 Uma função de hash ideal é aleatória
terá quase o mesmo número de valores atribuídos a ele, 
independente da distribuição real dos valores da chave de 
busca no arquivo.busca no arquivo.
 Funções de hash típicas fazem cálculos baseados na 
representação interna da chave de busca.
 Por exemplo, para uma chave de busca cadeia de caracteres, a 
representação binária de todos os caracteres na cadeia poderiam ser 
somados e a soma módulo o número de buckets poderia ser retornado. 
de Hash
A pior função mapeia todos os valores das chaves de busca 
para o mesmo bucket; isto faz o tempo de acesso 
proporcional ao número de valores das chaves de busca no proporcional ao número de valores das chaves de busca no 
uniforme, isto é, a cada bucket 
atribuído o mesmo número de valores das chaves de 
busca do conjunto de todos os possíveis valores.
aleatória, assim cada bucket 
terá quase o mesmo número de valores atribuídos a ele, 
independente da distribuição real dos valores da chave de 
Funções de hash típicas fazem cálculos baseados na 
representação interna da chave de busca.
Por exemplo, para uma chave de busca cadeia de caracteres, a 
representação binária de todos os caracteres na cadeia poderiam ser 
somados e a soma módulo o número de buckets poderia ser retornado. 
Tratamento de Ove
 Um Overflow de Buckets pode ocorrer devido a
 Insuficiente número de buckets
 Distorção na distribuição de registros.
ocorrer por dois motivos:
 vários registros podem ter a mesma chave de busca
 A função de hash escolhida produz uma distribuição não 
uniforme das chaves de busca
 Embora a probabilidade
pode ser reduzido, elepode ser reduzido, ele
ele é tratado usando buckets
erflows de Buckets
Um Overflow de Buckets pode ocorrer devido a
Insuficiente número de buckets
Distorção na distribuição de registros. Isto pode 
vários registros podem ter a mesma chave de busca
A função de hash escolhida produz uma distribuição não 
uniforme das chaves de busca
probabilidade do overflow de buckets
não pode ser eliminado;não pode ser eliminado;
buckets de overflow.
Organização por ha
 Tratamento de Overflow por Encadeamento
 Manter buckets de overflow; Manter buckets de overflow;
 Encadear registros que devem permanecer a um mesmo bucket;
 O esquema acima é chamado de 
 Uma alternativa, chamada de hashing aberto
overflow, não é adequada para aplicações de bancos de dados.
 Remoção de Registros : Consiste em ”apaga
usado overflow deve ser usado tratamento especial;
 Problemas :
 Recuperação de vários registros em uma determinada ordem; Recuperação de vários registros em uma determinada ordem;
 Má utilização do espaço de endereçamento dos buckets;
 Tamanho fixo do arquivo;
 Modificação do valor do campo usado como argumento da função 
Hashing.
ashing
Tratamento de Overflow por Encadeamento
Encadear registros que devem permanecer a um mesmo bucket;
O esquema acima é chamado de hashing fechado.
hashing aberto, que não usa buckets de 
overflow, não é adequada para aplicações de bancos de dados.
Remoção de Registros : Consiste em ”apaga-los” do bucket. Se for 
usado overflow deve ser usado tratamento especial;
Recuperação de vários registros em uma determinada ordem;Recuperação de vários registros em uma determinada ordem;
Má utilização do espaço de endereçamento dos buckets;
Modificação do valor do campo usado como argumento da função 
Encadeeamento
Índices de
 Hashing pode ser usado não só para a organização de arquivos, 
mas também para a criação de estruturas de índices.
 Um índice de hash organiza as chaves de busca, com seus 
ponteiros de registros associados, numa estrutura de arquivo hash.ponteiros de registros associados, numa estrutura de arquivo hash.
 Falando estritamente, os índices de hash são sempre índices 
secundários
 Um índice de hash não é necessário com uma estrutura de índice 
agrupado, pois, se um arquivo já estiver organizado por hashing, não 
será necessária uma estrutura de índice de hash separada.
 Entretanto, como a organização de arquivo de hash oferece o mesmo 
acesso direto que a indexação, fazemos de conta que um arquivo 
organizado por hashing também possui um índice de hash agrupado organizado por hashing também possui um índice de hash agrupado 
sobre ele.
de Hash
não só para a organização de arquivos, 
mas também para a criação de estruturas de índices.
organiza as chaves de busca, com seus 
ponteiros de registros associados, numa estrutura de arquivo hash.ponteiros de registros associados, numa estrutura de arquivo hash.
Falando estritamente, os índices de hash são sempre índices 
Um índice de hash não é necessário com uma estrutura de índice 
agrupado, pois, se um arquivo já estiver organizado por hashing, não 
será necessária uma estrutura de índice de hash separada.
Entretanto, como a organização de arquivo de hash oferece o mesmo 
acesso direto que a indexação, fazemos de conta que um arquivo 
organizado por hashing também possui um índice de hash agrupado organizado por hashing também possui um índice de hash agrupado 
Exemplo de índice dede Hash
Deficiências do H
 No hashing estático, a função h mapeia valores da chave de busca 
a um conjunto fixo B de endereços de bucket.
 Bancos de dados crescem com o tempo. Se o número inicial de buckets 
é muito pequeno, o desempenho degradará devido a muitos overflows.
 Se o tamanho do arquivo em algum ponto no futuro é antecipado e o 
número de buckets atribuído de acordo com isso, uma quantidade 
significante de espaço será desperdiçado inicialmente.
 Se o banco de dados diminui, de novo o espaço será desperdiçado.
 Uma opção é a re-organização periódica do arquivo com uma nova 
função de hash, mas isto é muito custoso.
 Estes problemas podem ser evitados usando técnicas que permitem 
o número de buckets ser modificado dinamicamente.
Hashing Estático
mapeia valores da chave de busca 
de endereços de bucket.
Bancos de dados crescem com o tempo. Se o número inicial de buckets 
é muito pequeno, o desempenho degradará devido a muitos overflows.
Se o tamanho do arquivo em algum ponto no futuro é antecipado e o 
número de buckets atribuído de acordo com isso, uma quantidade 
significante de espaço será desperdiçado inicialmente.
Se o banco de dados diminui, de novo o espaço será desperdiçado.
organização periódica do arquivo com uma nova 
função de hash, mas isto é muito custoso.
Estes problemas podem ser evitados usando técnicas que permitem 
o número de buckets ser modificado dinamicamente.
Hashing D
 Bom para bancos de dados que crescem e diminuem no tamanho
 Permite que função de hash seja modificada dinamicamente
 Aproveitam que o resultado de uma função de hashing é um inteiro não 
negativo e pode ser representado como um número binário.negativo e pode ser representado como um número binário.
 Hashing Extensível – uma forma de hashing dinâmico
 Função de Hash gera valores por um intervalo relativamente grande 
inteiros binários de b-bit, com b = 32 (profundidade global).
 Em qualquer instante é usado somente um prefixoda função de hash para 
indexar na tabela de endereços de buckets
 Seja o tamanho do prefixo i bits, 0  i 
 O tamanho da tabela de endereços de Bucket = 2
 O valor de i cresce e diminui na medida que o tamanho do banco de dados 
cresce e diminui.
 Entradas múltiplas na tabela de endereços de bucket podem apontar a um 
bucket.
 Assim, o número real de buckets é < 2
 O número de buckets também muda dinamicamente devido à junção e 
divisão de buckets.
Dinâmico
Bom para bancos de dados que crescem e diminuem no tamanho
Permite que função de hash seja modificada dinamicamente
Aproveitam que o resultado de uma função de hashing é um inteiro não 
negativo e pode ser representado como um número binário.negativo e pode ser representado como um número binário.
uma forma de hashing dinâmico
Função de Hash gera valores por um intervalo relativamente grande — a saber, 
= 32 (profundidade global).
Em qualquer instante é usado somente um prefixo da função de hash para 
indexar na tabela de endereços de buckets
i  32.
O tamanho da tabela de endereços de Bucket = 2i. Inicialmente i = 0
cresce e diminui na medida que o tamanho do banco de dados 
Entradas múltiplas na tabela de endereços de bucket podem apontar a um 
Assim, o número real de buckets é < 2i
O número de buckets também muda dinamicamente devido à junção e 
Uso da Estrutura de
 Cada bucket j armazena um valor ij; 
mesmo bucket têm os mesmos valores nos primeiros mesmo bucket têm os mesmos valores nos primeiros 
 Para localizar o bucket contendo a chave de busca 
1. Calcular h(Kj) = X
2. Use os primeiros i bits de ordem maior de 
de endereços de bucket, e segue o ponteiro de bucket na entrada da tabela
 Para inserir um registro com valor de chave de busca 
 Segue o mesmo procedimento para buscar e localizar o bucket, digamos 
 Se houver espaço no bucket j insere o registro nele.
Senão o bucket deve ser dividido e os registros atuais e o novo devem ser  Senão o bucket deve ser dividido e os registros atuais e o novo devem ser 
redistribuídos (próximo slide.)
 Buckets de Overflow usados em alguns casos (veremos brevemente)
de Hash Extensível
; todas as entradas que apontam ao 
mesmo bucket têm os mesmos valores nos primeiros ij bits.mesmo bucket têm os mesmos valores nos primeiros ij bits.
Para localizar o bucket contendo a chave de busca Kj:
bits de ordem maior de X como um desplazamento na tabela 
de endereços de bucket, e segue o ponteiro de bucket na entrada da tabela
Para inserir um registro com valor de chave de busca Kj
Segue o mesmo procedimento para buscar e localizar o bucket, digamos j.
insere o registro nele.
Senão o bucket deve ser dividido e os registros atuais e o novo devem ser Senão o bucket deve ser dividido e os registros atuais e o novo devem ser 
Buckets de Overflow usados em alguns casos (veremos brevemente)
Estrutura Geral do
Nesta estrutura, i2 = i3 = i, enquanto 
(veja próximo slide para detalhes)
Hash Extensível
, enquanto i1 = i – 1 
(veja próximo slide para detalhes)
Atualizações na Estrutura de Hash 
Extensível
Para dividir um bucket j quando inserimos um registro com valor da chave de 
Se i > i (mais de um ponteiro para o bucket Se i > ij (mais de um ponteiro para o bucket 
 Atribuir um novo bucket z, e colocar 
 Fazer a segunda metade dos endereços de bucket das entradas da tabela que 
apontavam a j para apontar a z
 Remover e inserir de novo cada registro no bucket 
 Recalcular o novo bucket para Kj e inserir o registro no bucket (divisões 
adicionais são necessárias se o bucket ainda está cheio)
Se i = ij (somente um ponteiro para o bucket 
 incrementar i e dobrar o tamanho da tabela de endereço de buckets.
 Trocar cada entrada da tabela por duas entradas que apontem ao mesmo 
bucket.
 Recalcular nova entrada na tabela de endereços de buckets para 
> ij assim usar o primeiro caso acima.
Atualizações na Estrutura de Hash 
Extensível
quando inserimos um registro com valor da chave de Kj:
(mais de um ponteiro para o bucket j)(mais de um ponteiro para o bucket j)
, e colocar ij e iz para ser o velho ij + 1.
Fazer a segunda metade dos endereços de bucket das entradas da tabela que 
Remover e inserir de novo cada registro no bucket j.
e inserir o registro no bucket (divisões 
adicionais são necessárias se o bucket ainda está cheio)
(somente um ponteiro para o bucket j)
e dobrar o tamanho da tabela de endereço de buckets.
Trocar cada entrada da tabela por duas entradas que apontem ao mesmo 
Recalcular nova entrada na tabela de endereços de buckets para Kj Agora i
Atualizações na Estrutura de Hash 
Extensível (Cont.)
 Quando inserimos um valor, se o bucket continua cheio após várias 
divisões (isto é, i alcança algum limite divisões (isto é, i alcança algum limite 
lugar de dividir a tabela de entradas de buckets ainda mais.
 Para remover uma chave,
 Achar ela no bucket e remover ela.
 O bucket pode ser removido se ele ficar vazio (com atualizações apropriadas na 
tabela de endereços de bucket).
 A união de buckets pode ser feita (pode se unir somente com um bucket que 
tenha o mesmo valor de ij e igual prefixo i
 A diminuição do tamanho da tabela de endereços de bucket também é possívelA diminuição do tamanho da tabela de endereços de bucket também é possível
 PS: esta diminuição é uma operação custosa e deveria ser feita somente se 
o número de buckets ficar muito menor que o tamanho fa tabela
Atualizações na Estrutura de Hash 
Extensível (Cont.)
Quando inserimos um valor, se o bucket continua cheio após várias 
alcança algum limite b) criar um bucket de overflow no alcança algum limite b) criar um bucket de overflow no 
lugar de dividir a tabela de entradas de buckets ainda mais.
O bucket pode ser removido se ele ficar vazio (com atualizações apropriadas na 
A união de buckets pode ser feita (pode se unir somente com um bucket que 
e igual prefixo ij –1, se ele existir)
A diminuição do tamanho da tabela de endereços de bucket também é possívelA diminuição do tamanho da tabela de endereços de bucket também é possível
PS: esta diminuição é uma operação custosa e deveria ser feita somente se 
o número de buckets ficar muito menor que o tamanho fa tabela
Uso da Estrutura de Hash Extensível: 
Exemplo
Estrututra de Hash inicial, ta
Uso da Estrutura de Hash Extensível: 
Exemplo
amanho do bucket = 2
Exemplo (Cont.)
 Estrutura de Hash depois da inserção de um registro Brighton e dois 
DowntownDowntown
Estrutura de Hash depois da inserção de um registro Brighton e dois 
Exemplo (Cont.)
 Estrutura de Hash depois da inseerção do registro Mianus
Exemplo (Cont.)
Estrutura de Hash após inserçãão de três registros Perryridge
Exemplo (Cont.)
 Estrutura de Hash structure após inserção dos registros Redwood e 
Round HillRound Hill
Estrutura de Hash structure após inserção dos registros Redwood e 
Hashing extensível v
 Benefícios do hashing extensível :
 Desempenho do Hash não degrada com o crescimento do 
arquivo
 Mínimo overhead de espaço
 Desvantagens do hashing extensível
Nível extra de indireção para achar os registros desejados
A tabela de endereços de bucket pode ficar muito grande (maior 
que a memória)
 Precisa de uma estrutura em árvore para achar o registro desejado 
na estrutura!
Mudar o tamanho da tabela de endereços de buckets é uma 
operação custosa
Hashing Linear é um mecanismo alternativo que evita 
estas desvantagens ao custo possível de mais buckets 
de overflows
vs. Outros Esquemas
Benefícios do hashing extensível :
Desempenho do Hash não degrada com o crescimento do 
Desvantagens do hashing extensível
Nível extra de indireção para achar os registros desejados
A tabela de endereços de bucket pode ficar muito grande (maior 
Precisa de uma estrutura em árvore para achar o registro desejado 
Mudar o tamanho da tabela de endereços de buckets é uma 
é um mecanismo alternativo que evita 
estas desvantagens ao custo possível de mais buckets 
HashingDDinâmico
Organização por ha
 Hashing Linear
 Permitir que um arquivo de
número de buckets dinamicamentenúmero de buckets dinamicamente
diretório.
 São alocados inicialmente
endereçados por uma função
inicial;
 Quando um “Limite Máximo” de ocupação do arquivo é 
alcançado, um novo bucket 
chaves para dividir o número de chaves com o bucket 0;
 A divisão de chaves é feita com base em uma nova função A divisão de chaves é feita com base em uma nova função
 h1 = K mod 2M, que será usada para tratar colisões no 
bucket 0;
 O bucket M é encadeado ao bucket 
 Quando a taxa de ocupação torna
buckets seguintes (1, 2, 3, ... ) vão sofrendo overflow;
ashing
de hash expanda e encolha seu
dinamicamente sem precisar de umdinamicamente sem precisar de um
M buckets (0, 1, ... , M - 1),
função h0 = K mod M chamada
Quando um “Limite Máximo” de ocupação do arquivo é 
alcançado, um novo bucket M é criado para dividir as 
chaves para dividir o número de chaves com o bucket 0;
A divisão de chaves é feita com base em uma nova funçãoA divisão de chaves é feita com base em uma nova função
, que será usada para tratar colisões no 
encadeado ao bucket M - 1;
Quando a taxa de ocupação torna-se novamente crítica, os 
buckets seguintes (1, 2, 3, ... ) vão sofrendo overflow;

Continue navegando