Organização de arquivos para desempenho. Manutenção de Arquivos. Compressão de dados. Compressão. Notação diferenciada. Técnicas

Documentos relacionados
Manutenção de Arquivos

Organização de Arquivos. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A. Ciferri

Organização de Arquivos

Organização de Arquivos

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Arquivos: Organização X Acesso

Arquivos: Organização X Acesso

Organização de Arquivos

Manutenção de Arquivos

Compactação e Reuso de Espaço

Organização de Arquivos. Campos e Registros. Seqüência de Bytes (stream) Seqüência de Bytes (stream) Seqüência de Bytes (stream)

Acesso a registros. Acesso a Registros. Acesso a registros. Chaves. Forma Canônica da Chave. Forma Canônica da Chave

Chaves. Acesso a Registros. Chaves Primária e Secundária. Chaves Primária e Secundária

Organização de Arquivos. Campos e Registros. Seqüência de Bytes (stream) Seqüência de Bytes (stream) Leandro C. Cintra Maria Cristina F.

Árvores B. Árvores B Parte II. Características. Características. Construção Bottom-Up. Leandro C. Cintra Maria Cristina F. de Oliveira.

Indexação de Arquivos II:

Indexação de Arquivos III:

Índices. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

Índice. Índices. Índice simples. Em geral, um índice fornece mecanismos para localizar informações

Algoritmo: Split. Árvores B Parte IV. Algoritmo: Split. Algoritmo: Split. Algoritmo: Split. Procedimento inicial. Parâmetros

Índices. SCE-203 Algoritmos e Estruturas de Dados II

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Árvores Binárias de Busca. Árvores Binárias de Busca. Introdução

Hashing. Hashing. Hashing versus Indexação. Hashing. Hashing convencional... Exemplo de espalhamento. Revisão...

A Invenção da B-Tree. Árvores B Parte I. Problema. Problema. Introdução. Leandro C. Cintra Maria Cristina F. de Oliveira. Solução?

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Definição. Árvores B Parte III. Propriedades Gerais. Propriedade (No. Mín. de Chaves) Leandro C. Cintra Maria Cristina F.

Ordenação e Busca em Arquivos

Índice Primário e Índice Secundário

Organização de Arquivos. Leandro C. Cintra M.C.F. de Oliveira Thiago A. S. Pardo Cristina D. A. Ciferri

Profa. Dra. Cristina Dutra de Aguiar Ciferri. Estruturas de Indexação de Dados

Sumário. Sumário. Algoritmos e Estruturas de Dados II Organização de Arquivos. Organização de Arquivos. Seqüência de bytes (stream)

Árvores B Partes I e II

Árvores B Parte IV. Revisão de Inserção. Organização. Variantes. Leandro C. Cintra Maria Cristina F. de Oliveira

Acesso a Arquivos. Árvores B Parte VI. Acesso Seqüencial & Indexado. Questão. Foco 1. Uso de Blocos. Árvores B+ Alternativas (até o momento)

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

slide Pearson Prentice Hall. Todos os direitos reservados.

Armazenamento Secundário

Compactação de Dados Letícia Rodrigues Bueno

Implementação de Sistemas de Arquivos. Na Aula Anterior... Esquema do Sistema de Arquivos. Nesta Aula 31/10/2016. Estrutura de Baixo Nível de um Disco

HDs. Armazenamento Secundário. HDs. Capacidade do Disco. Organização de Informação em Disco. Organização de Informação em Disco

Árvores-B (Parte IV) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Ordem. Árvores-B (Parte IV) Número mínimo de chaves por página. Definição formal das Propriedades de árvores-b /30 1

Aplicações de listas Outras estruturas

Organização de Arquivos

Profa. Dra. Cristina Dutra de Aguiar Ciferri. Estruturas de Indexação de Dados

Aplicações de listas e outras estruturas

slide Pearson Prentice Hall. Todos os direitos reservados.

Árvores B Parte III. Propriedades, Remoção & Inserção Revisitada. Adaptado e Estendido dos Originais de:

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

