Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.
Transcript of Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.
![Page 1: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/1.jpg)
Arquivos Estruturados por Hashing– Custos I/O
AULA 6
Profa. Sandra de Amo
GBC053 – BCC
![Page 2: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/2.jpg)
Estudaremos nesta aula
Estimativa de custos de I/O para operações de: Scan em arquivos hashed (agrupados) Inserção de tuplas em arquivos agrupados Remoção de tuplas em arquivos agrupados Busca em arquivos agrupados pelo atributo- chave de
busca Busca em arquivos agrupados por atributos diferentes do
atributo-chave de busca
![Page 3: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/3.jpg)
Arquivos agrupados por um atributo X
Arquivo A é organizado em subarquivos S1,…, Sn, cada subarquivo contendo 1 página não completamente utilizada (20% livre).
Subarquivo também é chamado de “Bucket”. Assim, se o arquivo original contém M páginas, o arquivo estruturado
de forma hash (distribuído nos subarquivos) conterá M*1.25 páginas.
Função hash H(valor-atributo) = n responsável por distribuir os registros
Um registro (…,v,….) pertence ao subarquivo Sk se H(v) = k.
Atributo X que é a chave do agrupamento (Hashing)
![Page 4: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/4.jpg)
Arquivos agrupados por um atributo X
As páginas do arquivo contém diretório de slots como os arquivos heap.
Este diretório é utilizado para localizar a posição na página onde se encontra um registro com rid dado.
A inserção de um novo registro não é feita utilizando o diretório de páginas, pois a página onde será inserido o registro é a única página do subarquivo Sk, onde k = H(v), v = valor do atributo X do registro a ser inserido.
A remoção de um registro é feita exatamente como no caso de arquivo heap.
![Page 5: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/5.jpg)
Lembrando: Páginas do arquivo são agrupadas por buckets (subarquivos)
Bucket é determinado aplicando-se uma função h ao campo de procura
Exemplo: estamos procurando todos os empregados de salário = 5000Como encontrá-los rapidamente ?
Arquivo organizado por hash no campo SalárioFunção hash: mod 3Onde estão os registros dos empregados com salário = 5000 ?5000 mod 3 = 2 Resposta: bucket 2
S1 S2 S3 S4 ….
![Page 6: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/6.jpg)
Exemplo: inserção de um registro
Página do Subarquivo S2Diretório de slots da página
6655(0,100)(100,150)(250,200)(450,50)(500,165)
Registros:Rid (2,1) : (...., 5, ....)Rid (2,2) : (...., 17,....)Rid (2,3) : (...., 32, ....)Rid (2,4) : (...., 44,....)Rid (2,5) : (....,20,....)
Suponha H(n) = n mod 3
![Page 7: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/7.jpg)
Passos para a inserção de um registroSuponha que se quer inserir o registro (...., 14 ,....) de tamanho 300
1. Calcula-se H(14) = 14 mod 3 = 2, para determinar a página onde deverá ser inserido. No caso esta página será a única página do subarquivo S2 (página 2).
2. Busca no diretório de slots o endereço do espaço vazio. Determina se há espaço vazio endereço do inicio do espaço vazio suficiente para o registro ser inserido nesta página.
3. Em caso positivo: A inserção será feita neste endereço.
4. Em caso negativo: Uma nova página é criada no subarquivo S2
1. Cria-se um diretório de páginas para gerenciar o subarquivo S2 que agora já contém 2 páginas, cada uma delas com um número de bytes livres.
![Page 8: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/8.jpg)
Qual o rid do novo registro ?
1. Verifica no diretório de slots se há algum slot com conteúdo (-1,_). Se houver, este será o slot associado ao novo registro.
2. Se não houver: cria-se um novo slot que será associado ao novo registro.
3. Atualiza o diretório de slots.
![Page 9: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/9.jpg)
Situação após a inserção.
9656(0,100)(100,150)(250,200)(450,50)(500,165)
Registros:Rid (2,1) : (...., 5, ....)Rid (2,2) : (...., 17,....)Rid (2,3) : (...., 32, ....)Rid (2,4) : (...., 44,....)Rid (2,5) : (...., 20,....)Rid (2,6) : (...., 14,....)
(665,300)
Slot 1Slot 2Slot 3Slot 4Slot 5Slot 6
Novo registro
Página do Subarquivo S2Diretório de slots da página
Espaço livre de 35 bytes
Novo registro de tamanho 300 é inserido aqui !
![Page 10: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/10.jpg)
O que acontece quando não há espaço suficiente na única página do subarquivo S2 para o novo registro ? Cria-se uma nova página p de overflow no
subarquivo S2 Insere-se ponteiro na página 2 para esta nova página
p e ponteiro de p para a página 2. Subarquivo S2 é agora um arquivo de 2 páginas,
todas com seu diretório de slots. Um diretório de páginas é criado para gerenciar as
páginas do subarquivo (heap) S2.
![Page 11: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/11.jpg)
“Degeneração” da estrutura Hash
Quando os subarquivos contém muitas páginas de overflow, a estrutura começa a perder sua utilidade na aceleração das buscas pelo atributo chave do Hash.
Buscas pelo atributo chave do Hash se tornam praticamente buscas em arquivo Heap (menores).
![Page 12: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/12.jpg)
Degeneração da estrutura hash… Páginas do arquivo são agrupadas por subarquivos ou buckets
Bucket é determinado aplicando-se uma função h ao campo de procura
Exemplo: estamos procurando todos os empregados de salário = 5000Como encontrá-los rapidamente ?
Arquivo organizado por hash no campo SalárioFunção hash: mod 3Onde estão os registros dos empregados com salário = 5000 ?5000 mod 3 = 2 Resposta: bucket 2
Subarquivo 1 (bucket 1) Subarquivo 2 (Bucket 2) Subarquivo 3 (Bucket 3)
![Page 13: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/13.jpg)
Resumindo:
Páginas no arquivo são agrupadas por buckets
Bucket é determinado aplicando-se uma função h ao campo de busca
Insert : registro é inserido no bucket apropriado
![Page 14: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/14.jpg)
Importante :
No caso de Arquivos Hashed,
“chave” = chave de busca na qual é aplicada a função Hash.
Nada a ver com chave primária ou candidata.
![Page 15: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/15.jpg)
Arquivos Hashed
Hash Estático Procura de um registro satisfazendo uma condição no campo de
procura Aplica-se função hash no campo de procura Varre-se todas as páginas do bucket correspondente
Processo demorado se o bucket contiver muitas páginas
Hash Dinâmico Especifica-se um número máximo de páginas por bucket Inserção pode causar overflow num bucket Função hash é adaptada dinamicamente para evitar overflow
Hipótese que faremos na estimativa de custos: não há overflow de páginas num bucket – cada bucket não
ultrapassa um número máximo de páginas.
![Page 16: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/16.jpg)
ESTIMATIVAS DE CUSTOS
![Page 17: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/17.jpg)
Arquivos Hashed : SCAN Scan
Páginas são ocupadas em 80% Assim: um arquivo de 100 páginas, caso for organizado em hash,
vai necessitar de 100/0.80 páginas para seu armazenamento =
= 125 páginas !! Espaço livre é deixado nas páginas para evitar overflow no bucket
Custo = B(D+RC)/0.80 = 1.25*B(D+RC)
Bucket 1 Bucket 2 Bucket 3
![Page 18: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/18.jpg)
Arquivos Hashed : Busca
Seleção A = a
A : atributo chave da relação
Tempo para identificar a página contendo o registro = H = tempo de cálculo da função hash
Assumindo 1 única página no bucket
Custo = H + D + RC
![Page 19: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/19.jpg)
Arquivos Hashed : Busca
Seleção A = a
A : atributo não é chave da relação Supõe-se sempre que a estrutura hash não começou a se
degerar. Logo, cada bucket tem uma única página Todos os registros com A = a estão em um único bucket. Custo = H + D + RC
Seleção A > a
Todo o arquivo deve ser procurado Custo = 1.25B(D+RC)
![Page 20: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/20.jpg)
Arquivos Hashed : Inserção/Deleção
Inserção Página apropriada deve ser encontrada e modificada Custo = C + 2D + H
Deleção (supondo somente 1 registro ou que todos os registros estão em uma única página)
Encontrar a página do registro a ser removido Remover o registro da página Shift nos demais registros Escrever a página modificada Custo = Sel + RC + D
![Page 21: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/21.jpg)
Resumo - Hash
Scan Sel = chave
Sel = Nchave
Sel <> Insert Delete
sel1.25B (D+RC)
H + D + RC/2
H + D + RC 1.25B(D+RC) H +2D+ C
Sel + XD
1.25BD D D 1.25BD 2D Sel+XD Só I/O
“CHAVE” = Chave da relação
X = N. Pag. com registros removidos
![Page 22: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC.](https://reader036.fdocuments.net/reader036/viewer/2022062404/552fc13f497959413d8de682/html5/thumbnails/22.jpg)
Escolha de uma Boa Organização
Scan Sel =
chave
Sel = Nchave
Sel <> Insert Delete
Heap BD 0.5BD BD BD 2D 2D+Sel
Ord BD Dlog2B Dlog2B Dlog2B + DB/2
Dlog2B+
BD
Dlog2B+
BD
Hash 1.25BD D D 1.25BD 2D Sel+X
“CHAVE” = Chave da relaçãoX = N. Pag. com registros removidos