A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Arquivos Estruturados por Hashing– Custos I/O AULA 6 Profa. Sandra de Amo GBC053 – BCC."— Transcrição da apresentação:

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

2 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

3 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)

4 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.

5 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 = 5000 Como encontrá-los rapidamente ? Arquivo organizado por hash no campo Salário Função hash: mod 3 Onde estão os registros dos empregados com salário = 5000 ? 5000 mod 3 = 2 Resposta: bucket 2 S1 S2 S3 S4 ….

6 Exemplo: inserção de um registro Página do Subarquivo S2 Diretório de slots da página (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

7 Passos para a inserção de um registro Suponha que se quer inserir o registro (...., 14,....) de tamanho 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.

8 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.

9 Situação após a inserção (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 2 Slot 3 Slot 4 Slot 5 Slot 6 Novo registro Página do Subarquivo S2 Diretório de slots da página Espaço livre de 35 bytes Novo registro de tamanho 300 é inserido aqui !

10 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.

11 “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).

12 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 = 5000 Como encontrá-los rapidamente ? Arquivo organizado por hash no campo Salário Função hash: mod 3 Onde 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)

13 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

14 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.

15 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.

16 ESTIMATIVAS DE CUSTOS

17 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 1Bucket 2 Bucket 3

18 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

19 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)

20 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

21 Resumo - Hash ScanSel = chave Sel = Nchave Sel <>InsertDelete sel 1.25B (D+RC) H + D + RC/2 H + D + RC1.25B(D+RC)H +2D+ C Sel + XD 1.25BDDD 2DSel+XDSó I/O “CHAVE” = Chave da relação X = N. Pag. com registros removidos

22 Escolha de uma Boa Organização ScanSel = chave Sel = Nchave Sel <>InsertDelete Heap BD0.5BDBD 2D2D+Sel Ord BDDlog 2 B Dlog 2 B + DB/2 Dlog 2 B + BD Dlog 2 B + BD Hash 1.25BDDD 2DSel+X “CHAVE” = Chave da relação X = N. Pag. com registros removidos


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

Apresentações semelhantes


Anúncios Google