Matrizes esparsas: definição

Lista de Exercícios. Av. Trabalhador São-carlense, 400. centro. São Carlos - SP cep Brasil.

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Árvores. SCC-214 Projeto de Algoritmos. Thiago A. S. Pardo. Um nó após o outro, adjacentes Sem relações hierárquicas entre os nós, em geral

Arquivos. Fundamentos de Arquivos. Discos X Memória Principal. Memória Secundária x Principal. Informação mantida em memória secundária (externa)

Hashing Externo. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo M.C.F. de Oliveira Cristina Ciferri

Tipos de Índices. Profa. Dra. Cristina Dutra de Aguiar Ciferri

Métodos de Busca Parte 1

Processamento Cosequencial: Ordenação Interna e Externa. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A.

Gerenciamento de Memória. Aleardo Manacero Jr.

Estruturas de Dados I

Pré-Processamento de Documentos

Organização de Arquivos. SCE-183 Algoritmos e Estruturas de Dados II

Estrutura de Dados. Estrutura de Dados Recursividade. Exemplo: 5! = 5 x 4! 4! = 4 x 3! 3! = 3 X 2! 2! = 2 x 1! 1! = 1 x 0!

Hashing convencional...

Árvores Binárias e AVL Felipe Barros Pontes Gustavo Márcio de Morais Cunha Márcio de Medeiros Ribeiro

Arquivos invertidos 39

Introdução Métodos de Busca Parte 1

SCC Algoritmos e Estruturas de Dados II. 6ª lista de exercícios

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Compactação e Reuso de Espaço

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

Sistemas Operacionais

Compressão Sem Perdas: Codificações Huffman e Aritmética. Adelar da Silva Queiróz Marcelo Teixeira Thiago da Silva Sodré

Organização de Arquivos e Acesso a Arquivos

Nivio Ziviani. Conjunto de transparências elaborado por Nivio Ziviani, Patrícia Correia e Fabiano C. Botelho

Sistemas de arquivos

Quinto Trabalho Prático. Este trabalho tem como objetivo indexar arquivos de dados usando um índice árvore-b.

INE5408 Estruturas de Dados. Gerência de Arquivos

Sistemas Operacionais

Gerência do Sistema de Arquivos. Adão de Melo Neto

Árvores & Árvores Binárias

Busca binária. Busca em arquivos. Busca binária. Busca binária. Ordenação e busca em arquivos

Estruturas de Dados. Filas em que a prioridade de remoção não é cronológica. Maior prioridade não é do elemento que ingressou primeiro

Gerência de Memória. Gerência de Memória Introdução e Particionamento. Novo capítulo. Aulas anteriores. Plano da aula. Memória lógica & física

COMPRESSÃO E CODIFICAÇÃO SEM PERDAS. Mauro Nogueira Mônica Festa Paulo Antiquera

SCC-503 Algoritmos e Estruturas de Dados II. Modificado por Moacir Ponti Jr, do original de:

Árvores-B + SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Aula 16. Tópicos Especiais II Banco de Dados. Prof. Dr. Dilermando Piva Jr.

Hashing externo (II) Graça Nunes. Fonte: Folk & Zoelick, File Structures

AED2 - Aula 01 Apresentação, estruturas de dados, tabelas de símbolos e hash tables

Algoritmos e Estruturas de Dados I

Unidade II FUNDAMENTOS DE SISTEMAS OPERACIONAIS. Prof. Victor Halla

Implementação de Diretórios (1)

Árvores de Pesquisa (Parte II)

Segunda Parte do Trabalho Prático (Parte II) Valor: 60% Descrição do índice

Classificação e Pesquisa de Dados. Aula 23 Organização de Arquivos: Arquivos Indexados, Diretos e Arquivos Invertidos

Transcrição:

