introdução aos arquivos sequenciais
DESCRIPTION
Aapós a apresentação da terminologia usada neste capítulo, são apresentadas introduções sobre quatro estratégias de organização de arquivos voltadas para o acesso por meio de chaves primárias, que são Arquivo Seqüencial, Arquivo Seqüencial Indexado, Arquivo Indexado, Arquivo Direto, e uma, Arquivo Invertido, voltada para acesso por meio de chaves secundárias.TRANSCRIPT
-
Introduo aos arquivos sequenciais.
Um um arquivo seqencial, os registro so dispostos ordenadamente, obedecendo a
seqncia determinada por uma chave primria, chamada chave de ordenao. Na figura
abaixo, apresentado um exemplo de arquivo seqencial, no qual usado como chave
de ordenao o atributo NMERO.
NMERO NOME IDADE SALRIO
100 Pedro 23 1000
150 Leandro 20 500
200 Rodrigo 19 270
250 Maria 30 5000
300 Celso 27 2500
350 Ana 42 9000
400 Joo 22 2100
450 Gisele 23 1300
500 Jack 21 800
550 Sandra 24 2400
Esta organizao, que representa um aperfeioamento em relao quela na qual os
registros so dispostos aleatoriamente, representa, tambm, uma perda de flexibilidade
por no acomodar com simplicidade as operaes de modificao do arquivo.
O acesso a uma registro, dado um argumento de pesquisa, facilitado se a chave de
acesso coincide com a chave de ordenao (ou com sua parte inicial), pois, nos demais
casos, no h vantagem na seqencialidade do arquivo.
4. Introduo aos Arquivos Seqenciais Indexados
Quando em um arquivo seqencial o volume de acessos aleatrios torna-se muito
grande, configura-se a necessidade de utilizao de uma estrutura de acesso, associada
ao arquivo, que oferea maior eficincia na localizao de um registro identificado por
um argumento de pesquisa do que os mtodos vistos para arquivos seqenciais.
Um arquivo seqencial, acrescido em um ndice (estrutura de acesso) constitui um
arquivo seqencial indexado.
Um ndice formado por uma coleo de pares, cada um deles associando um valor da
chave de acesso a um endereo no arquivo. Assim, um ndice sempre especfico para
uma chave de acesso.
Alm do arquivo seqencial e do ndice, um arquivo seqencial indexado possui reas
de extenso que so utilizadas para a implementao da operao de insero de
registros.
- ndices
-
A finalidade de um ndice permitir rpida determinao do endereo de um registro do
arquivo, dado um argumento de pesquisa. O endereo identifica a posio onde est
armazenado o registro, na memria secundria.
Usualmente, cada entrada do ndice, formada por um par (chave do registro, endereo
do registro), ocupa um espao 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. Com isto a pesquisa sobre o ndice pode ser feito com maior rapidez do que se
fosse feita diretamente sobre o arquivo de dados correspondente. Este fato constitui a
justificativa maior para a utilizao dos ndices.
Veja a figura abaixo, que apresenta o arquivo seqencial indexado:
NMERO ENDEREO
100 1
150 2
200 3
250 4
300 5
|---------NDICE---------|
NMERO NOME SALRIO
1 100 PEDRO 3000
2 150 JOO 1500
3 200 MARIA 2500
4 250 CARLA 3000
5 300 MAX 2000
|-----------REA DE DADOS NO DISCO--
----------|
- reas de Extenso
A rea de extenso (tambm chamada rea de overflow) destina-se a conter os registros
inseridos, em um arquivo seqencial indexado, aps a criao do arquivo. Ela constitui
uma extenso da rea principal de dados do arquivo.
reas de extenso so necessrias em arquivos seqenciais indexados, porque nesses
no vivel a implementao da operao de insero de registros do mesmo que nos
arquivos seqenciais. Naquele processo, a maioria dos registros muda de endereo, o
que obrigaria uma completa alterao nas entradas do ndice, a cada atualizao do
arquivo.
Uma possvel implementao de reas de extenso em um arquivo seqencial indexado
consiste em destinar um em cada registro da rea principal um campo de elo para conter
o endereo da lista encadeada de seus sucessores (ou antecessores) alocados na rea de
extenso, conforme a figura:
NMERO ENDEREO
100 1
150 2
175 2
200 3
250 4
275 4
300 5
|---------NDICE---------|
NMERO NOME ELO
1 100 PEDRO -
2 150 JOO 10
3 200 MARIA -
4 250 CARLA 20
5 300 MAX -
|-----------REA DE DADOS NO DISCO--
----------|
-
NMERO NOME ELO
10 175 BILL -
20 275 NARA -
30 -
40 -
50 -
|----------------REA DE EXTENSO-------
---------|
5. Introduo aos Arquivos Indexados
Nos arquivos seqenciais indexados, o compromisso de manter os registros fisicamente
ordenados pelo valor da chave de ordenao, com o objetivo de prover um acesso serial
eficiente, acarreta uma srie de problemas, principalmente no que diz respeito
operao de insero de um registro, conduzindo necessidade de utilizao de reas de
extenso e efetivao de reorganizaes peridicas.
medida que decresce a freqncia de acessos seriais, relativamente freqncia de
acessos aleatrios, a manuteno da seqencialidade fsica do arquivo encontra uma
compensao cada vez menor em termos de eficincia de acesso, at tornar-se
antieconmica.
A partir deste ponto, torna-se mais conveniente o uso de um arquivo indexado, no qual
os registros so acessados sempre atravs de um mais ndices, no havendo qualquer
compromisso com a ordem fsica de instalao dos registros.
A liberdade na escolha do endereo no qual um registro armazenado representa um
ganho de flexibilidade que permite maior eficincia, principalmente na operao de
insero de um registro, conduzindo, tambm, a uma simplificao da estrutura geral do
arquivo, sendo dispensados os mecanismos complexos de administrao de reas de
extenso.
Veja a figura abaixo, que apresenta o indexado:
NMERO ENDEREO
100 4
150 3
200 1
250 5
300 2
|---------NDICE---------|
NMERO NOME SALRIO
1 200 PAULO 3100
2 300 JOS 4500
3 150 MARIA 2500
4 100 MARISA 5000
5 250 FABIO 2500
|-----------REA DE DADOS NO DISCO--
----------|
- ndices
Em um arquivo indexado, podem existir tantos ndices quantas forem as chaves de
acesso aos registros. Um ndice consiste de uma entrada para cada registro considerado
-
relevante com relao chave de acesso associada ao ndice. As entradas do ndice so
ordenadas pelo valor da chave de acesso, sendo cada uma delas constituda por um par
(chave do registro, endereo do registro). A seqencialidade fsica das entradas no
ndice visa a tornar mais eficiente o processo de busca e permitir o acesso serial ao
arquivo.
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 condio relativa chave de acesso e/ou a outros
atributos do arquivo.Um exemplo de ndice seletivo seria o ndice dos funcionrios
estveis (h mais de 10 anos na empresa) sobre o cadastro geral de funcionrios de uma
empresa.
O maior problema relacionado com a utilizao de arquivos indexados diz respeito
necessidade de atualizao de todos os ndices, quando um registro inserido no
arquivo. Atualizaes nos ndices tambm so necessrias quando a alterao de um
registro envolve atributos associados a ndices. Nos arquivos seqenciais indexados, a
necessidade de alterao dos ndices eliminada pelo uso de reas de extenso e
encadeamento na implementao de inseres; no entanto, esta estratgia no
condizente com a idia de arquivos indexados, nos quais a manuteno constante dos
ndices necessria. E=F(chave)
---> E = 3
|-------->
NMERO NOME SALRIO
1 200 PAULO 3100
2
3 150 MARIA 2500
4
5 250 FABIO 2500
-
|-----------REA DE DADOS NO DISCO--
----------|
- Clculo de Endereos
O primeiro problema com os arquivos diretos o da determinao de uma funo F, que
transforme o valor da chave C de um registro no endereo E que lhe corresponde no
arquivo.
Podemos considerar dois tipos de funes, sendo o primeiro constitudo pelas funes
determinsticas, as quais associam um nico valor da chave de acesso a cada endereo.
Este tipo de funo apresenta vantagens evidentes; no entanto, impossvel, em termos
prticos, encontrar uma funo determinsticas simples para um grande nmero de
registros. Aquelas que poderiam ser usadas seriam to complexas que eliminariam as
vantagens do acesso direto, alm de necessitarem adaptaes a cada insero sofrida
pelo arquivo. No tm, portanto, maior interesse prtico.
O segundo tipo formado pelas funes probabilsticas, as quais geram para cada valor
da chave um endereo "to nico quanto possvel", podendo gerar, para valores distintos
de chave, o mesmo endereo, fato este que denominado coliso.
- Tratamento das Colises
Um dos aspectos mais importantes na organizao de arquivos diretos diz respeito ao
problema das colises, que uma conseqncia do uso de funes no determinsticas
para a transformao dos valores da chave de acesso em endereos do arquivo.
Para se tratar as colises, as solues mais freqentes usadas so Endereamento Aberto
com Pesquisa Seqencial e Encadeamento. A primeira consiste em fazer uma busca
sobre o arquivo para localizao de um endereo livre, sendo nele armazenado o
registro. A pesquisa do endereo livre de forma seqencial, ou seja, se o endereo E
gerado pela chave estiver ocupado, o prximo a ser consultado ser o endereo E + 1, E
+ 2,...,M,1,1,...,E - 1 at se encontrar um lugar vago para armazenar o registro.
Na segunda soluo, todos ou parte dos registros que colidem em um mesmo endereo
so juntados em uma lista encadeada, qual se tem acesso por meio do endereo gerado
pela funo de aleatorizao. As duas estratgias mais usadas so a utilizao de reas
de extenso e encadeamento puro.