armazenamento e organização de arquivos professores: maria claudia reis cavalcanti e ronaldo...

81
Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da Professora Ana Maria de C. Moura - IME

Upload: internet

Post on 16-Apr-2015

116 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

Armazenamento e Organização de Arquivos

Professores:

Maria Claudia Reis Cavalcanti e

Ronaldo Ribeiro Goldschmidt

Material adaptado das notas de aula da Professora Ana Maria de C. Moura - IME

Page 2: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

2

Sumário

Introdução e MotivaçãoMemóriasAlocação de RegistrosOperações em ArquivosOrganização de Arquivos em DiscoArmazenamento em Dicionário de

DadosExercícios

Page 3: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

3

Sumário

Introdução e MotivaçãoMemóriasAlocação de RegistrosOperações em ArquivosOrganização de Arquivos em DiscoArmazenamento em Dicionário de

DadosExercícios

Page 4: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

Introdução e Motivação

4

• BDs são muito grandes para caber na memória principal– Discos: persistência dos BDs

• Usualmente, as aplicações necessitam de apenas uma pequena parte do BD a cada momento.– Quando uma “porção de dados” for necessária, ela precisará ser localizada e

copiada para memória principal

• SGBD faz muitas operações de I/O:– READ: transferência de dados de disco para memória .– WRITE: transferência de dados da memória para disco

• Operações caras, se comparadas com operações em memória – A escolha de estruturas de armazenamento adequadas procura minimizar o

número de operações de I/O

Page 5: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

5

Sumário

Introdução e MotivaçãoMemóriasAlocação de RegistrosOperações em ArquivosOrganização de Arquivos em DiscoArmazenamento em Dicionário de

DadosExercícios

Page 6: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

6

Memórias – Hierarquia

CPU

CACHE (RAM)

MEMÓRIA PRINCIPAL

DISCO MAGNÉTICO

FITA

Armazenam. primário

Armazenam. secundário

Armazenam. terciário

solicitaçãodado

dadosatisfazendosolicitação

Page 7: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

7

Memórias

Armazenamento Primário: memória cache: RAM (random access

memory) estática - usada pela CPU p/ acelerar execução de programas

memória principal: DRAM (RAM dinâmica) - área de trabalho p/ armazenar/executar programas e dados custo em baixa volátil velocidade inferior à memória cache

Page 8: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

8

Memórias Armazenamento Secundário:

suporte p/ memória virtual e p/ sistema de arquivos

unidade de transferência de dados entre disco e memória principal: blocos, sob controle do SO

SGBD: autonomia no gerenciamento de blocos

arquivo

buffer de 4Kbytes

leitura/ gravação bloco

Page 9: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

9

Memórias

Armazenamento Terciário: característica principal: tempo

leitura/gravação bem mais altos que o secundário;

grande capacidade armazenamento; custo bem menor

fitas: acesso exclusivamente seqüencial armazenamento ótico de dados: CD-ROM

(Compact Disk-Read-Only Memory) Jukeboxes de discos óticos

armazenam centenas de GB

Page 10: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

10

Memórias – Custo x Benefício

Cache

MemóriaPrincipal

Disco(Armazenamento secundário)

Armazenamento terciário

VELOCIDADE DE ACESSO

PREÇO DO BYTE

Page 11: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

11

Memórias – Acesso aos Dados

.

.

.

DISCO

Esp aço de endereços virtu al

Espaço de

endereços real

MEMÓRIAPRINCIPAL

“swap”Mapeamento

Programa

dados

Endereçovirtual

Endereçoreal

Page 12: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

12

Sumário

Introdução e MotivaçãoMemóriasAlocação de RegistrosOperações em ArquivosOrganização de Arquivos em DiscoArmazenamento em Dicionário de

DadosExercícios

Page 13: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

Alocação de Registros

“Correspondência” entre conceitos:

13

Nível Lógico Nível Físico

Tabela Arquivo

Tupla Registro

Atributo Campo

Chave Primária Campo Chave