Algoritmos e Estruturas de Dados II Profa. Debora Medeiros Organização de arquivos para desempenho Organização de arquivos visando desempenho Adaptado dos Originais de: Ricardo Campello Thiago Pardo Leandro C. Cintra Maria Cristina F. de Oliveira Complexidade de espaço Compressão e compactação de dados Reuso de espaço Complexidade de tempo Ordenação e busca de dados 2 Compressão de dados Compressão A compressão de dados envolve a codificação da informação de modo que o arquivo ocupe menos espaço Transmissão mais rápida Processamento seqüencial mais rápido Menos espaço para armazenamento Algumas técnicas são gerais, e outras específicas para certos tipos de dados, como voz, imagem ou texto Técnicas reversíveis vs. Irreversíveis A variedade de técnicas é enorme 4 Técnicas Notação diferenciada Redução de redundância Omissão de seqüências repetidas Redução de redundância Notação diferenciada Exemplo Códigos de estado, armazenados na forma de texto: 2 bytes 50 estados americanos 2 bytes (para representação de 2 caracteres): NY, CA, etc. Alternativa: com 50 opções, pode-se usar... Códigos de tamanho variável Código de Huffman 5 6

Notação diferenciada Exemplo Códigos de estado, armazenados na forma de texto: 2 bytes 50 estados americanos 2 bytes (para representação de 2 caracteres): NY, CA, etc. Alternativa: com 50 opções, pode-se usar 6 bits Por que? É possível guardar a informação em 1 byte e economizar 50% do espaço Desvantagens? Notação diferenciada Desvantagens? Legibilidade Codificação/decodificação Complexidade dos softwares de processamento 7 8 Omissão de sequências repetidas Para a seqüência hexadecimal 22 23 24 24 24 24 24 24 24 25 26 26 26 26 26 26 25 24 Omissão de sequências repetidas Para a seqüência hexadecimal 22 23 24 24 24 24 24 24 24 25 26 26 26 26 26 26 25 24 Como melhorar isso? Usando 0xff como código indicador de repetição (código de run-length) 22 23 ff 24 07 25 ff 26 06 25 24 9 indicador valor original número de ocorrências 10 Omissão de sequências repetidas Bom para dados esparsos ou com muita repetição Imagens do céu, por exemplo Códigos de tamanho variável Representação binária de caracteres Comprimento variável Garante redução de espaço sempre? 11 12

Códigos de tamanho variável Representação binária de caracteres Comprimento variável Relação com a frequência dos caracteres Código morse Código livre de prefixo Código de Huffman Exemplo: alfabeto de 6 letras: a, b, c, d, e e f adeba 000011100001000 011111011010 Caracteres a b c d e f # bits (x 1000) Frequência (x 1000) 45 13 12 16 9 5 - Código de comprimento fixo 000 001 010 011 100 101 300 Código de tamanho variável 0 101 100 111 1101 1100 224 13 14 Código de Huffman Representação com árvore binária Código de Huffman Representação com árvore binária f(c): frequência do caractere c d T (c): profundidade da folha que representa c Comprimento do código que representa c B ( T) f( c) d T ( c) : número de bits necessários c C 15 custo da árvore T 16 Código de Huffman Código de Huffman a b c d e f 45 13 12 16 9 5 Q: heap binário mínimo 17 18

Código de Huffman Técnicas de compressão irreversíveis a b c d e f 45 13 12 16 9 5 Até agora, todas as técnicas eram reversíveis Algumas são irreversíveis Por exemplo, salvar uma imagem de 400 por 400 pixels como 100 por 100 pixels Trocam-se 16 pixels por 1 Onde se usa isso? 19 20 Compactação e reuso do espaço Projetista deve considerar modificações no arquivo Adição, atualização e eliminação de registros Problema é simples quando: 22 Projetista deve considerar modificações no arquivo Adição, atualização e eliminação de registros Problema é simples quando: P. ex., atualizar um registro que aumente de tamanho: O que fazer com os dados adicionais? Registros são de tamanho fixo, E Apenas adições e atualizações ocorrem Porém, em outras circunstâncias...... reg. N-1 reg. N reg. N+1 reg. N+2... 23 reg. N (novo) 24

