5

Amazon S3内で重複排除(シングルインスタンスストレージ)ファイルストレージを実現するための最良の方法を考えています。たとえば、同じファイルが3つある場合、そのファイルを1回だけ保存したいとします。これを実装するのに役立つライブラリ、API、またはプログラムはありますか?この機能はS3にネイティブに存在しますか?おそらく、ファイルハッシュなどをチェックするものです。

これを達成するために人々がどのようなアプローチを使用しているのか疑問に思います。

4

1 に答える 1

5

これを行うには、おそらく独自のソリューションを展開できます。次のようなもの:

ファイルをアップロードするには:

  1. SHA-1 以上を使用して、最初にファイルをハッシュします。
  2. ハッシュを使用してファイルに名前を付けます。実際のファイル名は使用しないでください。
  3. ディレクトリ構造を保存するために、ある種の仮想ファイル システムを作成します。各ファイルは、計算されたハッシュを含む単純なテキスト ファイルにすることができます。この「ファイル システム」は、データ ブロブ ストレージとは別に配置して、名前の競合を防ぐ必要があります (別のバケットなど)。

後続のファイルをアップロードするには:

  1. ハッシュを計算し、データ BLOB ファイルがまだ存在しない場合にのみアップロードします。
  2. すべてのファイルと同様に、ハッシュをコンテンツとしてディレクトリ エントリを保存します。

ファイルを読み取るには:

  1. 仮想ファイル システムからファイルを開いてハッシュを検出し、その情報を使用して実際のファイルを取得します。

また、固定サイズのブロックでファイルをアップロードし、上記のようにフル ファイル レベルではなくブロック レベルで重複除外を行うことで、この手法をより効率的にすることもできます。仮想ファイル システム内の各ファイルには、そのファイルのブロック チェーンを表す 1 つ以上のハッシュが含まれます。また、以前にアップロードされた別のファイルとわずかに異なるだけの大きなファイルをアップロードすると、ストレージとデータ転送が大幅に削減されるという利点もあります。

于 2012-05-31T18:48:29.227 に答える