UFPA – UNIVERSIDADE FEDERAL DO PARÁ
Centro de Ciências Exatas e Naturais
Departamento de Informática
Bacharelado em Ciência da Computação
Estrutura de Dados II
Prof.: Antonio B. C. Sampaio
Conceitos Básicos de Organização de Arquivos
Equipe:
• Leandro Lages de C. Faria
• Rodrigo Pinto Cardoso
nº 9908801201
nº 9908801401
Introdução
-
-
Pequenos volumes de dados e o acesso a eles
Problema: aumento do volume de dados e
freqüência de acesso
Uma maneira intuitiva de armazenar arquivos
Estratégia seqüencial ainda muito utilizada
Terminologia
-
O que é arquivo?
-
Registro lógico
-
Características dos campos
-
Registro lógico X Registro físico
Exemplo
Terminologia
-
O que é chave?
Chave primária
Chave secundária
Chave de acesso
Argumento de pesquisa
Chave de um registro
Chave de ordenação
Arquivo Seqüencial
Número
1
2
3
4
Nome
Ana
Bruno
Carlos
Elias
Idade
30
35
27
24
Salário
1000
2000
1500
1200
5
6
7
8
9
Fábio
Gilberto
Hilda
Isa
Marcela
26
31
24
25
23
1300
1600
1000
1600
1800
Operações
Acesso a um registro
 Inserção de um registro
 Exclusão de um registro
 Alteração de um registro
 Leitura exaustiva dos registros
 Reorganização dos arquivos

Acesso a um registro
Acesso serial (seqüencial)
 Acesso aleatório

– Chave de acesso  chave de ordenação
» Pesquisa seqüencial
– Chave de acesso = chave de ordenação
» Pesquisa binária
Inserção de um registro
Arquivo S – arquivo seqüencial
 Arquivo T – arquivo de transações
 Arquivo A – arquivo atualizado
 A = S e T intercalados
 O problema de inserção de apenas um registro
 Arquivo T usado como uma extensão de S

Exclusão de um registro

Pode ser implementada como a inserção
– Criação de um arquivo de transações.

Pode ser implementada com ajuda de um
campo adicional
– Vantagens
» Eliminação da necessidade de movimentação de
outros registros para preenchimento do espaço
liberado pelo excluído.
Alteração de um registro
Em que consiste?
 Condições para efetuar a operação:

– A alteração não pode fazer com que o registro
assuma um tamanho maior que o original, senão o
registro não poderia ser gravado por falta de espaço
– Não mudar o valor do atributo que seja chave de
ordenação, pois isso implicaria numa mudança de
posição do registro dentro do arquivo
Leitura Exaustiva
Exige a manipulação em paralelo do
arquivo principal S e do arquivo de
transações S
 Seqüência ditada pela chave de ordenação
 Os registros marcados como “excluídos”
não são considerados
 O próximo registro a ser considerado é
aquele de menor chave, considerando o
próximo registro de S e de T.

Reorganização do arquivo
Consiste na geração de um arquivo
seqüencial A, obtido pela intercalação do
arquivo S com o arquivo T de transações.
 Feita através de uma leitura exaustiva de S,
juntamente com T
 Resultado transferido para o arquivo A
 Precede geralmente ao uso do arquivo
gerado para emissão de relatórios ou
efetivação de consultas

Arquivo Seqüencial Indexado




Necessidade de maior eficiência na localização de
um registro num arquivo seqüencial
Um arquivo seqüencial acrescido de um índice
constitui um Arquivo Seqüencial Indexado
Um índice é formado por uma coleção de pares,
com cada par associando uma chave de acesso a
um endereço
Um arquivo seqüencial indexado possui áreas de
extensão para a implementação da operação de
inserção de registros
Índices
A finalidade é permitir a rápida determinação
do endereço de um registro do arquivo, dado
um argumento de pesquisa
 Vantagem: Cada entrada do índice ocupa um
espaço bem menor do que aquele ocupado
pelos dados
 Pesquisa mais rápida

