ウェブサイト検索

zstd - Facebook で使用される高速データ圧縮アルゴリズム


Zstandard (zstd とも呼ばれます) は、Facebook によって開発された、より優れた圧縮率を備えた無料のオープンソースの高速リアルタイム データ圧縮プログラムです。これは、C で書かれた可逆圧縮アルゴリズムです (Java で再実装されています)。つまり、ネイティブ Linux プログラムです。

こちらもお読みください: Linux での 10 の 7zip (データ圧縮) コマンドの例

必要に応じて、圧縮速度と引き換えに圧縮率を高めることができます (圧縮速度と圧縮率のトレードオフは少しずつ設定できます)、あるいはその逆も可能です。辞書圧縮として知られる小規模データ圧縮のための特別なモードがあり、提供された任意のサンプル セットから辞書を構築できます。 .zst.gz.xz、および .lz4 を作成およびデコードするためのコマンド ライン ユーティリティが付属しています。ファイル。

重要なのは、Zstandard には豊富な API コレクションがあり、Python、Java、JavaScript、Nodejs、Perl、Ruby、C#、Go、Rust、PHP、Switft など、ほとんどすべての一般的なプログラミング言語をサポートしていることです。

これは、Facebook での複数の形式やユースケースで大量のデータを圧縮するために積極的に使用されています。 Amazon Redshift データ ウェアハウジングなどのサービス。 Hadoop や Redis などのデータベース。 Tor ネットワークやゲームを含む他の多くのアプリケーション。

次の結果は、オープンソースのインメモリ ベンチマーク ツールである lzbench を使用して、Linux Debian を実行しているサーバー上でいくつかの高速圧縮アルゴリズム テストを実行して得られたものです。

Linux に Zstandard 圧縮ツールをインストールする方法

Linux ディストリビューションに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+

必要な開発ツールをすべてインストールしたら、ソース パッケージをダウンロードし、ローカル リポジトリ ディレクトリに移動し、バイナリをビルドして、図のようにインストールできます。

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 圧縮ファイルを作成するには、ファイル名を指定して圧縮するか、-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. gzip、xz、lzma、lz4 などの他のファイル圧縮または解凍形式を使用するには、次のように --format=FORMAT を使用します。

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 リポジトリ: https://github.com/facebook/zstd

Zstandard は、高速リアルタイム、ロスレス データ圧縮アルゴリズムおよび高い圧縮率を提供する圧縮ツールです。試してみて、それについての意見を共有したり、以下のフィードバック フォームから質問したりできます。