| 原作者 | ヤン・コレット |
|---|---|
| 開発者 | ヤン・コレット、ニック・テレル、プシェミスワフ・スキビンスキ[1] |
| 初回リリース | 2015年1月23日 |
| 安定版リリース | 1.5.6 [2]
/ 2024年3月27日 |
| リポジトリ |
|
| 書かれた | C |
| オペレーティング·システム | クロスプラットフォーム |
| プラットフォーム | ポータブル |
| タイプ | データ圧縮 |
| ライセンス | BSD-3条項またはGPL-2.0以降(デュアルライセンス) |
| Webサイト | facebook.github.io/zstd/ |
ZstandardはFacebookのヤン・コレットが開発したロスレス データ圧縮アルゴリズムです。ZstdはC言語で対応するリファレンス実装であり、2016年8月31日にオープンソースソフトウェアとしてリリースされました。 [3] [4]
特徴
Zstandard は、DEFLATEアルゴリズム (1991 年に開発され、オリジナルのZIPおよびgzipプログラムで使用)と同等の圧縮率を実現するように設計されていますが、特に解凍に関してはより高速です。圧縮レベルは -7 (最高速) [5]から 22 (圧縮速度は最も遅いが、圧縮率は最高) まで調整可能です。
バージョン1.3.2(2017年10月)以降、zstdはrzipやlrzip--longと同様の非常に長い範囲の検索と重複排除(128 MiBのウィンドウ)をオプションで実装しています。[6]
圧縮速度は最速レベルと最遅レベルの間で20倍以上変わることがありますが、解凍は均一に速く、最速レベルと最遅レベルの間の変化は20%未満です。[7] Zstandardコマンドラインには--adapt、I/O条件、主に出力を書き込む速度に応じて圧縮レベルを変える「適応型」()モードがあります。
Zstd は最大圧縮レベルではlzma、lzham、ppmxに近い圧縮率を実現し、lzaやbzip2よりも優れたパフォーマンスを発揮します。[不適切な合成? ] [ 8] [9] Zstandard は、同等以上の圧縮率を持つ現在利用可能な他のどのアルゴリズムよりも高速に解凍するため、現在のパレート限界に達します。[現在? ] [10] [11]
辞書は小さなファイルの圧縮率に大きな影響を与える可能性があるため、Zstandardではユーザーが提供する圧縮辞書を使用できます。また、一連のサンプルから辞書を生成できるトレーニングモードも提供しています。[12] [13]特に、1つの辞書をロードして、ログファイルなど、必ずしも各ファイル内ではなくファイル間で冗長性がある大規模なファイルセットを処理できます。
デザイン
Zstandard は、辞書マッチングステージ ( LZ77 ) と大きな検索ウィンドウ、および高速エントロピーコーディングステージを組み合わせています。これは、ハフマンコーディング(リテラルセクションのエントリに使用) [14]と有限状態エントロピー (FSE) (ANS の高速テーブルバージョンであるtANS ) の両方を使用し、シーケンスセクションのエントリに使用されます。FSE がシンボル間で状態を引き継ぐ方法のため、解凍では各ブロックのシーケンスセクション内のシンボルを逆順 (最後から最初へ) で処理する必要があります。
使用法
| ファイル名拡張子 |
.zst [15] |
|---|---|
| インターネットメディアの種類 |
アプリケーション/zstd [15] |
| 魔法の数字 | 28 b5 2f fd[15] |
| フォーマットの種類 | データ圧縮 |
| 標準 | RFC 8878 |
| Webサイト | github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md |
| インターネットメディアの種類 | アプリケーション/zstd |
|---|---|
| 魔法の数字 | 37 a4 30 ec[15] |
| 標準 | RFC 8878 |
| Webサイト | github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#dictionary-format |
Linuxカーネルには、 2017年11月(バージョン4.14)以降、 btrfsおよびsquashfsファイルシステムの圧縮方法としてZstandardが組み込まれています。[16] [17] [18]
2017年にアラン・ジュードはZstandardをFreeBSDカーネルに統合し[19]、その後コアダンプ(ユーザープログラムとカーネルパニックの両方)の圧縮オプションとして統合されました。また、概念実証のOpenZFS圧縮方法[7]の作成にも使用され、2020年に統合されました[20]。
AWS RedshiftとRocksDBデータベースには、Zstandardを使用したフィールド圧縮のサポートが含まれています。[21]
2018年3月、CanonicalはUbuntu Linuxディストリビューションのデフォルトのdebパッケージ圧縮方法としてzstdの使用をテストしました[22] 。debパッケージのxz圧縮と比較すると、レベル19のzstdは大幅に高速に解凍されますが、パッケージファイルが6%大きくなります。サポートは2018年4月にDebian(およびその後Ubuntu)に追加されました(バージョン1.6〜rc1)。[23] [22] [24]
2018年にこのアルゴリズムはRFC 8478として公開され、関連するメディアタイプ「application/zstd」、ファイル名拡張子「zst」、HTTPコンテンツエンコーディング「zstd」も定義されています。[25]
Arch Linuxは、 2019年10月にpacman 5.2パッケージマネージャーのリリースに伴い、パッケージ圧縮方法としてzstdのサポートを追加し[26]、2020年1月に公式リポジトリのパッケージをxzからzstdに切り替えました。Archはzstd -c -T0 --ultra -20 -、圧縮されたパッケージ全体のサイズが0.8%増加し(xzと比較して)、解凍速度が14倍高速になり、複数のスレッドを使用する場合の解凍メモリが50 MiB増加し、圧縮メモリが増加しましたが、使用するスレッド数に応じて拡張されます。[27] [28] [29] Arch Linuxは後に、mkinitcpio初期RAMディスクジェネレータのデフォルトの圧縮アルゴリズムとしてもzstdに切り替えました。[30]
Fedoraは2018年5月(Fedoraリリース28)にRPMにZStandardサポートを追加し、2019年10月(Fedora 31)のリリースのパッケージングに使用しました。[31] Fedora 33では、ファイルシステムはデフォルトでzstdで圧縮されています。[32] [33]
圧縮レベルを選択するオプションを備えたアルゴリズムの完全な実装は、Nintendo Switchハイブリッドゲームコンソール用に自作コミュニティによって開発された.NSZ / .XCZ [34]ファイル形式で使用されています。 [35]また、これは.RVZ WiiおよびGameCubeディスクイメージファイル形式でサポートされている多くの圧縮アルゴリズムの1つでもあります。
2020年6月15日、Zstandardはコーデック番号93でzipファイル形式のバージョン6.3.8に実装され、6月1日にリリースされたバージョン6.3.7で実装されていた以前のコーデック番号20は廃止されました。[36] [37]
2024年3月、Google Chromeバージョン123(およびBraveやMicrosoft EdgeなどのChromiumベースのブラウザ)は、HTTPヘッダーにzstdサポートを追加しました。[38] 2024年5月、Firefoxリリース126.0は、 HTTPヘッダーにzstdサポートを追加しました。[39] Content-Encoding Content-Encoding
ライセンス
リファレンス実装はBSDライセンスの下でライセンスされており、 GitHubで公開されています。[40]バージョン1.0以降、追加の特許権が付与されました。[41]
バージョン1.3.1から[42]この特許付与は取り下げられ、ライセンスはBSD + GPLv2デュアルライセンスに変更されました。[43]
参照
- LZ4 (圧縮アルゴリズム) – LZ77 ファミリーの高速メンバー
- LZFSE – iOS 9 および OS X 10.11 以降で使用されている Apple の類似アルゴリズムで、2016 年 6 月 1 日にオープンソース化されました。
- ズリブ
参考文献
- ^ “Contributors to facebook/zstd”. github.com . 2021年1月27日時点のオリジナルよりアーカイブ。 2021年1月26日閲覧。
- ^ 「リリース Zstandard v1.5.6 - Chrome エディション · facebook/zstd」。2024年3月27日閲覧。
- ^ Sergio De Simone (2016年9月2日). 「Facebook、Zlibを上回る新しい圧縮アルゴリズムをオープンソース化」. InfoQ . 2019年4月20日閲覧。
- ^ 「人生は風刺を模倣する:Facebook はシリコンバレーのパイドパイパーのように zlib キラーを宣伝」The Register。2016 年 8 月 31 日。2016年9 月 6 日閲覧。
- ^ 「Release Zstandard v1.3.4 - faster everything · facebook/zstd」. GitHub . 2024年3月27日閲覧。
- ^ 「Zstandard ライブラリのコマンドラインインターフェイス」。GitHub。2021年10月 28 日。
- ^ ab "ZFS の ZStandard" (PDF) . open-zfs.org . 2017 . 2019 年4 月 20 日閲覧。
- ^ Matt Mahoney. 「Silesia Open Source Compression Benchmark」。2019年5月10日閲覧。
- ^ Matt Mahoney (2016年8月29日). 「Large Text Compression Benchmark, .2157 zstd」 . 2016年9月1日閲覧。
- ^ TurboBench: 静的/動的ウェブコンテンツ圧縮ベンチマーク、PowTurbo
- ^ Matt Mahoney、Silesia オープンソース圧縮ベンチマーク
- ^ 「Facebook の開発者が辞書の使用時に大幅なスピードアップと圧縮率の向上を報告」(PDF)フェルミ国立加速器研究所2017年 10 月 11 日。2024年3 月 27 日閲覧。
- ^ 「Zstandard によるより小さく、より高速なデータ圧縮」。Facebook。2016 年 8 月 31 日。
- ^ “facebook/zstd”. GitHub . 2021年10月28日.
- ^ abcd Collet, Yann (2021年2月). Kucherawy, Murray S. (編). Zstandard 圧縮と application/zstd メディア タイプ. インターネット エンジニアリング タスク フォースのコメント要求. doi : 10.17487/RFC8878 . RFC 8878 . 2023年2月26日閲覧。
- ^ Corbet, Jonathan (2017年9月17日). 「4.14マージウィンドウの残り [LWN.net]」. lwn.net . 2024年3月27日閲覧。
- ^ 「Linux_4.14 - Linux Kernel Newbies」Kernelnewbies.org。2017年12月30日。 2018年8月16日閲覧。
- ^ Larabel, Michael (2017 年 9 月 8 日). 「Linux 4.14 向けに Btrfs および Squashfs の Zstd 圧縮がリリース、Facebook 内ですでに使用中 - Phoronix」www.phoronix.com。
- ^ 「ZSTD をカーネルに統合する · freebsd/Freebsd-SRC@28ef165」。GitHub。
- ^ 「ZFS に ZSTD サポートを追加する · openzfs/ZFS@10b3c7f」。GitHub。
- ^ 「Zstandard エンコーディング - Amazon Redshift」。2019 年 4 月 20 日。
- ^ ab Larabel, Michael (2018年3月12日). 「Canonical、Ubuntu向けZstd圧縮Debianパッケージの開発に着手」. phoronix.com . Phoronix Media . 2019年10月29日閲覧。Canonical
の開発者は、Ubuntu 18.04 LTSでこの新しく開発されたZstd Apt/Dpkgサポートを実現するために、機能凍結の例外を検討しています。その際、Ubuntu 18.10ではパッケージのZstd圧縮をデフォルトで有効にすることを検討していると述べています。
- ^ 「Zstd 圧縮アルゴリズムにより、Ubuntu の新規インストールが 10% 高速化される可能性がある」。Softpedia。2018年 3 月 12 日。2018年8 月 13 日閲覧。
- ^ 「Debian Changelog for apt」。Debian 。 2021年4月19日。 2022年11月7日閲覧。
- ^ Collet, Yann (2018 年 10 月). Kucherawy, Murray S. (編). Zstandard 圧縮と application/zstd メディア タイプ。インターネット エンジニアリング タスク フォースのコメント要求。doi : 10.17487/RFC8478 . RFC 8478 . 2020 年10 月 7 日に閲覧。
- ^ Larabel, Michael (2019年10月16日). 「Arch Linux、Pacmanのインストールを高速化するためにZSTD圧縮パッケージの展開を間近に」Phoronix。
- ^ Broda, Mara (2020年1月4日). 「パッケージ圧縮にxzではなくZstandardを使用するようになりました」Arch Linux . 2020年1月5日閲覧。
- ^ Broda, Mara (2019 年 3 月 25 日). 「RFC: (devtools) デフォルトの圧縮方法を zstd に変更」. arch-dev-public (メーリング リスト).
- ^ Broda, Mara; Polyak, Levente (2019 年 12 月 27 日). 「makepkg.conf: デフォルトの圧縮方法を zstd に変更」. GitHub .
- ^ Razzolini, Giancarlo (2021年2月19日). 「ニュース: mkinitcpio でデフォルトで Zstandard イメージに移行」. Arch Linux . 2021年12月28日閲覧。
- ^ 「RPMS から ZSTD 圧縮への変更/切り替え」Fedora プロジェクト Wiki。
- ^ 「Fedora Workstation 34の機能の焦点:Btrfs透過的圧縮」Fedora Magazine。2021年4月14日。 2022年5月12日閲覧。
- ^ 「Changes/BtrfsTransparentCompression」。Fedora Project Wiki 。 2022年5月12日閲覧。
- ^ 「RELEASE - nsZip - ストレージを削減する NSP 圧縮/解凍ツール」GBAtemp.net - The Independent Video Game Community 2019年10月20日。 2019年11月3日閲覧。
- ^ Bosshard, Nico (2019年10月31日)、nsZipは、ここで指定されたNSZファイル形式を使用してNintendo Switchゲームを圧縮/解凍するためのツールです:nicoboss/nsZip 、2019年11月3日取得
- ^ APPNOTE.TXT - .ZIP ファイル形式仕様バージョン: 6.3.8、2020 年 6 月 15 日、2020 年7 月 7 日に取得
- ^ APPNOTE.TXT - .ZIP ファイル形式仕様バージョン: 6.3.7、2020 年 6 月 1 日、 2020 年6 月 6 日に取得
- ^ 「Chrome 123 の新機能 | Chrome ブログ」。Chrome for Developers。2024年 3 月 19 日。2024年4 月 16 日閲覧。
- ^ 「Firefox 126.0、すべての新機能、更新、修正をご覧ください」 。 2024年5月15日閲覧。
- ^ 「FacebookがZstandardデータ圧縮アルゴリズムをオープンソース化、Zipの技術を置き換えることを目指す」ZDnet。2016年8月31日。 2016年9月1日閲覧。
- ^ 「zstd/PATENTS at v1.3.0 · facebook/zstd」。GitHub 。2024年3月27日閲覧。
- ^ 「Release Zstandard v1.3.1 · facebook/zstd」。GitHub 。 2024年3月27日閲覧。
- ^ 「Cyan4973による新しいライセンス · プルリクエスト#801 · facebook/zstd」。GitHub 。 2024年3月27日閲覧。