Número
Nome
1
1000
Ana
30
1000
4
2
1050
Bruno
35
2000
7
3
1075
Carlos
27
1500
4
1300
Elias
24
1200
5
1325
Fábio
26
1300
6
1350
Gilberto
31
1600
7
1400
Hilda
24
1000
8
1440
Isa
25
1600
9
1480
Marcela
23
1800
NUMERO
ENDERECO
1075
1
1350
1480
Índice
Primário
Idade Salário
Área de Extensão
A área de extensão contém os registros
inseridos
 Usada porque é inviável implementar a
operação de inserção como nos arquivos
seqüenciais (alteração total dos índices)
 Principal alternativa: destinar em cada
registro da área principal um campo “elo”
para um endereço da área de extensão

Acesso a um registro

Acesso serial:
– sem usar o índice, como em arquivo seqüencial
– cuidado com as áreas de extensão

Acesso aleatório:
– O argumento de pesquisa define o
caminhamento sobre o índice
Inserção de um registro

Realiza uma busca no arquivo por meio do
índice

Inserção do registro na lista de extensão do
seu antecessor na área principal, conforme a
figura
NUMERO
ENDERECO
1075
1
1350
4
1480
7
Índice
Primário
Registro a ser inserido
1025 Jamanta
Zacarias
1000
Ø
1310
Bela
1600
1030
1800
Número
Nome
1
1000
Ana
1000
2
1050
Bruno
2000
Ø
100
Ø
3
1075
Carlos
1500
Ø
4
1300
Elias
1200
Ø
101
5
1325
Fábio
1300
Ø
6
1350
Gilberto
1600
Ø
7
1400
Hilda
1000
Ø
8
1440
Isa
1600
Ø
9
1480
Marcela
1800
Ø
Ø
Ø
Salário Elo
100
1025
Zacarias
1000
102
102
Ø
101
1310
Bela
1600
Ø
102
1030
Jamanta 1800
Área de extensão
Ø
Inserção de um registro
Número
Nome
1
1000
Ana
30
1000
4
2
1050
Bruno
35
2000
7
3
1075
Carlos
27
1500
4
1300
Elias
24
1200
5
1325
Fábio
26
1300
6
1350
Gilberto
31
1600
7
1400
Hilda
24
1000
8
1440
Isa
25
1600
9
1480
Marcela
23
1800
NUMERO
ENDERECO
1075
1
1350
1480
Índice
Primário
Idade Salário E ?
*
*
*
*
Exclusão de um registro

Implementada com ajuda de um campo de
estado adicional

Nas demais operações, desconsidera-se os
registros marcados como excluídos
Alteração de um registro
Realiza uma busca no arquivo por meio do
índice
 Se não envolver a chave de ordenação

– O registro é lido, seus campos alterados e
novamente gravado na mesma posição

Se envolver a chave de ordenação
– O registro é excluído, após sua leitura, e depois
inserido novamente na posição correspondente
Leitura Exaustiva

Leitura feita sem o uso do índice, de acordo
com a chave de ordenação

Os registros da área de extensão devem ser
acessados também por meio do elo da área
principal
Reorganização do arquivo
Necessidade de acessos freqüentes às áreas de
extensão e desconsideração dos registros excluídos
geram perda de desempenho das operações
 Registros excluídos logicamente ocupam um
espaço considerável
 Leitura exaustiva e transferência de todos os
registros para uma nova área, deixando livre a área
de extensão
 Geração de um novo índice após a transferência
dos dados

Reorganização do arquivo

A reorganização deve ser feita periodicamente,
quando o arquivo não estiver sendo utilizado,
geralmente quando o arquivo de extensão tiver
um certo tamanho
Arquivo Indexado
Ao contrário do arquivo seqüencial indexado,
não há a necessidade de manter os registros
fisicamente ordenados.
 Seqüencialidade física do arquivo cada vez
menos vantajosa em termos de acesso
 Assim, torna-se mais eficiente o uso de arquivo
