Dienstag, 29. Oktober 2013

Datenkompression - das Komprimieren von Daten

Für die Datenkompression (das Verkleinern, also Komprimieren von Daten) gibt es verlustbehaftete und verlustfreie Methoden.

Verlustbehaftet werden z.B. die Dateiformate JPEG oder MP3 komprimiert, verlustlos z.B. PNG oder FLAC.

Zum Packen oder Archivieren von Daten braucht es natürlich verlustfreie Algorithmen, am besten mit Prüfsummen (CRC) zur Sicherung der Integrität.

Wohl am bekanntesten ist das ZIP-Archivformat, das auf dem DEFLATE-Algorithmus basiert (LZ77 + Huffman) und unter Windows üblich ist.

Ebenfalls beliebt ist auch (immernoch) das RAR-Format, bei dem die Daten "am Stück" komprimiert werden (etwa mit ZIP), was zu höheren Kompressionsraten führen kann.

In der Unixwelt (Linux) gibt es etwas ähnliches, das TAR-Format sammelt Daten erst einmal in einer Datei, die dann effektiv verkleinert werden kann (durch Einsparen von Redundanzen).

Auf dem DEFLATE-Algorithmus basieren neben ZIP auch gzip und zlib (PNG, HTTP), wodurch diese in etwa die gleichen Komprimierungsraten und -zeiten aufweisen (bei gleicher Kompressionsstufe).

Besser als ZIP und gzip komprimiert bzip2 (BWT-Algorithmus), es dauert damit aber auch länger, da mehr Rechenkapazität nötig ist und es wird mehr Arbeitsspeicher benötigt (vgl. "Am-Stück"-Logik).

Noch besser als bzip2 komprimiert LZMA, besser bekannt durch das 7z-Format (7-Zip, p7zip).
In der Unixwelt entstand hierfür lzip (*.lz) und letztlich das xz-Format auf Basis von LZMA2.

Der Vorteil von XZ ist eine bestmögliche Komprimierung, und das mit Metadaten; LZMA2 ist ideal für Dateien, die sich sonst nicht mehr komprimieren lassen würden. Die Komprimierungszeiten und der RAM-Verbrauch sind aber auch entsprechend hoch (je nach Stufe).

Eine *.tar.xz lässt sich mit tar -cJf erzeugen.
XZ-Dateien lassen sich mit 7-Zip auch unter Windows öffnen und erzeugen.

Interessante Links:
Erwähnt sein sollen zum Schluss auch noch zwei interessante Algorithmen:
  • LZO (schnelle Dekomprimierung)
  • Zopfli (Google, HTTP; höhere Kompression als zlib, aber kompatibel)

Keine Kommentare:

Kommentar veröffentlichen

Hinweis: Nur ein Mitglied dieses Blogs kann Kommentare posten.