Zstandard - Zstandard

Zstandard
Zstandard logo.png
Originale forfatter (er) Yann Collet
Udvikler (er) Yann Collet, Nick Terrell, Przemysław Skibiński
Første udgivelse 23. januar 2015 ( 2015-01-23 )
Stabil udgivelse
1.5.0 / 14. maj 2021 ; for 5 måneder siden ( 2021-05-14 )
Depot
Skrevet i C
Operativ system På tværs af platforme
Platform Transportabel
Type Datakomprimering
Licens Dobbelt: BSD -licens , GPLv2
Internet side facebook .github .io /zstd / Rediger dette på Wikidata

Zstandard (eller zstd ) er en tabsfri datakomprimeringsalgoritme udviklet af Yann Collet på Facebook . ZStd er henvisningen implementering i C . Version 1 af denne implementering blev udgivet som open source-software den 31. august 2016.

Funktioner

ZStandard designet til at give en kompressionsforhold sammenlignes med den Deflate algoritme (udviklet i 1991 og anvendt i de oprindelige ZIP og GZIP -programmer), men hurtigere, især for dekompression. Det kan indstilles med kompressionsniveauer fra negativ 7 (hurtigste) til 22 (langsomst i kompressionshastighed, men bedste komprimeringsforhold).

Zstd-pakken indeholder parallelle (multi-threaded) implementeringer af både komprimering og dekomprimering. Fra version 1.3.2 (oktober 2017) implementerer zstd eventuelt meget lang rækkevidde søgning og deduplikering ( --long, 128 MiB vindue) svarende til rzip eller lrzip .

Kompressionshastighed kan variere med en faktor 20 eller mere mellem de hurtigste og langsommeste niveauer, mens dekomprimering er ensartet hurtig og varierer med mindre end 20% mellem de hurtigste og langsomste niveauer. Zstandard-kommandolinjen har en "adaptiv" ( --adapt) -tilstand, der varierer komprimeringsniveauet afhængigt af I/O-forhold, hovedsageligt hvor hurtigt det kan skrive output.

Zstd ved sit maksimale komprimeringsniveau giver et komprimeringsforhold tæt på lzma , lzham og ppmx og fungerer bedre end lza eller bzip2 . Zstandard når den nuværende Pareto-grænse , da den dekomprimeres hurtigere end nogen anden aktuelt tilgængelig algoritme med lignende eller bedre komprimeringsforhold.

Ordbøger kan have stor indflydelse på komprimeringsforholdet mellem små filer, så Zstandard kan bruge en brugerleveret komprimeringsordbog. Det tilbyder også en træningstilstand, der er i stand til at generere en ordbog ud fra et sæt prøver. Især kan en ordbog indlæses for at behandle store sæt filer med redundans mellem filer, men ikke nødvendigvis inden for hver fil, f.eks. Logfiler .

Design

Zstandard kombinerer en ordbogsmatchende fase ( LZ77 ) med et stort søgevindue og en hurtig entropikodningsfase ved hjælp af både Finite State Entropy (en hurtig tabelversion af ANS, tANS , der bruges til poster i sekvensafsnittet) og Huffman-kodning ( bruges til poster i afsnittet Litteratur).

På grund af den måde, hvorpå FSE overfører tilstand mellem symboler, indebærer dekomprimering behandling af symboler i sekvensdelen af ​​hver blok i omvendt rækkefølge (fra sidste til første).

Anvendelse

Zstandard
Filnavn udvidelse
.zst
Internetmedietype
ansøgning/zstd
Magisk nummer 28 b5 2f fd
Type format Datakomprimering
Standard RFC  8478
Internet side https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md
Zstandard ordbog
Internetmedietype applikation/standard
Magisk nummer 37 a4 30 ec
Standard RFC  8478
Internet side https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format

Den Linux-kernen har medtaget ZStandard siden november 2017 (version 4.14) som en komprimeringsmetode for btrfs og squashfs filsystemer.

I 2017 integrerede Allan Jude Zstandard i FreeBSD -kernen, og den blev efterfølgende integreret som en kompressormulighed for kernedumpe (både brugerprogrammer og kernepanik). Det blev også brugt til at oprette et proof of concept OpenZFS -komprimeringsmetode , som blev integreret i 2020.

De AWS Redshift og RocksDB databaser omfatter støtte til felt kompression under anvendelse ZStandard.

I marts 2018 testede Canonical brug af zstd som en komprimeringsmetode til deb -pakker som standard til Ubuntu Linux -distributionen. Sammenlignet med xz -komprimering af deb -pakker dekomprimeres zstd på niveau 19 betydeligt hurtigere, men til en pris af 6% større pakkefiler. Debian -udvikleren Ian Jackson foretrak at vente flere år før officiel adoption.

I 2018 blev den algoritme offentliggjort som RFC  8478 , som også afgrænser en associeret medietype "application / ZStd", filnavneendelse "zst", og HTTP indholdskodning "ZStd".

Arch Linux tilføjede understøttelse af zstd som en pakkekomprimeringsmetode i oktober 2019 med frigivelsen af ​​pakmanageren pacman 5.2, og skiftede i januar 2020 fra xz til zstd for pakkerne i det officielle lager. Arch -anvendelser zstd -c -T0 --ultra -20 -, størrelsen på alle komprimerede pakker kombineret steg med 0,8% (sammenlignet med xz), dekomprimeringshastigheden er 14 gange hurtigere, dekomprimeringshukommelsen øges med 50 MiB ved brug af flere tråde, kompressionshukommelsen stiger, men skaleres med antallet af tråde, der bruges .

Fedora tilføjede ZStandard -understøttelse til RPM i maj 2018 (Fedora release 28) og brugte den til emballering af udgivelsen i oktober 2019 (Fedora 31)

Fuld implementering af algoritmen med mulighed for at vælge komprimeringsniveau bruges i .NSZ / .XCZ filformaterne, udviklet af homebrew -fællesskabet til Nintendo Switch hybrid spilkonsol.

7-Zip ZS, en port til 7-Zip FM med Zstandard (og andre formater) support, er udviklet af Tino Reichardt.

Modern7z, et Zstandard (og andre formater) plugin til 7-Zip FM er udviklet af Denis Anisimov (TC4shell).

7-zip-zstd, en gaffel med 7-lynlås med understøttelse af Zstandard.

Licens

Referenceimplementeringen er licenseret under BSD -licensen , offentliggjort på GitHub . Siden version 1.0 havde den en yderligere bevilling af patentrettigheder.

Fra version 1.3.1 blev denne patentbevilling droppet, og licensen blev ændret til en BSD + GPLv2 -dobbeltlicens.

Se også

Referencer

eksterne links