Zstandard 可逆圧縮アルゴリズムを使ってみる

バイオインフォマティクスの解析では、とても大きなファイルを取り扱うことがあります。解析後もデータを安全に長期間保存しておく必要があって、データ保存に対する悩みは尽きません。

より速く、より高い圧縮率でファイルを小さく圧縮できれば、それだけで取り扱いが楽になります。Zstandardは未だ広く活用されていませんが、このような方法も知っておけば役に立つかもしれません。

Zstandard

Zstandard とは

Zstandard (Zstd) は2015年からFacebookに所属しているYann Colletによって開発された可逆圧縮アルゴリズムである。

引用:Wikipedia Zstandard

Zstandardはより高速に、現在主流となっているDeflate (ZIP, gzip) アルゴリズムによるものと遜色ない圧縮を行うように設計されている。

引用:Wikipedia Zstandard 特徴

Zstandard 参考サイト

スポンサーリンク



Zstandard 使い方

Zstandard インストール

最新版をダウンロードして、make。その後、適当なパスを通します
LATESTのダウンロード

$ cd
$ wget https://github.com/facebook/zstd/releases/download/v1.3.8/zstd-1.3.8.tar.gz
$ tar xzvf zstd-1.3.8.tar.gz 
$ cd zstd-1.3.8
$ make

$  export PATH=$PATH:~/zstd-1.3.8/

Zstandard よく使うコマンド

ファイルを圧縮

ファイルを指定して、zstdをコールするだけ。この場合の圧縮率は、gzipによる圧縮と大して変わりません。拡張子は、「.zst」になります。

$ zstd test.fastq 
test.fastq           : 15.56%   (1022475400 => 159094936 bytes, test.fastq.zst) 

出力ファイル名を指定することも可能です。-oオプションを使います。

$ zstd test.fastq -o aaa.fastq.zst
test.fastq           : 15.56%   (1022475400 => 159094936 bytes, aaa.fastq.zst) 
使用例

ファイルを圧縮 時間はかかるが高圧縮

ファイルを指定して、ultraオプションでコールします。かなり時間はかかりますが、圧縮率は更に高くなります。最大レベル22。

$ zstd --ultra -22 test.fastq -o test.fastq.ultra.zst
test.fastq           : 10.84%   (1022475400 => 110793605 bytes, test.fastq.ultra.zst) 
使用例

圧縮ファイルを展開

圧縮ファイルの展開は高速です。-dオプションを指定します。

$ zstd -d test.fastq.ultra.zst 
test.fastq.ultra.zst: 1022475400 bytes

ディレクトリを再帰的に圧縮

zstandardにはアーカイブ機能がないので、フォルダ全体を圧縮したい場合はtarコマンドと併用すると良いです。ちなみに、再帰的な圧縮オプションrは、指定したフォルダ内のファイルを1つずつzstandardで圧縮します。

$ tar cvf test_dir.tar test_dir/
$ zstd test_dir.tar
test_dir.tar         : 10.17%   (542720 =>  55214 bytes, test_dir.tar.zst)

オプションを確認

$ zstd -help
スポンサーリンク



世界の最前線で働くということ

Zstandardは、Facebookに所属しているエンジニアによって開発されました。Facebookのような巨大なハイテク企業で働くって、どんな感じなのでしょうか?そんな世界の最前線で働くことに憧れるエンジニアも少なくないと思います。

著者は、シリコンバレーやシアトルで計15年、従業員数十人のスタートアップでも10万人以上の大企業でも働いた経験があるそうです。本を通して筆者の体験談を聞くだけでも今後の参考になるかもしれませんね。

[amazonjs asin=”B01626P712″ locale=”JP” title=”エンジニアとして世界の最前線で働く選択肢 ~渡米・面接・転職・キャリアアップ・レイオフ対策までの実践ガイド”]

また、エンジニアの更なる成長を目指すなら、こちらが役に立つかもしれません。

ひとくちに「エンジニア」といっても、機械系、バイオ系、建設・土木系、IT系などがありますが、どの分野のエンジニアも対象にした内容になっています。エンジニアは、専門分野だけではなく、一般的なビジネススキルも同時に取得していかなければならず、その負荷で悩んでいる人が少なくありません。

Amazon 商品紹介より

[amazonjs asin=”B073NZ5FC1″ locale=”JP” title=”エンジニアの成長戦略 一生食べていけるキャリアをつくる”]