Professor:
Luiz A. P. Neves
Algoritmos e Lógica de
Programação II
Roteiro
Arquivo Seqüencial Indexado
Conceito Arquivo Seqüencial Indexado
Constituição Arquivo Seqüencial Indexado
Índices
Área de Extensão
Operações de Acesso, Inclusão, Alteração e Exclusão
Arquivo Seqüencial Indexado
Quando em um arquivo seqüencial o volume de acessos aleatórios torna-se muito grande, há a necessidade de
utilização de uma estrutura de acesso associada ao arquivo.
Um arquivo seqüencial acrescido de um índice (estrutura de acesso) constitui um arquivo seqüencial indexado.
Arquivo Seqüencial Indexado
Um índice é formado por uma coleção de pares, cada um deles associando um valor de chave de acesso a um
endereço de arquivo.
Detalhe Importante:
Um arquivo seqüencial indexado, além do arquivo seqüencial e do índice, possui áreas de extensão (overflow) para inserção de registros
Índices
Tem por finalidade permitir a rápida determinação do
endereço de um registro do arquivo, dado um
argumento de pesquisa.
Cada entrada do índice (Chave do Registro, Endereço
do Registro), ocupa um espaço bem menor do que o
registro de dados correspondente.
Isto torna a área ocupada pelo índice menor que a
Índices - Vantagens
Com isto, a pesquisa sobre um índice pode ser feita com maior rapidez do que se fosse executada diretamente sobre o arquivo de dados correspondente.
Este fato justifica a utilização de índices.
Para tornar mais eficiente o processo de pesquisa, um índice pode ser estruturado em vários níveis.
Índices em vários níveis
A figura a seguir (próximo slide) mostra um arquivo seqüencial indexado no
qual o índice é estruturado em dois níveis
O índice é associado a chave de acesso NÚMERO
Cada entrada deste índice identifica um bloco de registros
Índices
O índice associado à chave de ordenação é denominado Índice Primário
Os demais são Índices Secundários
Em ambos os casos, as entradas do índice são
ordenadas pelo valor da chave de acesso, com finalidade de permitir eficiência no processo de pesquisa.
O fato de que os registros se apresentam fisicamente ordenados pelo valor da chave de acesso é aproveitado na organização de índices primários, para obtenção de flexibilidade nas operações de inserção de registros e economia de espaço no armazenamento de índices.
Índices
O procedimento usual para aproveitamento desta característica é a utilização de uma entrada no índice para cada bloco de registros, ao invés de uma para cada registro individual
Sendo N o número de registros e m o número de blocos, o índice possuirá no seu último nível m entradas, ao invés de N
Na figura apresentada os dados são divididos em nove blocos de três registros cada um
No segundo nível há uma entrada do índice para cada bloco
Índices
• Com esta organização, a localização de
um registro passa a ser feita em duas
etapas:
(a)É consultado o índice e determinado o bloco
em que deve estar o registro
(b)O bloco selecionado é pesquisado, sendo
localizado o registro desejado.
• Muitas vezes é usual a implementação de
índices sob a forma de Árvores-B
Área de Extensão
Também chamada área de overflow
Destina-se a conter os registros inseridos,
em u arquivo seqüencial indexado, após a
criação do arquivo
Constitui-se em uma extensão da área
principal de dados
Nos arquivos seqüenciais a maioria dos
registros muda de endereço, o que no caso
dos seqüenciais indexados, implicaria em
Área de Extensão
• Duas são as alternativas principais para implementação de áreas de extensão:
(a) Destinar em cada registro da área principal um campo de elo para conter o endereço da lista encadeada de seus
antecessores (ou sucessores), alocados na área de extensão (b) Utilizar um campo de elo em cada bloco de registros, destinado
a conter o endereço da lista de extensões do bloco, sendo mantida a seqüencialidade física dos registros dentro de cada bloco da área principal e, sendo que todos os registros de
extensão de um bloco possuem ordem maior do que todos os da área principal do mesmo bloco.
Área de Extensão
A segunda alternativa implica na mudança de endereços de registros dentro de um bloco
Podem ser utilizadas mais de uma área de extensão para cada arquivo
Sendo uma para cada bloco ou grupo de blocos adjacentes
E, uma (ou mais) usada sempre que ocorre uma
inserção em um bloco cuja área de extensão já está completamente ocupada
Operações – Seqüencial
Indexado
Acesso a um registro
Acesso seqüencial pode ser feito diretamente na área de
dados sem o uso do índice
Cuidado com as áreas de extensão
Acesso aleatório é feito com o uso dos índices
O argumento de pesquisa define o caminhamento sobre o
índice, que conduz ao endereço do registro desejado
O endereço pode ser o próprio endereço do registro ou do
Operações – Seqüencial
Indexado
Inserção de um registro
Executa-se uma busca no arquivo, por meio do índice, para determinar o local onde vai ser inserido o novo registro
Após determinar a posição, o registro é inserido na lista de extensão do seu sucessor na área principal (Elo por Endereço)
Na organização de Elo por Bloco o registro é inserido no bloco selecionado
Operações – Seqüencial
Indexado
Exclusão de um registro
É implementada pela colocação de uma marca “Excluído”
em um campo adicional do registro que indica o seu estado
O campo de estado deve ser consultado nas demais operações, sendo desconsiderados os marcados como excluídos
Operações – Seqüencial
Indexado
Alteração de um registro
É feita uma pesquisa no arquivo, por meio do índice,
para a localização do registro a ser alterado
Se a alteração não envolve a chave de ordenação e
não aumenta o comprimento do registro, este é lido,
seus campos alterados e, novamente gravado na
mesma posição
Caso contrário, a alteração é implementada pela
exclusão do registro, após ser lido e, posterior
reinserção do registro atualizado
Operações – Seqüencial
Indexado
Leitura exaustiva dos registros
Acesso seqüencial pode ser feito diretamente na
área de dados sem o uso do índice
Devem ser incluídos os registros da área de
extensão
Conclusões
Conforme vão sofrendo atualizações os arquivos
seqüenciais indexados o desempenho das operações sobre eles efetuadas vão sendo degradadas.
O arquivo pode ser periodicamente reorganizado.
Consiste em uma leitura exaustiva e transferência dos registros para uma nova área (colocados na área
principal) e deixadas livres as área de extensão
Após a reorganização um novo índice deve ser gerado, pois os registros mudam de endereço.
Os registros marcados como excluídos são fisicamente removidos.
Arquivos Seqüenciais passíveis de serem acessados através de tabelas de
índices.
Exemplo mais típico: ISAM (IBM). Indexed Sequential Access Method
Mais utilizado método de gerência de arquivos durante muito tempo.
Suportado por linguagens de programação MUITO velhas como COBOL ou
PL/1.
Existia como Pacote de Software disponível inicialmente só para mainframes
(Ex.: IBM 4341 e linha 370).
Mais tarde passou a existir também para PCs no DOS.
Resumindo
Arquivos Indexados Seqüenciais: Características
Arquivo ordenado por chave primária
Tabela de índices também ordenada por chave primária é usada para acessar áreas
do arquivo.
Originalmente essa tabela ficava no começo do próprio arquivo. Pode ser implementada como um arquivo separado.
Tabela de índices pode ter vários níveis (índice hierárquico).
Inserções são realizadas na área de overflow ou área de espaço livre. Também
indexada na tabela.
Deleções somente são marcadas.
Atualização periódica através de cópia do arquivo.
Contatos
Prof. Dr Luiz Antônio
Pereira Neves