zstd

From alpha
Jump to navigation Jump to search

Zstd
मूल लेखकYann Collet
डेवलपर(ओं)Yann Collet, Nick Terrell, Przemysław Skibiński[1]
आरंभिक रिलीज23 January 2015 (2015-01-23)
Stable release
1.5.5 / 4 April 2023; 14 months ago (2023-04-04)[2]
इसमें लिखा हुआC
ऑपरेटिंग सिस्टमCross-platform
प्लेटफॉर्मPortable
प्रकारData compression
लाइसेंसDual: BSD License, GPLv2

Zstandard, जिसे आमतौर पर इसके संदर्भ कार्यान्वयन zstd के नाम से जाना जाता है, फेसबुक पर यान कोलेट द्वारा विकसित एक दोषरहित संपीड़न डेटा संपीड़न एल्गोरिथ्म है। Zstd C (प्रोग्रामिंग भाषा) में संदर्भ कार्यान्वयन है। इस कार्यान्वयन का संस्करण 1 31 अगस्त 2016 को खुला स्रोत सॉफ्टवेयर के रूप में जारी किया गया था।[3][4]


सुविधाएँ

Zstandard को DEFLATE एल्गोरिथ्म (1991 में विकसित और मूल ज़िप (फ़ाइल प्रारूप) और gzip प्रोग्राम में उपयोग किया गया) के बराबर डेटा संपीड़न अनुपात देने के लिए डिज़ाइन किया गया था, लेकिन तेज़, विशेष रूप से डीकंप्रेसन के लिए। इसे नकारात्मक 7 (सबसे तेज़) से लेकर संपीड़न स्तर के साथ ट्यून किया जा सकता है।[5] से 22 (संपीड़न गति में सबसे धीमी, लेकिन सर्वोत्तम संपीड़न अनुपात)।

संस्करण 1.3.2 (अक्टूबर 2017) से शुरू होकर, zstd वैकल्पिक रूप से बहुत लंबी दूरी की खोज और डिडुप्लीकेशन लागू करता है (--long, 128 MiB विंडो) rzip या lrzip के समान।[6] सबसे तेज़ और सबसे धीमे स्तरों के बीच संपीड़न की गति 20 या उससे अधिक के कारक से भिन्न हो सकती है, जबकि डीकंप्रेसन समान रूप से तेज़ होता है, सबसे तेज़ और सबसे धीमे स्तरों के बीच 20% से कम का अंतर होता है।[7] Zstandard कमांड-लाइन में एक अनुकूली है (--adapt) मोड जो I/O स्थितियों के आधार पर संपीड़न स्तर को बदलता है, मुख्य रूप से यह कितनी तेजी से आउटपुट लिख सकता है।

Zstd अपने अधिकतम संपीड़न स्तर पर लेम्पेल-ज़िव-मार्कोव श्रृंखला एल्गोरिथ्म के करीब एक संपीड़न अनुपात देता है, LZHAM, और आंशिक मिलान#PPMX द्वारा भविष्यवाणी, और performs better[vague] than lza, or bzip2.[improper synthesis?][8][9] Zstandard वर्तमान पेरेटो दक्षता तक पहुंचता है, क्योंकि यह समान या बेहतर संपीड़न अनुपात के साथ वर्तमान में उपलब्ध किसी भी अन्य एल्गोरिदम की तुलना में तेजी से डीकंप्रेस करता है।[10][11] शब्दकोश छोटी फ़ाइलों के संपीड़न अनुपात पर बड़ा प्रभाव डाल सकते हैं, इसलिए Zstandard उपयोगकर्ता द्वारा प्रदत्त संपीड़न शब्दकोश का उपयोग कर सकता है। यह एक प्रशिक्षण मोड भी प्रदान करता है, जो नमूनों के एक सेट से एक शब्दकोश उत्पन्न करने में सक्षम है।[12][13] विशेष रूप से, फ़ाइलों के बीच अतिरेक के साथ फ़ाइलों के बड़े सेट को संसाधित करने के लिए एक शब्दकोश लोड किया जा सकता है, लेकिन जरूरी नहीं कि प्रत्येक फ़ाइल के भीतर, उदाहरण के लिए, लॉग फ़ाइलें।

डिज़ाइन

