1 arquivos de acesso direto inhaúma neves ferraz departamento de ciência da computação...

80
1 Arquivos de Acesso Direto Inhaúma Neves Ferraz Departamento de Ciência da Computação Universidade Federal Fluminense [email protected]

Upload: internet

Post on 17-Apr-2015

113 views

Category:

Documents


6 download

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

1

Arquivos de Acesso Direto

Inhaúma Neves FerrazDepartamento de Ciência da Computação

Universidade Federal Fluminense

[email protected]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

80

EncadeamentoPrimeira e Segunda Listas de Dados