ソリッド圧縮

ソリッド圧縮 (英: solid compression)は、コンピューティングでは、複数ファイルのデータ圧縮の方法であり、未圧縮の複数のファイルが最初に連結され単一のデータブロックとして扱われ、その後にデータブロックを圧縮する方式。これにより圧縮効率を上げることができる。7zやRAR形式で採用されている他、tar形式で.tar.gz や .tar.bz2という形式で間接的に使用される。このような形のアーカイブはソリッドアーカイブと呼ばれる。

対照的に、 ZIP形式はまず個別にファイルを圧縮した後に1つに結合する方式をとっており、ソリッド圧縮ではない。ただし、すべてのファイルをひとつの非圧縮アーカイブファイルに結合し、そのアーカイブファイルをZIP圧縮することにより、ソリッド圧縮をエミュレートすることができる。 

 方法論 
圧縮ファイルフォーマットは、多くの場合、圧縮（小さなスペースにデータを保存する）とアーカイブ（単一のファイルに複数のファイルとメタデータを保存する）の両方の機能を備えている。この2つの機能を適用する順番は以下の二通りある。

 個々のファイルを圧縮してから、単一のファイルにアーカイブする。
 単一のデータブロックにアーカイブしてから、圧縮を行う。

順序は重要であり (これらの操作は交換可能ではない)、後者をソリッド圧縮と呼ぶ。

UNIXでは、伝統的に圧縮とアーカイブは別々の操作として取り扱っており、UNIXでの例から順番の違いを理解できる。

 個々のファイルを圧縮してからアーカイブすると、 gzipで圧縮されたファイルのtarが作られる。つまり.gz.tarとなる。(通常はこれは行わない)
 tarを使い様々な非圧縮ファイルをアーカイブして、その生成物を圧縮することで、圧縮アーカイブである.tar.gz形式のファイルができる。これはソリッド圧縮である。

 メリットとデメリット 

 メリット 
ソリッド圧縮により、すべてのファイルが類似している場合は、はるかに優れた圧縮率が可能となる。これは、同じファイル形式のファイルをまとめて圧縮する場合が相当する。また、多数の小さなファイルをアーカイブする場合にも有効となる。

 デメリット 
一方、ソリッドアーカイブから単一のファイルを取得する場合、一旦すべてのファイルを解凍する必要がある。そのためソリッドアーカイブの内容変更には時間がかかり、不便になる可能性がある。 7-zipなどの新しい形式では、連結されたデータブロックを個別に圧縮された小さなブロックに分割できるソリッドブロックサイズオプションを提供している。これを使うと、1つのファイルを抽出するのに、ブロック内の限られた量のデータのみを処理すればよくなるため高速化がのぞめる。このオプションのパラメータとして、ソリッドブロックの最大ウィンドウサイズ、ブロック内のファイル数、ブロックをファイル拡張子で区切るかどうかを選択できる。 

また、ソリッドアーカイブ形式では、アーカイブが少しでも破損した場合、破損ブロック内の一部、場合によってはすべてのデータが破損してしまう可能性がある（圧縮およびアーカイブ形式によって異なる）が、非ソリッドアーカイブ形式では、破損するのは1つのファイルだけで、他のファイルは問題なく抽出できる。

 脚注 

Category:データ圧縮