Page 14: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

14

Alocação de Registros

Tipo de registro Campo Tipo de Dado

type EMPREGADO = record Nome : packed array[1..30] of character;

CPF : packed array [1..11] of character;

Salário : integer;

Profissão : integer;

Departamento : packed array[1..20] of character;

end;

Page 15: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

15

Alocação de Registros

Um registro é uma coleção de valores ou itens relacionados.

Cada valor é formado por um ou mais bytes e corresponde a um campo do registro.

Arquivo é uma seqüência de registros.Em muitos casos, todos os registros de

um arquivo são do mesmo tipo.

Page 16: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

16

Alocação de Registros

Registros são mapeados em blocos de disco.

Blocos têm tamanhos fixos.Tamanho dos registros pode variar.Em BDRs:

tuplas de relações distintas variam de tamanho.tuplas de uma mesma relação podem variar de

tamanho.Registros de tamanho fixo e Registros de

tamanho variável.

Page 17: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

17

Nome CPF

Salário Profissão

Departamento

1 31 42 46 50 69

= separador de nome de campo / valor

separador de campo

separador de registro

Registros de Tamanho Fixo

Registros de Tamanho Variável

Alocação de Registros

Exs de caracteres separadores:

Maria Silva 12345678900 xxxx xxxx Pessoal

1 13 24 28 32 39

Nome=Maria Silva CPF=12345678900 Departamento=Pessoal

1 18 34 54

Page 18: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

18

Alocação de Registros

Abordagens para mapeamento BD – arquivos:Utilização de diversos arquivos. Cada arquivo

contendo registros de tamanho fixo. Implementação mais simples, porém com aplicação menos econômica.

Estruturação de arquivos para acomodar registros de tamanhos múltiplos. Aplicação mais econômica, porém de implementação mais complexa.

Page 19: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

19

Organização Espalhada e Não Espalhada

registro 1 registro 2 registro 3

registro 4 registro 5 registro 6

registro 1 registro 2 registro 3 registro 4 p

reg. 4 pregistro 5 registro 6 registro 7

bloco i

bloco i+1

bloco i+1

bloco i

organização não espalhada (“unspanned”)(usual para registros de tamanho fixo)

organização espalhada (“spanned”)

OBS: Quando o tamanho do registro é maior que o tamanho do bloco ( R > B), a organização espalhada é obrigatória.

Page 20: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

20

Alocação de Registros

Se o tamanho do registro for inferior ao tamanho do bloco:

fator de bloco (bfr)= B/R registros por bloco, onde:

B: n0 de bytes do blocoR: n0 de bytes do registro

P/ registros de comprimento variável, com organização espalhada cada bloco pode armazenar um n0 diferente de registros bfr: n0 médio de registros por bloco, que pode ser usado p/

calcular o n0 de blocos b requerido p/ um arquivo de r registros

N0 blocos p/ arquivo= (r/bfr)

Page 21: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

21

Alocação de Blocos em Arquivo

Alocação contígua blocos alocados consecutivamente leitura rápida dificulta expansão do arquivo

Alocação encadeada cada bloco possui ponteiro para o próximo bloco facilita expansão do arquivo leitura do arquivo fica mais lenta

Clusters combinação dos anteriores blocos consecutivos são alocados em clusters

(segmentos/extensões) os clusters são ligados por ponteiros

Page 22: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

22

Cabeçalhos de Arquivo

Também denominado descritor de arquivo

Contém informações sobre o arquivo: Endereços dos blocos no disco Tamanho e ordem dos campos (formato) Tipos de dados e caracteres separadores

Page 23: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

23

Sumário

Introdução e MotivaçãoMemóriasAlocação de RegistrosOperações em ArquivosOrganização de Arquivos em DiscoArmazenamento em Dicionário de

DadosExercícios

Page 24: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

24

Operações em Arquivos

Subdividem-se em operações de recuperação (não alteram valor) e de atualização (alteram conteúdo)

Em ambos os casos, pode ser necessária a localização prévia de registros

