37
INE5408 Estruturas de Dados Gerência de Arquivos

INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

INE5408Estruturas de Dados

Gerência de Arquivos

Page 2: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Introdução• Arquivo:

– conjunto de dados em um dispositivo de armazenamentosecundário (externo);

– tipicamente: disco, disquete, fita, CD-ROM, MO-Disc, Zip, Jaz, etc.

• Tipos de dispositivos:– Acesso Seqüencial

• Fita (carretel, streamer, DAT, Travan);• dados só podem ser lidos na mesma ordem em que foram

escritos;• escrita só é possível após o final da área utilizada.

– Acesso Aleatório• Disco, CD, MO, disquete, Zip, Jaz;• dados podem ser lidos e escritos* em qualquer ordem.

*à exceção do CD

Page 3: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Características: memória secundária x RAM

• RAM– Vantagens:

• rápido acesso;• fácil de alterar.

– Desvantagens:• volátil (dados desaparecem quando desligamos a máquina).

• Dispositivos de Armazenamento Secundário– Vantagens:

• espaço muito maior do que memória primária (RAM);• conservativos (dados não desaparecem quando desligamos a

máquina).– Desvantagens:

• acesso comparativamente muito lento;• alteração/inclusão de dados às vezes ainda mais lenta.

Page 4: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Dispositivos de Acesso Seqüencial• Exemplo típico: Fita• Extremamente lentos• Utilizados para:

– armazenar dados que vão ser acessados todos de uma só vez e

– não vão mais ser alterados.• Uso típico: Backup

• A gerência de arquivos não se ocupa muitodestes dispositivos.

Page 5: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Dispositivos de Acesso Randômico / Aleatório

• Exemplo típico: Disco• Relativamente rápidos• Utilizados para:

– dados que sofrem freqüentes pesquisas– dados muito alterados ou não definitivos

• Uso típico: área de trabalho ou bancode dados

• Base para as técnicas que serão vistas

Page 6: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Gerência de Dados: noção intuitiva• Usamos RAM para armazenar dados temporariamente

enquanto estamos processando-os;• usamos dispositivos de armazenamento secundário para

guardar dados não processados e dados depois de processados.

• Solução Intuitiva: um programa carrega todos os dados que necessita em uma estrutura de dados na memória, osprocessa completamente e depois os escreve de volta.

• Problemas:– dados podem não caber na memória;– ler e depois reescrever todos os dados de um conjunto

toma muito tempo. Pode ser que estejamosinteressados em processar somente uma pequenafração do conjunto.

Page 7: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Gerência de Arquivos• Definição: conjunto de métodos e técnicas para

(eficientemente):– classificar arquivos e conteúdo de arquivos;– fazer busca de dados em arquivos;– acrescentar dados a arquivos;– eliminar dados de arquivos;– alterar valores de dados existentes em arquivos;– copiar arquivos;– alocar, desalocar e manter espaço em dispositivos de

armazenamento secundário para manter arquivos.

• Maior restrição: Tempo

Page 8: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Gerência de Arquivos: objetivo principal• Solução para o problema da leitura/escrita de todos

os dados:– trabalhamos com os dados organizados em arquivos;– só trazemos para a memória dados que queremos alterar;– só escrevemos em disco novos dados que queremos incluir;– só retiramos do disco dados que queremos eliminar.

• Fator mais restritivo: o tempo de acesso aos dados– Organizamos os arquivos de forma a minimizar o tempo de

acesso aos dados;– eficiência na organização tem prioridade maior que

economia de espaço (pode ser desperdiçadomoderadamente).

Page 9: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Gerência de Arquivos: princípio básico• Organizamos os dados de forma a minimizar

o número de acessos à memória secundáriapara executar uma operação (procura, inserção, alteração, deleção).

• Para isso utilizamos:– organizações de dados mais rígidas do que na

memória (mesmo que isso signifique desperdíciode espaço);

– técnicas de indexação;– algoritmos de busca.

Page 10: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Disco• Exemplo típico para uma memória

secundária de acesso aleatório;• compreender a forma de

armazenamento é importante;• modelo de estruturação do disco serve

para todos os outros meios secundários.

