zstd

Z標準
原作者ヤン・コレット
開発者ヤン・コレット、ニック・テレル、プシェミスワフ・スキビンスキ[ 1 ]
初回リリース2015年1月23日 (2015年1月23日
安定版リリース
1.5.7 [ 2 ] ウィキデータで編集する / 2025年2月20日 (2025年2月20日
リポジトリ
書かれたC
オペレーティング·システムクロスプラットフォーム
プラットフォームポータブル
タイプデータ圧縮
ライセンスBSD-3条項またはGPL-2.0以降(デュアルライセンス)
Webサイトfacebook .github .io /zstd / ウィキデータで編集する

Zstandardは、 Facebookのヤン・コレット氏によって開発されたロスレスデータ圧縮アルゴリズムです。Zstdは、 C言語で対応するリファレンス実装であり、 2016年8月31日にオープンソースソフトウェアとしてリリースされました。[ 3 ] [ 4 ]

このアルゴリズムは2018年にRFC  8478として公開され、関連するメディアタイプ「application/zstd」、ファイル名拡張子「zst」、HTTPコンテンツエンコーディング「zstd」も定義されています。[ 5 ]

特徴

Zstandardは、DEFLATEアルゴリズム(1991年に開発され、オリジナルのZIPおよびgzipプログラムで使用)と同等の圧縮率を実現しつつ、特に解凍においてより高速な圧縮率を実現するように設計されています。圧縮レベルは-7(最高速)[ 6 ]から22(圧縮速度は最遅だが、圧縮率は最高)まで調整可能です。

バージョン1.3.2(2017年10月)以降、zstdはrziplrzip--longに似た非常に長い範囲の検索と重複排除(128 MiBウィンドウ)をオプションで実装しています。[ 7 ]

圧縮速度は最速レベルと最遅レベルの間で20倍以上の差があるが、解凍速度は均一に速く、最速レベルと最遅レベルの間の差は20%未満である。[ 8 ] Zstandardコマンドラインには--adapt、I/O条件、主に出力を書き込む速度に応じて圧縮レベルを変える「適応型」()モードがある。

Zstandardは最大圧縮レベルではlzmalzhamppmxに近い圧縮率を実現します。[ 9 ] [ 10 ] 2019年現在、Zstandardは同等以上の圧縮率を持つ他のオープンソースアルゴリズムよりも高速に解凍できるため、パレート限界に到達しています。 [ 11 ]

辞書は小さなファイルの圧縮率に大きな影響を与える可能性があるため、Zstandardではユーザーが提供する圧縮辞書を使用できます。また、サンプルセットから辞書を生成できるトレーニングモードも提供しています。[ 12 ] [ 13 ]特に、ログファイルなど、ファイル間で冗長性があるが、必ずしも各ファイル内に冗長性があるわけではない大規模なファイルセットを処理するために、1つの辞書をロードすることができます。

デザイン

Zstandardは、辞書マッチング段階(LZ77)と大きな検索ウィンドウ、そして高速エントロピー符号化段階を組み合わせたものです。ハフマン符号化と有限状態エントロピー(FSE)( tANSの変種)を組み合わせています。[ 14 ]

使用法

Z標準
ファイル名拡張子
.zst [ 15 ]
インターネットメディアの種類
アプリケーション/zstd [ 15 ]
魔法の数字28 b5 2f fd[ 15 ]
フォーマットの種類データ圧縮
標準RFC  8878
Webサイトgithub .com /facebook /zstd /blob /dev /doc /zstd _compression _format .md
Z標準辞書
魔法の数字37 a4 30 ec[ 15 ]
標準RFC  8878
Webサイトgithub .com /facebook /zstd /blob /dev /doc /zstd _compression _format .md #dictionary-format
これはZRAMの圧縮方法として使用されているZstandardの例です。

Linuxカーネルには、2017年11月(バージョン4.14)以降、 btrfsおよびsquashfsファイルシステムの圧縮方式としてZstandardが組み込まれており、[ 16 ] [ 17 ] [ 18 ] 、ロード可能なカーネルモジュールにも使用されています。

2017年、アラン・ジュードはZstandardをFreeBSDカーネルに統合しました[ 19 ]。その後、Zstandardはコアダンプ(ユーザープログラムとカーネルパニックの両方)の圧縮オプションとして統合されました。また、Zstandardは概念実証版OpenZFS圧縮方式[ 8 ]の開発にも使用され、2020年に統合されました[ 20 ]。

AWS RedshiftRocksDBデータベースには、Zstandardを使用したフィールド圧縮のサポートが含まれています。[ 21 ]

2018年3月、CanonicalはUbuntu Linuxディストリビューションにおいて、 debパッケージの圧縮方式としてデフォルトでzstdを使用するテストを実施しました[ 22 ] 。debパッケージのxz圧縮と比較して、レベル19のzstdは解凍速度が大幅に向上しましたが、パッケージファイルのサイズが6%大きくなりました。このサポートは2018年4月(バージョン1.6~rc1)にDebian(そしてその後Ubuntu)にも追加されました。[ 23 ] [ 22 ] [ 24 ]

Fedoraは2018年5月(Fedoraリリース28)にRPMにZStandardのサポートを追加し、2019年10月(Fedora 31)のリリースのパッケージングに使用しました。[ 25 ] Fedora 33では、ファイルシステムはデフォルトでzstdで圧縮されます。[ 26 ] [ 27 ]

Arch Linuxは、 2019年10月にpacman  5.2パッケージマネージャーのリリースでパッケージ圧縮方式としてzstdのサポートを追加し[ 28 ]、2020年1月に公式リポジトリのパッケージをxzからzstdに切り替えました。Archはzstd -c -T0 --ultra -20 -、すべての圧縮パッケージの合計サイズが0.8%増加し(xzと比較して)、解凍速度が14倍高速になり、複数のスレッドを使用する場合に解凍メモリが50 MiB増加し、圧縮メモリが増加しましたが、使用するスレッド数に応じて拡張されます。[ 29 ] [ 30 ] [ 31 ] Arch Linuxは後に、mkinitcpio初期RAMディスクジェネレータのデフォルトの圧縮アルゴリズムとしてもzstdに切り替えました。[ 32 ]

2020年6月15日、Zstandardはzipファイル形式のバージョン6.3.8にコーデック番号93で実装され、6月1日にリリースされたバージョン6.3.7で実装されていた以前のコーデック番号20は廃止されました。[ 33 ] [ 34 ]

2023年10月31日に、Windows 11のWindowsエクスプローラーに圧縮/解凍用の公式Zstdサポートが追加されました(更新パッケージKB5031455経由)。

2024年3月、Google Chromeバージョン123(およびBraveMicrosoft EdgeなどのChromiumベースのブラウザ)は、HTTPヘッダーにzstdのサポートを追加しました。[ 35 ] 2024年5月、Firefoxリリース126.0は、 HTTPヘッダーにzstdのサポートを追加しました。[ 36 ]Content-EncodingContent-Encoding

ライセンス

リファレンス実装はBSDライセンスの下でライセンスされており、GitHubで公開されています。[ 37 ] 2016年8月31日に公開されたバージョン1.0以降、[ 38 ]特許権が追加されました。[ 39 ]

2017年8月20日にリリースされたバージョン1.3.1から、[ 40 ]この特許の付与は取り下げられ、ライセンスはBSD + GPLv2デュアルライセンスに変更されました。[ 41 ]

参照

  • LZ4(圧縮アルゴリズム) – LZ77ファミリーの高速なメンバー
  • LZFSE – iOS 9およびOS X 10.11以降で使用されているAppleの類似アルゴリズムで、2016年6月1日にオープンソース化されました。
  • ズリブ
  • Brotli – ブラウザにも統合されています
  • Gzip – 最も広く使われている圧縮ツールの1つ

参考文献

  1. ^ “Contributors to facebook/zstd” . github.com . 2021年1月27日時点のオリジナルよりアーカイブ2021年1月26日閲覧。
  2. ^ 「リリース Zstandard v1.5.7」 。 2025年2月21日閲覧
  3. ^ De Simone, Sergio (2016年9月2日). 「Facebook、Zlibを上回る新しい圧縮アルゴリズムをオープンソース化」 InfoQ. 2021年10月7日時点のオリジナルよりアーカイブ。 2019年4月20日閲覧
  4. ^ Williams, Chris (2016年8月31日). 「人生は風刺を模倣する:Facebookはシリコンバレーのパイドパイパーのようにzlibキラーを宣伝」 The Register . 2016年9月3日時点のオリジナルよりアーカイブ。 2016年9月6日閲覧
  5. ^ Collet, Yann (2018年10月). Kucherawy, Murray S. (編). Zstandard 圧縮と application/zstd メディアタイプ. Internet Engineering Task Force Request for Comments. doi : 10.17487/RFC8478 . RFC 8478 . 2020年10月7日閲覧。
  6. ^ “Release Zstandard v1.3.4 - faster everything · facebook/zstd” . GitHub . 2021年9月11日時点のオリジナルよりアーカイブ2024年3月27日閲覧。
  7. ^ 「Zstandardライブラリのコマンドラインインターフェース」 . GitHub . Facebook. 2021年10月28日.
  8. ^ a b Jude, Allan (2017). 「ZFSにおけるZStandard」(PDF) . open-zfs.org . 2019年12月18日時点のオリジナルよりアーカイブ(PDF) . 2019年4月20日閲覧
  9. ^ Mahoney, Matt. 「Silesia Open Source Compression Benchmark」 . 2022年1月21日時点のオリジナルよりアーカイブ2019年5月10日閲覧。
  10. ^ Mahoney, Matt (2016年8月29日). 「Large Text Compression Benchmark, .2157 zstd」 . 2022年3月31日時点のオリジナルよりアーカイブ2019年5月10日閲覧。
  11. ^ TurboBench: 静的/動的ウェブコンテンツ圧縮ベンチマーク、PowTurbo、2022年3月17日時点のオリジナルよりアーカイブ、 2026年1月6日閲覧。
  12. ^ Bockelman, Brian; Pivraski, Jim; Shadura, Oksana; Zhang, Zhe (2017年10月11日). 「DIANA Contributions Update」(PDF) . Fermilab . 2018年1月25日時点のオリジナルよりアーカイブ(PDF) . 2024年3月27日閲覧. Facebookの開発者、辞書使用時の大幅な速度向上と圧縮率向上を報告
  13. ^ Collet, Yann; Turner, Chip (2016年8月31日). 「Zstandardによるより小さく、より高速なデータ圧縮」 Facebook. 2016年9月27日時点のオリジナルよりアーカイブ。 2016年9月3日閲覧
  14. ^ "Zstandard 圧縮フォーマット" . GitHub。フェイスブック。 2021年10月28日。
  15. ^ a b c d Collet, Yann (2021年2月). Kucherawy, Murray S. (編). Zstandard 圧縮と application/zstd メディアタイプ. Internet Engineering Task Force Request for Comments. doi : 10.17487/RFC8878 . RFC 8878 . 2023年2月26日閲覧
  16. ^ Corbet, Jonathan (2017年9月17日). “The rest of the 4.14 merge window [LWN.net]” . lwn.net . 2021年11月22日時点のオリジナルよりアーカイブ。 2024年3月27日閲覧
  17. ^ "Linux_4.14" . Kernelnewbies.org . 2017年12月30日. 2018年1月10日時点のオリジナルよりアーカイブ。 2018年8月16日閲覧
  18. ^ Larabel, Michael (2017年9月8日). 「Linux 4.14でBtrfsとSquashfs向けのZstd圧縮がリリース、Facebookで既に使用」 www.phoronix.com . 2019年7月25日時点のオリジナルよりアーカイブ。 2017年11月13日閲覧
  19. ^ 「ZSTDをカーネルに統合する · freebsd/Freebsd-SRC@28ef165」。GitHub。FreeBSDプロジェクト
  20. ^ “ZFSにZSTDサポートを追加する · openzfs/ZFS@10b3c7f” . GitHub . OpenZFS. 2020年9月10日時点のオリジナルよりアーカイブ。 2020年10月12日閲覧
  21. ^ “Zstandard Encoding - Amazon Redshift” . Amazon Web Services. 2019年4月20日. 2021年8月14日時点のオリジナルよりアーカイブ。 2018年1月24日閲覧
  22. ^ a b Larabel, Michael (2018年3月12日). 「Canonical、Ubuntu向けZstd圧縮Debianパッケージの開発に着手」 . phoronix.com . Phoronix Media. 2021年8月16日時点のオリジナルよりアーカイブ。 2019年10月29日閲覧。Canonicalの開発者は、この新開発のZstd Apt/DpkgサポートをUbuntu 18.04 LTSで利用できるよう、機能凍結の例外を検討している。その際、Ubuntu 18.10ではパッケージのZstd圧縮をデフォルトで有効化することを検討しているという。
  23. ^ Nestor, Marius (2018年3月12日). 「Zstd圧縮アルゴリズムにより、Ubuntuの新規インストールが10%高速化される可能性がある」 . Softpedia . 2021年10月6日時点のオリジナルよりアーカイブ。 2018年8月13日閲覧
  24. ^ 「Debian Changelog for apt」 . Debian . 2021年4月19日. 2022年11月7日閲覧
  25. ^ 「変更/RPMSをZSTD圧縮に切り替える」 Fedora Project Wiki . 2019年6月2日時点のオリジナルよりアーカイブ。 2020年7月8日閲覧
  26. ^ Thurman, Andrew (2021年4月14日). 「Fedora Workstation 34の機能の焦点:Btrfs透過的圧縮」 . Fedora Magazine . 2022年5月12日閲覧
  27. ^ "Changes/BtrfsTransparentCompression" . Fedora Project Wiki . 2022年5月12日閲覧
  28. ^ Larabel, Michael (2019年10月16日). 「Arch Linux、Pacmanのインストールを高速化するためにZSTD圧縮パッケージのロールアウトを間近に」 . Phoronix . 2022年3月18日時点のオリジナルよりアーカイブ。 2019年10月21日閲覧
  29. ^ Broda, Mara (2020年1月4日). 「パッケージ圧縮にxzではなくZstandardを使用するようになりました」 . Arch Linux . 2022年3月18日時点のオリジナルよりアーカイブ。 2020年1月5日閲覧
  30. ^ Broda, Mara (2019年3月25日). 「RFC: (devtools) デフォルトの圧縮方式をzstdに変更」 . arch-dev-public (メーリングリスト). 2021年8月17日時点のオリジナルよりアーカイブ。 2020年1月5日閲覧
  31. ^ Broda, Mara; Polyak, Levente (2019年12月27日). 「makepkg.conf: デフォルトの圧縮方式をzstdに変更」 . GitHub .
  32. ^ Razzolini, Giancarlo (2021年2月19日). 「ニュース: mkinitcpio でデフォルトで Zstandard イメージに移行」 . Arch Linux . 2021年12月28日閲覧
  33. ^ APPNOTE.TXT - .ZIP ファイル形式仕様バージョン: 6.3.8、PKWARE、2020年6月15日、 2020年7月7日取得
  34. ^ APPNOTE.TXT - .ZIP ファイル形式仕様バージョン: 6.3.7、PKWARE、2020年6月1日、 2020年6月6日取得
  35. ^ Jara, Adriana (2024年3月19日). 「Chrome 123の新機能 | Chromeブログ」 . Chrome for Developers . Google . 2024年4月16日閲覧
  36. ^ “Firefox 126.0、新機能、アップデート、修正点をすべて見る” . 2024年5月. 2024年5月13日時点のオリジナルよりアーカイブ2024年5月15日閲覧。
  37. ^ Dignan, Larry (2016年8月31日). 「FacebookがZstandardデータ圧縮アルゴリズムをオープンソース化、Zipの技術代替を目指す」 ZDnet . 2016年9月1日閲覧
  38. ^ “Zstandard v1.0” . GitHub . Facebook. 2016年8月31日. 2023年4月7日時点のオリジナルよりアーカイブ。 2025年1月23日閲覧
  39. ^ “v1.3.0/PATENTS · facebook/zstd” . GitHub . Facebook. 2016年8月30日. 2021年5月15日時点のオリジナルよりアーカイブ2024年3月27日閲覧。
  40. ^ “Release Zstandard v1.3.1 · facebook/zstd” . GitHub . Facebook. 2017年8月20日. 2020年9月12日時点のオリジナルよりアーカイブ2024年3月27日閲覧。
  41. ^ “New license by Cyan4973 · Pull Request #801 · facebook/zstd” . GitHub . Facebook. 2017年8月19日. 2020年9月12日時点のオリジナルよりアーカイブ。 2024年3月27日閲覧