zstd - Facebook ഉപയോഗിക്കുന്ന ഒരു ഫാസ്റ്റ് ഡാറ്റ കംപ്രഷൻ അൽഗോരിതം


Zstandard (zstd എന്നും അറിയപ്പെടുന്നു) ഒരു സ്വതന്ത്ര ഓപ്പൺ സോഴ്uസ് ആണ്, മികച്ച കംപ്രഷൻ അനുപാതങ്ങളുള്ള, Facebook വികസിപ്പിച്ചെടുത്ത, വേഗതയേറിയ തത്സമയ ഡാറ്റ കംപ്രഷൻ പ്രോഗ്രാമാണ്. ഇത് C-യിൽ എഴുതിയ നഷ്ടരഹിതമായ കംപ്രഷൻ അൽഗോരിതം ആണ് (ജാവയിൽ വീണ്ടും നടപ്പിലാക്കൽ ഉണ്ട്) - അതിനാൽ ഇത് ഒരു നേറ്റീവ് ലിനക്സ് പ്രോഗ്രാം ആണ്.

ആവശ്യമുള്ളപ്പോൾ, ശക്തമായ കംപ്രഷൻ അനുപാതങ്ങൾക്കായി ഇതിന് കംപ്രഷൻ വേഗത ട്രേഡ് ചെയ്യാൻ കഴിയും (കംപ്രഷൻ സ്പീഡ് vs കംപ്രഷൻ റേഷ്യോ ട്രേഡ്-ഓഫ് ചെറിയ ഇൻക്രിമെന്റുകൾ ഉപയോഗിച്ച് കോൺഫിഗർ ചെയ്യാം), തിരിച്ചും. നിഘണ്ടു കംപ്രഷൻ എന്നറിയപ്പെടുന്ന ചെറിയ ഡാറ്റ കംപ്രഷനായി ഇതിന് ഒരു പ്രത്യേക മോഡ് ഉണ്ട്, കൂടാതെ നൽകിയിരിക്കുന്ന ഏത് സാമ്പിൾ സെറ്റിൽ നിന്നും നിഘണ്ടുക്കൾ നിർമ്മിക്കാനും കഴിയും. .zst, .gz, .xz, .lz4 ഫയലുകൾ സൃഷ്ടിക്കുന്നതിനും ഡീകോഡ് ചെയ്യുന്നതിനുമുള്ള ഒരു കമാൻഡ് ലൈൻ യൂട്ടിലിറ്റിയുമായി ഇത് വരുന്നു.

പ്രധാനമായി, Zstandard-ന് API-കളുടെ സമ്പന്നമായ ഒരു ശേഖരം ഉണ്ട്, Python, Java, JavaScript, Nodejs, Perl, Ruby, C#, Go, Rust, PHP, Switft എന്നിവയും അതിലേറെയും ഉൾപ്പെടെ എല്ലാ ജനപ്രിയ പ്രോഗ്രാമിംഗ് ഭാഷകളും പിന്തുണയ്ക്കുന്നു.

ഒന്നിലധികം ഫോർമാറ്റുകളിൽ വലിയ അളവിലുള്ള ഡാറ്റ കംപ്രസ്സുചെയ്യാനും Facebook-ൽ കേസുകൾ ഉപയോഗിക്കാനും ഇത് സജീവമായി ഉപയോഗിക്കുന്നു; ആമസോൺ റെഡ്ഷിഫ്റ്റ് ഡാറ്റ വെയർഹൗസിംഗ് പോലുള്ള സേവനങ്ങൾ; ഹഡൂപ്പ്, റെഡിസ് തുടങ്ങിയ ഡാറ്റാബേസുകൾ; ടോർ നെറ്റ്uവർക്കും ഗെയിമുകൾ ഉൾപ്പെടെയുള്ള മറ്റ് നിരവധി ആപ്ലിക്കേഷനുകളും.