Page 11: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Modelo simplificado• Dados são organizados em superfícies,

trilhas, setores e blocos;• um arquivo pode ser imaginado como sendo

constituído por uma seqüência de dados no disco;

• o acesso é feito através do posicionamentode um cabeçote de r/w em qualquer ponto;

• uma unidade de alocação do disco (um blocoou um setor) possui um endereço físico no disco;

• podemos endereçar estes da mesma forma que fazemos com a RAM.

Page 12: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Modelo simplificadoArquivoocupandodois setores

Setor

Superfície deum Disco Trilha

Page 13: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Modelo mais realista• O disco pode apresentar

fragmentação: os dados não estãoexatamente em espaços contíguos, masem unidades de alocação longe umasdas outras, encadeadas como uma lista;

• o encadeamento é tarefa do sistemaoperacional e do hardware(controladora) do disco.

Page 14: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Modelo mais realistaSetor

Superfície deum Disco

Trilha

Page 15: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Exemplo: disco real

Page 16: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Disco: para trabalhar• Tudo o que precisamos para trabalhar

com técnicas de gerência de arquivos éimaginar:– que um arquivo é uma seqüência de dados

sem “buracos” no meio;– que podemos acessar qualquer parte deses

dados através de seu endereço relativo (a partir do início);

– que só podemos incluir dados novos no fim;– dados do meio só podem ser alterados.

– Apagar um dado significa marcá- lo comoapagado ou substituí-lo por outro !

Início

Fim

Page 17: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Tipos de arquivosHá basicamente dois tipos de arquivos,

vistos sob o ponto de vista do armazenamento de informação:

• Arquivos de Formato Variável

• Arquivos de Registros

Page 18: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Arquivos de Formato Variável• São arquivos onde a única unidade de

endereçamento possível é o byte;

• os arquivos não são organizados em estruturas. Exemplo típico: arquivos texto– Mesmo sendo os arquivos texto organizados em linhas,

estas têm tamanho variável e não servem para endereçar o arquivo - você não sabe a que distância do começo do arquivo a “linha 13” está.

• São tratados como arquivos de acesso seqüencial.

Page 19: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Arquivos de Registros ou de Acesso Randômico

• São arquivos organizados em unidades (maiores que1 byte) de tamanho sempre igual, chamadas registros.– Registros têm a mesma filosofia que as structs em “C” ou

records em Pascal;– são conjuntos de dados com tamanho fixo, mesmo que uma

parte não seja aproveitada;– permitem que sejam usados como unidade de

endereçamento relativa. Ex.: “Registro 34278”.Ex.: podemos armazenar um nodo de uma árvore como um registro. O ponteiro “direita” apontará para o endereçorelativo de um registro representando outro nodo no arquivo.

– Técnicas de Gerência de Arquivos são voltadas aos Arquivos de Registros.

Page 20: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Acesso a registros• Quase todas as linguagens de programação

provêm uma facilidade para o acesso a arquivos de endereçamento randômico.– Ex.: seek(arquivo,posição) em Pascal.– Ex.: fseek(arquivo*,posição,SEEK_SET) em “C”.

• O acesso é feito simplesmente fornecendo-se o endereço relativo (número de registro):– o resto (encontrar a trilha e o setor, posicionar o

cabeçote, etc.) é incumbência do sistemaoperacional e do hardware do dispositivo e étransparente ao programador/usuário.

• Feito o acesso pode-se realizar umaoperação de leitura ou escrita.

Page 21: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Definições• Registro

Elemento básico de um arquivo de acessorandômico:– todos os registros de um arquivo têm o mesmo tamanho.

• Item de DadosÉ o campo de um registro.

• OcorrênciaÉ uma instância de um registro com determinadosvalores.

• Organização FísicaA forma de organização de um arquivo, sua estrutura(de dados e de índices):– contrapartida ao conceito de Estrutura de Dados.

Page 22: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Escolha da organização de arquivos• Principal objetivo:

– fornecer caminhos de acesso aos registros durante as operações de recuperação e atualização de dados.

• Critérios:– consultas sempre envolvem buscas. Os caminhos de acesso