Zstandard एक शब्दकोश-मिलान चरण (LZ77) को एक बड़ी खोज विंडो और एक तेज़ एन्ट्रापी एन्कोडिंग | एन्ट्रॉपी-कोडिंग चरण के साथ जोड़ता है। यह हफ़मैन कोडिंग दोनों का उपयोग करता है (लिटरल अनुभाग में प्रविष्टियों के लिए उपयोग किया जाता है)[14] और परिमित-अवस्था एन्ट्रॉपी (एफएसई) - एएनएस का एक तेज़ सारणीबद्ध संस्करण, असममित अंक प्रणाली#सारणीबद्ध संस्करण (टीएएनएस), जिसका उपयोग अनुक्रम अनुभाग में प्रविष्टियों के लिए किया जाता है। जिस तरह से एफएसई प्रतीकों के बीच स्थिति को नियंत्रित करता है, डीकंप्रेसन में प्रत्येक ब्लॉक के अनुक्रम अनुभाग के भीतर विपरीत क्रम में (अंतिम से पहले तक) प्रतीकों को संसाधित करना शामिल होता है।

उपयोग

Zstandard
Filename extension
.zst[15]
Internet media type
application/zstd[15]
Magic number28 b5 2f fd[15]
Type of formatData compression
StandardRFC 8878
Websitegithub.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md
Zstandard Dictionary
Magic number37 a4 30 ec[15]
StandardRFC 8878
Websitegithub.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format

लिनक्स कर्नेल ने नवंबर 2017 (संस्करण 4.14) से btrfs और squashfs फ़ाइल सिस्टम के लिए एक संपीड़न विधि के रूप में Zstandard को शामिल किया है।[16][17][18] 2017 में, एलन जूड ने Zstandard को FreeBSD कर्नेल में एकीकृत किया,[19] और बाद में इसे कोर डंप (उपयोगकर्ता प्रोग्राम और कर्नेल पैनिक दोनों) के लिए एक कंप्रेसर विकल्प के रूप में एकीकृत किया गया। इसका उपयोग प्रूफ़-ऑफ़-कॉन्सेप्ट OpenZFS संपीड़न विधि बनाने के लिए भी किया गया था[7]जिसे 2020 में एकीकृत किया गया था।[20] AWS Redshift और RocksDB डेटाबेस में Zstandard का उपयोग करके फ़ील्ड संपीड़न के लिए समर्थन शामिल है।[21] मार्च 2018 में Canonical (कंपनी) ने परीक्षण किया[22] उबंटू (ऑपरेटिंग सिस्टम) लिनक्स वितरण के लिए डिफ़ॉल्ट रूप से डिबेट (फ़ाइल प्रारूप) संपीड़न विधि के रूप में zstd का उपयोग। डिबेट पैकेजों के XZ यूटिल्स संपीड़न की तुलना में, स्तर 19 पर zstd काफी तेजी से डीकंप्रेस होता है, लेकिन 6% बड़े पैकेज फ़ाइलों की कीमत पर। अप्रैल 2018 में डेबियन (और बाद में, उबंटू) में समर्थन जोड़ा गया (संस्करण 1.6~rc1 में)।[23][22][24] 2018 में एल्गोरिदम को इस रूप में प्रकाशित किया गया था RFC 8478, जो संबंधित मीडिया प्रकार एप्लिकेशन/zstd, फ़ाइल नाम एक्सटेंशन zst, और HTTP संपीड़न zstd को भी परिभाषित करता है।[25] आर्क लिनक्स ने अक्टूबर 2019 में पॅकमैन (सॉफ्टवेयर) 5.2 पैकेज मैनेजर की रिलीज के साथ पैकेज संपीड़न विधि के रूप में zstd के लिए समर्थन जोड़ा[26] और जनवरी 2020 में आधिकारिक रिपॉजिटरी में पैकेजों के लिए xz से zstd पर स्विच किया गया। आर्क का उपयोग करता है zstd -c -T0 --ultra -20 -, सभी संपीड़ित पैकेजों का आकार संयुक्त रूप से 0.8% बढ़ गया (xz की तुलना में), डीकंप्रेसन गति 14 है कई गुना तेज, कई थ्रेड्स का उपयोग करने पर डीकंप्रेसन मेमोरी 50 MiB तक बढ़ जाती है, कंप्रेशन मेमोरी बढ़ जाती है लेकिन उपयोग किए गए थ्रेड्स की संख्या के साथ बढ़ती है।[27][28][29] आर्क लिनक्स ने बाद में mkinitcpio प्रारंभिक रैमडिस्क जनरेटर के लिए डिफ़ॉल्ट संपीड़न एल्गोरिदम के रूप में zstd पर भी स्विच किया।[30] फेडोरा (ऑपरेटिंग सिस्टम) ने मई 2018 (फेडोरा रिलीज 28) में आरपीएम पैकेज मैनेजर में ZStandard समर्थन जोड़ा और अक्टूबर 2019 (फेडोरा 31) में रिलीज की पैकेजिंग के लिए इसका इस्तेमाल किया।[31] फेडोरा 33 में, फ़ाइल सिस्टम डिफ़ॉल्ट रूप से zstd के साथ संपीड़ित होता है।[32][33] संपीड़न स्तर चुनने के विकल्प के साथ एल्गोरिदम का पूर्ण कार्यान्वयन .NSZ/.XCZ में उपयोग किया जाता है[34] Nintendo स्विच हाइब्रिड गेम कंसोल के लिए होमब्रू (वीडियो गेम) समुदाय द्वारा विकसित फ़ाइल प्रारूप।[35] इसी तरह, यह .RVZ Nintendo Wii और Nintendo GameCube Disk_image फ़ाइल स्वरूप में कई समर्थित संपीड़न एल्गोरिदम में से एक है।