ഒരു ഓപ്പൺ സോഴ്uസ് ഇൻ-മെമ്മറി ബെഞ്ച്മാർക്ക് ടൂളായ lzbench ഉപയോഗിച്ച് Linux Debian പ്രവർത്തിക്കുന്ന സെർവറിൽ നിരവധി ഫാസ്റ്റ് കംപ്രഷൻ അൽഗോരിതം ടെസ്റ്റുകൾ നടത്തുന്നതിലൂടെ ഇനിപ്പറയുന്ന ഫലങ്ങൾ ലഭിക്കും.

ലിനക്സിൽ Zstandard കംപ്രഷൻ ടൂൾ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം

ഒരു ലിനക്സ് വിതരണത്തിൽ Zstandard ഇൻസ്റ്റാൾ ചെയ്യുന്നതിന്, നിങ്ങൾ അത് ഉറവിടങ്ങളിൽ നിന്ന് കംപൈൽ ചെയ്യേണ്ടതുണ്ട്, എന്നാൽ അതിന് മുമ്പ് കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങളുടെ വിതരണ പാക്കേജ് മാനേജർ ഉപയോഗിച്ച് നിങ്ങളുടെ സിസ്റ്റത്തിൽ ആവശ്യമായ വികസന ഉപകരണങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യേണ്ടതുണ്ട്.

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

ആവശ്യമായ എല്ലാ ഡെവലപ്uമെന്റ് ടൂളുകളും ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, ഇപ്പോൾ നിങ്ങൾക്ക് സോഴ്uസ് പാക്കേജ് ഡൗൺലോഡ് ചെയ്യാനും ലോക്കൽ റിപ്പോ ഡയറക്uടറിയിലേക്ക് നീങ്ങാനും ബൈനറി നിർമ്മിക്കാനും കാണിച്ചിരിക്കുന്നതുപോലെ ഇൻസ്റ്റാൾ ചെയ്യാനും കഴിയും.

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

Zstandard ഇൻസ്റ്റാൾ ചെയ്തുകഴിഞ്ഞാൽ, ഇപ്പോൾ താഴെ പറയുന്ന വിഭാഗത്തിൽ Zstd കമാൻഡ് ഉദാഹരണങ്ങളുടെ ചില അടിസ്ഥാന ഉപയോഗം പഠിക്കാൻ നമുക്ക് മുന്നോട്ട് പോകാം.

Linux-ൽ 10 Zstd കമാൻഡ് ഉപയോഗ ഉദാഹരണങ്ങൾ പഠിക്കുക

Zstd-ന്റെ കമാൻഡ് ലൈൻ വാക്യഘടന പൊതുവെ ചില വ്യത്യാസങ്ങളോടെ gzip, xz ടൂളുകളുടേതിന് സമാനമാണ്.

1. ഒരു .zst കംപ്രഷൻ ഫയൽ സൃഷ്uടിക്കുന്നതിന്, അത് കംപ്രസ്സുചെയ്യുന്നതിന് ഒരു ഫയലിന്റെ പേര് നൽകുക അല്ലെങ്കിൽ -z ഫ്ലാഗ് ഉപയോഗിക്കുക എന്നത് കംപ്രസ് എന്നാണ് അർത്ഥമാക്കുന്നത്, ഇത് സ്ഥിരസ്ഥിതി പ്രവർത്തനമാണ്.

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

2. ഒരു .zst കംപ്രഷൻ ഫയൽ ഡീകംപ്രസ്സ് ചെയ്യാൻ, -d ഫ്ലാഗ് അല്ലെങ്കിൽ കാണിച്ചിരിക്കുന്നതുപോലെ unzstd യൂട്ടിലിറ്റി ഉപയോഗിക്കുക.

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

3. ഒരു ഓപ്പറേഷന് ശേഷം സോഴ്സ് ഫയൽ നീക്കം ചെയ്യുന്നതിനായി, സ്ഥിരസ്ഥിതിയായി, വിജയകരമായ കംപ്രഷൻ അല്ലെങ്കിൽ ഡീകംപ്രഷൻ ശേഷം സോഴ്സ് ഫയൽ ഇല്ലാതാക്കില്ല, അത് ഇല്ലാതാക്കാൻ, --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. ഒരു കംപ്രഷൻ ലെവൽ സജ്ജീകരിക്കുന്നതിന്, zstd-ന് നിരവധി ഓപ്പറേഷൻ മോഡിഫയറുകൾ ഉണ്ട്, ഉദാഹരണത്തിന്, കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങൾക്ക് ഒരു കംപ്രഷൻ ലെവൽ -6(ഒരു നമ്പർ 1-19, ഡിഫോൾട്ട് 3) ആയി വ്യക്തമാക്കാം.

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