Localização feita com base em condições de seleção

Quando diversos registros satisfazem às condições de seleção, o primeiro registro (na seqüência física) é designado com registro atual

Após processamento do registro atual, operações subseqüentes localizam o próximo registro, que passa a ser considerado o registro atual.

Page 25: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

25

Operações em Arquivos No contexto de programas p/ SGBDs

Open prepara buffers p/ receber blocos do disco (cabeçalho) posiciona início arquivo

Reset arquivo já aberto, posiciona ponteiro no início do

arquivo Find

busca o primeiro registro que satisfaça condição e transfere bloco p/ buffer

Read/Get copia conteúdo do buffer p/ variável do programa avança próximo registro

FindNext procura o próximo registro que satisfaça condição e

transfere bloco p/ buffer

Page 26: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

26

Operações em Arquivos (cont.) Delete Modify Insert

Obs: Após realizar as 3 operações acima, o buffer em mem. principal é gravado de volta no disco

Close Scan

combina as operações Find, FindNext e Read, conforme necessário

retorna o 10 registro após op. open/reset; senão o próximo FindAll Find n FindOrdered

localiza registros, segundo sua ordenação por algum campo

Page 27: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

27

Sumário

Introdução e MotivaçãoMemóriasAlocação de RegistrosOperações em ArquivosOrganização de Arquivos em DiscoArmazenamento em Dicionário de

DadosExercícios

Page 28: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

28

Organização de Arquivos

Considerações IniciaisArquivos de Registros

Desordenados (Heap Files)Arquivos de Registros Ordenados

(Sorted Files)Arquivos de Acesso Direto (Hash

Files)

Page 29: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

29

Considerações Iniciais Distinção entre Organização de Arquivo e

Método de Acesso A organização de arquivo se refere à organização

dos dados de um arquivo em registros, blocos e estruturas de acesso. Inclui a maneira como registros e blocos são posicionados e interligados.

Um método de acesso fornece um grupo de operações que podem ser aplicadas a um arquivo.

É possível aplicar vários métodos de acesso a uma organização de arquivo.

No entanto, alguns métodos de acesso só podem ser aplicados a arquivos organizados de uma certa maneira.

Page 30: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

30

Considerações Iniciais Escolha da Organização de Arquivo e do Método de

Acesso Alguns arquivos podem ser mais estáticos (poucas

atualizações) enquanto outros podem ser mais dinâmicos (muitas atualizações)

A organização de arquivo mais adequada deverá viabilizar da forma mais eficiente possível as operações pretendidas.

Ex. com o arquivo Empregado (slide anterior): consultas freqüentes por CPF podem ser indicativo de uma

organização de arquivo (ordenação física ou criação de índices) que facilite essa operação.

Por outro lado para facilitar a geração cheques de pagamento os empregados deveriam ser agrupados por departamento (colocando-os em blocos interligados)

Page 31: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

31

Arquivos de Registros Desordenados (Heap Files)

Nesta organização: Não há ordem entre os registros. Novos registros são alocados onde há espaço.

Incluir um registro é muito eficiente: apenas o último bloco do arquivo é lido e reescrito

Eficiente em operações de seleção de todos os registros ("full table scan").

Ineficiente em operações com restrições ("where") A busca é sequencial: todos os blocos, bloco a bloco, devem ser

lidos (não importa qtos registros satisfazem à consulta) A remoção de registros gera desperdícios

Exige a reorganização periódica do arquivo Normalmente utilizado com estruturas adicionais (caminhos

de acesso ou índices)

Page 32: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

32

Exemplo:

RNNatalNeves100

PERecifeLima300

BASalvador

Mendes400

RJRioSilva200

UFCidadeNomeCodigo

Select * From TabelaWhere Codigo = 100;

