Arquivo Sequencial e Indexado Disciplina de Algoritmos e Estrutura de Dados III Prof. Marcos Antonio Schreiner 15/07/2015 Introdução • Armazenamento de pequeno volume de dados – Acesso ao mesmo conjunto de dados. • Armazenamento de grande volume de dados – Problemas nos acessos aleatórios de dados do arquivo. – Solução: Técnicas sofisticadas de organização de arquivo. Introdução • Arquivo – Coleção de registros lógicos, cada um representando uma entidade. • Registro Lógico – Sequencia de itens, sendo cada item campo ou atributo da entidade. – Cada campo é uma característica da entidade. • Registro Físico – Armazenamento em blocos de dados. – Tamanho do bloco coincide com a arquitetura do meio físico (Ex.: setor, trilha) – Cada bloco armazena um número inteiro de registros lógicos. Introdução • Estratégias de Organização de Arquivo: – Arquivo Sequencial Simples; – Arquivo Sequencial Ordenado; – Arquivo Sequencial Indexado; – Arquivo Indexado. Arquivo Sequencial Simples • Definição – Registros são distribuídos em uma ordem, um após o outro. – Ordem pode ser a sequencia de geração dos registros. • Vantagem – Simplicidade • Desvantagem – Busca de registro através de acesso sequencial. Arquivo Sequencial Ordenado • Definição – Os registros estão dispostos ordenadamente, obedecendo à sequencia determinada por uma chave . ARQUIVO EMPREGADO Arquivo Sequencial Ordenado • Estrutura Básica (Endereço lógico - Chave) 3 Dados 1 5 2 dados 10 dados 3 (Endereço Físico) 12 4 dados ... 5 Arquivo Sequencial Ordenado • Principais Características – Há uma ordenação, tanto lógica quanto física. – Os registros possuem o mesmo formato. – A descrição do formato de registro é denominada layout do registro e é externa aos dados que ela descreve (tipo, tamanho, etc). Arquivo Sequencial Ordenado • Vantagens – Acesso sequencial eficiente quando a chave de acesso coincide com a chave de ordenação. • Desvantagens – Acesso a um registro quando a chave de acesso não coincide com a chave de ordenação. – Problemas nas operações de modificação no arquivo. – Inserir (Deslocamentos); – Excluir (Deslocamentos); Arquivo Sequencial Indexado • Motivação – Quando o volume de acessos aleatórios tornase muito grande em um arquivo sequencial o sistema pode ficar lento. • Definição – Um arquivo sequencial indexado é um arquivo sequencial acrescido de um índice Arquivo Sequencial Indexado • O arquivo contém de 3 áreas: – Área primária (principal): Reservada para os registros de dados ordenado pelo campo chave. – Área de índices: Um bloco de índices, sendo que cada índice referencia um bloco de dados. – Área de excedentes (overflow): Reservada para o acréscimo de novos registros que não podem ser colocados na área principal. Arquivo Sequencial Indexado • Estrutura Arquivo Sequencial Indexado • Estrutura em vários níveis Máximo Máximo do do Bloco Índice em 2 níveis 1 2 3 4 5 6 7 Arquivo Sequencial Indexado Área de Extensão (Área de Overflow) – Destina-se a conter os registros inseridos, em um arquivo sequencial indexado, após sua criação. – Constitui uma extensão da área principal de dados do arquivo. – Necessária porque não é viável implementar operações de inserção com deslocamentos neste tipo de arquivo. – Geraria uma completa alteração no arquivo, pois muitos registros mudam de endereço. Arquivo Sequencial Indexado Área de Extensão: Elo por Registro – Destinar em cada registro da área principal um campo de elo. – Ele deve conter o endereço da lista encadeada de seus sucessores (ou antecessores) alocados na área de extensão. – Nas inserções, um registro é inserido na lista de extensão de seu sucessor ou antecessor da área principal. – Ou é inserido no final do arquivo, por sua chave ser maior que todas as outras do arquivo. Arquivo Sequencial Indexado Área de Extensão: Elo por Registro ÁREA DE DADOS NO DISCO ÍNDICE ÁREA DE EXTENSÃO Arquivo Sequencial Indexado Área de Extensão: Exemplo Inserir: 165 - Marta ÁREA DE DADOS NO DISCO ÍNDICE ÁREA DE EXTENSÃO Arquivo Sequencial Indexado Área de Extensão: Exemplo Inserir: 165 - Marta ÁREA DE DADOS NO DISCO ÁREA DE EXTENSÃO Número 10 175 20 275 Nome Elo Bill 30 Nara - 30 165 Marta - Arquivo Sequencial Indexado Área de Extensão: Elo por Bloco – Cada bloco de registros na área principal de dados possui um campo de elo. – Os registros da área de extensão possuem valor de chave maior do que os que estão no bloco da área principal. – Um registro é inserido no bloco selecionado e o maior do bloco vai para a área de extensão. – A ordenação dentro do bloco é feita em memória, portanto não acarreta grande custo adicional. Arquivo Sequencial Indexado Área de Extensão: Exemplo Inserir: 130 - Marta ÁREA DE DADOS NO DISCO ÍNDICE B1 B2 ÁREA DE EXTENSÃO Arquivo Sequencial Indexado Área de Extensão: Exemplo Inserir: 130 - Marta ÍNDICE ÁREA DE DADOS NO DISCO B1 B2 ÁREA DE EXTENSÃO Número Nome Elo 10 175 Bill 20 150 João 10 Arquivo Sequencial Indexado ● Procedimentos: Acesso – Acesso serial: Direto sobre a área de dados + extensão – Acesso aleatório: Usando o índice – Pode obter o endereço do próprio registro. – Ou deve ser feita uma busca dentro do bloco e incluir mais acessos à área de extensão. Arquivo Sequencial Indexado ● Inclusão – Usa a área de extensão. ● Exclusão – Pode ser colocada um marca de excluído para não precisar reorganizar o arquivo ● Alteração – Busca o registro no arquivo; – Se a alteração não envolve a chave de ordenação, o registro é gravado na mesma posição; – Se envolver a chave de ordenação, usa-se Exclusão+Inclusão Arquivo Sequencial Indexado Reorganização – Desempenho das operações é degradado à medida que ocorrem um grande número de inclusões e exclusões. – Um novo índice deve ser gerado. – O ponto de reorganização deve ser estabelecido, por exemplo, 75% de utilização da área de extensão. Arquivo Sequencial Indexado Principais Características – Permite acesso aleatório satisfatório; – Permite acesso sequencial eficiente; – Permite, com relativa facilidade, as inserções e exclusões, através do uso de áreas de extensão. – Tem a necessidade de reorganizar os arquivos de Indices. Exercícios 1) Descreva uma estrutura de dados para gerenciar um Arquivo Sequencial Indexado. 2) Descreva um algoritmo de para inserir um registro em um Arquivo Sequencial Indexado. 3) Descreva um algoritmo de para buscar um registro em um Arquivo Sequencial Indexado. 4) Pense e discuta com seus colegas e o professor como Reorganizar os registros em um Arquivo Sequencial Indexado. Referências ● ● ● SZWARCFITER, J. L., MARKENZON, L. Estruturas de Dados e seus Algoritmos. 3a ed. Rio de Janeiro: LTC, 2010. TENENBAUM, A. M., LANGSAM, Y., AUGENSTEIN, M. J. Estruturas de Dados Usando C. São Paulo: Makron, 1995. LEISERSON, C. E., RIVEST, R. L., CORMEN, T. H., STEIN, C. Algoritmos – Teoria e prática. Rio de Janeiro: Campus, 2002.