5. ഒരു കംപ്രഷൻ സ്പീഡ് സജ്ജീകരിക്കുന്നതിന്, zstd ന് ഒരു കംപ്രഷൻ വേഗത അനുപാതം 1-10 ഉണ്ട്, ഡിഫോൾട്ട് കംപ്രഷൻ വേഗത 1 ആണ്. നിങ്ങൾക്ക് --fast ഓപ്ഷൻ ഉപയോഗിച്ച് കംപ്രഷൻ അനുപാതം ട്രേഡ് ചെയ്യാം. കംപ്രഷൻ വേഗതയുടെ വേഗത.

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

6. ഒരു കംപ്രസ് ചെയ്ത ഫയലിനെ കുറിച്ചുള്ള വിവരങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിന്, -l ഫ്ലാഗ് ഉപയോഗിക്കുക, ഉദാഹരണത്തിന് ഒരു കംപ്രസ് ചെയ്ത ഫയലിനെ കുറിച്ചുള്ള വിവരങ്ങൾ പ്രദർശിപ്പിക്കാൻ ഇത് ഉപയോഗിക്കുന്നു.

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

7. കംപ്രസ് ചെയ്ത ഫയലുകളുടെ സമഗ്രത പരിശോധിക്കുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ -t ഫ്ലാഗ് ഉപയോഗിക്കുക.

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

8. വെർബോസ് മോഡ് പ്രവർത്തനക്ഷമമാക്കാൻ, -v ഓപ്ഷൻ ഉപയോഗിക്കുക.

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

9. കാണിച്ചിരിക്കുന്നതുപോലെ --format=FORMAT ഉപയോഗിച്ച് gzip, xz, lzma, lz4 പോലുള്ള മറ്റ് ഫയൽ കംപ്രഷൻ അല്ലെങ്കിൽ ഡീകംപ്രഷൻ ഫോർമാറ്റുകൾ ഉപയോഗിക്കുന്നതിന്.

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

10. ഒരു zstd പ്രോസസ്സ് മുൻഗണന തൽസമയമായി സജ്ജീകരിക്കുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ നിങ്ങൾക്ക് –priority=rt ഓപ്ഷൻ ഉപയോഗിക്കാം.

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

-r ഫ്ലാഗ് നിഘണ്ടുക്കളിൽ ആവർത്തിച്ച് പ്രവർത്തിക്കാൻ zstd-നോട് നിർദ്ദേശിക്കുന്നു. zstd മാൻ പേജ് പരിശോധിച്ച് നിഘണ്ടുക്കൾ എങ്ങനെ വായിക്കാം അല്ലെങ്കിൽ സൃഷ്ടിക്കാം, നിങ്ങൾക്ക് ഉപയോഗപ്രദവും വിപുലമായതുമായ ധാരാളം ഓപ്ഷനുകൾ കണ്ടെത്താനാകും.

$ man zstd

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

ഉയർന്ന കംപ്രഷൻ അനുപാതങ്ങൾ പ്രദാനം ചെയ്യുന്ന വേഗതയേറിയ തത്സമയ, നഷ്ടമില്ലാത്ത ഡാറ്റ കംപ്രഷൻ അൽഗോരിതം, കംപ്രഷൻ ടൂൾ എന്നിവയാണ് Zstandard. ഇത് പരീക്ഷിച്ചുനോക്കൂ, അതിനെക്കുറിച്ച് നിങ്ങളുടെ ചിന്തകൾ പങ്കിടുക അല്ലെങ്കിൽ ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം വഴി ചോദ്യങ്ങൾ ചോദിക്കുക.