P. ex., atualizar um registro que aumente de tamanho: O que fazer com os dados adicionais? Anexar ao final do arquivo e ligar as duas partes por ponteiros? Processamento de cada registro (logo do arq. todo) fica muito mais complexo P. ex., atualizar um registro que aumente de tamanho: O que fazer com os dados adicionais? Anexar ao final do arquivo e ligar as duas partes por ponteiros? Processamento de cada registro (logo do arq. todo) fica muito mais complexo Apagar o registro original e reescrevê-lo todo no final do arquivo?... reg. N-1 reg. N reg. N+1 reg. N+2... Ok, mas temos que nos preocupar em reutilizar o espaço desocupado... reg. N-1 reg. N reg. N+1 reg. N+2... reg. N (novo) 25 reg. N (novo) 26 P. ex., deletar um registro (tamanho fixo ou variável): O que fazer com o espaço remanescente? Nesse caso também temos que nos preocupar em reutilizar o espaço vago Note que o foco de manutenção de arquivos pode se dar no problema de reaproveitamento de espaços vagos De fato, uma atualização sempre pode ser vista como: Atualização = Eliminação + Adição Se o arquivo está off-line e sujeito a modificações esporádicas, e.g. lista de mala direta, espaços podem ser recuperados em modo batelada (batch) Trata-se de apenas marcar os registros no momento da eliminação, e periodicamente eliminá-los todos de uma vez Demanda um mecanismo que permita reconhecer quando uma área do arquivo corresponde a um registro que foi eliminado Geralmente, isso é feito colocando um marcador especial no lugar do registro apagado (e.g. "* " nos primeiros 2 bytes do registro) Após um certo no. de eliminações: aciona-se um procedimento de compactação 27 28 Compactação Compactação Quando o procedimento de compactação é ativado, o espaço de todos os registros marcados é recuperado de uma só vez Se existe espaço suficiente, a maneira mais simples de compactar é via cópia seqüencial: novo arquivo é gerado copiando o original, porém ignorando os bytes correspondentes a registros eliminados Existem mecanismos de compactação in-place mais complexos e computacionalmente pesados 29 30

Compactação Software deve ser capaz de ignorar registro apagado Vantagens Recuperação de registros Campo especial Recuperação Dinâmica Procedimento de compactação é esporádico... espaço não fica disponível imediatamente Em aplicações on-line, que acessam arquivos altamente voláteis, pode ser necessário um processo dinâmico de recuperação de espaço marcar registros eliminados localizar os espaços desocupados quando necessário Como? 31 32 Recuperação Dinâmica Registros de Tamanho Fixo Ao adicionar um novo registro, queremos: Saber imediatamente se existem slots slot = espaço disponível de um registro eliminado Acessar diretamente um slot, se existir diretamente = sem buscas exaustivas! Lista encadeada de registros eliminados disponíveis Cada elemento da lista armazena: O RRN do próximo registro vago Cabeça da lista está no header record do arquivo: Registro cabeçalho armazena RRN do 1º registro vago 33 34 Registros de Tamanho Fixo Registros de Tamanho Fixo Inserção e remoção ocorrem sempre no início da lista Lista encadeada operada como Pilha! Pilha pode ser mantida no próprio arquivo! Pilha antes e depois da inserção do registro com RRN 3 inserção na pilha registro eliminado do arquivo remoção da pilha registro adicionado ao arquivo 35 36

Registros de Tamanho Fixo Registros de Tamanho Fixo Arquivo Original Após remoção do 3º registro Exemplo (registros com 55 bytes) Para fins de implementação prática, o cabeçalho pode ser implementado como uma struct em C: um dos campos armazena o RRN do 1º reg. vago p. ex. int head.first_avail demais campos podem armazenar outras infos O arquivo em si começa após os bytes do cabeçalho Após remoção do 1º registro 37 38 Registros de Tamanho Variável Registros de Tamanho Variável No caso de registros de tamanho variável, temos um problema adicional... Registros não são acessíveis por RRN... Não mais se recuperam os byte offsets pelos RRNs Não adianta encadear os RRNs dos registros vagos Registros não são acessíveis por RRN... Solução: Armazenar os byte offsets na lista encadeada ao invés dos RRNs 41 42 Registros de Tamanho Variável Exemplo Registros não são acessíveis por RRN... Solução: Armazenar os byte offsets na lista encadeada ao invés dos RRNs Utilizar registros com indicador de tamanho permite saber o tamanho do slot a partir do byte offset 43 44

