Wyszukiwanie w witrynie

zstd – algorytm szybkiej kompresji danych używany przez Facebooka


Zstandard (znany również jako zstd) to darmowy, otwarty program do szybkiej kompresji danych w czasie rzeczywistym i lepszych współczynnikach kompresji, opracowany przez Facebook. Jest to algorytm kompresji bezstratnej napisany w C (istnieje reimplementacja w Java) – jest więc natywnym programem dla Linuksa.

Przeczytaj także: 10 przykładów poleceń 7zip (kompresja danych) w systemie Linux

W razie potrzeby może zamienić prędkość kompresji na silniejszy współczynnik kompresji (kompromis między szybkością kompresji a współczynnikiem kompresji można konfigurować w małych krokach) i odwrotnie. Posiada specjalny tryb kompresji małych danych, znany jako kompresja słownikowa, i może tworzyć słowniki na podstawie dowolnego dostarczonego zestawu próbek. Zawiera narzędzie wiersza poleceń do tworzenia i dekodowania .zst, .gz, .xz i .lz4 akta.

Co ważne, Zstandard posiada bogatą kolekcję API, obsługuje prawie wszystkie popularne języki programowania, w tym Python, Java, JavaScript, Nodejs, Perl, Ruby, C#, Go, Rust, PHP, Switft i wiele innych.

Jest aktywnie używany do kompresji dużych ilości danych w wielu formatach i przypadkach użycia na Facebooku; usługi takie jak hurtownia danych Amazon Redshift; bazy danych takie jak Hadoop i Redis; sieć Tor i wiele innych aplikacji, w tym gry.

Poniższe wyniki uzyskano, wykonując kilka testów algorytmów szybkiej kompresji na serwerze z systemem Linux Debian przy użyciu lzbench, narzędzia do testów porównawczych w pamięci o otwartym kodzie źródłowym.

Jak zainstalować narzędzie do kompresji Zstandard w systemie Linux

Aby zainstalować Zstandard w dystrybucji Linuksa, musisz go skompilować ze źródeł, ale wcześniej musisz zainstalować w swoim systemie niezbędne narzędzia programistyczne, korzystając z menedżera pakietów dystrybucyjnych, jak pokazano.

sudo apt update && sudo apt install build-essential		#Ubuntu/Debian
yum group install "Development Tools" 			#CentOS/REHL
dnf groupinstall "C Development Tools and Libraries"		#Fedora 22+

Po zainstalowaniu wszystkich potrzebnych narzędzi programistycznych możesz teraz pobrać pakiet źródłowy, przejść do lokalnego katalogu repo, zbudować plik binarny i zainstalować go, jak pokazano.

cd ~/Downloads
git clone https://github.com/facebook/zstd.git
cd zstd
make
sudo make install 

Po zainstalowaniu Zstandard możemy teraz przejść dalej, aby poznać podstawowe przykłady użycia poleceń Zstd w poniższej sekcji.

Poznaj 10 przykładów użycia poleceń Zstd w systemie Linux

Składnia wiersza poleceń Zstd jest ogólnie podobna do składni narzędzi gzip i xz, z kilkoma różnicami.

1. Aby utworzyć plik skompresowany .zst, po prostu podaj nazwę pliku w celu jego skompresowania lub użyj flagi -z, która oznacza również kompresję, czyli akcja domyślna.

zstd etcher-1.3.1-x86_64.AppImage 
OR
zstd -z etcher-1.3.1-x86_64.AppImage 

2. Aby zdekompresować plik skompresowany .zst, użyj flagi -d lub narzędzia unzstd, jak pokazano.

zstd -d etcher-1.3.1-x86_64.AppImage.zst 
OR
unzstd etcher-1.3.1-x86_64.AppImage.zst 

3. Aby usunąć plik źródłowy po operacji, domyślnie plik źródłowy nie jest usuwany po pomyślnej kompresji lub dekompresji. Aby go usunąć, użyj opcji --rm.

ls etcher-1.3.1-x86_64.AppImage
zstd --rm  etcher-1.3.1-x86_64.AppImage
ls etcher-1.3.1-x86_64.AppImage

4. Aby ustawić poziom kompresji, zstd ma wiele modyfikatorów operacji, na przykład możesz określić poziom kompresji jako -6 (liczba 1-19, domyślnie jest to 3) jak pokazano.

zstd -6 --rm etcher-1.3.1-x86_64.AppImage

5. Aby ustawić szybkość kompresji, zstd ma współczynnik szybkości kompresji 1-10, domyślna prędkość kompresji to 1. Możesz zamienić współczynnik kompresji na prędkość kompresji za pomocą opcji --fast, im wyższa liczba, tym większa prędkość kompresji.

zstd --fast=10 etcher-1.3.1-x86_64.AppImage

6. Aby wyświetlić informacje o skompresowanym pliku, użyj flagi -l, która służy na przykład do wyświetlenia informacji o skompresowanym pliku.

zstd -l etcher-1.3.1-x86_64.AppImage.zst

7. Aby przetestować integralność skompresowanych plików, użyj flagi -t, jak pokazano.

zstd -t etcher-1.3.1-x86_64.AppImage.zst

8. Aby włączyć tryb szczegółowy, użyj opcji -v.

zstd -v -5 etcher-1.3.1-x86_64.AppImage

9. Aby użyć innych formatów kompresji lub dekompresji plików, takich jak gzip, xz, lzma i lz4, użyj --format=FORMAT, jak pokazano.

zstd -v --format=gzip etcher-1.3.1-x86_64.AppImage
zstd -v --format=xz  etcher-1.3.1-x86_64.AppImage

10. Aby ustawić priorytet procesu zstd na czas rzeczywisty, możesz użyć opcji –priority=rt, jak pokazano.

$zstd --priority=rt etcher-1.3.1-x86_64.AppImage

Flaga -r instruuje zstd, aby działał rekurencyjnie na słownikach. Wiele przydatnych i zaawansowanych opcji dotyczących czytania i tworzenia słowników można znaleźć na stronie podręcznika zstd.

man zstd

Repozytorium Zstandard Github: https://github.com/facebook/zstd

Zstandard to szybki algorytm bezstratnej kompresji danych w czasie rzeczywistym i narzędzie do kompresji, które oferuje wysoki współczynnik kompresji. Wypróbuj i podziel się swoimi przemyśleniami na ten temat lub zadaj pytania za pomocą poniższego formularza opinii.