15 जून 2020 को, Zstandard को ज़िप फ़ाइल प्रारूप के संस्करण 6.3.8 में कोडेक संख्या 93 के साथ लागू किया गया था, जो पिछले कोडेक संख्या 20 को हटा देता है क्योंकि इसे 1 जून को जारी संस्करण 6.3.7 में लागू किया गया था।[36][37]


लाइसेंस

संदर्भ कार्यान्वयन को GitHub पर प्रकाशित BSD लाइसेंस के तहत लाइसेंस प्राप्त है।[38] संस्करण 1.0 के बाद से, इसमें पेटेंट अधिकारों का अतिरिक्त अनुदान था।[39] संस्करण 1.3.1 से,[40] इस पेटेंट अनुदान को हटा दिया गया और लाइसेंस को BSD + GPLv2 दोहरे लाइसेंस में बदल दिया गया।[41]


यह भी देखें

संदर्भ

  1. "Contributors to facebook/zstd". github.com. Archived from the original on 27 January 2021. Retrieved 26 January 2021.
  2. "Releases - facebook/zstd". Retrieved 4 April 2023 – via GitHub.
  3. Sergio De Simone (2 September 2016). "Facebook Open-Sources New Compression Algorithm Outperforming Zlib". InfoQ. Retrieved 20 April 2019.
  4. "Life imitates satire: Facebook touts zlib killer just like Silicon Valley's Pied Piper". The Register. 31 August 2016. Retrieved 6 September 2016.
  5. https://github.com/facebook/zstd/releases/tag/v1.3.4 Faster compression levels.
  6. "Zstandard लाइब्रेरी के लिए कमांड लाइन इंटरफ़ेस". GitHub. 28 October 2021.
  7. 7.0 7.1 "ZStandard in ZFS" (PDF). open-zfs.org. 2017. Retrieved 20 April 2019.
  8. Matt Mahoney. "Silesia Open Source Compression Benchmark". Retrieved 10 May 2019.
  9. Matt Mahoney (29 August 2016). "Large Text Compression Benchmark, .2157 zstd". Retrieved 1 September 2016.
  10. TurboBench: Static/Dynamic web content compression benchmark, PowTurbo
  11. Matt Mahoney, Silesia Open Source Compression Benchmark
  12. "Facebook developers report massive speedups and compression ratio improvements when using dictionaries" (PDF).
  13. "Smaller and faster data compression with Zstandard". Facebook. 31 August 2016.
  14. "facebook/zstd". GitHub. 28 October 2021.
  15. 15.0 15.1 15.2 15.3 Collet, Yann (February 2021). Kucherawy, Murray S. (ed.). Zstandard Compression and the application/zstd Media Type. Internet Engineering Task Force Request for Comments. doi:10.17487/RFC8878. RFC 8878. Retrieved 26 February 2023.
  16. "The rest of the 4.14 merge window [LWN.net]". lwn.net.
  17. "Linux_4.14 - Linux Kernel Newbies". Kernelnewbies.org. Retrieved 16 August 2018.
  18. "Zstd Compression For Btrfs & Squashfs Set For Linux 4.14, Already Used Within Facebook - Phoronix". www.phoronix.com.
  19. "Integrate ZSTD into the kernel · freebsd/Freebsd-SRC@28ef165". GitHub.
  20. "Add ZSTD support to ZFS · openzfs/ZFS@10b3c7f". GitHub.
  21. "Zstandard Encoding - Amazon Redshift". 20 April 2019.
  22. 22.0 22.1 Larabel, Michael (12 March 2018). "उबंटू के लिए Zstd-संपीड़ित डेबियन पैकेज पर कैनोनिकल कार्य करना". phoronix.com. Phoronix Media. Retrieved 29 October 2019. The developers at Canonical are considering a feature freeze exception to get this newly-developed Zstd Apt/Dpkg support in Ubuntu 18.04 LTS. In doing so, they mention they would be looking at enabling Zstd compression for packages by default in Ubuntu 18.10.
  23. "New Ubuntu Installs Could Be Speed Up by 10% with the Zstd Compression Algorithm". Softpedia. 12 March 2018. Retrieved 13 August 2018.
  24. "Debian Changelog for apt". Debian. 19 April 2021. Retrieved 7 November 2022.
  25. Collet, Yann (October 2018). Kucherawy, Murray S. (ed.). Zstandard Compression and the application/zstd Media Type. Internet Engineering Task Force Request for Comments. doi:10.17487/RFC8478. RFC 8478. Retrieved 7 October 2020.
  26. "तेज़ पॅकमैन इंस्टालेशन के लिए आर्क लिनक्स ZSTD कंप्रेस्ड पैकेज के रोल-आउट के करीब है". Phoronix.
  27. Broda, Mara (4 January 2020). "Now using Zstandard instead of xz for package compression". Arch Linux. Retrieved 5 January 2020.
  28. Broda, Mara (25 March 2019). "RFC: (devtools) Changing default compression method to zstd". arch-dev-public (Mailing list).
  29. Broda, Mara; Polyak, Levente (27 December 2019). "makepkg.conf: change default compression method to zstd". GitHub.
  30. Razzolini, Giancarlo (19 February 2021). "News: Moving to Zstandard images by default on mkinitcpio". Arch Linux. Retrieved 28 December 2021.{{cite web}}: CS1 maint: url-status (link)
  31. "Changes/Switch RPMS to ZSTD compression". Fedora Project Wiki.
  32. "Fedora Workstation 34 feature focus: Btrfs transparent compression". Fedora Magazine. 14 April 2021. Retrieved 12 May 2022.
  33. "Changes/BtrfsTransparentCompression". Fedora Project Wiki. Retrieved 12 May 2022.
  34. "RELEASE - nsZip - NSP compressor/decompressor to reduce storage". GBAtemp.net - The Independent Video Game Community. 20 October 2019. Retrieved 3 November 2019.
  35. Bosshard, Nico (31 October 2019), nsZip is a tool to compress/decompress Nintendo Switch games using the here specified NSZ file format: nicoboss/nsZip, retrieved 3 November 2019
  36. APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.8, 15 June 2020, retrieved 7 July 2020
  37. APPNOTE.TXT - .ZIP File Format Specification Version: 6.3.7, 1 June 2020, retrieved 6 June 2020
  38. "फेसबुक ओपन सोर्स Zstandard डेटा कम्प्रेशन एल्गोरिदम का उद्देश्य ज़िप के पीछे की तकनीक को बदलना है". ZDnet. 31 August 2016. Retrieved 1 September 2016.
  39. zstd/PATENTS "Additional Grant of Patent Rights Version 2", Facebook
  40. "Zstd v1.3.1 release", GitHub "facebook/zstd"
  41. "New license", GitHub "facebook/zstd"


बाहरी संबंध