indexado, não havendo compromisso com a
ordem física do arquivo
 Maior eficiência principalmente nas operações de
inserção, dispensando o uso das áreas de
extensão

Índices
As entradas do índice são ordenadas pelo valor
da chave de acesso, cada uma constituída por um
par (chave, endereço), visando tornar mais
eficiente o processo de busca e o acesso serial ao
arquivo
 Índice Exaustivo: entradas para cada registro do
arquivo
 Índice Seletivo: entradas para um subconjunto
dos registros

Índices
NÚMERO
ENDERECO
1000
4
Número
Nome
Idade Salário
1
1400
Isa
25
1600
2
1325
Hilda
24
1000
3
1350
Ana
30
1000
4
1000
Carlos
27
1500
5
1480
Bruno
35
2000
1050
6
1075
7
1300
9
1325
2
1350
3
6
1050
Marcela
23
1800
1400
1
7
1075
Gilberto
31
1600
1480
5
8
1300
Fábio
26
1300
9
Índice
Exaustivo
Índices
Sem um índice exaustivo, é necessária uma
tabela de alocação para indicar os espaços
alocados para o arquivo
 Desvantagens: necessidade de atualização de
todos os índices quando um registro é inserido ou
alterado em alguns casos, ao contrário dos
arquivos seqüenciais indexados

Acesso a um registro

Acesso serial:
– Feito através dos índices, pois as entradas do índice
são ordenadas pelo valor da chave de acesso.
– Geralmente o bloco do índice que contém a próxima
entrada já está na memória, por ser o mesmo da
última acessada, requerendo-se apenas uma leitura
do disco

Acesso aleatório:
– Busca-se o argumento de pesquisa num índice, para
obtenção do endereço desejado
Inserção de um registro
O registro é armazenado em qualquer endereço
vago dentro da área alocada para o arquivo
 Seus pares (chave, endereço) são inseridos nos
índices correspondentes
 Para um índice seletivo, é necessária uma
verificação prévia

Exclusão de um registro

É liberada a área de dados ocupadas pelo
registro (o registro é excluído fisicamente) e
são removidas as entradas do índice
correspondente
Alteração de um registro
Se houver um argumento de pesquisa, o endereço
do registro é determinado por uma busca sobre o
índice; senão, o endereço deve ser conhecido
 Se não aumentar o comprimento do registro, os
campos são alterados e gravados na mesma
posição, atualizando-se apenas o índice; senão a
alteração é implementada pela exclusão e posterior
inserção do registro

Leitura Exaustiva
Se existir pelo menos um índice exaustivo, esta
operação pode ser efetuada por meio de
sucessivos acessos seriais
 Caso contrário, ela só é possível com a
manutenção de uma tabela de alocação, contendo
todos os endereços ocupados

Reorganização do arquivo

Geralmente não é exigida pelos arquivos
indexados, porque os espaços liberados
pelas exclusões dos registros são
reutilizados nas operações de inserção
UFPA – UNIVERSIDADE FEDERAL DO PARÁ
Centro de Ciências Exatas e Naturais
Departamento de Informática
Bacharelado em Ciência da Computação
Estrutura de Dados II
Prof.: Antonio B. C. Sampaio
Conceitos Básicos de Organização de Arquivos
Parte 2
• Equipe:
• Leandro Lages de C. Faria
• Rodrigo Pinto Cardoso
nº 9908801201
nº 9908801401
Arquivo Direto
Consiste na instalação dos registros em
determinados endereços, baseados no valor de
uma chave primária (ao contrário do arquivo
indexado)
 Utiliza uma função que calcula o endereço de um
registro, eliminando a necessidade de um índice
 Objetivo principal é o mesmo do arquivo
indexado, que é obter acesso aleatório eficiente
 Outra diferença: acesso serial não previsto

Cálculo do endereço
Problema: encontrar uma função F que
transforme o valor C da chave de um registro no
endereço E correspondente
 Existem dois tipos de funções:

