você está aqui: Home  → Arquivo de Mensagens

Comprimindo logs ao mesmo tempo em que são gerados

Colaboração: Herbert G. Fischer

Data de Publicação: 07 de Maio de 2004

Sobre a dica que eu enviei à Dicas-L da compactação de arquivos, realmente funciona, mas tem um problema grave.

Esta dica eu enviei a muito tempo atrás, se não me engano à mais de um ano. Como ela "demorou" para ser publicada, eu acabei esquecendo de enviar a correção assim que descobri.

De lá para cá, percebi que algo não fazia sentido. A grosso modo qualquer compressão (sem perda) de arquivo, sugere uma eliminação da repetição de alguma informação somente se gravando quantas vezes aquilo é repetido e onde está no original. Ao concatenar trechos de texto compactados, não se está compactando o todo novamente, mas sim, apenas eliminando a repetição no trecho compactado. Ao fazer isso, somando-se cabeçalhos, informações extras, e tal, o arquivo compactado pode e provavelmente ficará maior que o arquivo original.

A dica continua valendo, mas para concatenar coisas "grandes", em que, realmente, a compressão surte algum efeito.

Um pequeno teste em shell script que pode comprovar o problema:

  #!/bin/sh
  for i in ``seq 1 10000``
  do
      echo compressao | gzip -f >> a.gz
      echo compressao >> b
  done

O resultado... o arquivo "a.gz" fica MAIOR que o arquivo "b". Simplesmente porque o texto "compressao" ao ser compactado pelo gzip, ficou maior que o texto sem compressao. O arquivo "a.gz" gerado é diferente de um arquivo texto com 10.000 linhas do texto compressao e compactado inteiramente. Seria o caso de compactar o arquivo "b" gerando um arquivo "b.gz" de apenas 264 bytes, contra 310.000 bytes do arquivo a.gz.

A sugestão fica por conta de NÃO utilizar esse mecanismo para registrar pequenas mensagens, mas não impede de ser utilizado para grandes textos.

Talvez alguém ache uma boa utilização disso em alguma coisa que valha mais a pena concatenar algo "grande" comprimido em uma coisa maior e já comprimida, do que descomprimir o que já está comprimido, concatenar, e comprimir novamente.


If Microsoft Had Invented Books ...

  • Before you can open the cover of your new book, you must obtain a book activation code by phoning Microsoft.

  • Sorry, only one person may ever read your book.

  • It's full of spelling mistakes and typos.

  • When you're reading your book, the type can mysteriously disappear.

  • Libraries, which are for sharing books, are illegal.

  • You must acknowledge you have read and understood the Book License Agreement Hype (BLAH) before you can read your book.

  • Microsoft has the right to enter your premises to conduct book inspections to make sure your book is being read in accordance with the BLAH.

  • The Book Users' Group General Alliance (BUGGA) calculates that the annual loss of revenues to Microsoft arising from BLAH violations in 2001 was $10.97 billion.

  • There are two versions of your book - the "Standard" and the "Pro" versions. In the standard version, those pages containing the most useful information have been stuck together.

  • Confidential information is inexplicably in bigger type that can be easily read by anyone glancing over your shoulder.


 

 

Veja a relação completa dos artigos de Herbert G. Fischer

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script