Insert Into TabelaValues (310, “Ana", “Rio“, “RJ”);

Select * From Tabela;

Arquivos de Registros Desordenados (Heap Files)

Delete From Tabela whereCodigo=400;

Exercício: Quais os efeitos das operações de inserção e de exclusão indicadas ? Discuta os problemas decorrentes e alternativas de tratamento.

Page 33: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

33

Também chamados de heap ordenados Registros ordenados segundo um campo de classificação Registros podem ser ordenados na ordem da PK (chave de

classificação) Processamento eficiente qdo é preciso recuperar os

registros na classificação escolhida Mesmo que não sejam todos, pois os registros próximos deverão

estar em um mesmo bloco. Mas de nada adianta para buscas sobre campos não ordenados

Pesquisa binária X Pesquisa linear Pesquisa binária torna eficiente operações com restrições sobre o

campo de classificação Complexidade da pesquisa binária: log2n Complexidade da pesquisa linear: n/2

Arquivos de Registros Ordenados (Sorted Files)

Page 34: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

34

Exemplo:

Arquivos de Registros Ordenados (Sorted Files)

Page 35: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

35

Operações de inclusão e exclusão são carasOs registros precisam ser mantidos em ordemInserção: é preciso “abrir” espaço para o registro de acordo

com o valor do campo-classificaçãoExclusão: pode-se usar marcadores e reorganizações

periódicasAlteração: no campo-classificação implica na exclusão e re-

inserção do registro (o registro muda fisicamente de lugar) Técnicas comuns

Manter espaços não utilizados em cada blocoUtilizar arquivos de overflow temporários (desordenados)

Inclusão fica eficiente, mas a busca perdeAmbas associadas a reorganizações periódicas

Arquivos de Registros Ordenados (Sorted Files)

Page 36: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

36

Arquivos de Acesso Direto (Hash Files – Arquivos Diretos)

Organização primária de arquivo baseada em técnicas de hashing.

Fornece acesso rápido aos registros quando consultas envolvem condições de igualdade em um único campo (campo de hash).

Chave de hash: campo-chave é campo de hash Idéia do hashing: utilizar função h que, aplicada ao

campo de hash de um registro, gere o endereço do bloco de disco onde o registro está armazenado.

A busca do registro dentro do bloco pode ser realizada em memória principal.

Page 37: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

37

Arquivos de Acesso Direto (Hash Files – Arquivos Diretos)Uma função de hashing é definida sobre algum

atributo para “particionar” os dados. Ex: Recuperar sempre os empregados por departamento

O resultado da função indica o bucket (depósito) do registro. Bucket equivale ao bloco de disco – unidade de

armazenamento de um ou mais registros – ou um cluster de blocos consecutivos.

Eficiente para operações com restrições de igualdade sobre o atributo da função.

Sem vantagem para operações com restrição diferente de igualdade.

Também usado para acesso direto na memória

Page 38: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

38

Função HashH(K) = E

“H” é uma função, “K” é o valor de um atributo e “E” é a identificação do depósito do registro.

“E” assume valores entre 0 e M-1, sendo M a qtde de depósitos

Page 39: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

39

Técnicas de “Hashing”

Hashing : Randomização, Aleatorização

h(C)

espaço dos valoresespaço dos endereços

função de hashing

(ex: CPF1.000.000.000

possíveis valores)

(ex: os três últimos dígitos do CPF1.000 posições)

Page 40: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

40

Funções de Hashing

Característica desejável: distribuição uniforme, isto é, uma chave qualquer C tem igual chance de “apontar diretamente” para qualquer posição.

Algumas funções usuais:

mod (mais usada em geral): h(k)=K mod M

[V. Lum, P. Yuen, M. Dodd. Key to Address Transform Techniques: a Fundamental Performance Study on Large Existing Formatted Files, Communications of the ACM, 14(4), April 1971]

Page 41: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

41

Funções de Hashing

Exemplo:

CPF Nome Profissão Salário

123456000 456123000234156001

567890999089765999

000000001

999999

... ... ... ...h(CPF) = CPF mod 1000

Page 42: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

42

Colisões

Colisão:

Ocorre quando o valor do campo de hash de um registro que está sendo incluído levar a um endereço hash que já contiver um registro diferente.

Tratamento de Colisão:

Incluir o novo registro em alguma outra posição, uma vez que o endereço hash está ocupado.

O processo para encontrar outra posição é chamado resolução ou tratamento de colisão.

Page 43: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

43

Tratamento de Colisões – Hashing Estático (No. Fixo de Buckets)

Endereçamento aberto ou linearA partir da posição de colisão, procurar uma posição subseqüente vaga.

EncadeamentoManter uma lista encadeada de registros de overflow para cada posição no espaço de endereços.

Hashing múltiplo:

Aplicar uma segunda função de hashing quando ocorrer uma colisão. Se ocorrer nova colisão, aplicar endereçamento aberto ou nova função de hashing.

Page 44: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

44

Hashing Estático: Encadeamento utilizando Buckets de Overflow

340460

ponteiro

321761 91

ponteiro

22 72522

ponteiro

399 89

ponteiro

bucket 0

bucket 1

bucket 2

bucket 9

...

981

182

ponteiro

ponteiro ponteiro

652 ponteiro

ponteiro ponteiro

...

buckets principais

buckets de overflow

Os ponteiros são para registros dentro dos buckets de overflow

Page 45: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

45

Tratamento de Colisões – Hashing Estático (No. Fixo de Buckets)

Cada método de resolução de colisão requer seus próprios algoritmos para inclusão, recuperação e exclusão de registros.

Objetivo de uma boa função hash: Minimizar colisões e não deixar endereços sem uso Estudos de simulação e análise recomendam manter entre 70% e 90% de uma tabela hash cheia.

Sendo um arquivo com r registros, deve-se escolher M localizações para o espaço de endereços de modo que r/M esteja entre 0,7 e 0,9.

Escolher número primo para M para a função hash mod

Page 46: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

46

Tabela Hash – Inserção (1)

0

1

2

a3

h(a) = 3h(b) = 2h(c) = 1h(d) = 0h(e) = 1h(f) = 3

Ex: Supondo que temos um esquema de tratamento de colisão por encadeamento, um total de 4 depósitos e que cada bloco pode conter apenas 2 registros

Page 47: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

47

0

1

b2

a3

h(a) = 3h(b) = 2h(c) = 1h(d) = 0h(e) = 1h(f) = 3

Tabela Hash – Inserção (1)

Ex: Supondo que temos um esquema de tratamento de colisão por encadeamento, um total de 4 depósitos e que cada bloco pode conter apenas 2 registros

Page 48: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

48

0

c1

b2

a3

h(a) = 3h(b) = 2h(c) = 1h(d) = 0h(e) = 1h(f) = 3

Tabela Hash – Inserção (1)

Ex: Supondo que temos um esquema de tratamento de colisão por encadeamento, um total de 4 depósitos e que cada bloco pode conter apenas 2 registros

Page 49: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

49

d0

c1

b2

a3

h(a) = 3h(b) = 2h(c) = 1h(d) = 0h(e) = 1h(f) = 3

Tabela Hash – Inserção (1)

Ex: Supondo que temos um esquema de tratamento de colisão por encadeamento, um total de 4 depósitos e que cada bloco pode conter apenas 2 registros

Page 50: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

50

d0

ce

1

b2

a3

h(a) = 3h(b) = 2h(c) = 1h(d) = 0h(e) = 1h(f) = 3

Tabela Hash – Inserção (1)

Ex: Supondo que temos um esquema de tratamento de colisão por encadeamento, um total de 4 depósitos e que cada bloco pode conter apenas 2 registros

Page 51: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

51

d0

ce

1

b2

af

3

h(a) = 3h(b) = 2h(c) = 1h(d) = 0h(e) = 1h(f) = 3

Tabela Hash – Inserção (1)

Ex: Supondo que temos um esquema de tratamento de colisão por encadeamento, um total de 4 depósitos e que cada bloco pode conter apenas 2 registros

Page 52: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

52

Tabela Hash – Inserção (2)

d0

ce

1

b2

af

3

Considerando o exemplo anterior, seja h(g) = 1

g

O depósito 1 passa aconter 2 blocos

Page 53: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

53

Tabela Hash – Remoção (1)

d0

ce

1

b2

af

3

Suponha que vamos remover o registro de chave “e”. Como h(e) = 1, vamos percorrer a cadeia de blocos deste depósito até encontrarmos o(s) registro(s)

g

O depósito 1 pode ser reorganizado para voltar a ter somente um bloco

Page 54: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

54

Tabela Hash - Remoção (2)

d0

cg

1

b2

af

3

Ao remover o registro de chave “a”, “consolidamos” o depósito 3, trazendo o registro “f” para a primeira posição

d0

cg

1

b2

f3

Page 55: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

55

Eficiência de tabelas Hash

Ideal: um depósito possa conter somente 1 bloco Avaliar:

número de depósitos (M)tamanho do bloco (m registros por depósito)número de registros e a taxa de crescimento (m*M)

Poucos Registros Sobra espaço Muitos registros Pode ultrapassar tamanho previsto

Então como evitar problemas de crescimento?Tabelas hash dinâmicas:

Hash Extensível Hash Linear

Page 56: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

56

Hash Extensível

h(chave) gera uma seqüência binária de k bits Os i primeiros bits de h(chave) são utilizados para selecionar o

depósito em que um dado registro será colocado. Um array (tabela Hash) de 2i ponteiros para depósitos é

mantido.

i = 1

01

0001

10011100

1

1

Page 57: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

57

Hash Extensível

i cresce à medida em que novos registros são inseridos, não sendo necessário utilizar depósitos de estouro (overflow).

Cada depósito possui um número de bits de pertinência (j), que indica quantos bits foram examinados para direcionar os registros presentes no bloco. j também cresce com a inserção de registros.

01

0001

10011100

1

1

i = 1

00011011

0001

10011010

1

2

i = 2

1100 2

Page 58: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

58

inserir registro com h(chave) = 111100000

1010101011

array de depósitos(ponteiros p/ blocos)

Inserção em hash extensívelcaso 1 : Duplicação do array e redistribuição de registros

i = 1

j - bits de pertinência do bloco

h(chave) inicia com 0h(chave) inicia com 1

h(chave)

100000000111111111100001111

0000000001

B

A

bloco B está cheio e j = i :o conteúdo de B tem que ser redistribuído e array tem que ser duplicado

Page 59: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

59

i = 2

h(chave) inicia com 00h(chave) inicia com 01

0000000001

A

h(chave) inicia com 10h(chave) inicia com 11

1111111112

111100000B'

1010101012

100000000100001111 B

o array foiduplicado -

i foi incrementado

Como seu conteúdo não foi redistribuído, o j do depósito A não foi incrementado e A passou a ser apontado por duas entradas na tabela hash

j foi incrementado e o conteúdo de B foi redistribuído entre B e B' de acordo com o valor dos j primeiros bits de h(chave)

Page 60: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

60

bloco A está cheio e j < i :o conteúdo de A tem que ser redistribuído mas o array não precisa ser duplicado

inserir registro com h(chave) = 011111111

caso 2 : Apenas redistribuição de registros

i = 2

h(chave) inicia com 00h(chave) inicia com 01

0000000001

000000011011000000000000000

A

h(chave) inicia com 10h(chave) inicia com 11

1111111112

111100000B'

1010101012

100000000100001111 B

Inserção em hash extensível

Page 61: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

61

i = 2

h(chave) inicia com 00h(chave) inicia com 01

0000000002

000000011000000000 A

h(chave) inicia com 10h(chave) inicia com 11

1111111112

111100000B'

1010101012

100000000100001111

B

0110000002

011111111A'

j foi increm entado e o conteúdo de A foi red is tribuído entre A e A' de acordo com o va lor dos j prim eiros b its de h(chave).O a rray não precis a s er duplicado pois já exis te um depós ito pa ra A'

o array não foi alterado

Page 62: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

62

(Des)Vantagens do Hash Extensível

A busca nunca precisa fazer acesso a mais de um depósito de dados

Se o array de depósitos couber na memória, o acesso a ele não requer operação E/S

Quando o array de depósitos é muito grande (i grande) o momento da duplicação pode tornar uma inserção

bastante custosa em especial quando não couber mais na memória ou ainda, quando ocupar memória demais, impedindo o

uso desta por outros programas e dados

Page 63: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

63

Exercício:

Suponha a seguinte sequência de inserções: 101011101 100101101 100011011 100001011

Qual será o i ao final das inserções? Quantos blocos estarão com somente um

registro? Qual o bloco mais apontado pelo array de

depósitos?

É possível que haja um depósito que precise ser dividido muitas vezes, desequilibrando a distribuição da tabela de Hash.

h(chave) inicia com 00h(chave) inicia com 01

0000000001

000000011011000000000000000

A

h(chave) inicia com 10h(chave) inicia com 11

1111111112

111100000B'

1000000002

100000001100000010

B

100000011

Page 64: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

64

(Des)Vantagens do Hash Extensível

ConclusãoDesperdício de memória

i cresce muito rápido mantendo várias entradas apontando para um único depósito

Depósitos descaracterizados

Desperdício de disco Alocação de depósitos com um único registro

Page 65: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

65

Hash Linear

O crescimento do array de depósitos é mais lento. Um array de n depósitos é mantido:

n é dado conforme a taxa de preenchimento médio de registros nos depósitos

Os i últimos bits de h(chave) são utilizados para selecionar o depósito em que um dado registro será colocado.

000000

010101

101010

i = 2n = 3r = 3

Page 66: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

66

Hash Linear

Seja m o valor expresso pelos i últimos bits de h(chave). Se m < n, o registro é colocado no bloco correspondente ao depósito numerado como m. Caso contrário, é utilizado o depósito numerado como m-2i-1 (m com o primeiro bit mudado de 1 para 0). Veja o que acontece quando vamos inserir o

registro cuja chave gera a sequência 1111:

000000

010101

101010

i = 2n = 3r = 3

Page 67: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

67

Hash Linear

Seja m o valor expresso pelos i últimos bits de h(chave). Se m < n, o registro é colocado no bloco correspondente ao depósito numerado como m. Caso contrário, é utilizado o depósito numerado como m-2i-1 (m com o primeiro bit mudado de 1 para 0). Veja o que acontece quando vamos inserir o

registro cuja chave gera a sequência 1111:

000000

01011111

01

101010

i = 2n = 3r = 4

Page 68: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

68

Hash Linear

00001010

0

11111

i = 1n = 2r = 3

00001010

0

11110101

1

i = 1n = 2r = 4

Seja r o número de registros na tabela. Considere r/n < 1.7 n cresce à medida em que novos registros são inseridos de forma a manter a

razão r/n abaixo de um limiar pré-determinado. i cresce quando n ultrapassa 2i. Quando os parâmetros crescem pode haver redistribuição de registros entre

blocos. Sempre após inserirmos, verificamos a razão r/n

Ex: inserir 0101, como r/n > 1.7, após a inserção, n já pode crescer,

Page 69: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

69

Hash Linear

Seja r o número de registros na tabela. Considere r/n < 1.7 n cresce à medida em que novos registros são inseridos de forma a manter a

razão r/n abaixo de um limiar pré-determinado. i cresce quando n ultrapassa 2i. Quando os parâmetros crescem pode haver redistribuição de registros entre

blocos. Sempre após inserimos verificamos a razão r/n

Ex: inserir 0101, como r/n > 1.7, após a inserção, n já pode crescer, i cresce, o depósito, que corresp. ao novo, com dif do 1o bit é

redistribuído (00)

00001010

0

11110101

1

i = 1n = 2r = 4

000000

11110101

01

101010

i = 2n = 3r = 4

Page 70: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

70

Hash Linear Depósitos de estouro podem ser utilizados.

Inserir 0001 Cria-se um depósito de estouro para o depósito 01 razão r/n permanece < 1.7, então não precisa aumentar

n E se inserirmos 0111?

000000

11110101

01

101010

i = 2n = 3r = 4 000000

11110101

01

101010

i = 2n = 3r = 5

0001

Page 71: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

71

Hash Linear E se inserirmos 0111? A razão ultrapassa 1.7, então devemos aumentar n

000000

01010001

01

101010i = 2n = 4r = 6

11110111

11

000000

11110101

01

101010

i = 2n = 3r = 6

00010111

Page 72: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

72

Hash Linear

Que cuidado é preciso tomar quando vamos buscar um dado registro?Considere a situação abaixo na busca pelo

registro cuja chave gera a seqüência 1011

000000

11110101

01

101010

i = 2n = 3r = 5

0001 Não há o depósito 11, logo, realiza a busca no depósito 01.

Page 73: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

73

101010101

array de depósitos

n = 2i = 1r = 5

h(chave) termina com 0 h(chave) termina com 1

h(chave)

111111111100001111

000000000100000010

inserir registro com h(chave) = 111100000

r/n ultrapassará o limiar :n tem que ser incrementado. n ultrapassará2i e i terá que ser incrementado também

r/n < 3

Hash Linear - Inserção

Page 74: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

74

101010101

n = 3i = 2r = 6

h(chave) termina com 00 h(chave) termina com 01 ou 11

111111111100001111

000000000111100000

r/n < 3

100000010 h(chave) termina com 10

n foi incrementado para manter r/n abaixo de 3

i foi incrementado para manter n abaixo de 2i

este registro foi redistribuído para manter a coerência do array

Hash Linear - Inserção

Page 75: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

75

Sumário

Introdução e MotivaçãoMemóriasAlocação de RegistrosOperações em ArquivosOrganização de Arquivos em DiscoArmazenamento em Dicionário de

DadosExercícios

Page 76: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

76

Armazenamento em Dicionário de Dados

SGBDR precisa manter dados sobre as relações (Catálogo do Sistema). Exemplos: Nomes das relações Nomes dos atributos de cada relação Domínios e tamanhos dos atributos Nomes e definições das visões Restrições de integridade Nomes de usuários autorizados Número de tuplas em cada relação Método de armazenamento para cada relação

Page 77: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

77

Armazenamento em Dicionário de Dados

Exemplo de esquema sobre metadados:

Relação(nome-relação, numero_atbs, organização_armazenamento, local)

Atributo(nome-atributo, nome-relação, tipo_domínio, posição, tamanho)

Usuário(nome_usuário, senha_criptografada, grupo)

Índice(nome_indice, nome_relação, tipo_indice, atbs_indice)

Visão(nome_visão, definição)

Page 78: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

78

Sumário

Introdução e MotivaçãoMemóriasAlocação de RegistrosOperações em ArquivosOrganização de Arquivos em DiscoArmazenamento em Dicionário de

DadosExercícios

Page 79: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

79

Exercício 1:

Considerando os depósitos da figura, mostre como ficará a situação após: g a j forem inseridos

nos depósitos 0 a 3, resp.

a e b forem eliminados k a n forem inseridos

nos depósitos 0 a 3, resp.

c e d forem eliminados

d0

ce

1

b2

af

3

Page 80: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

80

d0

ce

1

b2

af

3

Considere a tabela de hash abaixo. O que acontece com a inclusão de g,

dado que h(g) = 3?

Exercício 2:

Page 81: Armazenamento e Organização de Arquivos Professores: Maria Claudia Reis Cavalcanti e Ronaldo Ribeiro Goldschmidt Material adaptado das notas de aula da

81

Atividades Práticas

Lista de Exercícios em Anexo

• Cap. 13 – Elmasri e Navathe

• Cap. 11 – Silberschatz e Korth

Armazenamento e Organização de Arquivos

Leituras Recomendadas