A organização física dos arquivos tem como objetivo economizar espaço de armazenamento, a minimização de tempo total de manipulação física (acesso e transferência de blocos/dados) e outras características como portabilidade, robustez, segurança, versatilidade ou possibilidade para usos diversos, facilidade de implantação e manutenção.
As operações lógicas sobre arquivos podem ser a consulta seqüencial (ordenada, "busca o próximo") ou randômica (sem ordem, busca por valor de chave); inserção, exclusão e modificação de registros; criar, abrir, fechar, reorganizar e classificar os arquivos.
A escolha da organização mais adequada para um arquivo lógico é baseada em divérsos critérios como:
A consulta sequêncial recupera o próximo registro na ordem física do arquivo e o tempo médio esperado para realizar uma consulta seqüencial individual é igual ao tempo necessário para fazer uma "leitura física" de bloco ( seek + demora de rotação + transferência de bloco), dividido pelo número de registrosno bloco.
A consulta randômica é semelhante à busca de itens em tabelas ordenadas. Porém, pode-se usar técnicas de pesquisa seqüencial, pesquisa binária, pesquisa proporcional. O comprimento de busca para cada uma das técnicas corresponde à quantidade de acessos + transferências de blocos necessária para realizar a consulta randômica.
Essas operações são normalmente realizadas de forma adiada, ou seja, as alterações são anotadas em um arquivo especial e depois são todas feitas de uma só vez, em lote.
A consulta randômica serve para consultar diretamente o arquivo, antes da execução adiada das alterações, é preciso consultar o arquivo de alterações, procurando as ações a serem executadas sobre o registro procurado, e consultar o arquivo seqüencial de forma randômica.
Ao incluir um registro novo, são deslocados para a frente todos os registros que estão entre a posição em que deve ficar o novo registro e a primeira posição vazia.
O acesso serial consiste na obtenção do registro que segue ao último acessado, na seqüência ditada pela chave de ordenação. Este tipo de acesso é extremamente eficiente por estarem os registros fisicamente armazenados de acordo com a seqüência na qual são solicitados e na maioria dos acessos o registro estará presente na memória, por pertencer ao mesmo bloco do seu antecessor.
O acesso aleatório a indicação do registro desejado feita pela especificação de um argumento de pesquisa e a seqüência na qual os registros são acessados não mantém necessariamente relação com a ordenação física do arquivo.
1o Caso: A chave de acesso não coincide com a chave de ordenação
- A localização do registro desejado é feita por meio de Pesquisa Seqüencial, que consiste no exame de cada registro, a partir do primeiro, até ser localizado aquele que possui, para a chave de acesso, um valor igual ao argumento e pesquisa ou, então, ser atingido o final do arquivo.
2o Caso: A chave de acesso coincide com a chave de ordenação
- Se o arquivo estiver armazenado em um dispositivo de acesso serial (fita magnética, fita de papel, etc.), a única vantagem em relação ao primeiro caso é a constatação mais rápida de que o argumento de pesquisa não está presente no arquivo, quando for o caso.
- Se o arquivo estiver armazenado em um dispositivo de acesso direto (disco, tambor, etc.), torna-se viável a utilização de um método de pesquisa mais eficiente, sendo mais conhecido o método de Pesquisa Binária, no qual o primeiro registro a ser consultado é aquele que ocupa a posição média do arquivo.
- Se a chave do registro for igual ao argumento de pesquisa, a pesquisa termina com sucesso; caso contrário, ocorre uma das duas situações:
- A chave do registro é maior do que o argumento de pesquisa e o processo de busca é repetido para a metade inferior do arquivo;
- A chave do registro é menor do que o argumento de pesquisa e o processo de busca é repetido para a metade superior do arquivo.
- A busca é encerrada sem sucesso quando a área de pesquisa, que a cada comparação é reduzida a metade, assumir o comprimento zero.
A maneira usual de processar inserções de registros em um arquivo seqüencial S consiste em montar um arquivo T de transações contendo os registros a serem inseridos, ordenado pela mesma chave de ordenação de S.
Os arquivos S e T são então intercalados, gerando o arquivo A que é a versão atualizada de S.
O arquivo T pode ser usado como uma extensão de S, até assumir um tamanho que justifique a efetivação da operação de intercalação.
A exclusão é usualmente implementada como a inserção, senso as indicações de exclusão coletadas no mesmo arquivo de transações para posterior efetivação das operações. Pode, ainda, ser implementada com o uso de um campo adicional que indique o estado de cada registro, sendo "excluído" um de seus possíveis valores. Neste caso, a operação de exclusão consiste na localização do registro a excluir e alteração do seu campo de estado para o valor "excluído". Durante o processamento de um arquivo seqüencial, os registros marcados como "excluído" são desconsiderados. Com este procedimento, é eliminada a necessidade de movimentação de outros registros para o preenchimento do espaço liberado pelo "excluído".
[voltar]