Upload
internet
View
107
Download
0
Embed Size (px)
Citation preview
Arquivos ExtensíveisArquivos Extensíveis
Sumário
• Aplicação• Tipos de espalhamento em arquivos extensíveis• Mecanismo de acesso• Espalhamento dinâmico• Espalhamento extensível
2
Aplicação
• Arquivos de acesso direto que possam expandir-se sem programação
• Embora com menor frequencia este tipo de arquivos também pode contrair-se diminuindo sem programação
3
Tipos de espalhamento em arquivos extensíveis
• Espalhamento dinâmico• Espalhamento extensível
4
Mecanismo de acesso
• O espalhamento em arquivos extensíveis utiliza um mecanismo de acesso, em memória, para obter o endereço de bucket da memória secundária
• No espalhamento dinâmico o mecanismo é uma floresta de árvores binárias
• No espalhamento extensível o mecanismo de acesso é um diretório (array uni dimensional) contendo o endereço de bucket da memória secundária
• Tal como no espalhamento baseado em tabelas os mecanismos de acesso precisam ser arquivados em arquivos auxiliares, carregados na abertura dos arquivos e salvos no fechamento dos arquivos
5
Espalhamento dinâmicoEspalhamento dinâmico
Mecanismo de acesso
• Em memória existem• Células
• Seu número é igual ao número de home buckets
• Caixa de nós de células
• Cada célula possui três atributos• Filho da esquerda• Filho da direita• Pai
• Os atributos filho da direita e pai iniciam aterrados• Os atributos filho da esquerda apontam os home
buckets
7
Conceito• Usa-se uma função hash original• O home address retornado por esta função seleciona uma
célula em memória• Inicialmente existem tantas células quantos são os home
addresses• Ao se ter acesso a uma célula, se o filho da direita estiver
aterrado, o filho da esquerda aponta para o bucket onde deve estar o registro buscado
• O acesso a esse bucket em memória secundária completa a operação de busca
• A operação de busca retorna o registro buscado ou um slot para a gravação de registro novo caso não exista ainda essa chave no arquivo
8
Memória secundária
• Em memória secundária existem• Buckets em quantidade determinada pela função hash• Caixa de nós de buckets para transbordamento
9
Células em memória – situação inicial
Células em memória – início da floresta
Transbordamento (1)
• Quando um home bucket, considerado de primeiro nível, transbordar:• A caixa de nós de buckets aloca um bucket de
transbordamento• Os registros do home bucket e o registro que causou o
transbordamento são divididos entre o home bucket e o bucket de transbordamento
• Estes dois buckets passam a ser considerados de nível i + 1, no caso de segundo nível
• A caixa de nós de células aloca duas novas células
12
Transbordamento (2)• Atributos das células alocadas
• Primeira• Pai – célula que apontava o home bucket• Filho da esquerda – Home bucket• Filho da direita – null
• Segunda• Pai – célula que apontava o home bucket• Filho da esquerda – Bucket de transbordamento• Filho da direita – null
• Célula que apontava o home bucket• Filho da esquerda – Primeira nova célula alocada• Filho da direita – Segunda nova célula alocada
• A célula que apontava o home bucket passa a ser a raiz de uma árvore binária de acesso a buckets
• O mecanismo de acesso passa a ser uma floresta de árvores binárias
13
Transbordamento (3)
• Para a divisão de registros entre buckets calcula-se a assinatura digital de cada chave de registro
• São direcionados para o bucket da esquerda os registros que possuam primeiro bit da assinatura digital igual a 0
• São direcionados para o bucket da direita os registros que possuam primeiro bit da assinatura digital igual a 0
• Quando um bucket de nível i transbordar repete-se o processo utilizando como seletor o bit de ordem i das assinaturas digitais e assim por diante
14
Buckets companheiros
• Definem-se como "buckets" companheiros no "hash" dinâmico aqueles apontados por nós externos (folhas da árvore de índices) com pai comum
• Teste de bucket meu companheiro• Se o filho da esquerda de meu pai sou eu
• Então o candidato a bucket companheiro é o apontado pelo filho da direita de meu pai
• Senão o candidato a bucket companheiro é o apontado pelo filho da esquerda de meu pai
• Se o filho da direita da célula que aponta o bucket candidato a companheiro está aterrado
• Então este é meu bucket companheiro• Senão não tenho bucket companheiro
15
Exclusão de registros
Nas exclusões de registros:• Se a somas das populações do bucket aonde vai
ocorrer a exclusão e de seu bucket companheiro são comportadas por um único bucket• Então
• Todos os registros são concentrados em um dos dois buckets• Desaloca-se o outro bucket• Desalocam-se duas células da árvore de índices correspondentes• A célula mãe das células desalocadas aponta o bucket que restou
alocado e com registros
16
Espalhamento ExtensívelEspalhamento Extensível
Mecanismo de acesso
• Em memória existe• Um diretório (array uni dimensional) contendo o endereço
de bucket da memória secundária• Uma variável inteira (d) contendo a profundidade do
diretório (2d)• Identificadores das posições do diretório que são os
números binários entre 0 e 2d – 1• Estes identificadores não são armazenados
18
Conceito• Semelhante ao espalhamento dinâmico com o mecanismo de
acesso simplificando a floresta de árvores binárias por um diretório
• Não são empregadas funções hash• O endereçamento é feito exclusivamente por meio de
assinaturas digitais• Consideram-se d bits da assinatura digital como home address• A posição do diretório correspondente a este home address
contém o endereço de bucket para a busca• A operação de busca retorna o registro buscado ou um slot
para a gravação de registro novo caso não exista ainda essa chave no arquivo
19
Memória secundária
• Em memória secundária existem• Buckets inicialmente alocados (um ou dois)• Caixa de nós de buckets para transbordamento• Cada bucket contém além dos slots um atributo nível (t)
que é igual ao número de bits iniciais iguais das assinaturas de todos os registros contidos no bucket
• Os valores d e t são também chamados de headers, do diretório e dos buckets, respectivamente
20
Diretório em memória (1)
21
•Havia dois buckets com d = 1•O número de registros com assinatura começando por 0 não coube em um bucket•Houve necessidade de dobrar o diretório d = 2•Foi alocado mais um bucket ficando um bucket com registros de assinaturas começando por 00 e outro bucket com registros de assinaturas começando por 01•O bucket com registros de assinaturas começando por 1 não transbordou aceitando 10 e 11
Diretório em memória (2)
22
A imagem abaixo mostra:•Diretório com d = 3•Bucket com T= 3 e registros com assinaturas começando por 000•Bucket com T= 3 e registros com assinaturas começando por 001•Bucket com T= 2 e registros com assinaturas começando por 010 ou 011•Bucket com T= 2 e registros com assinaturas começando por 010 ou 011•Bucket com T= 2 e registros com assinaturas começando por 100 ou 101•Bucket com T= 2 e registros com assinaturas começando por 110 ou 111
Inicialização do Diretório
Bucket Nível Slot Reg K Assinaturad=1 1 1 1 1 11125 001111100010
0 1 21 2 3
2 1 1 2 41035 1010101001112 43
Bucket Nível Slot Reg K Assinaturad=0 1 1 1 1 11125 001111100010
0 1 2 2 41035 1010101001113
Alternativas para inicialização do diretório•Bucket único (d = 0)•Dois buckets (d = 1)•Um bucket para assinaturas começando com 0•Um bucket com assinaturas começando com 1
Transbordamento (1)
• Quando um "bucket" com "header" de T bits transborda ocorre uma partição e os C+1 (C é a capacidade do "bucket", medida em "slots") registros são dispersados entre a folha do "bucket" existente e a recém-alocada, de acordo com o bit de ordem T+1 da assinatura de suas chaves.
24
Transbordamento (2)
• Os "headers" dos "buckets" passam a ter T+1 bits.• Se d T +1 a partição é trivial sem necessidade de
alterar a tabela de índices.Se d < T+1 há necessidade de incrementar d, o que dobra a tabela.
• Os "buckets" não partidos passam a receber o dobro do número de ponteiros.
25
Buckets companheiros
• São "buckets" companheiros no "Hash" extensível "buckets" que tem a mesma cabeça T e, além disso, as assinaturas ou pseudo-chaves dos registros contidos em ambos tem T-1 bits iniciais iguais
• Para achar o bucket companheirro de um dado bucket faz-se o seguinte:• Seja y um binários com os T bits inicias da assinatura de
qualquer dos registros do bucket• Seja z = y XOR 1• O bucket de endereço z, no diretório é o bucket
companheiro
26
Exclusão de registros (1)
Nas exclusões de registros:• Se a somas das populações do bucket aonde vai
ocorrer a exclusão e de seu bucket companheiro são comportadas por um único bucket• Então
• Todos os registros são concentrados em um dos dois buckets• Desaloca-se o outro bucket• Decrementa-se o valor do header T do bucket que permanece
27
Exclusão de registros (2)
• Para o "Hashing" Extensível, após a exclusão, o "header" do "bucket" remanescente é decrementado de 1 unidade
• Se todos os "headers" T forem menores do que d• Então d deve ser decrementado reduzindo a tabela
diretório à metade
28