arquivos estruturados por hashing– custos i/o aula 6 profa. sandra de amo gbc053 – bcc

22
Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC

Upload: internet

Post on 18-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC

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

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

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

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

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

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

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

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

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

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

“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

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

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

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

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

ESTIMATIVAS DE CUSTOS

Page 17: Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC

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

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

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

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

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

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