Registros de Tamanho Variável Registros de Tamanho Variável O problema está solucionado? O problema está solucionado? Como os registros são de tamanho variável, não é qualquer slot da lista que serve para acomodar um novo registro a ser adicionado é preciso encontrar um slot grande o suficiente se não for encontrado, adiciona-se ao final do arquivo para isso, é preciso percorrer seqüencialmente a lista 45 46 Registros de Tamanho Variável Exemplo 1: adicionar registro de 55 bytes 47? pequeno... head Fragmentação Interna No Exemplo 1, usamos todos os 72 bytes de um slot para adicionar um registro de apenas 55 bytes Os 17 bytes extras ficaram inutilizados 38? pequeno... 72? Suficiente! head fragmentação interna 47 48 Fragmentação Interna Fragmentação Interna Exemplo 2: adicionar Ham A1 28 Elm Ada OK 70332 (27 bytes) Podemos combater a fragmentação interna mantendo os bytes não utilizados como um slot menor na lista No Exemplo 1 (slot de 72 bytes para um registro de 55): Antes Depois 49 50

No Exemplo 2: Fragmentação Interna adicionar Ham Al 28 Elm Ada OK 70332 a um slot de 64 bytes Fragmentação Interna Os 35b restantes podem ser utilizados para outro registro Por exemplo: Lee Ed 2 Rt Ada OK 74820 (25 bytes) Após a inserção do novo registro: Tem-se um registro menor ainda disponível Probabilidade de utilização desse registro é quase nula Problema é denominado Soluções? 51 52 Formas de Combater a Fragmentação Compactação (off-line) Gerar novamente o arquivo de tempos em tempos Coalescing Buscar por registros disponíveis adjacentes e uni-los em registros disponíveis maiores Prevenção Tentar evitar a fragmentação antes que ela ocorra através de estratégias de alocação de novos registros Estratégias de Alocação de Slots: First-Fit primeiro da lista que seja grande o suficiente Best-Fit aquele com tamanho mais parecido ao do registro Worst-Fit aquele com o maior tamanho de todos 53 54 First-Fit estratégia mais simples de todas requer apenas percorrer a lista exatamente o que fizemos até agora na verdade, não tenta prevenir fragmentação responsabilidade da compactação e/ou coalescing 55 Best-Fit estratégia mais intuitiva de todas requer manter a lista ordenada ordenação ascendente com o tamanho dos slots demanda tempo computacional extra: não é mais possível sempre adicionar um slot ao início da lista mas, na verdade, pode piorar fragmentação Por que? 56

Best-Fit estratégia mais intuitiva de todas requer manter a lista ordenada ordenação ascendente com o tamanho dos slots demanda tempo computacional extra: não é mais possível sempre adicionar um slot ao início da lista mas, na verdade, pode piorar fragmentação Worst-Fit estratégia menos intuitiva de todas requer manter a lista ordenada ordenação descendente com o tamanho dos slots mas tempo extra é compensado: por que? minimiza fragmentação? se slot não for perfeito, sobra é mínima! 57 58 Bibliografia Worst-Fit estratégia menos intuitiva de todas requer manter a lista ordenada ordenação descendente com o tamanho dos slots mas tempo extra é compensado: se 1 o slot não acomodar o registro, nenhum outro slot da lista acomodará! minimiza fragmentação já que slot raramente é perfeito, sobra é máxima! M. J. Folk and B. Zoellick, File Structures: A Conceptual Toolkit, Addison Wesley, 1987. 59 66