– Funções determinísticas: associam um único valor da
chave de acesso a cada endereço. Ex.: F(C)= x+1
– Funções não-determinísticas (ou probabilísticas):
geram para cada valor da chave de acesso um
endereço com a maior unicidade possível.
Ex.: F(C)= x mod 4
Número
Nome
Idade Salário
Elo
1
1000
Ana
30
1000
7
2
1075
Bruno
35
2000
Ø
3
1100
Carlos
27
1500
Ø
4
1300
Elias
24
1200
6
5
1400
Fábio
26
1300
Ø
6
1350
Gilberto
31
1600
Ø
7
1050
Hilda
24
1000
Ø
8
1440
Isa
25
1600
Ø
9
1480
Marcela
23
1800
Ø
Cálculo dos endereços associados ao campo NÚMERO
com a função F(C)=[(C-900)/61]+1
Tratamento de colisões
Colisão: ocorre quando é atribuído o mesmo
endereço a dois diferentes valores da chave de
acesso
 Havendo colisão, é necessário fazer o tratamento
de colisões, escolhendo um novo endereço para o
registro que a provocou
 Os dois principais métodos de tratamento de
colisão são: Endereçamento Aberto e
Encadeamento Puro

Tratamento por Endereçamento Aberto
Ao ocorrer colisão, é feita uma busca no
arquivo para localizar um endereço livre.
 Essa busca pode ser feita de três maneiras:
Pesquisa seqüencial, Pesquisa no bloco e
Realeatorização

Tratamento por Encadeamento Puro

Todos os registros que colidem em um endereço
são juntados numa lista encadeada associada
àquele endereço
Acesso a um registro
Acesso serial: feito com o uso de uma função
que preserve a ordem dos registros. Senão, é
necessário se conhecer o valor da chave do
próximo registro
 Acesso aleatório: feito pela aplicação da função
de cálculo de endereço ao argumento de
pesquisa C, sendo obtido o endereço E = F(C)

Inserção de um registro
A função F, de cálculo de endereço, é aplicada à
chave C do registro a ser inserido, resultando o
endereço E = F(C)
 Se houver colisões, utiliza-se um dos métodos de
tratamento de colisão citados anteriormente

Exclusão de um registro

O registro é acessado e, se necessário, é colocado
o valor “excluído” no seu campo de estado

Caso esteja encadeado em alguma lista de colisão,
pode ser removido dela (ou não!), de acordo com
a implementação
Alteração de um registro
Se a alteração não mudar o valor da chave de
acesso nem aumentar o comprimento do
registro, este é simplesmente lido, alterado e
gravado no mesmo endereço
 Caso contrário, o registro é excluído, alterado e
novamente inserido, de acordo com a operação
de inserção em arquivos diretos

Leitura Exaustiva dos registros
Efetivada pela aplicação sucessiva da operação de
acesso a um registro, usando como argumento de
pesquisa cada valor da chave de acesso presente
no arquivo
 Caso seja usada uma leitura serial, esta só será
possível se for usada uma função de cálculo de
endereço que preserve ordem dos registros pelo
valor da chave de acesso

Reorganização do arquivo
Melhor eficiência de acesso
 Feita com o intuito de agrupar registros de
cada lista em posições próximas
 A remoção dos registros excluídos é feita
nessa operação, se já não tiver sido feita

Arquivo Invertido
Mudança nos papéis de registro e campos
 Uso da chave secundária
 Serão identificados os registros que possuem
cada um dos particulares valores da chave de
acesso considerada
 A cada um dos valores da chave de acesso,
presentes no arquivo, é associada uma lista de
identificações de registros, chamada lista
invertida

Estrutura de um Arquivo Invertido
Generalização do conceito de arquivo
indexado, para acesso por meio de chaves
secundárias.
 As técnicas usuais de organização de
índices são válidas também, sendo que a
cada valor da chave é associado o conjunto
de endereços dos registros que possuem
aquele valor

