3

私は数週間前のプレゼンテーションでそれを見て、それを実装しようとしましたが、失敗し、それを忘れました。しかし今、私はそれがどのように機能するか知りたいです=)

これは、データを効率的に転送/保存する方法です。それはどんな言語でも機能します。これは(私が思うに)それがすることです:

非常に大きなファイルが1つあります(たとえば、Webサイトのjavascriptコレクション全体)。

  1. 48バイトのブロックに分割します
  2. 48バイトのすべてのブロックをハッシュします(例:MD5)
  3. 0x00で終わるハッシュ上のブロックのリストを分割します
  4. 大きなブロック(> = 1ハッシュ)は異なるサイズになります。非常に大きいものもあれば、非常に小さいものもあります。
  5. それらのハッシュの間にブロックを接着します(ここでも、実際のデータのサイズが大きく異なります)
  6. それらのブロックをハッシュする
  7. これで、大きなファイルの現在のバージョンを表すハッシュのリストができました。

大きなファイルでコードの一部が変更された場合、変更されるハッシュは1つまたは2つだけであるという考え方です。新しいファイルを使用すると、上記のすべての手順を実行し、実際に変更された部分(ブロック、ハッシュで識別可能)のみをアップロード/ダウンロードします。変更されたコードの量とそのコードを囲むブロックのサイズに応じて、4つを超えるブロックをダウンロードする必要はありません。(ファイル全体ではなく)通信のもう一方の端は、元のブロック(同じアルゴリズム、同じ機能)を新しいブロックに置き換えます。

おなじみですか?彼らは名前について言及しましたが、何も見つかりませんでした。私がそれを構築しようとしたとき、それはうまくいきませんでした。なぜなら、正確に48バイトを変更しないと[1]、その変更後のすべてのハッシュが異なるからです[2]。

誰かが名前を知っているなら:素晴らしい。誰かがそれを説明することができれば:完璧です!

更新
私はそれが含まれていたプレゼンテーションを見つけました。それは新製品「サイロ」で言及されました(そして使用されました) :http: //research.microsoft.com/apps/pubs/default.aspx?id = 131524関連:http: //channel9.msdn.com/Events/MIX/MIX11/RES04(つまり、実際にはMicrosoftの調査でした!きちんと!)

最初のリンクから:

Silo対応のページは、このローカルストレージをLBFSスタイルのチャンクストアとして使用します。

2番目のリンク(ビデオ)では、良いものはで始まり6:30ます。今、私はそれを二度見ました...私はまだそれを理解していません=)

キーワードはとDelta encodingですRabin fingerprints

4

3 に答える 3

3

これは...一種の...リモート差動圧縮がどのように機能するかのように聞こえます。

低帯域幅ファイルシステム(LBFS)[24]では、RDCプロトコルを使用して、送信者と受信者の間の通信を最適化します。これにより、両側ですべてのファイルをチャンクに分割し、チャンクごとに強力なチェックサムまたは署名を計算します。 。クライアントがサーバーからファイルにアクセスまたはコピーする必要がある場合、サーバーは最初にそのファイルの署名のリストをクライアントに送信します。クライアントは、古いチャンクのどれを使用して新しいファイルを再構築できるかを決定し、不足しているチャンクを要求します。 。このプロトコルの鍵は、データ機能からチャンク境界を決定することにより、ファイルがクライアントとサーバーで独立して分割されることです。

PDF http://research.microsoft.com/apps/pubs/default.aspx?id=64692

于 2011-04-30T16:36:06.083 に答える
3

ローリングハッシュを使用して、「ブロックサイズの倍数ではない変更」の問題を解決できます。これは、rsyncがファイルの変更された部分のみを転送するために使用するものです。

于 2011-04-30T16:47:47.357 に答える
1

それは瓦礫のように聞こえます。

于 2011-04-30T16:43:25.867 に答える