aos registros devem tornar essas buscas o mais eficientespossível.

• Depende:– dos tipos de consultas permitidas;– do número de chaves (só uma ou chaves secundárias).

Ex.: vamos indexar uma lista telefônica só por nome outambém por rua ou número?

– Modos de recuperação e de atualização.

Page 23: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Tipos de consultaempregado : registro {

nome : stringcargo : stringsalário : inteirodataBase : dataendereço : string

}

• Consulta simples: cargo = “motorista”

• Consulta em uma faixa: salário > 560

• Consulta booleana: cargo = “motorista” E salário > 300 E dataBase = 15/12/2007

Page 24: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Indexação• Podemos usar um campo de uma estrutura de registro para

“identificar” esse registro. Chamamos a este campo de chave.

• Índice é uma estrutura de dados que mantém o conjunto de chaves de um arquivo e seus endereços e serve de referência para os registros.– Índice Primário (ou Indexação por Chave Primária) é um

índice único que organiza o arquivo através do campo considerado “mais importante” ou “identificador” da suadefinição de registros. Ex.: “empregado” por nome.

– Índice Secundário (ou Indexação por Chave Secundária) éum índice que organiza o arquivo referenciando outrocampo ou combinação de campos. Ex.: indexamos“empregado” por nome e por data-base. Data-base éum índice secundário.

Page 25: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Métodos de gerência/organização• Arquivos Seqüenciais

– Primária• Arquivos Indexados Seqüenciais

– Primária• Árvores

– AVL, B• Primária

– K-D• Primária, Secundária

• Listas (Primária e Secundária)– Multilista– Arquivo Invertido

Page 26: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Arquivos seqüenciais• Um registro está atrás do outro:

– leitura é realizada seqüencialmente;– escrita só no final.

• Indexação: Ordenação por Chave Primária– Indexação Primária: podemos ordenar o arquivo pelo campo

chave. Semelhante à lista ordenada em um vetor.– Vantagem: acesso seqüencial de um conjunto de dados é o

mais rápido.• Útil quando sempre tenho de processar quase todos os

elementos.– Desvantagens: inclusão e exclusão é extremamente custosa.

Duas soluções:• cópia;• inclusão/exclusão com o algoritmo da lista ordenada em

vetor.

Page 27: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Exemplo: inclusão em Arquivo Seqüencial com Chave

Início00010002000500120014001600180028004500500056

0015

Page 28: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Exemplo: inclusão em Arquivo Seqüencial com Chave

Início00010002000500120014001600180028004500500056

Início00010002000500120014

Page 29: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Exemplo: inclusão em Arquivo Seqüencial com Chave

0015

Início00010002000500120014001600180028004500500056

Início00010002000500120014

Page 30: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Exemplo: inclusão em Arquivo Seqüencial com Chave

0015

Início00010002000500120014001600180028004500500056

Início00010002000500120014

001600180028004500500056

Page 31: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Arquivos Indexados Seqüenciais• 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 VMS);

– mais tarde passou a existir também para PCs sob DOS.

Page 32: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

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 essas tabelas ficava no começo do próprio

arquivo.• Tabela de índices pode ter vários níveis

(índice hierárquico ou “quase-árvore”);• 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.

Page 33: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Arquivos Indexados SeqüenciaisIdéia geral

Início00010002000500120014001600180028004500500056

001200120018001800560056

Área de Espaço Disponível ou Overflow Area

Índice de Acesso

Page 34: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Arquivos Indexados SeqüenciaisInserção do 15

Início00010002000500120014001600180028004500500056

001200120018001800560056

Área de Espaço Disponível ou Overflow Area

Índice de Acesso

0015

Page 35: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Arquivos Indexados Seqüenciais Início00010002000500120014001600180028004500500056

001200120018001800560056

Elemento é inserido na área de Espaço Disponível

Índice de Acesso

0015 0015

Page 36: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Museu revisitado: ISAM original

Page 37: INE5408 Estruturas de Dados - UFSC · – Arquivo Invertido. Arquivos seqüenciais • Um registro está atrás do outro: – leitura é realizada seqüencialmente; – escrita só

Museu revisitado: ISAM original