zstd - Facebookin käyttämä nopea tiedonpakkausalgoritmi


Zstandard (tunnetaan myös nimellä zstd) on Facebookin kehittämä ilmainen avoimen lähdekoodin nopea reaaliaikainen tiedonpakkausohjelma paremmilla pakkaussuhteilla. Se on häviötön pakkausalgoritmi, joka on kirjoitettu C-kielellä (Javassa on uudelleentoteutus) – se on siis natiivi Linux-ohjelma.

Lue myös: 10 esimerkkiä 7zip (Data Comperssion) -komennoista Linuxissa

Tarvittaessa se voi vaihtaa pakkausnopeuden vahvempiin pakkaussuhteisiin (pakkausnopeuden ja puristussuhteen kompromissi voidaan määrittää pienin askelin), päinvastoin. Siinä on erityinen tila pienten tietojen pakkaamiseen, joka tunnetaan sanakirjapakkauksena, ja se voi rakentaa sanakirjoja mistä tahansa näytejoukosta. Sen mukana tulee komentorivityökalu, jolla luodaan ja puretaan .zst, .gz, .xz ja .lz4 tiedostot.

Tärkeää on, että Zstandardissa on runsas kokoelma sovellusliittymiä, se tukee lähes kaikkia suosittuja ohjelmointikieliä, mukaan lukien Python, Java, JavaScript, Nodejs, Perl, Ruby, C#, Go, Rust, PHP, Switft ja paljon muuta.

Sitä käytetään aktiivisesti suurten tietomäärien pakkaamiseen useissa eri muodoissa ja käyttötapauksissa Facebookissa; palvelut, kuten Amazon Redshift -tietovarastointi; tietokannat, kuten Hadoop ja Redis; Tor-verkko ja monet muut sovellukset, mukaan lukien pelit.

Seuraavat tulokset saadaan tekemällä useita nopeita pakkausalgoritmien testejä palvelimella, jossa on Linux Debian, käyttämällä lzbenchiä, avoimen lähdekoodin muistin sisäistä vertailutyökalua.

Kuinka asentaa Zstandardin pakkaustyökalu Linuxiin

Asentaaksesi Zstandardin Linux-jakeluun, sinun on käännettävä se lähteistä, mutta ennen sitä sinun on ensin asennettava tarvittavat kehitystyökalut järjestelmääsi jakelupaketin hallintaa käyttämällä kuvan mukaisesti.

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+

Kun kaikki tarvittavat kehitystyökalut on asennettu, voit nyt ladata lähdepaketin, siirtyä paikalliseen repohakemistoon, rakentaa binaarin ja asentaa sen kuvan osoittamalla tavalla.

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

Kun Zstandard on asennettu, voimme nyt siirtyä pidemmälle oppiaksemme Zstd-komennon peruskäytön seuraavassa osiossa.

Opi 10 Zstd-komennon käyttöesimerkkiä Linuxissa

Zstd:n komentorivisyntaksi on yleensä samanlainen kuin gzip- ja xz-työkalujen syntaksi muutamalla erolla.

1. Jos haluat luoda .zst-pakkaustiedoston, anna sen pakkaamiseen tiedostonimi tai käytä -z-merkkiä tarkoittaa myös pakkausta, joka on oletustoiminto.

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

2. Pura .zst-pakkaustiedoston pakkaus käyttämällä -d-lippua tai unzstd-apuohjelmaa kuvan mukaisesti.

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

3. Jos haluat poistaa lähdetiedoston toiminnon jälkeen, oletusarvoisesti lähdetiedostoa ei poisteta onnistuneen pakkauksen tai purkamisen jälkeen. Poista se valitsemalla --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. Pakkaustason asettamiseksi zstd:ssä on useita toimintomääritteitä, esimerkiksi voit määrittää pakkaustasoksi -6 (luku 1-19, oletus on 3) kuvan mukaisesti.

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

5. Pakkausnopeuden asettamiseksi zstd:n pakkausnopeussuhde on 1–10, oletuspakkausnopeus on 1. Voit vaihtaa pakkaussuhteen pakkausnopeudeksi vaihtoehdolla --fast, mitä suurempi luku, sitä nopeampi pakkausnopeus.

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

6. Jos haluat näyttää tietoja pakatusta tiedostosta, käytä -l-lippua, jota käytetään esimerkiksi pakatun tiedoston tietojen näyttämiseen.

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

7. Jos haluat testata pakattujen tiedostojen eheyden, käytä -t-lippua kuvan mukaisesti.

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

8. Ota monisanainen tila käyttöön -v-vaihtoehdolla.

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

9. Voit käyttää muita tiedostojen pakkaus- tai purkumuotoja, kuten gzip, xz, lzma ja lz4, käyttämällä --format=FORMAT-muotoa kuvan mukaisesti.

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

10. Jos haluat asettaa zstd-prosessin prioriteetin reaaliaikaiseksi, voit käyttää vaihtoehtoa –priority=rt kuvan mukaisesti.

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

Lippu -r käskee zstd:tä toimimaan rekursiivisesti sanakirjoissa. Löydät paljon hyödyllisiä ja edistyneitä vaihtoehtoja sanakirjojen lukemiseen tai luomiseen tutustumalla zstd man -sivuun.

man zstd

Zstandardin Githubin arkisto: https://github.com/facebook/zstd

Zstandard on nopea reaaliaikainen, häviötön tietojen pakkausalgoritmi ja pakkaustyökalu, joka tarjoaa korkeat pakkaussuhteet. Kokeile sitä ja jaa ajatuksesi siitä tai esitä kysymyksiä alla olevan palautelomakkeen kautta.