zstd - Algorithm mkpakọ data ngwa ngwa nke Facebook na-eji


Zstandard (nke a makwaara dị ka zstd) bụ ebe mepere emepe efu, mmemme mkpakọ data ozugbo yana oke mkpakọ ka mma, nke Facebook mepụtara. Ọ bụ mkpakọ na-enweghị atụ nke edere na C (enwere mmejuputa ya na Java) - ya mere ọ bụ mmemme Linux.

Mgbe achọrọ ya, ọ nwere ike ịzụ ahịa ngwa ngwa mkpakọ maka oke mkpakọ siri ike (ịzụ ahịa mkpakọ ọsọ vs mkpakọ ratio nwere ike ịhazi site na obere mmụba), ọzọ. Ọ nwere ọnọdụ pụrụ iche maka obere mkpakọ data, nke a maara dị ka mkpakọ akwụkwọ ọkọwa okwu, ma nwee ike wulite ọkọwa okwu site na ihe nlele ọ bụla enyere. Ọ na-abịa na ngwa ahịrị iwu maka ịmepụta na decoding faịlụ .zst, .gz, .xz na .lz4.

N'ụzọ dị mkpa, Zstandard nwere nnukwu nchịkọta API, na-akwado ihe fọrọ nke nta ka ọ bụrụ asụsụ mmemme niile a ma ama gụnyere Python, Java, JavaScript, Nodejs, Perl, Ruby, C #, Go, Rust, PHP, Switft, na ọtụtụ ndị ọzọ.

Ọ na-arụsi ọrụ ike iji mpikota onu buru ibu nke data na otutu formats na-eji okwu na Facebook; ọrụ dị ka Amazon Redshift nchekwa data; ọdụ data dị ka Hadoop na Redis; netwọk Tor na ọtụtụ ngwa ndị ọzọ gụnyere egwuregwu.

A na-enweta nsonaazụ ndị a site n'ime ọtụtụ ule mkpakọ ngwa ngwa algọridim na sava na-agba Linux Debian site na iji lzbench, ngwa njiri mara ebe nchekwa mepere emepe.

Otu esi etinye ngwa mkpakọ Zstandard na Linux

Iji wụnye Zstandard na nkesa Linux, ịkwesịrị ịchịkọta ya site na isi mmalite, mana tupu nke ahụ, ịkwesịrị ịwụnye ngwa mmepe dị mkpa na sistemụ gị site na iji njikwa ngwugwu nkesa gị dị ka egosiri.

$ 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+

Ozugbo arụnyere ngwa mmepe niile achọrọ, ugbu a ị nwere ike budata ngwugwu isi mmalite, banye na ndekọ ndekọ mpaghara, wuo ọnụọgụ abụọ wee wụnye ya dịka egosiri.

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

Ozugbo arụnyere Zstandard, ugbu a, anyị nwere ike ịga n'ihu ịmụta ụfọdụ isi ojiji nke ihe atụ iwu Zstd na ngalaba na-esote.

Mụta ihe atụ iji iwu Zstd 10 na Linux

Usoro ahịrị ahịrị Zstd na-adịkarị ka nke gzip na ngwaọrụ xz, yana ọdịiche ole na ole.

1. Iji mepụta faịlụ mkpakọ .zst, naanị nye aha faịlụ ka ịpịkọta ya ma ọ bụ jiri ọkọlọtọ -z pụtakwara mkpakọ, nke bụ ihe ndabara.

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

2. Iji mebie faịlụ mkpakọ .zst, jiri ọkọlọtọ -d ma ọ bụ ngwa unzstd dị ka egosiri.

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

3. Iji wepu faịlụ isi mgbe arụchara ọrụ, site na ndabara, anaghị ehichapụ faịlụ isi mmalite mgbe mkpakọ ma ọ bụ decompression na-aga nke ọma, ka ihichapụ ya, jiri nhọrọ --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. Iji tọọ ọkwa mkpakọ, zstd nwere ọtụtụ ndị na-agbanwe ọrụ, dịka ọmụmaatụ ị nwere ike ịkọwa ọkwa mkpakọ dị ka -6(nọmba 1-19, ndabara bụ 3) dị ka egosiri.

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

5. Iji tọọ ọsọ mkpakọ, zstd nwere oke ọsọ mkpakọ 1-10, ọsọ mkpakọ ndabara bụ 1. Ị nwere ike ịzụ ahịa mkpakọ maka ọsọ mkpakọ na nhọrọ - ngwa ngwa, nke dị elu. gụọ ọsọ ọsọ ọsọ mkpakọ.

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

6. Iji gosipụta ozi gbasara faịlụ abịakọrọ, jiri ọkọlọtọ -l, nke a na-eji gosipụta ozi gbasara faịlụ abịakọrọ, dịka ọmụmaatụ.

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

7. Iji nwalee iguzosi ike n'ezi ihe nke faịlụ abịakọrọ, jiri ọkọlọtọ -t dị ka egosiri.

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

8. Iji mee ka ọnọdụ verbose rụọ ọrụ, jiri nhọrọ -v.

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

9. Iji ụdị mkpakọ faịlụ ndị ọzọ ma ọ bụ decompression dị ka gzip, xz, lzma, na lz4, na-eji --format=FORMAT dị ka egosiri.

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

10. Iji tọọ usoro zstd mkpa ka ọ bụrụ ezigbo oge, ị nwere ike iji nhọrọ -priority=rt dị ka egosiri.

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

Ọkọlọtọ -r na-agwa zstd ka ọ rụọ ọrụ ugboro ugboro na akwụkwọ ọkọwa okwu. Ị nwere ike ịchọta ọtụtụ nhọrọ bara uru na nke dị elu, otu esi agụ ma ọ bụ mepụta akwụkwọ ọkọwa okwu site na ịgakwuru zstd man page.

$ man zstd

Ebe nchekwa Zstandard Github: https://github.com/facebook/zstd

Zstandard bụ ngwa ngwa ngwa ngwa, nke na-enweghị mkpakọ data algorithm na ngwa mkpakọ nke na-enye oke mkpakọ. Gbalịa ya wee kesaa echiche gị gbasara ya ma ọ bụ jụọ ajụjụ site na mpempe nzaghachi n'okpuru.