Idade
Endereços
21
1
4
7
23
2
6
9
25
3
8
26
5
Salário
Chaves
2500
1050
3000
1800
2400
3500
1100
1200
4000
1250
1950
7000
1850
2000
Chave
Nome
Idade
Salário
1
1050
Ademar
21
2500
2
1200
Iara
23
3500
3
2400
Marcos
25
3000
4
1850
Tatiana
21
7000
5
6
1100
Pedro
26
3500
1250
Enio
23
4000
7
2000
Sandra
21
4000
8
9
1800
Claudia
25
3000
1950
Ivan
23
4000
Operações
Inserções e exclusões em lista invertidas
ocorrem sempre como uma conseqüência de
modificações pelo arquivo de dados
associado.
 Operação de acesso: é a mais interessante
em relação a este tipo de arquivo, por
possuir alternativas e características
próprias para isto.

Acesso ao Arquivo
Quais os nomes dos funcionários que
possuem idade igual a 21?
 Quais os nomes dos funcionários que
possuem idade igual a 23 e salário de 4000?
 Quais os nomes dos funcionários que
possuem idade igual a 23 ou salário de
4000?
 Quais as chaves dos funcionários com
salário entre 2500 e 3500?

Conclusões
Suporte a acessos associativos (por valor)
aos dados.
 Usado em banco de dados relacionais
 Arquivos Multilistas.
 Pode-se dizer que os dois são equivalentes,
diferindo apenas na forma pela qual são
indicados os grupos de registros que
possuem o mesmo valor num campo.

Vantagens e Desvantagens de
cada Tipo de Arquivo
VANTAGENS
Seqüencial
Seqüencial
Indexado
DESVANTAGENS
Registros dispostos ordenada- Não acomoda com simplicidamente
(acessos
e
buscas de as operações de modificação
Necessita de um arquivo de
seqüenciais mais eficientes)
transações, que precisa ser
reorganizado periodicamente
Registros dispostos ordena- Necessita de áreas de extensão
damente
As áreas de extensão precisam
Utiliza índices, que são mais ser reorganizadas periodicaeficientes do que os métodos do mente, para evitar possíveis
perdas de desempenho
Arq. Seqüencial de localização de
Novo índice deve ser gerado se
registros
houver mudança de endereço de
Os índices não precisam ser registros ou de atributos
atualizados
associados a ele
VANTAGENS
Não
Indexado
Direto
Invertido
há necessidade dos registros
ficarem ordenados, pois se
utilizam índices
Não existem áreas de extensão
Logo, há maior flexibilidade nas
operações de modificação
Reorganizações não são exigidas
Não há necessidade de se percorrer um índice
Acesso aleatório eficiente, calculando-se endereços de registros
através de uma função
DESVANTAGENS
Novo
índice deve ser gerado
se houver mudança de endereço
de registros ou de atributos
associados ao índice
Determinar
funções que gerem
endereços com o maior grau de
unicidade possível
Uso de funções ñ-determinísticas para se obter endereços do
arquivo pode causar colisões
Acesso direto ao registro após As listas invertidas valem
sua localização na lista invertida apenas para aquela disposição
física do arquivo
Nova inversão deve ser gerada
se houver mudança de endereço
de registros
Perguntas
1) Qual é a diferença entre o acesso aleatório e o
2)
3)
4)
5)
acesso seqüencial?
Explique sucintamente a operação de inserção em
Arquivos Seqüenciais.
Para que servem as áreas de extensão em
Arquivos Seqüenciais Indexados?
Cite uma vantagem do Arquivo Seqüencial
Indexado sobre Arquivo Seqüencial.
Qual a vantagem e desvantagem no uso de
Arquivos Indexados?
6) Como são determinados os endereços dos
registros em Arquivos Diretos?
7) Para que servem os métodos de
Tratamento de Colisão? Cite alguns deles.
8) Em que consiste o uso de Arquivos
Invertidos?
Download

da apresentação em ppt