04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Universidade Federal do Espírito Santo
Centro de Ciências Agrárias – CCA-UFES
Departamento de Computação
Métodos de Acesso à Arquivo
Estrutura de Dados II
Estrutura de Dados II
COM10078 - 2015-II
Prof. Marcelo Otone Aguiar
[email protected]
www.marceloaguiar.pro.br
Universidade Federal do Espírito Santo - CCA-UFES
Conteúdo Programático da Disciplina
- Métodos de Acesso a Arquivos
‣Estrutura de arquivos;
‣Acesso sequencial;
‣Acesso direto;
2
C.H. Prevista
4 horas
Universidade Federal do Espírito Santo
CCA-UFES
1
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Conceitos Gerais
•
A pesquisa em memória secundária envolve arquivos contendo
um número de registros maior do que o número que a memória
interna pode armazenar.
•
Os algoritmos e as estruturas de dados para processamento
em memória secundária têm de levar em consideração os
seguintes aspectos:
3
•
O custo para acessar um registro é algumas ordens de
grandeza maior do que o custo de processamento na
memória primária.
•
Em memórias secundárias, apenas um registro pode ser
acessado em um dado momento, ao contrário das memórias
primárias, que permitem o acesso a qualquer registro de
um arquivo a um custo uniforme.
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Conceitos Gerais
• (Continuação)
• Para desenvolver um método de pesquisa eficiente,
o aspecto sistema de computação é da maior
importância. As características da arquitetura e
do sistema operacional da máquina tornam os
métodos de pesquisa dependentes de parâmetros que
afetam seus desempenhos. Assim, a transferência
transfer ncia
de blocos entre as memórias
mem rias primária
prim ria e
secundária
secund ria deve ser tão
t o eficiente quanto as
características
caracter sticas dos equipamentos disponíveis
dispon veis o
permitam.
permitam
4
Universidade Federal do Espírito Santo
CCA-UFES
2
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Conceitos Gerais
• A medida que cresce o volume de dados e/ou a
freqüência e a complexidade dos acessos, crescem
também os problemas de eficiência do armazenamento
dos arquivos e do acesso a seus registros.
• Sendo então necessário a sofisticação das técnicas
de armazenamento e recuperação de dados.
• A maneira intuitiva de armazenar um arquivo
consiste na distribuição dos seus registros em uma
ordem arbitrária, um após o outro, dentro da área
destinada a contê-lo.
5
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Conceitos Gerais
• Esta ordem pode ser, por exemplo,
exemplo aquela na qual os
registros são gerados.
• Isto causa uma dificuldade na localização dos
registros e uma perda de eficiência, porém esta
técnica intuitiva é bastante usada, principalmente
durante as fases preliminares da geração de um
arquivos.
6
Universidade Federal do Espírito Santo
CCA-UFES
3
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
ESTRUTURA DOS ARQUIVOS
Universidade Federal do Espírito Santo
CCA-UFES
7
Universidade Federal do Espírito Santo - CCA-UFES
Estrutura dos Arquivos
• Um
arquivo é formado por uma coleção de registros
lógicos
gicos,
gicos cada um deles representando um objeto ou
entidade.
• Um
registro lógico, ou simplesmente registro, é
formado por uma sequência de itens, sendo cada item
chamado campo ou atributo.
atributo Cada item corresponde a
uma característica ou propriedade do objeto
representado.
• Cada campo possui um
nome, um tipo e
um comprimento. O comprimento dos valores de um
atributo pode ser constante para todos os registros
do arquivo, ou variável.
8
Universidade Federal do Espírito Santo
CCA-UFES
4
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Estrutura dos Arquivos
• O armazenamento de um arquivo é feito, via de
regra, por blocos de registros lógicos
l gicos (um bloco é
chamado registro físico), sendo, em cada leitura ou
gravação, lido ou gravado todo um bloco e não
apenas um registro lógico.
• Uma
chave é uma sequência de um ou mais campos em
um arquivo.
• Uma
chave primária é uma chave que apresenta um
valor diferente para cada registro do arquivo,
arquivo de
tal forma que, dado um valor da chave primária, é
identificado um único registro do arquivo.
Usualmente a chave primária é formada por um único
campo.
Universidade Federal do Espírito Santo
CCA-UFES
9
Universidade Federal do Espírito Santo - CCA-UFES
Estrutura dos Arquivos
•
Uma chave secundária difere de uma primária pela
possibilidade de não possuir um valor diferente para cada
registro. Assim, um valor de uma chave secundária
identifica um conjunto de registros.
•
Chave de acesso é a chave utilizada para identificar o(s)
registro(s) desejado(s) em uma operação de acesso a um
arquivo.
•
Argumento de pesquisa é o valor da chave de acesso em uma
operação.
•
Chave de um registro é o valor de uma chave primária em um
particular registro do arquivo.
•
Chave de ordenação é a chave primária usada para
estabelecer a seqüência na qual devem ser dispostos
(física ou logicamente) os registros de um arquivo.
10
Universidade Federal do Espírito Santo
CCA-UFES
5
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
ACESSO SEQUENCIAL
Universidade Federal do Espírito Santo
CCA-UFES
11
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Sequenciais
• Em um arquivo sequencial, os registro são dispostos
ordenadamente, obedecendo a seqüência determinada
por uma chave primária, chamada chave de ordenação.
12
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
Universidade Federal do Espírito Santo
CCA-UFES
6
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Sequenciais
• Esta organização, que representa um aperfeiçoamento
em relação àquela na qual os registros são
dispostos aleatoriamente, representa, também, uma
perda de flexibilidade por não acomodar com
simplicidade as operações de modificação do
arquivo.
• O acesso a uma registro, dado um argumento de
pesquisa, é facilitado se a chave de acesso
coincide com a chave de ordenação (ou com sua parte
inicial), pois, nos demais casos, não há vantagem
na seqüencialidade do arquivo.
13
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Sequenciais Indexados
• Quando em um arquivo sequencial o volume de acessos
aleatórios torna-se muito grande, se faz necessário
a utilização de uma estrutura de acesso, associada
ao arquivo, que ofereça maior eficiência na
localização de um registro identificado por um
argumento de pesquisa.
• Um arquivo sequencial, acrescido em um índice
ndice
(estrutura de acesso) constitui um arquivo
seqüencial indexado.
• Um índice é formado por uma coleção de pares, cada
um deles associando um valor da chave de acesso a
um endereço no arquivo. Assim, um índice é sempre
específico para uma chave de acesso.
14
Universidade Federal do Espírito Santo
CCA-UFES
7
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Sequenciais Indexados
• Além do arquivo sequencial e do índice
ndice,
ndice um arquivo
seqüencial indexado possui áreas de extensão que são
utilizadas para a implementação da operação de
inserção de registros.
• A finalidade de um índice é permitir rápida
r pida
determinação
endereço
determina o do endere
o de um registro do arquivo,
arquivo
dado um argumento de pesquisa.
• O endereço identifica a posição onde está armazenado o
registro, na memória secundária.
• Usualmente, cada entrada do índice, formada por um par
(chave do registro, endereço do registro), ocupa um
espaço bem menor do que o registro de dados
correspondente, o que faz com que a área ocupada pelo
índice seja menor do que aquela ocupada pelos dados.
Universidade Federal do Espírito Santo
CCA-UFES
15
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Sequenciais Indexados
• Com isto a pesquisa sobre o índice pode ser feita
com maior rapidez do que se fosse feita diretamente
sobre o arquivo de dados correspondente.
• Este fato constitui a justificativa maior para a
utilização dos índices.
NUMERO
ENDERECO
Número
Nome
1075
1
1
1000
Ana
30
1350
4
2
1050
Bruno
35
2000
1480
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
Índice
Primário
16
Idade Salário
1000
Universidade Federal do Espírito Santo
CCA-UFES
8
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Área de Extensão
• A área
rea de extensão
extens o (também chamada área de
overflow) destina-se a conter os registros
inseridos, em um arquivo seqüencial indexado, após
a criação do arquivo.
• Ela constitui uma extensão da área principal de
dados do arquivo.
• Áreas de extensão são necessárias em arquivos
seqüenciais indexados, porque nesses não é viável a
implementação da operação de inserção de registros
do mesmo modo que nos arquivos seqüenciais.
17
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Área de Extensão
• Naquele processo, a maioria dos registros muda de
endereço, o que obrigaria uma completa alteração
nas entradas do índice, a cada atualização do
arquivo.
• Uma possível implementação de áreas de extensão em
um arquivo sequencial indexado consiste em destinar
um em cada registro da área principal um campo de
elo para conter o endereço da lista encadeada de
seus sucessores (ou antecessores) alocados na área
de extensão.
18
Universidade Federal do Espírito Santo
CCA-UFES
9
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Área de Extensão
NUMERO
ENDERECO
1075
1
1350
4
1480
7
Índice
Primário
Registro a ser inserido
1030
1310
1025
Ø
19
Jamanta
Bela
Zacarias
1800
1600
1000
Ø
Número
Nome
1
1000
Ana
Salário Elo
1000
2
1050
Bruno
2000
3
1075
Carlos
1500
Ø
4
1300
Elias
1200
5
1325
Fábio
1300
Ø
101
Ø
6
1350
Gilberto
1600
Ø
7
1400
Hilda
1000
Ø
8
1440
Isa
1600
Ø
9
1480
Marcela
1800
Ø
Ø
100
Ø
100
1025
Zacarias
1000
102
102
Ø
101
1310
Bela
1600
Ø
102
1030
Jamanta
1800
Ø
Área de extensão
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Indexados
• Nos arquivos sequenciais indexados, o compromisso
de manter os registros fisicamente ordenados pelo
valor da chave de ordenação acarreta uma série de
problemas, principalmente no que diz respeito à
operação de inserção de um registro, como a
utilização de áreas de extensão e reorganizações
periódicas.
• À medida que decresce a frequência de acessos
seriais, relativamente à frequência de acessos
aleatórios, a manutenção da sequencialidade física
do arquivo encontra uma compensação cada vez menor
em termos de eficiência de acesso, até tornar-se
antieconômica.
20
Universidade Federal do Espírito Santo
CCA-UFES
10
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Indexados
• A partir deste ponto, torna-se mais conveniente o
uso de um arquivo indexado, no qual os registros
são acessados sempre através de um ou mais índices,
não havendo qualquer compromisso com a ordem física
de instalação dos registros.
• A liberdade na escolha do endereço no qual um
registro é armazenado representa um ganho de
flexibilidade que permite maior eficiência,
principalmente na operação de inserção de um
registro, conduzindo, também, a uma simplificação
da estrutura geral do arquivo, sendo dispensados os
mecanismos complexos de administração de áreas de
extensão.
Universidade Federal do Espírito Santo
CCA-UFES
21
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Indexados
NÚMERO ENDERECO
1000
1050
1075
1300
1325
1350
1400
1480
Índice
4
6
7
9
2
3
1
5
1
Número
1400
Nome
Isa
Idade
25
Salário
1600
2
3
4
1325
1350
1000
Hilda
Ana
Carlos
24
30
27
1000
1000
1500
5
1480
Bruno
35
2000
6
7
1050
1075
Marcela
Gilberto
23
31
1800
1600
8
9
1300
Fábio
26
1300
ÁREA DE DADOS NO DISCO
Exaustivo
22
Universidade Federal do Espírito Santo
CCA-UFES
11
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Indexados
• Em um arquivo indexado, podem existir tantos
índices quantas forem as chaves de acesso aos
registros.
• Um índice
ndice consiste de uma entrada para cada
registro considerado relevante com relação à chave
de acesso associada ao índice.
• As entradas do índice são ordenadas pelo valor da
chave de acesso, sendo cada uma delas constituída
por um par (chave do registro, endereço do
registro).
• A sequencialidade física das entradas no índice
visa a tornar mais eficiente o processo de busca e
permitir o acesso serial ao arquivo.
23
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Indexados
• Um índice é dito exaustivo quando possui uma
entrada para cada registro do arquivo e seletivo
quando possui entradas apenas para um subconjunto
de registros.
• O subconjunto é definido por uma condição relativa
à chave de acesso e/ou a outros atributos do
arquivo.
• Um exemplo de índice seletivo seria o índice dos
funcionários estáveis (há mais de 10 anos na
empresa) sobre o cadastro geral de funcionários de
uma empresa.
24
Universidade Federal do Espírito Santo
CCA-UFES
12
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Indexados
• O maior problema relacionado com a utilização de
arquivos indexados diz respeito à necessidade de
atualização
ndices,
atualiza o de todos os índices
ndices quando um registro
é inserido no arquivo.
• Atualizações nos índices também são necessárias
quando a alteração de um registro envolve atributos
associados a índices.
• Nos arquivos sequenciais indexados, a necessidade
de alteração dos índices é eliminada pelo uso de
áreas de extensão e encadeamento na implementação
de inserções; no entanto, esta estratégia não é
condizente com a idéia de arquivos indexados, nos
quais a manutenção constante dos índices é
necessária.
25
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
ACESSO DIRETO
26
Universidade Federal do Espírito Santo
CCA-UFES
13
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Diretos
• A ideia básica de um arquivo direto consiste na
instalação
instala o dos registros em endereços
endere os determinados
com base no valor de uma chave primária
prim ria,
ria de modo
que se tenha acesso rápido aos registros
especificados por argumentos de pesquisa, sem que
haja necessidade de percorrer uma estrutura
auxiliar (índice).
• Um arquivo direto é semelhante a um arquivo
indexado, no sentido de que, nos dois casos, o
objetivo principal é a obtenção
obten o de acesso
aleatório
aleat rio eficiente.
eficiente
• Em um arquivo direto, aos invés do índice é usada
uma função
fun o que calcula o endereço
endere o do registro a
partir do argumento de pesquisa.
27
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Diretos
• As duas organizações possuem diferenças
importantes, além do modo pelo qual é feito o
acesso.
• Uma delas é o fato de que nos arquivos indexados,
ao contrário dos diretos, o endereço onde um
registro é armazenado independe do valor de sua
chave,
• e uma outra, muito importante, diz respeito a
acessos seriais, que nos arquivos indexados são
providos por meio de índices e nos arquivos diretos
não são previstos, de acordo com a ideia básica.
28
Universidade Federal do Espírito Santo
CCA-UFES
14
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Calculo 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:
• Funções
Fun es determinísticas:
determin sticas: associam um único valor
da chave de acesso a cada endereço. Ex.: F(C)= x+1
• Funções
Fun es não
n o-determinísticas
determin sticas (ou probabilísticas):
probabil sticas):
geram para cada valor da chave de acesso um
endereço com a maior unicidade possível “t
tão
o único
nico
quanto possível
Ex.:
poss vel”.
vel
Ex.: F(C)= x mod 4
• Neste caso, pode ocorrer de gerar, para valores
29
distintos de chave, o mesmo endereço, fato este que
é denominado colisão.
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Calculo do Endereço
chave: 150
E=F(chave)
E = 3
30
1
2
3
4
5
NÚMERO
200
NOME
PAULO
SALÁRIO
3100
150
MARIA
2500
250
FABIO
2500
Universidade Federal do Espírito Santo
CCA-UFES
15
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Tratamento de Colisões
• Colisão:
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
Endere amento Aberto e Encadeamento Puro
31
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Tratamento por Endereço Aberto
• Consiste em fazer uma busca sobre o arquivo
para localização de um endereço livre, sendo
nele armazenado o registro.
• A pesquisa do endereço livre é de forma
sequencial, ou seja, se o endereço E gerado
pela chave estiver ocupado, o próximo a ser
consultado será o endereço E + 1,
1 E +
2,...,M,1,1,...,E - 1 até se encontrar um
lugar vago para armazenar o registro.
32
Universidade Federal do Espírito Santo
CCA-UFES
16
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Tratamento por Encadeamento Puro
• Neste caso, todos ou parte dos registros que
colidem em um mesmo endereço são juntados em
uma lista encadeada, à qual se tem acesso por
meio do endereço gerado pela função de
aleatorização.
33
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
ARQUIVOS INVERTIDOS
34
Universidade Federal do Espírito Santo
CCA-UFES
17
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Invertidos
• Esta organização é baseada em uma mudança nos
papeis de registro e atributos, de tal forma que,
em vez de serem coletados os valores dos atributos
para cada registro, sã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 invertidas.
35
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Invertidos
• As técnicas usuais na organização de índices
ndices são
válidas também para este caso.
• Contudo, devendo ser tomado o devido cuidado com o
fato de que, em um arquivo invertido, a cada valor
da chave de acesso está associado não apenas um
endereço do registro, mas sim um conjunto de
endereços dos registros que possuem aquele valor da
chave.
• O conjunto de listas invertidas associado a uma
chave de acesso é chamado inversão, sendo que um
arquivo invertido pode assumir uma ou mais
inversões.
36
Universidade Federal do Espírito Santo
CCA-UFES
18
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Arquivos Invertidos
Idade
21
1
Endereços
4
7
23
2
6
25
26
3
5
8
9
Salário
Chaves
2500 1050
3000 1800 2400
3500
4000
1100
1250
7000
1850
37
1200
1950
Chave
Nome
Idade
Salário
1
2
1050
1200
Ademar
Iara
21
23
2500
3500
3
4
5
6
2400
1850
1100
Marcos
Tatiana
Pedro
25
21
26
3000
7000
3500
1250
2000
Enio
Sandra
23
21
4000
4000
1800
Claudia
25
3000
1950
Ivan
23
4000
7
2000
8
9
Universidade Federal do Espírito Santo
CCA-UFES
Universidade Federal do Espírito Santo - CCA-UFES
Inversão por Endereço
• Na primeira inversão, os registros são
identificados por seus endereços físicos.
• Esta modalidade apresenta a vantagem de permitir o
acesso direto ao registro, mas acarreta o problema
de que as listas são válidas apenas para aquela
disposição física dos registros.
• Sendo que, caso o arquivo venha a sofrer uma
reorganização que envolva mudança nos endereços dos
registros, todas as inversões deverão ser novamente
geradas.
38
Universidade Federal do Espírito Santo
CCA-UFES
19
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Inversão por Chave
• Uma alternativa para este problema consiste na
identificação dos registros por meio de uma de suas
chaves primárias, como na segunda inversão.
• Com isto as listas invertidas passam a ser
independentes da localização física dos registros.
• No entanto, há perda de eficiência no acesso, em
virtude da necessidade de determinar o endereço do
registro uma vez obtida a sua chave primária na
lista.
Universidade Federal do Espírito Santo
CCA-UFES
39
Universidade Federal do Espírito Santo - CCA-UFES
Comparativo
Arquivo
Seqüencial
Vantagens
- Acessos seqüenciais
mais eficientes.
-Utilizam índices, que
Seqüencial Indexado agilizam a consulta por
estarem na RAM.
-Não existem áreas de
extensão
- Registros sem
Indexado
compromisso com
armazenamento físico.
Direto
Invertido
40
-Acesso direto, sem
necessidade do índice.
Desvantagens
- Operações de
modificações não são
simples.
- Necessidades de áreas de
extensão, que precisam ser
reorganizadas.
- Atualização do índice
quando da inserção de um
registro.
- Determinar funções que
gerem menor número de
colisões
- As listas invertidas
- Acesso direto ao
registro após localização valem apenas para aquela
disposição física do
da lista invertida.
arquivo.
Universidade Federal do Espírito Santo
CCA-UFES
20
04/11/2015
Universidade Federal do Espírito Santo - CCA-UFES
Próximo Conteúdo
- Busca e Ordenação em memória Secundária
‣Quicksort Externo;
‣Acesso Indexado;
‣ Árvores n-árias;
‣Indexação por espalhamento;
41
C.H. Prevista
12 horas
Universidade Federal do Espírito Santo
CCA-UFES
21
Download

06-Métodos de Acesso à Arquivo