Zstandard – Ένα ταχύτερο εργαλείο συμπίεσης δεδομένων

zstandard-cerebrux

Το Zstandard ή zstd είναι ένας γρήγορος αλγόριθμος συμπίεσης που στοχεύει σε σενάρια συμπίεσης σε πραγματικό χρόνο. Μπορούμε όμως να το χρησιμοποιήσουμε και για αρχεία και δεδομένα του υπολογιστή μας.

Το έργο αναπτύσσεται από την εταιρεία Facebook και παρέχεται ως βιβλιοθήκη για χρήση σε άλλα project. Επίσης διαθέτει και ένα βοηθητικό πρόγραμμα γραμμής εντολών που παράγει και αποκωδικοποιεί αρχεία:

  • .zst (το default του zstd)
  • .gz (το γνωστό GNU zip / gzip)
  • .xz (του 7zip / p7zip)
  • .lz4

Το Zstd μπορεί επίσης να ρυθμιστεί ώστε να προσφέρει ισχυρότερες αναλογίες συμπίεσης με το κόστος φυσικά αυτή της ταχύτητας συμπίεσης. Αντίθετα η ταχύτητα αποσυμπίεσης διατηρείται και παραμένει περίπου η ίδια σε όλες τις ρυθμίσεις.

zstandard-cerebrux

Αξίζει να σημειώσουμε εδώ ότι zstd είναι ιδιαίτερα αποτελεσματικό σε μεγάλα (συνεχή) αρχεία. Αντίθετα όμως, όσο μικρότερη είναι η ποσότητα των δεδομένων για συμπίεση (π.χ. μικρά αρχεία), τόσο πιο δύσκολη είναι η συμπίεση. Αυτό το πρόβλημα είναι κοινό σε όλους τους αλγόριθμους συμπίεσης και ο λόγος είναι ότι οι αλγόριθμοι συμπίεσης μαθαίνουν από προηγούμενα δεδομένα πώς να συμπιέζουν μελλοντικά δεδομένα. Αλλά στην αρχή ενός νέου συνόλου δεδομένων (ένα μικρό αρχείο), δεν υπάρχει «παρελθόν» που να βασίζεται για να βελτιωθεί ή συμπίεση των μελλοντικών δεδομένων.

Για την επίλυση αυτής της κατάστασης, το Zstd προσφέρει μια μέθοδο εκπαίδευσης, ο οποίος μπορεί να χρησιμοποιηθεί για τον συντονισμό του αλγορίθμου για έναν επιλεγμένο τύπο δεδομένων. Το αποτέλεσμα αυτής της εκπαίδευσης είναι αποθηκευμένο σε ένα αρχείο που ονομάζεται «λεξικό», το οποίο πρέπει να φορτωθεί πριν από τη συμπίεση και την αποσυμπίεση. Χρησιμοποιώντας αυτό το λεξικό, ο λόγος συμπίεσης που επιτυγχάνεται σε μικρά δεδομένα βελτιώνεται δραματικά.

Τέλος, ο ίδιος ο πυρήνας Linux από την έκδοση 4.14 και έπειτα διαθέτει υποστήριξη συμπίεσης Zstd για χρήση του στα Btrfs και SquashFS ως νέα μέσα συμπίεσης του συστήματος αρχείων.

Εγκατάσταση του εργαλείου συμπίεσης / αποσυμπίεσης zstd

Μπορείτε να εγκαταστήσετε το εργαλείο συμπίεσης/αποσυμπίεσης μέσα από τα αποθετήρια της διανομής σας:

Arch:

sudo pacman -S zstd

 

Fedora :

sudo dnf install zstd

 

openSUSE:

sudo zypper install zstd

 

Ubuntu:

sudo apt install zstd

Πως χρησιμοποιούμε το Zstd

 

Το Zstd μπορεί να χρησιμοποιηθεί και μέσω γραφικού περιβάλλοντός αλλά αυτό θα πρέπει να το υποστηρίζει το γραφικό εργαλείο που χρησιμοποιείτε στην διανομή σας.

Παρόλα αυτά, μπορείτε από το τερματικό να κάνετε την δουλειά σας άνετα. Ο τρόπος είναι απλός:

Για να συμπιέσετε:

zstd όνομα-αρχείου

Για να αποσυμπιέστε

unzstd όνομα-αρχείου

ή

zstd -d όνομα-αρχείου

Συμπίεση φακέλων με το zstd

Στην περίπτωση που θέλετε να συμπιέσετε έναν φάκελο, θα πρέπει πρώτα να φτιάξετε ένα tar του φακέλου και έπειτα να συμπιέσετε το tar. Παράδειγμα:

tar -cvf όνομα.tar φακελος-για-συμπίεση
zstd όνομα.tar

Όσοι όμως διαθέτετε την έκδοση 1.30 του tarτότε δεν χρειάζεται να φτιάξετε πρώτα το tar αρχείο, αλλά μπορείτε να το δημιουργήσετε απευθείας:

tar -cavf όνομα.tar.zst φακελος-για-συμπίεση

Για αποσυμπίεση:

tar -xavf όνομα.tar.zst

Παρόλα αυτά όμως, με αυτή την έμμεση χρήση (μέσω tar) χάνετε πιθανόν παραμέτρους (όπως βαθμοί συμπίεσης, εκπαίδευση κλπ).

Σύγκριση του Zstd με τους παραδοσιακούς αλγορίθμους συμπίεσης

compression-bundle-modern
Σύγκριση του Zstd με lz4, lzma, zlib, brotli. (Όσο πιο δεξιά και ψηλά τόσο καλύτερο)

Με το παραπάνω γράφημα τα πλεονεκτήματα του Zstandard είναι προφανή. Οι ταχύτητες συμπίεσης του Zstandard κυμαίνονται από ~ 338 MB / s στο επίπεδο 1 έως ~ 2,6 MB / s στο επίπεδο 22 ενώ καλύπτουν τις αναλογίες συμπίεσης από 3,72 σε 6,05. Το παραπάνω γράφημα όπως και μια ανάλυση των πλεονεκτημάτων του Zstandard θα το βρείτε στις παραπομπές.


παραπομπές:

Advertisements

Σου άρεσε το άρθρο; Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση /  Αλλαγή )

w

Σύνδεση με %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.