1 arquivos de acesso direto inhaúma neves ferraz departamento de ciência da computação...
TRANSCRIPT
![Page 1: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/1.jpg)
1
Arquivos de Acesso Direto
Inhaúma Neves FerrazDepartamento de Ciência da Computação
Universidade Federal Fluminense
![Page 2: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/2.jpg)
2
Sumário
Endereçamento e Ponteiros
Espalhamento de Registros (“Hashing”)
Espalhamento Baseado em Tabelas Arquivos Extensíveis Espalhamento Virtual Espalhamento Extensível
Exemplo de Técnicas de Espalhamento
![Page 3: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/3.jpg)
3
Espalhamento e Ponteiros
![Page 4: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/4.jpg)
4
Conceito
Arquivos de Acesso Direto são aqueles nos quais para se ter acesso a um registro não é necessário fazer referência ou ter acesso a demais registros do arquivo
Neste tipo de arquivo a recuperação dos registros é feita diretamente pelo seu respectivo endereço, que pode ser obtido através de transformações aritméticas
![Page 5: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/5.jpg)
5
Endereçamento
Endereço do registro de ordem I de um arquivo é a posição, em memória secundária, onde principia esse registro
O deslocamento dessa posição(seu endereço), em relação ao início do arquivo, é :
POSIÇÃO INICIAL = (I - 1) X COMPRIMENTO DO REGISTRO
![Page 6: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/6.jpg)
6
Registros de Tamanho Variável (1)
Registros de comprimento variável são de difícil tratamento, pois o cálculo da posição inicial depende do comprimento dos registros
Procura-se tratar estes registros usando mais de um registro de tamanho fixo
![Page 7: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/7.jpg)
7
Registros de Tamanho Variável (2)
![Page 8: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/8.jpg)
8
Registros de Tamanho Variável (3)
![Page 9: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/9.jpg)
9
Ponteiros
Ponteiros são dados a partir dos quais o endereço do objeto apontado pode ser determinadoExistem 5 processos de implementação de ponteiros, em ordem crescente de tempo de transformação do ponteiro em endereço: Endereço em memória secundária Número do registro Deslocamento Endereçamento indireto Endereçamento simbólico
![Page 10: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/10.jpg)
10
Espalhamento de Registros (“Hashing”)
![Page 11: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/11.jpg)
11
“Hashing” ou Espalhamento (1)
"Hashing" consiste numa função que transforma uma chave em endereço do arquivo onde o registro associado a respectiva chave se encontra
A utilização desta função não exige que o arquivo contenha algum tipo de ordenação
Em geral, o espaço de endereços (conjunto de endereços possíveis no arquivo) é bem menor que o espaço de chaves (conjunto de chaves válidas)
![Page 12: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/12.jpg)
12
“Hashing” ou Espalhamento (2)
O mapeamento do espaço de chaves no espaço de endereços (função hash) pode ser realizado da forma:
endereço do registro hash(chave)
onde
conjunto de endereços conjunto de endereços válidos
![Page 13: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/13.jpg)
13
“Hashing” ou Espalhamento (3)
A técnica de "hashing" proporciona uma recuperação de registros extremamente rápida se comparada com a recuperação seqüencial
O tempo de recuperação em arquivos seqüenciais cresce com o tamanho do arquivo, o que não ocorre com o "hashing
![Page 14: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/14.jpg)
14
Projeto de Arquivos de Acesso Direto
No projeto de um arquivo de acesso direto os fatores que é necessário considerar são os seguintes:1- Agrupar um determinado número de registros em uma
unidade com endereço comum chamada "bucket"2- Calcular o espaço de armazenamento necessário para o
arquivo Esse dimensionamento do arquivo depende da densidade de
empacotamento ou fator de carga que é a razão entre o número de registros nos arquivos e a capacidade total dos "buckets"
3- Escolher uma função "hash" que é a transformação a aplicar à chave para obter o endereço do "bucket"
4- Optar por uma técnica de resolução do problema de transbordamento
Ocorre transbordamento ou "overflow" quando se endereça um registro a um "bucket" já cheio
![Page 15: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/15.jpg)
15
Função Hash
![Page 16: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/16.jpg)
16
“Buckets”
O arquivo é dividido em seções menores denominadas "buckets", que podem conter um ou mais registros A função "Hash" atribui a cada registro um endereço de "bucket" ("home address"), onde este pode ser acomodadoO tamanho de “bucket” é determinado pelo número de registros que este pode armazenar, ou ainda, pelo número de "slots" que ele contémUm "slot" é uma unidade de armazenamento que contém espaço para um registroUm arquivo com 1000 registros pode ser composto de 1.000 "buckets" de tamanho 1, ou 500 "buckets" de tamanho 2, etc...
![Page 17: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/17.jpg)
17
Colisão e Transbordamento
Ocorre uma colisão quando durante uma inclusão de registros, dois deles têm o mesmo endereço calculado pela função “hash”Estes registros são chamados sinônimosAs colisões não constituem problemas enquanto não se atingir a capacidade do "bucket" correspondenteA partir daí, ocorre transbordamento, que consiste no fato de um registro não poder ser acomodado em "home bucket"
![Page 18: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/18.jpg)
18
“Home bucket” e “homme address”
“Home bucket" é aquele que está associado ao "home address" do registro, calculado pela função "hash" aplicada à chave do registro
Aumentando o tamanho dos "buckets" diminui a probabilidade de transbordamento mas aumenta o tempo de busca do registro no "bucket“
A busca no “bucket” em memória principal é muito rápida comparada com o tempo de busca do “bucket” em memória secundária
![Page 19: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/19.jpg)
19
Modelo de “Bucket”
![Page 20: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/20.jpg)
20
Densidade de Empacotamento
À medida que um arquivo de acesso direto vai se enchendo cresce o número de acessos necessários a operações de inclusão ou recuperação
Não é desejável a existência de arquivos com muitos espaços vazios
Densidade de empacotamento é a razão:(número de registros no arquivo)/(número de “slots” no arquivo)
![Page 21: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/21.jpg)
21
Expectativa de Transbordamento (1)
Sempre que a densidade de empacotamento ultrapassa determinado patamar (usualmente 70%), as colisões tornam-se inaceitavelmente freqüentes, muito embora esse patamar varie sensivelmente com o tamanho dos "buckets"
Considere-se N "home buckets", cada qual comportando C registros e havendo K registros armazenados no arquivo.
A densidade de empacotamento é :K
C N*
![Page 22: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/22.jpg)
22
Expectativa de Transbordamento (2)
Supondo distribuição uniforme de registros nos "buckets“, a probabilidade de um dado "bucket" receber exatamente I dos K registros é produto de: A probabilidade do "bucket" receber I registros A probabilidade dos demais K-I registros não serem
destinados ao "bucket" O número de maneiras que I registros possam ser
destinados a um "bucket"( combinação de K elementos, I a I)
*
!!*
!
IKI
KIP
1
11
N N
I K I
*
![Page 23: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/23.jpg)
23
Expectativa de Transbordamento (3)
A probabilidade de J registros transbordarem de um "bucket" com capacidade C é P(C+J)
A expectativa do total de transbordamento que possa ocorrer em um "bucket" é
P C P C P C K C P K j P C jj
K C
1 2 2 3 31
* * ... * *
![Page 24: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/24.jpg)
24
Expectativa de Transbordamento (4)
A expectativa de transbordamento para o conjunto dos "home buckets" é
ou, em função percentual dos registros armazenados:
N j P C jj
K C
* *
1
1001
* * * ( )N
Kj P C j
j
K C
![Page 25: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/25.jpg)
25
Expectativa de Transbordamento (5)
![Page 26: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/26.jpg)
26
Funções de Espalhamento
Funções de Espalhamento ou funções “Hash” transformam uma chave em endereço de "bucket“
Exemplos Resto da Divisão Meio do Quadrado Dobramento Deslizamento Análise Digital Codificação Algébrica
![Page 27: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/27.jpg)
27
Resto da Divisão
A chave é digitalizada para um número inteiro Adicionando produtos dos caracteres por pesos
de um vetor arbitrário
O número inteiro obtido é dividido por um primo próximo do número de “buckets” do arquivo O resto da divisão é o “hime address”
![Page 28: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/28.jpg)
28
Dobramento e Deslizamento
Uso de OU-EXLUSIVO em “strings” de log2 (número de “buckets”) bits extraídos da chave
![Page 29: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/29.jpg)
29
Outras funções
Meio do Quadrado - chave é multiplicada por ela mesma e o endereço é obtido pelo truncamento das duas extremidades do número obtido pelo produto Análise Digital – determina-se a distribuição de valores da chave em cada posição ou dígito e as posições que possuem uma má distribuição são desconsideradas na transformação Codificação Algébrica – divisão de polinômios onde cada dígito da chave é considerado um coeficiente de um polinômio
![Page 30: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/30.jpg)
30
Tratamento do Transbordamento
No transbordamento é preciso gerenciar:1- A busca do espaço para armazenamento do registro2- A recuperação do registro quando necessário
Estratégias endereçamento aberto – solução computacional onde
calculam-se endereços de uma seqüência até obter de um deles o registro buscado ou a informação de ausência de espaços ou do registro no arquivo
endereçamento fechado (ou encadeamento) – solução por estruturas de dados na qual as cadeias de registros de transbordamento são ancoradas nos "home buckets".
![Page 31: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/31.jpg)
31
Endereçamento aberto
uma lista de endereços de "buckets"Ai = f(i, Chave), i= 1,2,3,...Sondagem linear
Ai = (i*passo + hash(chave)) mod N onde N = número de "buckets" i = 0,1,2,3,... passo, passo1, passo2 inteiro
Sondagem quadráticaAi = (i*passo1 + i*i*passo2 + hash(chave)) mod N
![Page 32: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/32.jpg)
32
“Delete byte”
A exclusão de registros no endereçamento aberto poderia prejudicar a busca pela criação de espaços vazios que fariam cessar buscas subseqüentesCria-se uma variável de estado de “slot” que permite criar uma marca de exclusão no registro (o "delete byte") comportando as seguintes transições de estados de registros Vazio Ocupado Excluído
A busca só se encerra ao encontrar um “slot” vazio
![Page 33: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/33.jpg)
33
Estados de um “delete byte”
![Page 34: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/34.jpg)
34
Esquemas de Transbordamento
![Page 35: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/35.jpg)
35
Espalhamento Baseado em Tabelas
![Page 36: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/36.jpg)
36
Conceito
Indicado para casos em que o número de recuperações é bem maior que o de inclusões, pois a busca é efetuada em apenas um acesso a memória secundáriaBaseado em uma tabela com uma entrada para cada “home address”, cada entrada possuindo uma linha ou “array” de célulasCada célula contém um endereço de "bucket", e o valor da maior assinatura digital de registro armazenado naquele “bucket
![Page 37: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/37.jpg)
37
Assinatura Digital
Uma assinatura digital de uma chave de registro (ou pseudo chave) é uma seqüência pseudo-aleatória de bits (cujo número de zeros seja próximo do número de uns) cujo tamanho pode crescer e que funciona como uma abreviatura da chaveOs registros de mesmo “home address” estão todos armazenados nos “buckets” indicados nas células de uma entrada da tabela e classificados por ordem de assinatura digital
![Page 38: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/38.jpg)
38
Exemplo de Assinatura Digital
A assinatura digital pode ser encontrada da forma bi = paridade ( Xi )
onde Xi+1 = ( Xi * a + b) mod c
e a,b e c são inteiros e X0 = H(key) Ou:
chave X0 X1 X2 X3
bo b1 b2 b3
![Page 39: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/39.jpg)
39
Funções utilizadas
Para o Espalhamento Baseado em Tabelas é necessária uma função "hash" que gere uma seqüência de endereços de "buckets" e uma função paralela de geração de uma sequência de k bits, isto é, uma assinatura digital do registro a partir de uma dada chave
![Page 40: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/40.jpg)
40
Exemplo (1)
Suponha um arquivo com tamanho de "bucket" igual a 3, assinaturas digitais com 5 bits (k = 5) e a inclusão de um registro cuja chave primária é "Maria" num "bucket" lotado
A assinatura da chave "Maria" corresponde a 00010 = 2Como esta assinatura é menor que a maior do "bucket", realiza-se a inserção da chave de forma ordenada Como o "bucket" estava cheio, ocorre transbordamento
![Page 41: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/41.jpg)
41
Exemplo (2)
A maior chave do "bucket" será eliminada e utilizada como registro separador entre este "bucket" e o seu sucessor; e, logo após, re-inserida no arquivo em outro endereço, podendo ocorrer novo transbordamento
Sobrou
![Page 42: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/42.jpg)
42
Recuperação de Registros (1)
A recuperação é bem mais eficiente que a inclusão. Neste caso, busca-se o menor inteiro i tal que assinaturai = tabela[bucketi]
Exemplo
![Page 43: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/43.jpg)
43
Recuperação de Registros (2)
Para assinatura igual a 100
![Page 44: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/44.jpg)
44
Exclusão de Registros
Na exclusão, efetua-se a busca do registro, o mesmo é excluído do arquivo e a tabela atualizada
![Page 45: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/45.jpg)
45
Arquivos Extensíveis
![Page 46: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/46.jpg)
46
Conceito
Em muitas aplicações, o número de registros pode variar consideravelmente
Arquivos de tamanho fixo, com capacidade para k registros, com número de registros a incluir muito próximo de k, possuem alta densidade de empacotamento e consequentemente, recuperações mais lentas
Se este número for muito menor que k, caracteriza-se desperdício de espaço no arquivo
![Page 47: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/47.jpg)
47
Técnicas de Tratamento
Existem técnicas para o tratamento de arquivos com tamanho indefinido, ou seja, os arquivos extensíveis, tais como: "Hashing" (ou Espalhamento) Dinâmico "Hashing" (ou Espalhamento) Extensível
![Page 48: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/48.jpg)
48
Espalhamento Dinâmico
![Page 49: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/49.jpg)
49
Espalhamento Dinâmico (1)
Neste tipo de "hashing", existem inicialmente N células na memória principal, cada qual apontando para um "bucket" no arquivoA função "hash" H utilizada, transforma a chave em um endereço de célulaCada célula tem atributos filho esquerdo, filho direito e paiOs filhos de uma célula são endereços de células ou de “buckets”Quando uma célula aponta para um “bucket” seu outro ponteiro está aterrado
![Page 50: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/50.jpg)
50
Espalhamento Dinâmico (2)
Na busca de um registro calcula-se o “home address” e a assinatura digitalA célula correspondente ao “home address” é acessadaCaso o filho direito de uma célula seja ponteiro aterrado seu filho esquerdo apontará para o “bucket” que deve conter o registro buscadoCaso contrário as células em memória tenderão a formar uma floresta de árvores binárias cada qual associada a um “home address” A busca na floresta continua até encontrar uma célula com ponteiro direito aterrado (e com ponteiro esquerdo apontando para um “bucket”)
![Page 51: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/51.jpg)
51
Espalhamento Dinâmico (3)
Para a navegação de busca na floresta, em cada nível i da árvore (raiz ao nível 1), verifica-se o bit de ordem i da assinatura digital desviando para a célula filha mais velha no caso de bit 0 e para a filha mais nova em caso de bit 1
![Page 52: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/52.jpg)
52
Espalhamento Dinâmico (4)
Para a busca neste tipo de arquivo a função "hash" H determina em qual árvore binária se encontra o registro a recuperar, e a função B determina, a cada bi, qual o caminho a seguir nesta árvore (onde i = nível corrente na árvore binária), ou seja para bi = 0, escolhe-se a folha da esquerda e, para bi =1, a folha da direita
![Page 53: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/53.jpg)
53
Inclusão de RegistrosNa inclusão de um novo registro, se o "bucket" encontrado pela busca estiver cheio, ocorre uma partição deste "bucket“Um novo “bucket” (companheiro ou “buddy”) é alocado bem como uma nova célula em memória apontando o “bucket” recém alocadoAloca-se também outra célula em memória para apontar o “bucket” que transbordou A antiga célula associada ao "bucket" que transbordou passará a apontar para as duas células associadas aos “buckets” ( o que transbordou e o novo) e estas últimas apontam para os respectivos “buckets”Os c registos contidos no "bucket" e o registro a inserir são redistribuídos entre ambos os "buckets““Buddy buckets” são apontados por células irmãs
![Page 54: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/54.jpg)
54
Redistribuição de Registros
O critério para a redistribuição dos registros de um “bucket”, apontado por uma célula de nível i, é dado pela função B (assinatura digital) que determina se cada registro deva ser alocado no "bucket" da esquerda (bi = 0) ou da direita (bi = 1)
![Page 55: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/55.jpg)
55
Exemplo de Floresta de Índices
Na figura de baixo vemos a floresta da figura de cima após o transbordamento do “bucket” 2
![Page 56: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/56.jpg)
56
Exclusão de Registros
Na exclusão de registros deve-se verificar se há possibilidade de liberação de “buckets”Isto ocorre quando a soma das populações do “bucket” que sofreu a exclusão e do seu “bucket” companheiro (se houver) pode ser contida em um só “bucket”Neste caso juntam-se os registros em um só “bucket”, libera-se o seu companheiro e liberam-se as duas células que apontavam para esses “buckets”
![Page 57: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/57.jpg)
57
“Bucket” companheiro
“Buckets" companheiros são aqueles apontados por nós externos (folhas da árvore de índices) com pai comum
Para identificar o “bucket” companheiro basta verificar, pela árvore binária de índices, a natureza do outro ponteiro da célula que aponta o “bucket” Se o ponteiro estiver aterrado não existe companheiro Se apontar célula não existe companheiro Se apontar “bucket” este é o companheiro
![Page 58: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/58.jpg)
58
Espalhamento Extensível
![Page 59: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/59.jpg)
59
Conceito
O “Hashing” Extensível é uma evolução do “Hashing” Dinâmico no qual a floresta de índices é substituída por um diretório, que é um vetor de endereços de “buckets” indexado pelo número binário indicador da posição do elemento do vetorCalcula-se exclusivamente a assinatura digital da chave do registro e seus primeiro d bits são o índice para busca no vetor do endereço de “bucket” O "diretório" é uma tabela constituída de 2*d índices
![Page 60: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/60.jpg)
60
Parâmetros utilizados
Cada “bucket” contém um atributo um inteiro T considerado "header", que indica o número de bits iniciais iguais de cada chave contida no "bucket”
O número d declarado no "diretório" é o maior dentre os T dos "buckets"
![Page 61: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/61.jpg)
61
Exemplo de “hashing” extensível
![Page 62: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/62.jpg)
62
Inclusão de Registros
Dada a chave para a inclusão e sua assinatura, comparam-se os d primeiros bits da chave com cada índice no diretório até obter uma coincidência
Obtido o índice se obtém o "bucket" correspondente ao endereço destino (semelhante ao “home address”)
Havendo espaço disponível a inclusão é efetivada
![Page 63: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/63.jpg)
63
Transbordamento (1)
Se houver transbordamento, aloca-se um novo "bucket" e os registros contidos no “bucket” que transbordou e mais o registro a incluir são redistribuídos entre o “bucket” transbordante e o novo "bucket" alocadoO contador T é incrementado de uma unidade e o critério de distribuição continua sendo a coincidência, em cada “bucket” dos T bits iniciais de cada chave contida no “bucket” (só que no caso T está maior do que antes do transbordamento).
![Page 64: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/64.jpg)
64
Transbordamento (2)
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 chavesOs "headers" dos "buckets" passam a ter T+1 bitsSe d T +1 a partição é trivial sem necessidade de alterar a tabela de índicesSe d < T+1 há necessidade de incrementar d, o que dobra a tabelaOs "buckets" não partidos passam a receber o dobro do número de ponteiros
![Page 65: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/65.jpg)
65
Atualização do Diretório
Durante as alterações de inclusão as mudanças no "diretório" que podem ocorrer são: Se d T , a única modificação a ser efetuada consiste
em atualizar os ponteiros dos índices do "diretório", ou seja, um dos índices apontará para o novo "bucket"
Se d < T , e sendo, por hipótese d T, o valor de d característico do "diretório" deve ser incrementado de uma unidade e, com isso, o tamanho do "diretório" será dobrado, e os ponteiro dos novos índices atualizados
![Page 66: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/66.jpg)
66
Exemplo de “hashing” extensível (1)
•Na figura abaixo, com todos os “buckets” lotados, suponha-se que houve transbordamento no "bucket" cujos índices são 10 e 11(terceira entrada da tabela)
•Há 4 entradas para quatro “buckets” todos eles com T = 2
•Deseja-se incluir um registro no “bucket com índice 00
•Há transbordamento e como o valor de T já era igual a 2 deve passar para 3
•T>d, logo d vai crescer e a tabela dobra de tamanho
•Passam a existir 8 entradas na tabela e 5 “buckets”
![Page 67: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/67.jpg)
67
Exemplo de “hashing” extensível (2)
•Todos os “buckets” estavam lotados
•Foi incluído um registro com índices são 10
•Foi incluído um registro com índice 00
![Page 68: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/68.jpg)
68
Exclusão de Registros
Na exclusão de registros deve-se examinar o "bucket"de onde saiu o registro e seu "bucket" companheiroSe, após a exclusão, o número de registros em ambos os "buckets" couber em apenas um, os “buckets” são concatenados e um deles é desalocadoApós a conacatenação, o "header" do "bucket" remanescente é decrementado de 1 unidadeQuando todos os "headers" T forem menores do que d, d deve ser decrementado reduzindo a tabela diretório à metade
![Page 69: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/69.jpg)
69
“Bucket” companheiro
São "buckets" companheiros aqueles que tem a mesma cabeça T e, além disso, as assinaturas digitais dos registros contidos em ambos tem T-1 bits iniciais iguaisPara verificar qual o índice do “bucket” companheiro escolhem-se os T bits iniciais de qualquer dos registros do “bucket” e se faz um OU-Exlusivo com 1
![Page 70: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/70.jpg)
70
Exemplo de Utilização de Técnicas de Acesso Direto
![Page 71: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/71.jpg)
71
Enunciado (1)
Criar um arquivo de acesso direto, com as seguintes características: Tamanho de "bucket" = 3; Fator de carga a = 80%; Função hash igual ao resto da divisão do inteiro
proveniente da digitalização da chave pelo maior primo igual ou menor do que o número de "buckets".
![Page 72: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/72.jpg)
72
Enunciado (2)
Determinar o número médio de acessos a "buckets" na recuperação e comparar as técnicas de tratamento de transbordamento por: endereçamento aberto; encadeamento com listas confluentes na área
primária; encadeamento com listas separadas em área
independente com "buckets" de tamanho 2.
![Page 73: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/73.jpg)
73
Enunciado (3)
Os registros a processar são 12
A digitalização de suas chaves produz os inteiros que se seguem:
{38, 27, 13, 17, 43, 7, 8, 22, 82, 40, 16, 25}
Estudar o efeito da substituição de registros tal que em lugar de 40 existisse 42 e em lugar de 16 existisse 23
![Page 74: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/74.jpg)
74
Solução
Número de "slots" necessários : 12/0,8 = 15Número de "buckets" : 15/3 = 5Função "hash" : H(k)=mod(k,5)Hi(chave)=mod((Hi-1(chave) + 1),5)
![Page 75: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/75.jpg)
75
Endereçamento AbertoPrimeira Lista de Dados
![Page 76: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/76.jpg)
76
Endereçamento AbertoSegunda Lista de Dados
![Page 77: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/77.jpg)
77
Endereçamento AbertoPrimeira e Segunda Listas de Dados
![Page 78: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/78.jpg)
78
EncadeamentoPrimeira Lista de Dados
![Page 79: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/79.jpg)
79
EncadeamentoSegunda Lista de Dados
![Page 80: 1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense ferraz@ic.uff.br](https://reader037.vdocuments.net/reader037/viewer/2022102900/552fc10b497959413d8c177f/html5/thumbnails/80.jpg)
80
EncadeamentoPrimeira e Segunda Listas de Dados