JP4796315B2 - 遠隔差分圧縮用の効率的アルゴリズムとプロトコル - Google Patents

遠隔差分圧縮用の効率的アルゴリズムとプロトコル Download PDF

Info

Publication number
JP4796315B2
JP4796315B2 JP2005073985A JP2005073985A JP4796315B2 JP 4796315 B2 JP4796315 B2 JP 4796315B2 JP 2005073985 A JP2005073985 A JP 2005073985A JP 2005073985 A JP2005073985 A JP 2005073985A JP 4796315 B2 JP4796315 B2 JP 4796315B2
Authority
JP
Japan
Prior art keywords
chunk
remote
signature
list
local
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005073985A
Other languages
English (en)
Other versions
JP2005302004A5 (ja
JP2005302004A (ja
Inventor
テオドシュウ ダン
エス.ビョルナー ニコライ
イー.ボーズマン パトリック
グレビッチ ユーリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005302004A publication Critical patent/JP2005302004A/ja
Publication of JP2005302004A5 publication Critical patent/JP2005302004A5/ja
Application granted granted Critical
Publication of JP4796315B2 publication Critical patent/JP4796315B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • AHUMAN NECESSITIES
    • A61MEDICAL OR VETERINARY SCIENCE; HYGIENE
    • A61MDEVICES FOR INTRODUCING MEDIA INTO, OR ONTO, THE BODY; DEVICES FOR TRANSDUCING BODY MEDIA OR FOR TAKING MEDIA FROM THE BODY; DEVICES FOR PRODUCING OR ENDING SLEEP OR STUPOR
    • A61M3/00Medical syringes, e.g. enemata; Irrigators
    • A61M3/02Enemata; Irrigators
    • A61M3/06Enemata; Irrigators combined with bidets
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99955Archiving or backup

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Hematology (AREA)
  • Veterinary Medicine (AREA)
  • Public Health (AREA)
  • General Health & Medical Sciences (AREA)
  • Animal Behavior & Ethology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Heart & Thoracic Surgery (AREA)
  • Biomedical Technology (AREA)
  • Anesthesiology (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

本発明は、一般に帯域幅の限られたネットワーク上でデータオブジェクトを更新することに関する。より詳細には、本発明は、RDC(remote differential compression遠隔差分圧縮)手法を使用した、オブジェクトデータの差分転送用のシステムと方法に関する。このRDC手法の再帰的適用を利用して大きなオブジェクトの転送のための帯域幅の使用率をさらに最小化することができる。
イントラネット、エクストラネット、インターネットなどのネットワークの普及によって、広範なネットワーク上で情報を共有するユーザ数が増大した。最大データ転送速度は、その伝送媒体や他のインフラストラクチャ関連の制限に関連する帯域幅に基づいて各物理ネットワークに関連づけられる。ネットワークの帯域幅が制限される結果として、ユーザは、ネットワーク上で大量のデータを検索し転送する際に長い遅延を経験する可能性がある。
データ圧縮技法は、帯域幅の限られたネットワークをわたって大量のデータを転送するための評判のよい方法になっている。データ圧縮は、一般に可逆的または非可逆的なもののいずれかとして特徴づけることができる。可逆的圧縮は、伸張変換を適用することにより、そのデータセットを正確に再現して取り出すことができるようにデータセットの変換を行うものである。正確な再現が必要とされるときには、可逆的圧縮が最もしばしば使用されてデータが圧縮される。
データオブジェクトのこの受取人がそのオブジェクトの以前の、またはより古いバージョンをすでに所有している場合には、遠隔差分圧縮(RDC)と呼ばれる可逆的圧縮手法を使用してそのオブジェクトの新しいバージョンと古いバージョンとの間の差分を決定し、この差分だけを転送することができる。RDC転送は、その新しいバージョンと古いバージョンの間のその観測された差分(例えば、ファイルの場合には、ファイルの修正もしくは最後のアクセス日付、ファイルの属性、またはそのファイルコンテンツに対するわずかな変更)を伝えるものにすぎないので、転送されるデータの全体の量を非常に減少させることができる。RDCを別の可逆的圧縮アルゴリズムと結合してこのネットワークトラフィックをさらに減少させることができる。RDCの利点は、コンピューティングデバイス間で大きなオブジェクトを頻繁に送受する必要があり、これらのオブジェクトの以前の複製を保持することが、困難または実行不可能であり、その結果局所差分アルゴリズムを使用することができないという場合に最も顕著になる。
簡潔に述べると、本発明は、限られた帯域幅のネットワーク上でオブジェクトを更新するための方法およびシステムに関する。
オブジェクトは、必要なデータ転送が最小化されるように遠隔差分圧縮(RDC)技法を使用して2つ以上のコンピューティングデバイス間で更新される。一態様においては、効率的な大きなオブジェクトの転送が、それ自体のメタデータに対してこのRDCアルゴリズムを再帰的に適用することによって達成される。すなわち、1つまたは複数の再帰的ステップをこのケースにおいて使用してこのRDCアルゴリズムによってこのネットワーク上で送信されるメタデータの量を減少させることができる。オブジェクトおよび/またはシグネチャ、ならびにチャンク長リストを、動的に決定されたロケーションに境界を位置づけることによってチャンキングすることができる。数学関数が、可能性のあるチャンク境界に関連してホライズン(horizon)ウィンドウ内に関連づけられたハッシュ値(hash value)を評価する。ここで説明する方法およびシステムは、ピアツーピアレプリケータ(peer−to−peer replicator)、電子メールクライアントおよび電子メールサーバ、クライアント側キャッシングシステム、汎用コピーユーティリティ、データベースレプリケータ、ポータル、ソフトウェア更新サービス、ファイル/データ同期化など様々なネットワーク化されたアプリケーションにおいて有用である。
本発明およびその改良についてのより完全な理解は、本発明の例示の実施形態の以下の詳細なる説明、および添付特許請求の範囲に対して、以下に簡単に概説した添付図面を参照することによって得ることが可能である。
本発明の非限定的かつ非網羅的な実施形態について、以下の図面を参照して説明する。
図面を参照して本発明の様々な実施形態を詳細に説明することにする。いくつかの図面にわたって、同様な参照番号は、同様な部品およびアセンブリを表している。様々な実施形態に対する言及が、本発明の範囲を限定することはなく、この本発明の範囲は、本明細書に添付された特許請求の範囲によってしか限定されない。さらに、本明細書中に記載のどの実施例も限定することを意図したものではなく、単にこの特許請求されている本発明についての多数の可能な実施形態のうちの一部を述べているにすぎない。
本発明は、1つまたは複数の一般的に関連するオブジェクトが記憶されているローカルコンピューティングデバイスおよびリモートコンピューティングデバイス(または、略して「デバイス」)の文脈で説明される。用語「ローカル」および「リモート」は、この方法の1つのインスタンスを示している。しかし、この同じデバイスが、異なるインスタンスにおいて、「ローカル」の役割および「リモート」の役割を共に果たすこともできる。遠隔差分圧縮(RDC)手法を使用して、帯域幅の制限されたネットワーク上で一般的に関連するオブジェクトを効率的に更新することができる。オブジェクトの新しいコピーを有するデバイスが、この同じオブジェクトの、または同様なオブジェクトのより古いコピーを有するデバイスを更新する必要があるとき、このRDC手法を使用してこのネットワーク上でこれらのオブジェクト間の差分だけが伝送される。一実施例として説明するRDC手法では、(1)RDCメタデータを伝送するために再帰的な手法を使用して大きなオブジェクトについて伝送されるメタデータの量が減少させられ、(2)極大ベースのチャンキング手法を使用して、帯域幅の利用が最小化されるようにこのオブジェクトの差分に関連する精度が増大させられる。この説明するRDC手法からの恩恵を受ける一部の実施例のアプリケーションには、ただいくつかの名前を挙げると、ピアツーピア複製サービス、SMBなどのファイル転送プロトコル、大きなイメージを転送する仮想サーバ、電子メールサーバ、セルラ電話とPDAの同期化、データベースサーバの複製が含まれる。
動作環境
図1は、本発明についての動作環境の一実施例を示す図である。この図に示すように、複数のデバイスが、ネットワーク上で情報をやりとりするように配置されている。これらのデバイスは、ネットワークに接続された汎用コンピューティングデバイス、専用コンピューティングデバイス、または他の任意の適切なデバイスでもよい。このネットワーク102は、それだけには限定されないが、直接配線接続(例えば、パラレルポート、シリアルポート、USB、IEEE1394など)、無線接続(例えば、IRポート、ブルートゥース(Bluetooth)ポートなど)、有線ネットワーク、無線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、ウルトラワイドエリアネットワーク、インターネット、イントラネット、およびエクストラネットを含めて任意の接続トポロジに対応したものとすることができる。
デバイスA(100)とデバイスB(101)の間の対話の一実施例においては、あるオブジェクトの異なるバージョンが、2つのデバイス上に、すなわちオブジェクトOが100上に、オブジェクトOが101上にローカルに記憶されている。あるポイントにおいて、デバイスA(100)は、オブジェクトOのそのコピーをデバイスB(101)上に記憶されたコピー(オブジェクトO)で更新しようと決定し、デバイスB(101)に要求を送信してRDC手法を開始する。代替実施形態においては、このRDC手法をデバイスB(101)が開始することができる。
デバイスA(100)とデバイスB(101)は、共にそれらのローカルに記憶されたオブジェクトを処理し、データに依存するようにしてその関連するデータを可変数のチャンク(例えば、それぞれ、オブジェクトOについてのチャンク1〜n、またオブジェクトOについてのチャンク1〜k)に分割する。これらのチャンクについてのストロングハッシュ(strong hash)(SHA)など、1組のシグネチャが、両方のデバイスによってローカルに計算される。これらのデバイスは共に、シグネチャの別々のリストをコンパイルする。このRDC手法の次のステップ中に、デバイスB(101)は、このネットワーク102上で、シグネチャとチャンク長1〜nのその計算済みのリストをデバイスA(100)に送信する。デバイスA(100)は、受信された各シグネチャをそれ自体の生成済みのシグネチャリスト1〜kと比較することによってこのシグネチャリストを評価する。このシグネチャリストにおけるミスマッチは、訂正を要求するこれらオブジェクトにおける1つまたは複数の差分を示す。デバイスA(100)は、このシグネチャリスト中のミスマッチによって識別されたチャンクをデバイスB(101)が送信するように求める要求を送信する。その後、デバイスB(101)は、この要求されたチャンクを圧縮し送信し、次いでこれらのチャンクは、受信と伸張が実現された後にデバイスA(100)によって再組立てされる。デバイスA(100)は、この受信済みのチャンクをそれ自体のマッチングチャンクと一緒に再組立てして、オブジェクトOのローカルコピーを得る。
コンピューティングデバイス例
図2は、本発明に従って構成されたコンピューティングデバイスの一実施例のブロック図である。基本的な構成においては、コンピューティングデバイス200は、一般に少なくとも1つの処理装置(202)およびシステムメモリ(204)を含んでいる。コンピューティングデバイスのその厳密な構成およびタイプに応じて、システムメモリ204は、(RAMなどの)揮発性、(ROM、フラッシュメモリなどの)不揮発性、またはこれら2つの何らかの組合せとすることができる。システムメモリ204は、一般にオペレーティングシステム(205)、1つまたは複数のプログラムモジュール(206)を含んでおり、またプログラムデータ(207)を含むこともある。この基本的な構成が、図2の破線208内のこれらのコンポーネントによって示されている。
コンピューティングデバイス200はまた、追加の特徴または機能を有することができる。例えば、コンピューティングデバイス200は、例えば、磁気ディスク、光ディスク、テープなど(着脱可能および/または着脱不能な)追加のデータストレージデバイスも含むことができる。かかる追加のストレージは、図2において着脱可能なストレージ209および着脱不能なストレージ210によって示されている。コンピュータストレージ媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、他のデータなどの情報を記憶するための任意の方法または技術で実装された揮発性および不揮発性の着脱可能および着脱不能な媒体を含むことができる。システムメモリ204、着脱可能なストレージ209、および着脱不能なストレージ210は、すべてコンピュータストレージ媒体の実施例である。コンピュータストレージ媒体には、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、DVD(digital versatile diskデジタル多用途ディスク)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは所望の情報を記憶するために使用することができ、コンピューティングデバイス200によってアクセスすることが可能な他の任意の媒体が含まれる。かかるコンピュータストレージ媒体はどれも、デバイス200の一部分とすることができる。コンピューティングデバイス200はまた、キーボード、マウス、ペン、ボイス入力デバイス、タッチ入力デバイスなどの1つ(または複数)の入力デバイス212を有することもできる。ディスプレイ、スピーカ、プリンタなどの1つ(または複数)の出力デバイス214もまた含めることができる。すべてのこれらのデバイスは、当技術分野において知られており、ここで長く論ずる必要はない。
コンピューティングデバイス200はまた、このデバイスがネットワーク上などで他のコンピューティングデバイス218と情報をやりとりすることができるようにする1つ(または複数)の通信接続216を含んでもいる。1つ(または複数)の通信接続216は、通信媒体の一実施例である。通信媒体は一般に、搬送波や他の搬送メカニズムなどの被変調データ信号の形でコンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータを実施しており、任意の情報配信媒体を含んでいる。この用語「被変調データ信号」とは、信号に情報を符号化するように1つまたは複数のその特性が設定され変更された信号を意味する。一例として、限定するものではないが、通信媒体には、有線ネットワークや直接配線接続などの有線媒体、および音響、RF、マイクロ波、衛星、赤外線、他の無線媒体などの無線媒体が含まれる。本明細書中で使用される用語、コンピュータ読取り可能媒体は、ストレージ媒体も通信媒体も共に含んでいる。
システムメモリ204中に存在する1つまたは複数のアプリケーションプログラム中で、様々なプロシージャおよびインターフェースを実装することができる。一実施例においては、このアプリケーションプログラムは、このコンピューティングデバイス(例えば、クライアント)と別のリモートに位置づけられたコンピューティングデバイス(例えば、サーバ)との間でファイルの同期化をスケジュールする遠隔差分圧縮アルゴリズムである。別の実施例においては、このアプリケーションプログラムは、データを圧縮し伸張するための、システムメモリ204中で提供される圧縮/伸張プロシージャである。さらに他の実施例においては、このアプリケーションプログラムは、クライアントデバイスのシステムメモリ204中において提供される暗号解読プロシージャである。
遠隔差分圧縮(RDC)
図3Aおよび3Bは、本発明の少なくとも一態様によるRDCプロシージャの実施例を示す図である。特にチャンク数は、この実際のオブジェクトOおよびOに応じてインスタンスごとに変化することが可能である。
図3Aを参照すると、この基本的なRDCプロトコルは、2つのコンピューティングデバイス(デバイスAとデバイスB)の間でネゴシエーションが行われる。このRDCプロトコルでは暗黙に、これらのデバイスAおよびBが、それぞれオブジェクトインスタンス(またはバージョン)OおよびOによって識別される同じオブジェクトまたはリソースの2つの異なるインスタンス(またはバージョン)を有するという想定が行われる。この図に示す実施例では、デバイスAは、リソースの古いバージョンOを有するが、デバイスBは、そのリソースに関連したコンテンツ(またはデータ)がわずかに(または増分的に)異なるバージョンOを有する。
デバイスBからデバイスAにこの更新されたオブジェクトOを転送するためのプロトコルについて以下に説明する。同様なプロトコルを使用してあるオブジェクトをデバイスAからデバイスBに転送することができ、この転送を以下に示すプロトコルをあまり変更せずにデバイスAまたはデバイスBのいずれかの命令で開始することができる。
1.RDCプロトコルを使用して、デバイスAは、デバイスBにオブジェクトOを転送する要求を送信する。代替実施形態においては、デバイスBが、この転送を開始する。この場合には、このプロトコルは、ステップ1をスキップし、以下のステップ2から開始される。
2.デバイスAは、オブジェクトOをチャンク1〜kに区分し、オブジェクトOの各チャンク1...kごとにシグネチャSigAiおよび長さ(またはバイトサイズ)LenAiを計算する。このチャンクへの区分について、以下に詳細に説明することにする。デバイスAは、このシグネチャおよびチャンク長のリスト((SigA1,LenA1)...(SigAk,LenAk))を記憶する。
3.デバイスBは、オブジェクトOをチャンク1〜nに区分し、オブジェクトOの各チャンク1...nごとにシグネチャSigBiおよび長さLenBiを計算する。ステップ3で使用されるこの区分アルゴリズムは、以上のステップ2のアルゴリズムとマッチする必要がある。
4.デバイスBは、オブジェクトOに関連するその計算済みのチャンクシグネチャおよびチャンク長のリスト((SigB1,LenB1)...(SigBn,LenBn))をデバイスAに送信する。その後、このチャンク長情報をデバイスAが使用してそれらの開始オフセットおよびそれらの長さを用いてそれらを識別することによって特定の1組のチャンクを要求する。このリストの順次的性質のために、このリスト中のすべての先行するチャンクの長さを合計することによって各チャンクBiのバイト中の開始オフセットを計算することが可能である。
別の実施形態においては、チャンクシグネチャおよびチャンク長のリストは、デバイスAに送信する前に、可逆的圧縮アルゴリズムを使用してコンパクトに符号化され、さらに圧縮される。
5.このデータを受信すると、デバイスAは、そのコンテンツの古いバージョンに関連する、デバイスAがステップ2でオブジェクトOについて計算したそれらのシグネチャSigA1...SigAkに対してこの受信したシグネチャリストを比較する。
6.デバイスAは、ステップ4においてデバイスBから受信したシグネチャが、ステップ2でデバイスAが計算したシグネチャのどれかとマッチングに失敗したすべてのチャンクについてデバイスBに対して要求を送信する。要求されたチャンクBiごとにこの要求は、ステップ4でデバイスAが計算したチャンク開始オフセットとそのチャンク長とを含む。
7.デバイスBは、すべての要求されたチャンクに関連するそのコンテンツをデバイスAに対して送信する。デバイスBが送信するこのコンテンツは、デバイスAに送信する前に可逆的圧縮アルゴリズムを使用してさらに圧縮することができる。
8.デバイスAは、ステップ7でデバイスBから受信したチャンクを使用することによってオブジェクトOのローカルコピー、ならびにステップ4でデバイスBが送信したシグネチャとマッチングしたオブジェクトOのそれ自体のチャンクを再構築する。このローカルチャンクとリモートチャンクがデバイスA上で再配置される順序は、ステップ4でデバイスAが受信したチャンクシグネチャのリストによって決定される。
区分ステップ2および3は、関連するオブジェクト(それぞれ、OおよびO)中のあらゆるバイト位置ごとに計算されるフィンガプリント関数(fingerprinting function)を使用するデータに依存する方法で行うことができる。所与の位置では、このフィンガプリント関数は、このオブジェクト中のバイト位置を囲む小さなデータウィンドウを使用して計算される。したがって、このフィンガプリント(指紋)関数の値は、このウィンドウ内に含まれるオブジェクトのすべてのバイトに依存する。このフィンガプリント関数は、例えばハッシュ関数(hash function)やラビン多項式(Rabin polynomial)など適切な任意の関数とすることができる。
チャンク境界は、選択された条件を満たす値になるまでこのフィンガプリント関数が計算するそのオブジェクト中の位置において決定される。このチャンクシグネチャは、暗号によるセキュアハッシュ関数(secure hash function)(SHA)、または衝突耐久性ハッシュ関数(collision−resistant hash function)など、他の何らかのハッシュ関数を使用して計算することができる。
ステップ4で送信されるこのシグネチャおよびチャンク長のリストは、この最初のチャンクとこの識別済みの更新された、または新しいチャンクの両方を使用してこのオブジェクトを再構築するための基礎を提供する。ステップ6で要求されるチャンクは、そのオフセットおよび長さによって識別される。このオブジェクトは、ステップ4でデバイスAが受信したシグネチャとそのシグネチャが同じ順序でマッチングするローカルチャンクおよびリモートチャンクを使用することによってデバイスA上で再構築される。
この再構築ステップがデバイスAによって完了された後に、オブジェクトOは、削除し、デバイスA上で再構築済みのオブジェクトOのコピーで置き換えることが可能である。他の実施形態においては、デバイスAは、将来のRDC転送中にチャンクを「再使用」する可能性のためにオブジェクトOをそのまま保持しておくこともできる。
大きなオブジェクトでは、例えオブジェクトOおよびオブジェクトOが、非常に近い、または同一であったとしても、図3Aに示す基本的なRDCプロトコルインスタンスが、ステップ4においてかなりの固定オーバヘッドを招く。平均のチャンクサイズCを想定すると、ステップ4においてこのネットワーク上で伝送される情報量は、オブジェクトOのサイズに比例し、特にこの情報量は、オブジェクトB、したがってステップ4で伝送される(チャンクシグネチャ,チャンク長)対のチャンク数となる、Cで分割されたオブジェクトOのサイズに比例する。
例えば、図6を参照すると、大きなイメージ(例えば、マイクロソフト仮想サーバ(Microsoft Virtual Server)などの仮想マシンモニタが使用する仮想ハードディスクイメージ)は、9.1GBのサイズのオブジェクト(O)をもたらし得る。3KBに等しい平均チャンクサイズCでは、この9GBのオブジェクトは、ステップ4でそのネットワーク上で送信する必要がある42MBの関連するシグネチャおよびチャンク長の情報を伴って、オブジェクトOについて生成される3百万個のチャンクをもたらすこともある。例えオブジェクトOとオブジェクトOの間の差分(および、したがってステップ7で送信する必要があるデータ量)が非常に小さいときでも、この42MBのシグネチャ情報をそのネットワーク上で送信する必要があるので、このプロトコルの固定オーバヘッドコストは、過剰に高いものになる。
この固定オーバヘッドコストは、ステップ4におけるシグネチャ情報転送の代わりにこのRDCプロトコルの再帰的適用を利用することによってかなり低減することができる。図3Bを参照して、その基本RDCアルゴリズムのステップ4を置き換える追加のステップ4.2〜4.8について、以下のように説明する。ステップ4.2〜4.8は、前述の基本的なRDCプロトコルのステップ2〜8の再帰的適用に対応する。この再帰的適用については、以下のステップ4.4に、また所望の任意の再帰性の深さまでなど、さらに適用することができる。
4.2.デバイスAは、そのシグネチャおよびチャンク長のリスト((SigA1,LenA1)...(SigAk,LenAk))の再帰的なシグネチャチャンクへの再帰的チャンキングを実施し、再帰的シグネチャおよび再帰的チャンク長の別のリスト((RSigA1,RLenA1)...(RSigAs,RLenAs))、を得る(ここでs<<k)。
4.3.デバイスBは、シグネチャおよびチャンク長のリスト((SigB1,LenB1)...(SigBn,LenBn))を再帰的にチャンキングして再帰的シグネチャおよび再帰的チャンク長のリスト((RSigB1,RLenB1)...(RSigBr,RLenBr))を生成する(ここでr<<n)。
4.4.デバイスBは、再帰的シグネチャおよび再帰的チャンク長の順序づけされたリスト((RSigB1,RLenB1)...(RSigBr,RLenBr))をデバイスAに送信する。この再帰的チャンクシグネチャおよび再帰的チャンク長のリストは、デバイスAに送信する前に、コンパクトに符号化され、可逆的圧縮アルゴリズムを使用してさらに圧縮することができる。
4.5.デバイスAは、ステップ4.2で計算した再帰的シグネチャのそれ自体のリストとデバイスBから受信したこの再帰的シグネチャを比較する。
4.6.デバイスAは、デバイスAがそのセット(RSigA1...RSigAs)中にマッチングする再帰的シグネチャをもたないあらゆる別個の(再帰的シグネチャRSigBkを有する)再帰的シグネチャチャンクを求める要求をデバイスBに送信する。
4.7.デバイスBは、この要求された再帰的なシグネチャチャンクをデバイスAに送信する。この要求された再帰的シグネチャチャンクは、デバイスAに送信する前に、可逆的圧縮アルゴリズムを使用してさらに圧縮することができる。
4.8.デバイスAは、このローカルにマッチングした再帰的シグネチャチャンク、およびステップ4.7でデバイスBから受信したこれらの再帰的チャンクを使用してシグネチャおよびチャンク情報のリスト((SigB1,LenB1)...(SigBn,LenBn))を再構築する。
以上のステップ4.8が完了した後に、前述のその基本的なRDCプロトコルのステップ5において実行が続行され、それについては図3Aに示されている。
再帰的チャンキング動作の結果、そのオブジェクトに関連する再帰的シグネチャの数は、その平均チャンクサイズCに等しいファクタだけ低減され、再帰的シグネチャのかなり小さな数がもたらされる(それぞれ、オブジェクトOについては<<、オブジェクトOについては<<となる)。一実施形態においては、最初のオブジェクトOおよびOをチャンキングするためのものと同じチャンキングパラメータを、これらのシグネチャをチャンキングするために使用することができる。代替実施形態においては、他のチャンキングパラメータを、再帰的ステップのために使用することができる。
非常に大きなオブジェクトでは、以上の再帰的ステップは、k≧1となるk回にわたって適用することができる。Cの平均チャンクサイズでは、再帰的チャンキングにより、このネットワーク(ステップ4.2ないし4.8)上でおよそCに対応するファクタだけこのシグネチャトラフィックのサイズを低減することができる。Cは、比較的大きいので、1よりも大きな再帰性深さは、非常に大きなオブジェクトについてのみ必要になり得る。
一実施形態においては、再帰的ステップ数は、以下の予想された平均チャンクサイズ、オブジェクトOおよび/またはOのサイズ、オブジェクトOおよび/またはOのデータフォーマット、デバイスAとデバイスBを接続するネットワークの待ち時間特性および帯域幅特性のうちの1つまたは複数を含むパラメータを考慮することによって動的に決定することができる。
ステップ2で使用されるフィンガプリント関数は、ステップ3で使用されるフィンガプリント関数にマッチングさせられる。同様に、ステップ4.2で使用されるフィンガプリント関数は、ステップ4.3で使用されるフィンガプリント関数にマッチングさせられる。ステップ2〜3からのフィンガプリント関数は、ステップ4.2〜4.3からのフィンガプリント関数にオプションとしてマッチングさせることができる。
以前に説明したように、各フィンガプリント関数は、そのオブジェクト中の位置を囲む小さなデータウィンドウを使用する。ここで、このフィンガプリント関数に関連する値は、このデータウィンドウの内側に含まれるこのオブジェクトのすべてのバイトに依存する。このデータウィンドウのサイズは、1つまたは複数の判断基準に基づいて動的に調整することができる。さらに、このチャンキングプロシージャは、このフィンガプリント関数の値と1つまたは複数の追加のチャンキングパラメータを使用して以上のステップ2〜3および4.2〜4.3においてこのチャンク境界を決定する。
ウィンドウサイズとチャンキングパラメータを動的に変更することにより、このチャンク境界は、どのような必要なデータ転送でもその使用可能な帯域幅を最小限に消費するだけで実現されるように調整される。
このウィンドウサイズとチャンキングパラメータを調整するための判断基準の実施例は、そのオブジェクトに関連するデータタイプ、環境制約、使用モデル、デバイスAとデバイスBとを接続するネットワークの待ち時間特性および帯域幅特性、および平均データ転送ブロックサイズを決定するための他の適切な任意のモデルを含んでいる。データタイプの実施例には、ワードプロセッシングファイル、データベースイメージ、スプレッドシート、プレゼンテーションスライドショー、およびグラフィックイメージが含まれる。使用モデルの一実施例には、典型的なデータ転送で必要とされるその平均バイト数が監視される場合もある。
アプリケーションプログラム内における1つの要素に対する変更が、その関連するデータおよび/またはファイルに対するいくつかの変更をもたらす可能性がある。ほとんどのアプリケーションプログラムは、関連するファイルタイプを有するので、このファイルタイプは、そのウィンドウサイズおよびそのチャンキングパラメータを調整するに際して考慮に値する可能性のある1つの判断基準である。一実施例においては、ワードプロセッシングドキュメントにおける1つのキャラクタの修正により、この関連するファイル中で約100バイトの変更がもたらされることになる。別の実施例においては、データベースアプリケーションにおける1つの要素の修正により、そのデータベース索引ファイル中で1000バイトの変更がもたらされることになる。各実施例では、その適切なウィンドウサイズおよびチャンキングパラメータは、このチャンキングプロシージャがその特定のアプリケーションに基づいて最適化される適切な細分性を有するように異なる場合もある。
プロセスフローの実施例
図4Aおよび4Bは、本発明の少なくとも一態様に従って構成される一実施例のRDCプロシージャ中のローカルデバイス(例えば、デバイスA)と、リモートデバイス(例えば、デバイスB)との間の対話についてのプロセスフローを示す図である。図4Aの左側は、このローカルデバイスA上で動作させられるステップ400〜413を示すが、一方、図4Aの右側は、このリモートデバイスB上で動作させられるステップ450〜456を示している。
図4Aに示すように、この対話は、ステップ400において、デバイスAがオブジェクトOのRDC転送を要求し、ステップ450において、デバイスBがこの要求を受信することによって開始される。これに続いて、このローカルデバイスAとリモートデバイスBは共に、それぞれステップ401および451において、フィンガプリントを独立に計算し、ステップ402および452において、それらの各オブジェクトをチャンクに分割し、ステップ403および453においてチャンクごとにシグネチャ(例えば、SHA)を計算する。
ステップ454において、デバイスBは、ステップ452および453で計算したそのシグネチャおよびチャンク長のリストをデバイスAに送信し、デバイスAは、ステップ404においてこの情報を受信する。
ステップ405において、ローカルデバイスAは、この要求されたチャンクリスト(REQUEST)を空リスト(Empty)に初期化し、このリモートチャンクについての追跡オフセットを0に初期化する。ステップ406において、ステップ404で受信されるそのリストから次の(シグネチャ,チャンク長)対(SigBi,LenBi)を考慮するために選択する。ステップ407において、デバイスAは、ステップ406で選択されたこのシグネチャSigBiがステップ403中にデバイスAが計算したシグネチャのどれかとマッチングするかどうかを検査する。シグネチャがマッチングする場合は、ステップ409から実行が続行される。シグネチャがマッチングしない場合には、ステップ408において、この追跡リモートチャンクオフセットおよびバイト長LenBiがその要求リストに追加される。ステップ409において、この追跡オフセットは、現行のチャンク長LenBi分だけ増分される。
ステップ410において、ローカルデバイスAは、ステップ404中に受信されたすべての(シグネチャ,チャンク長)対が処理されているかどうかをテストする。処理されていない場合には、ステップ406から実行が継続される。処理されている場合には、ステップ411において、このチャンク要求リストは、コンパクトな様式に適切に符号化され、圧縮され、リモートデバイスBに送信される。
ステップ455において、リモートデバイスBは、この圧縮されたチャンクリストを受信し、ステップ456においてこのチャンクリストを伸張し、次いでこのチャンクデータを圧縮し返送する。
ステップ412において、このローカルデバイスは、この要求されたチャンクデータを受信し伸張する。ステップ413において、オブジェクトOのローカルコピーと受信されたチャンクデータとを使用して、このローカルデバイスは、Oのローカルコピーを再組立てする。
図4Bは、図4Aからのステップ413についての詳細な実施例を示している。処理がステップ414から継続され、このステップにおいて、ローカルデバイスAは、この再構築されたオブジェクト(NEWOBJECT)を空(Empty)に初期化する。
ステップ415において、次の(シグネチャ,チャンク長)対(SigBi,LenBi)がステップ404で受信されたリストから考慮するために選択される。ステップ416において、デバイスAは、ステップ417中で選択されたシグネチャSigBiが、ステップ403中にデバイスAが計算したシグネチャのどれかとマッチングするかどうかを検査する。
シグネチャがマッチングする場合、ステップ417から実行が継続され、このステップではその対応するローカルチャンクがその再構築済みのオブジェクトに追加される。シグネチャがマッチングしない場合には、ステップ418において、この受信され伸張されたリモートチャンクが、この再構築済みのオブジェクトに追加される。
ステップ419においては、ローカルデバイスAは、ステップ404で受信されたすべての(シグネチャ,チャンク長)対が処理されているかどうかをテストする。処理されていない場合、ステップ415から実行が継続される。処理されている場合には、ステップ420において、この再構築済みのオブジェクトを使用してデバイスA上のオブジェクトOの以前のコピーを置き換える。
実施例の再帰的シグネチャ転送プロセスフロー
図5Aおよび5Bは、本発明の少なくとも一態様に従って構成されるRDCプロシージャの一実施例におけるそのシグネチャおよびチャンク長のリストの再帰的な転送についてのプロセスフローを示す図である。以下で説明するプロシージャは、一般的に関連するオブジェクトを更新しようと試みるローカルデバイスとリモートデバイスの両方に対して適用することができる。
図5Aの左側は、このローカルデバイスA上で動作させられるステップ501〜513を示すが、一方、図5Aの右側は、このリモートデバイスB上で動作させられるステップ551〜556を示している。ステップ501〜513は、図4A中のステップ404を置き換えるが、ステップ551〜556は、図4A中のステップ454を置き換えるものである。
ステップ501および551において、これらのローカルデバイスAとリモートデバイスBは共に、それぞれステップ402/403と452/453で計算されているそのシグネチャおよびチャンク長のリスト((SigA1,LenA1)...(SigAk,LenAk))と((SigB1,LenB1)...(SigBn,LenBn))の再帰的フィンガプリントを独立に計算する。これらのデバイスは、それぞれステップ502および552において、それらの各シグネチャおよびチャンク長のリストを再帰的チャンクに分割し、ステップ503および553において、再帰的チャンクごとに再帰的シグネチャ(例えば、SHA)を計算する。
ステップ554において、デバイスBは、このステップ552および553で計算された再帰的なシグネチャおよびチャンク長のリストをデバイスAに送信し、このデバイスAは、ステップ504において、この情報を受信する。
ステップ505において、ローカルデバイスAは、この要求された再帰的チャンクリスト(REQEST)を空リスト(Empty)に初期化し、このリモート再帰的チャンクについてのこの追跡リモート再帰的オフセット(ROFFSET)を0に初期化する。ステップ506において、次の(再帰的シグネチャ,再帰的チャンク長)対(RSigBi,RLenBi)が、考慮するために、ステップ504で受信されたリストから選択される。ステップ507において、デバイスAは、ステップ506で選択されたこの再帰的シグネチャRSigBiがステップ503中にデバイスAが計算したその再帰的シグネチャのどれかとマッチングするかどうかを検査する。シグネチャがマッチングする場合、ステップ509から実行が継続される。シグネチャがマッチングしない場合には、ステップ508において、この追跡リモート再帰的チャンクオフセットおよびバイト長RLenBiが、その要求リストに追加される。ステップ509において、この追跡リモート再帰的オフセットは、現行の再帰的チャンク長RLenBi分だけ増分される。
ステップ510において、ローカルデバイスAは、ステップ504で受信されたすべての(再帰的シグネチャ,再帰的チャンク長)対が、処理されているかどうかをテストする。処理されていない場合、ステップ506から実行が継続される。処理されている場合には、ステップ511において、この再帰的チャンク要求リストは、コンパクトに符号化され、圧縮され、リモートデバイスBに送信される。
このリモートデバイスBは、ステップ555において、再帰的チャンクのその圧縮されたリストを受信し、そのリストを伸張し、次いでステップ556においてこの再帰的チャンクデータを圧縮し返送する。
ステップ512において、このローカルデバイスは、この要求された再帰的チャンクデータを受信し伸張する。ステップ513において、そのシグネチャおよびチャンク長のリスト((SigA1,LenA1)...(SigAk,LenAk))のそのローカルコピーとこの受信された再帰的チャンクデータとを使用して、このローカルデバイスは、そのシグネチャおよびチャンク長のリスト((SigB1,LenB1)...(Sig Bn ,LenBn))のローカルコピーを再組立てする。次いで、図4A中のステップ405から実行が継続される。
図5Bは、図5Aからのステップ513についての詳細な実施例を示している。処理は、ステップ514から継続され、このステップにおいて、このローカルデバイスAは、リモートシグネチャおよびチャンク長のリストSIGCLを空リストに初期化する。
ステップ515において、次の(再帰的シグネチャ,再帰的チャンク長)対(RSigBi,RLenBi)が、考慮するために、ステップ504で受信されたリストから選択される。ステップ516において、デバイスAは、ステップ515で選択された再帰的シグネチャRSigBiが、ステップ503中にデバイスAが計算した再帰的シグネチャのどれかとマッチングするかどうかを検査する。
シグネチャがマッチングする場合、ステップ517から実行が継続され、このステップにおいてデバイスAは、対応するローカル再帰的チャンクをSIGCLに追加する。シグネチャがマッチングしない場合には、ステップ518において、このリモート受信された再帰的チャンクがSIGCLに追加される。
ステップ519において、このローカルデバイスAは、ステップ504で受信されたすべての(再帰的シグネチャ,再帰的チャンク長)対が処理されているかどうかをテストする。処理されていない場合、ステップ515から実行が継続される。処理されている場合には、ステップ520において、このシグネチャおよびチャンク長のリスト((SigB1,LenB1)...(SigBk,LenBn))のローカルコピーが、SIGCLの値に設定される。次いで、図4A中のステップ405に戻って実行が継続される。
この再帰的シグネチャおよびチャンク長のリストをオプションとして評価して、前述のように帯域幅の利用を最小にするために追加の再帰的遠隔差分圧縮が必要かどうかが決定される。この再帰的シグネチャおよびチャンク長のリストは、ステップ504および554をこのRDCプロシージャの別のインスタンスなどで置き換えることにより、所望の圧縮レベルが達成されるまでこの説明したチャンキングプロシージャを使用して再帰的に圧縮することができる。この再帰的なシグネチャリストが十分に圧縮された後に、前述のようにこのリモートデバイスとローカルデバイスの間で伝送するために、この再帰的なシグネチャリストが返される。
図6は、例示の本発明の実施形態に従って構成されるRDCシーケンスの実施例における再帰的圧縮の実施例を図示した図である。図6に示す実施例では、最初のオブジェクトは、9.1GBのデータである。シグネチャおよびチャンク長のリストは、チャンキングプロシージャを使用してコンパイルされ、ここでこのシグネチャおよびチャンク長のリストにより、3百万個のチャンク(または、42MBのサイズ)がもたらされる。第1の再帰的ステップの後に、このシグネチャリストは、3万3千個のチャンクに分割され、33KBのサイズの再帰的シグネチャおよび再帰的チャンク長のリストにまで減少する。このシグネチャリストを再帰的に圧縮することにより、このシグネチャリストを転送するための帯域幅利用率は、したがって42MBから395KBに劇的に減少する。
オブジェクト更新の実施例
図7は、本発明の少なくとも一態様に従って構成されるRDCプロシージャの一実施例を使用したクライアントアプリケーションとサーバアプリケーションの対話を示す図である。サーバとクライアントの両方の上の最初のファイルは、テキスト「The quick fox jumped over the lazy brown dog. The dog was so lazy that he didn't notice the fox jumping over him.(すばやい狐は、のろまな茶色の犬の上を飛び越えた。この犬はあまりにものろまだったので、狐が自分の上を飛び越えたことに気がつかなかった。)」を含んでいた。
後続の時刻において、このサーバ上のこのファイルは、「The quick fox jumped over the lazy brown dog. The brown dog was so lazy that he didn't notice the fox jumping over him.(すばやい狐は、のろまな茶色の犬の上を飛び越えた。この茶色の犬はあまりにものろまだったので、狐が自分の上を飛び越えたことに気がつかなかった。)」に更新される。
以前に説明したように、このクライアントは、このファイルが更新されるように定期的に要求する。これらのクライアントおよびサーバは共に、このオブジェクト(テキスト)を図に示すようにチャンクにチャンキングする。このクライアント上では、それらのチャンクは、「The quick fox jumped」、「over the lazy brown dog.」、「The dog was so lazy that he didn’t notice」、および「the fox jumping over him.」であり、このクライアントシグネチャリストは、SHA11、SHA12、SHA13、およびSHA14として生成される。このサーバ上では、それらのチャンクは、「The quick fox jumped」、「over the lazy brown dog.」、「The brown dog was」、「so lazy that he didn’t notice」、および「the fox jumping over him.」であり、このサーバシグネチャリストは、SHA21、SHA22、SHA23、SHA24、およびSHA25として生成される。
このサーバは、以前に説明したような再帰的シグネチャ圧縮技法を使用してこのシグネチャリスト(SHA21〜SHA25)を送信する。このクライアントは、そのローカルに記憶済みのシグネチャリスト(SHA11〜SHA14)が、その受信されたシグネチャリスト(SHA21〜SHA25)にマッチングしないことを認識し、このサーバからの不足しているチャンク3および4を要求する。このサーバは、チャンク3および4(「The brown dog was」および「so lazy that he didn’t notice」)を圧縮し送信する。このクライアントは、図7に示すように、これらの圧縮されたチャンクを受信し、それらを伸張し、そのファイルを更新する。
チャンキング解析
前述のこの基本的なRDCプロシージャの有効性は、このオブジェクトデータをチャンキングし、かつ/またはこのシグネチャおよびチャンク長のリストをチャンキングするために使用されるチャンキングプロシージャを最適化することによって増大させることができる。
この基本的なRDCプロシージャは、以下の合計に一致するネットワーク通信オーバヘッドコストを有する。
(S1)|Bからのシグネチャおよびチャンク長|=|O|×|SigLen|/C、式中で|O|は、オブジェクトOのバイトサイズであり、SigLenは、(シグネチャ,チャンク長)対のバイトサイズであり、Cは、予想される平均チャンクのバイトサイズであり、
(S2)Σchunk_length、式中で(signature,chunk_length)∈Bからのシグネチャ、および
Figure 0004796315
である。
したがってこの通信コストは、大きな平均チャンクサイズ、ならびにこのリモートチャンクとローカルチャンクの間の大きな共通部分からの恩恵を受ける。どのようにしてオブジェクトをチャンクに切り分けるかの選択が、このプロトコルの品質を決定する。このローカルデバイスとリモートデバイスは、事前の通信なしにどこでオブジェクトを切り分けるかについて合意する必要がある。以下は、切れ目(cut)を見出すための様々な方法を説明し解析している。
以下の特性が、このカッティングアルゴリズム(cutting algorithm)について知られているものと想定する。
1.スラック(slack):異なるファイル間でチャンクを一致させるために必要なバイト数。s1、s2、およびs3を考慮して、連結によって2つのシーケンスs1s3、およびs2s3を形成する。これら2つのシーケンスについてのチャンク、Chunks1およびChunks2を生成する。Chunks1’およびChunks2’が、それぞれChunks1およびChunks2からのチャンク長の和である場合、第1の共通の接尾辞に到達するまで、バイトのスラックは、以下の式によって与えられる。
slack=Chunks’−|s|=Chunks’−|s
2.平均チャンクサイズC:
オブジェクトOおよびOが、平均サイズKを共通にもつS個のセグメントを有するとき、このクライアント上でローカルに取得することができるチャンク数は、次式で与えられる。
Figure 0004796315
前記(S2)は、以下のように書き換えられる。
Figure 0004796315
したがって、スラックを最小化するチャンキングアルゴリズムは、このワイヤ上で送信されるバイト数を最小化することになる。したがって、この予想されるスラックを最小化するチャンキングアルゴリズムを使用することが有利である。
フィンガプリント関数
すべてのチャンキングアルゴリズムは、スモールウィンドウ(小型のウィンドウ)、すなわち限られたバイトシーケンスに依存するフィンガプリント関数またはハッシュを使用する。これらのアルゴリズムが有限の差分(強度削減)最適化に従うとき、チャンキングのために使用されるハッシュアルゴリズムの実行時間は、このハッシュウィンドウサイズから独立している。したがって、サイズkのハッシュウィンドウでは、b、b、および#[b,b,...,bk−1]だけを使用してそのハッシュ#[b,...,bk−1,b]を計算することは簡単な(一定のステップ数しか必要としない)はずである。ラビン多項式を使用したハッシュ関数や、あらかじめ計算済みの乱数テーブルに基づいた計算上より効率的に見える他のハッシュ関数など、様々なハッシング関数(hashing function)を使用することができる。
一実施例においては、ローリングチェックサム(rolling checksum)に基づいた32ビットのアドラーハッシュ(Adler hash)をフィンガプリントのためのハッシング関数として使用することができる。このプロシージャでは、それぞれあらかじめ計算済みの16ビットの乱数の256エントリを有する固定テーブルを使用することによって妥当で良好なランダムハッシュ関数が提供される。このテーブルを使用してフィンガプリントバイトがランダムな16ビットの数に変換される。この32ビットのハッシュが2つの16ビットの数sum1およびsum2に分割され、これらは、以下のプロシージャを想定して更新される。
sum1+=table[b]−table[b
sum2+=sum1−k×table[b
他の実施例においては、循環シフティング(cyclic shifting)を伴う64ビットのランダムハッシュは、フィンガプリントのためのハッシング関数として使用することができる。循環シフトの周期は、そのハッシュ値のサイズによって縛られる。したがって、64ビットのハッシュ値の使用によって、このハッシュの周期は64に設定される。このハッシュを更新するためのプロシージャは、次式で与えられる。
hash=hash^((table[b]<<l)|(table[b]>>u))^table[b];
hash=(hash<<l)|(hash>>63);
式中でl=k%64、およびu=64−l
さらに他の実施例においては、他のシフティング手法を使用してフィンガプリントを提供することができる。直接的循環シフティングは、限られた長さの周期を生成し、そのハッシュ値のサイズによって縛られる。他の順列は、より長い周期を有する。例えば、循環が提供する順列、(1 2 3 0)(5 6 7 8 9 10 11 12 13 14 4)(16 17 18 19 20 21 15)(23 24 25 26 22)(28 29 27)(31 30)は長さ4×3×5×7×11=4620の周期を有する。この実施例の順列の1つの適用では、各間隔の先頭における位置にパッチアップ(patch up)する動作が後に続く右シフトを使用して計算することができる。
所定のパターンにおいてチャンキングするための以前の技術の解析
以前のチャンキング手法では、所定のウィンドウサイズk(=48)を有するフィンガプリントハッシュを計算し、ハッシュビットのサブセットが所定のパターンとマッチングするかどうかに基づいてカットポイントを識別することによって決定される。ランダムハッシュ値を用いると、このパターンは、同様に0となることもあり、これに関連するサブセットも同様にこのハッシュの接頭辞になることもある。基本的な命令においては、これは、以下の形式の述語に変換される。
CutPoint(hash)≡0==(hash&((1<<c)−1))
式中、cはマッチングさせるべきビット数である。
ランダムハッシュ関数の与えられたマッチングについての確率が2−Cであるので、平均チャンクサイズC=2がもたらされる。しかし、最小チャンクサイズも最大チャンクサイズもこのプロシージャによっては決定されない。mの最小チャンク長が定められる場合には、平均チャンクサイズは、次のようになる。
C=m+2
この予想されるスラックの大まかな推定値は、ストリームsおよびsを考慮することによって得られる。sおよびsにおけるカットポイントは、どのような位置に現れてもよい。平均チャンク長は、C=m+2であるので、sおよびsにおける最後のカットポイントの(2/C)付近では、距離mを超えることになる。これらは、およそ2におけるスラックに寄与することになる。この残りの1−(2/C)は約Cの長さのスラックで寄与する。その場合には、この予想されるスラックは、およそ(2/C)+(1−(2/C))×(C/C)=(2/C)+1−(2/C)となり、これは、m=2C−1についてグローバル最小値を有し、約23/27=0.85の値を有する。より正確な解析では、残りの1−(2/C)端数部についていくらか小さな推定値が提供されるが、s内側の距離mの内部のカットについて補償する必要があることにもなり、これはより大きな推定値に寄与する。
したがって、従来技術についての予想されるスラックは、約0.85×Cとなる。
フィルタにおけるチャンキング(新しい技術)
フィルタにおけるチャンキングは、長さmのパターンシーケンスとなっているフィルタを修正し、このフィルタに対してフィンガプリントハッシュシーケンスをマッチングさせることに基づいている。このフィルタが、ハッシュシーケンスをこのフィルタの接頭辞にも接尾辞にもマッチングさせないときには、任意の2つのマッチング部間の最小距離が、少なくともmになる必要があることが推論できる。フィルタの一実施例は、以前の技術で使用されたカットポイント述語から、最初のm−1個のパターンを次式のように設定し、
0!=(hash&((1<<c)−1))
また最後のパターンを次式のように
0==(hash&((1<<c)−1))
設定することによって得ることができる。
このフィルタをマッチングさせる確率は、(1−p)m−1pで与えられ、式中でpは2−Cである。この予想されるチャンク長が、フィルタをマッチングさせる確率の逆数によって与えられることを算出することができ(このフィルタが、シーケンスが接頭辞にも接尾辞にもマッチングさせないようにする必要がある)、したがってこの実施例のフィルタの予想される長さは、(1−p)−m+1−1となる。この長さは、p:=1/mを設定する際に最小になり、これは約(e×m)であることが分かる。この平均スラックは、約0.8付近にあり、当業者なら検証することができよう。この方法の代替実施形態は、生入力を用いて直接に機能するパターンを使用し、ローリングハッシュは使用していない。
極大におけるチャンキング(新しい技術)
極大(Local Maxima)におけるチャンキングは、縛られたホライズン内部で最大となるカットポイント位置として選択することに基づいている。以下では、本発明者らは、ホライズン値についてはhを使用することにする。offset−h、...、offset−1、ならびにoffset+1、...、offset+hにおけるハッシュ値がすべて、offsetにおけるハッシュ値よりも小さい場合には、位置offsetにおけるハッシュは、h−極大であると言う。換言すれば、hステップ左からhステップ右までのすべての位置が、より小さなハッシュ値を有する。極大は、極小または(メジアンハッシュ値に対する「最近接」(closest to the median hash value)など)比較に基づく他の任意の距離で置き換えることもできることが当業者には理解されよう。
サイズnのオブジェクトについての極大の組は、この極大の組を計算するコストが独立なチャンキングに基づいてこのカットポイントを計算するコストと近いか、または同じになるように2・n個の演算によって縛られる時間内で計算することができる。極大を使用して生成されるチャンクは常に、約2h+1の平均サイズを伴い、hに対応する最小サイズを有する。CutPointプロシージャを、図8および9に示し、これについて次のように以下に説明する。
1.エントリがレコード{isMax=false,hash=0,offset=0}で開始される長さhのアレイMを割り付ける。各フィールド中の第1のエントリ(isMax)は、候補が極大になりうるかどうかを示す。第2のフィールドエントリ(hash)は、そのエントリに関連するハッシュ値を示し、0(またはその代わりに、可能な極大ハッシュ値)に初期化される。このエントリ中の最後のフィールド(offset)は、このフィンガプリントオブジェクトへの候補に対するバイトでの絶対オフセットを示す。
2.アレイMへのオフセット最小値および最大値を0に初期化する。これらの変数は、現在使用されているこのアレイの最初の要素および最後の要素を指し示す。
3.CutPoint(hash,offset)は、図8のステップ800から開始され、このオブジェクトの各オフセットで呼び出されてMを更新し、特定のオフセットがカットポイントであるかどうかを示す結果を返す。
このプロシージャはステップ801においてresult=falseを設定することによって開始される。
ステップ803において、このプロシージャは、M[max].offset+h+1=offsetが成立するかどうかを検査する。この条件が真である場合、ステップ804から実行が継続され、このステップで以下の割当てが実施される。すなわち、結果がM[max].isMaxに設定され、maxがmax−1%hに設定される。次いでステップ805から実行が継続される。ステップ803における条件が偽である場合には、ステップ805から実行が継続される。
ステップ805において、このプロシージャは、M[min].hash>hashが成立するかどうかを検査する。この条件が真である場合、ステップ806から実行が継続され、ここで、minが(min−1)%hに設定される。ステップ807から実行が継続され、ここでM[min]は、{isMax=false,hash=hash,offset=offset}に設定され、ステップ811に進み、ここで計算結果が返される。
ステップ805における条件が偽である場合には、ステップ808から実行が継続され、ここでこのプロシージャはM[min].hash=hashが成立するかどうかを検査する。この条件が真である場合、ステップ807から実行が継続される。
ステップ808における条件が偽である場合には、ステップ809から実行が継続され、ここでこのプロシージャは、min=maxが成立するかどうかを検査する。この条件が真である場合、ステップ810から実行が継続され、ここでM[min]は、{isMax=true,hash=hash,offset=offset}に設定される。次いで、ステップ811から実行が継続され、ここでその計算結果が返される。
ステップ809における条件が偽である場合には、ステップ812から実行が継続され、ここでminは、(min+1)%hに設定される。次いでステップ805に戻って実行が継続される。
4.CutPoint(hash,offset)が真値を返すときには、それは、位置offset−h−1におけるオフセットが新しいカットポイントになる場合のはずである。
極大プロシージャの解析
nバイトを有するオブジェクトは、所与のオブジェクトについて多くてもn個のエントリが挿入されるようにCutPointをn回呼び出すことによって処理される。n個より多いエントリを削除することがないように、ステップ805から開始されるループが反復されるたびに1つのエントリが除去される。したがって、この処理ループは、あらゆるエントリについて一度しか入ることができず、反復の結合回数は、多くてもn回とすることができる。これは、CutPointに対する各呼出しにおけるループ内のステップの平均数が2よりわずかに少なく、カットポイントを計算するステップ数が、hからは独立していることを意味する。
これらの要素からのハッシュ値は、minとmaxの間の降順チェーンを形成するので、minとmaxの間の平均距離(|min−max|%h)は、hの自然対数によって与えられることが分かる。M中の2つの隣接エントリの間に含まれないオフセットは、これら2つのエントリ以下のハッシュ値を有する。かかるチェーンの平均長は、漸化式f(n)=1+1/n×Σk<nf(k)によって与えられる。長さnの間隔上の最長の降順チェーンの平均長は、最大要素の位置から開始されるこの最長の降順チェーンの平均長よりも1だけ大きく、ここでこの最大要素は、任意の位置において確率1/nで見出すことができる。この循環関係は、調和次数に対応する解としてH=1+1/2+1/3+1/4+....+1/nを有し、この式は、この式にHを代入し、nについての帰納法を実施することによって正当性を検証することができる。Hはnの自然対数に比例している。したがって、アレイMにはサイズhが割り付けられているが、どんなときにもサイズの小さな端数部ln(h)しか使用されない。
法hを用いてminおよびmaxを計算することにより、これらの数の間の距離がh内にとどまる限りは、Mの使用間隔を任意に大きくすることが可能である。
Mについての初期値の選択は、カットポイントがこの最初のhオフセット内で生成できることを意味する。このアルゴリズムでは、これらの最初のhオフセットにおけるカットポイントを回避するようにすることもできる。
このプロシージャが生成するチャンクの予想されるサイズは、約2h+1である。所与の位置がカットポイントであるというその確率からこの数字が得られる。このハッシュがm個の可能な異なる値を有するものと想定する。その場合には、この確率は次式によって決定される。
Σ0≦k<m1/m(k/m)2h
積分∫0≦x<m1/m(x/m)2hdx=1/(2h+1)を使用した近似は、mが十分に大きいときのこの確率を示している。
この確率は、まずこの和を次式に簡略化することによってさらに高精度に計算することができる。
(1/m)2h+1Σ0≦k<m2h
この式は、ベルヌーイ数(Bernoulli number)Bを使用して次式に展開される。
(1/m)2h+11/(2h+1)Σ0≦k<2h(2h+1)!/k!(2h+1−k)!B2h+1−k
非ゼロの唯一の奇数のベルヌーイ数は、Bであり、これは−1/2の対応する値を有する。偶数のベルヌーイ数は、次式を満たす。
(2n)=(−1)n−12n−1π2n2n/(2n)!
この左辺は無限の和1+(1/2)2n+(1/3)2n+...,を表し、これは、nのちょうど穏当な値については、1に非常に近くなる。
mがhに比べてずっと大きいときには、積分によって分かったように、第1の項以外のすべての項を無視することができる。これらは、hk−1/mに比例する項で0と1の間の定数に乗ずることによって与えられる。第1項(ここでは、B=1)は、1/(2h+1)に簡略化される。(第2項は−1/(2m)であり、第3項はh/(6m)である)。
この予想されるスラックの概略推定値については、ストリームsおよびsを考慮する。sおよびsの内側の最後のカットポイントは、どのような位置に現れてもよい。平均チャンク長は約2h+1であるので、最後のカットポイントの約1/4までは、sでもsでも距離hの範囲内にあることになる。これらは、約7/8hにおけるカットポイントに寄与する。他の1/2の場合においては、一方のカットポイントは、距離hの範囲内にあり、他方は、距離hを超えている。これらは、約3/4hのカットポイントで寄与する。sおよびsの最後のカットポイントの残りの1/4は、hよりも長い距離にあることになる。したがって、この予想されるスラックは、約1/4×7/8+1/2×3/4+1/4×1/4=0.66になる。
したがって、発明者らの独立なチャンキング手法についての予想されるスラックは、0.66×Cとなり、これは、従来技術(0.85×C)よりも改善されている。
h、または平均してlnhにせいぜい比例するスペースを使用しながら、平均して少ない命令しか実行する必要のない、カットポイントを識別する代替手法が存在する。以上のプロシージャでは、長さnのストリーム中のあらゆる位置0..n−1ごとにエントリが挿入される。代替プロシージャにおける基本的なアイデアは、長さhの間隔内の昇順チェーンの要素に出合う際にしか更新を行わないことである。発明者らは、間隔当たりに平均してlnhのこのような更新しか存在しないことを観察した。さらに、長さhの2つの連続した間隔中で極大を比較することにより、これら2つの極大のそれぞれが、h極大にもなり得るかどうかを決定することができる。この代替プロシージャには、1つの特殊性がある。この代替プロシージャは、各ブロックが逆方向にトラバース(traverse)される、サイズhのブロック中でこのストリームをトラバースすることによってその昇順チェーンを計算する必要がある。
代替プロシージャ(図10および11参照)においては、簡潔に説明するためにハッシュのストリームがシーケンスとして提供されると想定している。このサブルーチンCutPointは、(図中で「horizon」に展開された)長さhのサブシーケンスごとに呼び出される。このサブルーチンは、0またはカットポイントであると決定された1つのオフセットを返す。Insertに対する呼出しのln(h)だけがこの最初のテストに合格することになる。
Aへの挿入は、それまでのA中の最大のエントリに対してこのオフセットにおけるそのハッシュ値をテストすることによって達成される。
A[k]もB[k].isMaxも共に更新するループは、平均してそのループ本体において1つのテストしか実施されないように最適化することができる。B[1].hash<=A[k].hash、およびB[1].isMaxのこのケースは、2つのループで処理され、この第1のものは、その第2の更新A[k]よりも小さくなくなるまでB[1].hashに対してそのハッシュ値を検査する。他方のケースは、B[1].isMaxへの更新が続くA[k]しか更新しないループを使用して処理することができる。
CutPointに対する各呼出しは、Aに対して平均でlnh回のメモリ書込みを必要とし、極大を見出すことに関連したh+lnh回の比較を行うループを伴う。A[k].isMaxに対する最後の更新は、バイナリ探索によって、またはインデックス0から開始して平均して多くてもloglnh回のステップでBをトラバースすることによって実施することができる。CutPointに対する各呼出しは、更新されるウィンドウ中の最後の位置におけるそのローリングハッシュを再計算することも必要とする。これは、そのローリングハッシュウィンドウのサイズだけの多数のステップを必要とする。
改善されたチャンキングアルゴリズムの観察された利点
前述の極大手法とフィルタ手法では共に、最小のチャンクサイズが構築される。従来技術の実装形態では、最小のチャンクサイズには、追加のパラメータを別に供給することが必要になる。
この極大(または数学)ベースの手法では、測定可能なより良好なスラック推定値が生成され、この推定値は変換されてこのネットワーク上でさらに圧縮される。フィルタ手法でも、従来技術の方法に比べてより良好なスラック性能が生成される。
これらの新しい方法は共に、カットポイントの局所特性を有する。ホライズンを超えるs3の内側のすべてのカットポイントは、ストリームs1s3とs2s3の両方についてのカットポイントになる。(換言すれば、ストリームs1s3を考慮すると、pが≧|s1|+horisonとなる位置であり、pがs1s3中のカットポイントである場合には、pは、s2s3中のカットポイントでもある。この同じ特性が他の方向についても(対称的に)当てはまり、pがs2s3中のカットポイントである場合には、pは、s1s2中のカットポイントにもなる)。以上は、従来技術の方法では成り立たず、従来の方法では、カットがある最小のチャンクサイズを超えるという要件が、不利に妨害し合うこともある。
代替的な数学関数
前述のチャンキングプロシージャは、極大計算を使用してカットポイントを位置づける手段について説明しているが、本発明は、それだけには限定されない。任意の数学関数を構成して可能性のあるカットポイントを検査することができる。可能性のある各カットポイントは、考慮されたカットポイントについてのホライズンウィンドウ内に配置されたハッシュ値を評価することによって評価される。このハッシュ値の評価は、このホライズン内の最大値の位置を見つけるステップ、このホライズン内の最小値の位置を見つけるステップ、ハッシュ値の間の差分を評価するステップ、任意の定数に対してその結果を比較するステップのうちの少なくとも1つを含み得る数学関数、ならびに他の何らかの数学関数または統計的関数によって達成される。
極大について以前に説明した特定の数学関数は、2項の述語「_>_」である。pがこのオブジェクト中のオフセットであるケースでは、hash>hashがすべてのkについて成立し、ここでp−horizon≦k<p、またはp<k≦p+horizonである場合には、pはカットポイントとして選択される。しかし、この2項の述語>は、本発明の趣旨を逸脱することなく他の任意の数学関数で置き換えることができる。
以上の本明細書、実施例、およびデータは、本発明の製造および構成物の使用についての完全なる記述を提供している。本発明の多数の実施形態は、本発明の趣旨および範囲を逸脱することなく作成することができるので、本発明は、添付の特許請求の範囲内に存在している。
上述したように、本発明において、オブジェクトは、必要なデータ転送が最小化されるように遠隔差分圧縮(RDC)手法を使用して2つ以上のコンピューティングデバイスの間で更新される。一態様においては、効率的な大きなオブジェクトの転送が、それ自体のメタデータに対してこのRDCアルゴリズムを再帰的に適用することによって達成される。すなわち、1つまたは複数の再帰的ステップをこのケースにおいて使用してこのRDCアルゴリズムによってこのネットワーク上で送信されるメタデータの量を減少させることができる。オブジェクト、および/または、シグネチャおよびチャンク長リストを、動的に決定されたロケーションに境界を位置づけることによってチャンキングすることができる。数学関数が、可能性のあるチャンク境界に関連してホライズンウィンドウ内に関連づけられたハッシュ値を評価する。従って、本発明の方法およびシステムは、ピアツーピアレプリケータ、電子メールクライアントおよび電子メールサーバ、クライアント側キャッシングシステム、汎用コピーユーティリティ、データベースレプリケータ、ポータル、ソフトウェア更新サービス、ファイル/データ同期化など様々なネットワーク化されたアプリケーションにおいて有用である。
本発明に係わる動作環境を示す図である。 本発明に従うコンピューティングデバイスの一実施例を示す図である。 本発明に従うRDCプロシージャの一実施例を示す図である。 本発明に従うRDCプロシージャの一実施例を示す図である。 本発明に従うRDCプロシージャの一実施例中における、ローカルデバイスとリモートデバイスの間の対話についてのプロセスフローを示す図である。 本発明に従うRDCプロシージャの一実施例中における、ローカルデバイスとリモートデバイスの間の対話についてのプロセスフローを示す図である。 本発明に従うRDCプロシージャ中における対話の一実施例におけるシグネチャおよびチャンク長のリストの再帰的遠隔差分圧縮についてのプロセスフローを示す図である。 本発明に従うRDCプロシージャ中における対話の一実施例におけるシグネチャおよびチャンク長のリストの再帰的遠隔差分圧縮についてのプロセスフローを示す図である。 本発明に従うRDCシーケンスの一実施例における再帰的圧縮の一実施例を図示する図である。 本発明に従うRDCプロシージャの一実施例を使用した、クライアントアプリケーションとサーバアプリケーションの対話を示す図である。 本発明に従うチャンキングプロシージャの一実施例についてのプロセスフローを示す図である。 本発明に従うチャンキングプロシージャの一実施例についての命令コードの実施例を示す図である。 本発明の少なくとも一態様に従って構成されるチャンキングプロシージャの他の実施例についての命令コードの他の実施例を示す図である。 本発明の少なくとも一態様に従って構成されるチャンキングプロシージャの他の実施例についての命令コードの他の実施例を示す図である。
符号の説明
100 デバイスA
101 デバイスB
102 ネットワーク
200 コンピューティングデバイス
202 処理装置
204 システムメモリ
205 オペレーティングシステム
206 プログラムモジュール
207 プログラムデータ
209 着脱可能ストレージ
210 着脱不能ストレージ
212 1つ(または複数)の入力デバイス
214 1つ(または複数)の出力デバイス
216 1つ(または複数)の通信接続
218 他のコンピューティングデバイス

Claims (44)

  1. ローカルデバイスとリモートデバイスとの間で、ネットワーク上でオブジェクトを更新するためのシステムであって、該システムは、
    前記ネットワーク上でオブジェクトの更新を円滑に行うよう配設されたリモートデバイスを含み、該リモートデバイスは、
    前記ネットワーク上で通信を円滑に行うように配設された第1のネットワーク接続デバイスと、
    第1のオブジェクトを記憶するように配設された第1のデータストーアと、
    前記第1のデータストーアと前記第1のネットワーク接続デバイスとに連結する第1のプロセッサとを含み、該第1のプロセッサは、
    前記リモートデバイス上の前記第1のオブジェクトのバイトオフセットごとに第1のフィンガプリント関数を計算し、
    前記第1のフィンガプリント関数に基づいて前記リモートデバイス上の前記第1のオブジェクトをチャンキングし、
    前記リモートデバイス上で前記第1のオブジェクトに関連するチャンクごとにリモートシグネチャを計算し、
    前記リモートデバイス上で前記第1のオブジェクトに関連するリモートのシグネチャおよびチャンク長のリストを生成し、
    前記リモートのシグネチャおよびチャンク長のリストを前記第1のネットワーク接続デバイスを用いて前記ネットワークへ送信し、
    少なくとも1つの更新されたオブジェクトチャンクを送信するための前記ネットワークからの要求を前記第1のネットワーク接続デバイスを用いて受信し、かつ
    前記ネットワーク上に少なくとも1つの更新されたオブジェクトチャンクを送信するように設定されており、
    前記システムはさらに、前記リモートデバイスと有効な通信をして前記ネットワーク上にオブジェクトを円滑に更新するローカルデバイスを含み、該ローカルデバイスは、
    前記ネットワーク上で通信を円滑に行うように配設された第2のネットワーク接続デバイスと、
    第2のオブジェクトを記憶するように配設された第2のデータストーアと、
    前記第2のデータストーアと前記第2のネットワーク接続装置とに連結する第2のプロセッサとを含み、該第2のプロセッサは、
    前記ローカルデバイス上で前記第2のオブジェクトのバイトオフセットごとに第2のフィンガプリント関数を計算し、前記第1および第2のオブジェクトが互いに関連しており、ここで前記第1のフィンガプリント関数が前記第2のフィンガプリント関数に一致し、
    前記第2のフィンガプリント関数に基づいて前記ローカルデバイス上で前記第2のオブジェクトをチャンキングし、ここで前記リモートデバイス上の前記第1のオブジェクトのチャンキングが前記ローカルデバイス上の前記第2のオブジェクトのャンキングと一致
    前記ローカルデバイス上で前記第2のオブジェクトに関連する各チャンクごとにローカルシグネチャを計算し、ここで該ローカルシグネチャの計算が、前記リモートシグネチャの計算と一致し、
    前記ローカルデバイス上でローカルのシグネチャおよびチャンク長のリストを生成し、該ローカルのシグネチャおよびチャンク長のリストが前記第2のオブジェクトに関連し、
    前記ネットワーク上の前記リモートデバイスから前記ローカルデバイスへの前記リモートのシグネチャおよびチャンク長のリストの転送に使用する帯域幅が小さくなるように、当該リモートのシグネチャおよびチャンク長のリストチャンキングした伝送をネゴシエーションし、
    前記ローカルデバイス上で前記ローカルのシグネチャおよびチャンク長のリストを前記リモートのシグネチャおよびチャンク長のリストと比較することによって前記第1のオブジェクトと前記第2のオブジェクトの間の差分を識別し、
    前記第1のオブジェクトと前記第2のオブジェクトの間の差分が前記ローカルデバイスによって識別されるとき前記リモートデバイスから少なくとも1つの更新されたオブジェクトチャンクの伝送を要求し、
    前記リモートデバイスからの前記少なくとも1つの更新されたオブジェクトチャンクを受信し、かつ
    前記少なくとも1つの更新されたオブジェクトチャンクを用いて前記ローカルデバイス上で前記第1のオブジェクトのコピーを組立てするように設定されており、
    前記第1のプロセッサは、さらに、
    前記リモートのシグネチャおよびチャンク長のリストをチャンキングしてチャンキングされたリモートのシグネチャおよびチャンク長のリストを提供し、
    前記チャンキングされたリモートのシグネチャおよびチャンク長のリストに関連するチャンクごとに再帰的リモートシグネチャを計算し、
    前記再帰的リモートシグネチャを用いて再帰的リモートシグネチャおよびチャンク長のリストを生成するように設定されており、かつ
    前記第2のプロセッサが、さらに、
    前記ローカルデバイス上で前記ローカルのシグネチャおよびチャンク長のリストをチャンキングし、ここで前記ローカルのシグネチャおよびチャンク長のリストのチャンキングが、前記リモートのシグネチャおよびチャンク長のリストのチャンキングに一致し、
    前記チャンキングされたローカルのシグネチャおよびチャンク長のリストに関連するチャンクごとに再帰的ローカルシグネチャを計算し、ここで前記再帰的ローカルシグネチャの計算が、前記再帰的リモートシグネチャの計算と一致し、
    前記再帰的ローカルシグネチャと前記チャンキングされたローカルのシグネチャおよびチャンク長のリストとを用いて前記ローカルデバイス上で再帰的ローカルシグネチャおよびチャンク長のリストを生成し、ここで前記再帰的ローカルシグネチャおよびチャンク長のリストの生成が、前記再帰的リモートシグネチャおよびチャンク長のリストの生成と一致し、
    前記ネットワーク上で前記リモートデバイスから前記再帰的リモートシグネチャおよびチャンク長のリストを受信し、
    前記ローカルデバイス上で前記再帰的リモートシグネチャおよびチャンク長のリストと前記再帰的ローカルシグネチャおよびチャンク長のリストとの間の差分を識別し、
    前記ローカルデバイスによって、前記再帰的リモートシグネチャおよびチャンク長のリストと前記再帰的ローカルシグネチャおよびチャンク長のリストとの間で差分が識別されるときに、前記リモートデバイスからの少なくとも1つの更新されたシグネチャチャンクの伝送を要求するように設定されていること
    を特徴とするシステム。
  2. 前記第2のプロセッサは、さらに前記リモートデバイスから前記第1のオブジェクトについての更新を要求するように設定されていることを特徴とする請求項1に記載のシステム。
  3. 前記第1のプロセッサは、さらに前記ローカルデバイスから前記第1のオブジェクトについての更新を要求するように設定されていることを特徴とする請求項1に記載のシステム。
  4. 前記リモートのシグネチャおよびチャンク長のリストを送信することは、前記リモートデバイスから前記ローカルデバイスに前記リモートのシグネチャおよびチャンク長のリストの少なくとも一部分を送信することを含むことを特徴とする請求項1に記載のシステム。
  5. 前記ローカルデバイスおよび前記リモートデバイスのうちの一方は、クライアントであり、前記ローカルデバイスおよび前記リモートデバイスのうちの他方は、サーバであることを特徴とする請求項1に記載のシステム。
  6. 前記ネットワークは、直接配線接続、パラレルポート、シリアルポート、USB(Universal Serial Bus)ポート、IEEE(Institute of Electrical and Electronic Engineers) 1394ポート、無線接続、IR(赤外線)ポート、ブルートゥースポート、有線ネットワーク、無線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、ウルトラワイドエリアネットワーク、インターネット、イントラネット、およびエクストラネットを含むグループの少なくとも1つのメンバーであることを特徴とする請求項1に記載のシステム。
  7. 前記ローカルデバイス上で前記第2のオブジェクトに関連するチャンクごとに前記ローカルシグネチャを計算することは、強化ハッシング関数を前記ローカルデバイス上で前記チャンクに対して適用することを含むことを特徴とする請求項1に記載のシステム。
  8. 前記ローカルデバイス上で前記第1のオブジェクトと前記第2のオブジェクトの間の差分を識別することは、
    前記リモートのシグネチャおよびチャンク長のリストを前記ローカルのシグネチャおよびチャンク長のリストと比較し、
    前記リモートのシグネチャおよびチャンク長のリストと前記ローカルのシグネチャおよびチャンク長のリストの間の少なくとも1つの差分を識別し、
    前記リモートのシグネチャおよびチャンク長のリストに前記少なくとも1つの差分をマッピングし、
    前記少なくとも1つの差分と前記リモートのシグネチャおよびチャンク長のリストの間での前記マッピングから前記少なくとも1つの更新されたオブジェクトチャンクを識別する
    ことを含むことを特徴とする請求項1に記載のシステム。
  9. 前記リモートデバイス上で前記第1のオブジェクトのバイトオフセットごとに前記第1のフィンガプリント関数を計算することは、
    前記第1のオブジェクトに関連する各バイト位置の周囲で参照されるスモールウィンドウを提供し、
    バイト位置ごとに前記スモールウィンドウを使用してフィンガプリントを生成する
    ことを含むことを特徴とする請求項1に記載のシステム。
  10. 前記第1のプロセッサは、さらに、前記第1のオブジェクトに関連するデータタイプ、前記第2のオブジェクトに関連するデータタイプ、前記リモートデバイスに関連する環境制約、および前記ローカルデバイスに関連する環境制約と、前記ネットワークの特性と、前記第1のオブジェクトに関連する使用モデルと、前記第2のオブジェクトに関連する使用モデルを含むグループの少なくとも1つのメンバーに基づいて、前記スモールウィンドウに関連するウィンドウサイズを調整するように設定されていることを特徴とする請求項9に記載のシステム。
  11. 前記第1のフィンガプリント関数は、ラビン多項式を使用したハッシュ関数、循環シフティングハッシュ関数、32ビットアドラーハッシュ関数を含むグループの少なくとも1つのメンバーからなることを特徴とする請求項1に記載のシステム。
  12. 前記リモートデバイス上で前記第1のオブジェクトをチャンキングすることは、少なくとも1つのチャンキングパラメータを決定することを含むことを特徴とする請求項1に記載のシステム。
  13. 前記リモートデバイス上で前記第1のオブジェクトをチャンキングすることは、さらに
    前記少なくとも1つのチャンキングパラメータからチャンキングホライズンを決定し、
    前記第1のオブジェクト内の各位置においてハッシュ値を計算し、
    前記第1のオブジェクト内の各位置の周囲の前記チャンキングホライズン内に位置づけられたハッシュ値に数学関数を適用し、
    前記数学関数が満たされるときにカットポイントおよびチャンキング境界のうちの少なくとも1つを指定し、
    前記指定されたカットポイントを用いて前記第1のオブジェクトをチャンキングする
    ことを含むことを特徴とする請求項12に記載のシステム。
  14. 前記数学関数は、前記ホライズン内の最大値を決定すること、前記ホライズン内の最小値を決定すること、および前記ホライズン内のハッシュ値の間の差分を評価することを含むグループの少なくとも1つのメンバーからなることを特徴とする請求項13に記載のシステム。
  15. 前記リモートデバイス上で前記第1のオブジェクトをチャンキングすることは、
    前記少なくとも1つのチャンキングパラメータからホライズン、トリガ値、および他のトリガのリストを決定し、
    前記第1のオブジェクト内の位置ごとにハッシュ値を計算し、
    各計算済みのハッシュ値に数学関数を適用し、
    前記数学関数が、所与のオフセットにおいて前記トリガ値を獲得し、前記ホライズンが提供するすべての対応するオフセットにおいて前記他のトリガを獲得するときにカットポイントチャンキング境界の少なくとも1つを指定し、
    前記指定されたカットポイントを用いて前記第1のオブジェクトをチャンキングする
    ことを含むことを特徴とする請求項12に記載のシステム。
  16. 前記数学関数は、ハッシュ値をブール値にマッピングする述語、およびハッシュ値を適切な小さなドメイン中に区分する別の数学関数を含むグループの少なくとも1つのメンバーからなることを特徴とする請求項13に記載のシステム。
  17. 前記第2のプロセッサは、さらに、前記第1のオブジェクトに関連するデータタイプ、前記第2のオブジェクトに関連するデータタイプ、前記リモートデバイスに関連する環境制約、前記ローカルデバイスに関連する環境制約、前記ネットワークの特性、前記第1のオブジェクトに関連する使用モデル、および前記第2のオブジェクトに関連する使用モデルを含むグループの少なくとも1つのメンバーに基づいて、前記少なくとも1つのチャンキングパラメータを調整するように設定されていることを特徴とする請求項12に記載のシステム。
  18. 前記第1のプロセッサは、さらに、前記少なくとも1つの更新されたオブジェクトチャンクの伝送を求める前記受信された要求に応答して前記リモートデバイス上で前記第2のオブジェクトから前記少なくとも1つの更新されたオブジェクトチャンクを抽出するように設定されていることを特徴とする請求項1に記載のシステム。
  19. 前記第2のプロセッサは、さらに前記少なくとも1つの更新されたオブジェクトチャンクを用いて前記ローカルデバイス上で更新された第1のオブジェクトを組み立てるように設定されていることを特徴とする請求項1に記載のシステム。
  20. 前記更新された第1のオブジェクトを組み立てることは、さらに前記更新された第1のオブジェクトが、前記第1のオブジェクトからの少なくとも1つの変更されていないチャンクを含むように用意されていることを特徴とする請求項19に記載のシステム。
  21. 前記リモートデバイスから前記再帰的リモートシグネチャおよびチャンク長のリストを受信することは、前記ネットワーク上で前記リモートデバイスから前記再帰的リモートシグネチャおよびチャンク長のリストの少なくとも一部分を受信するステップを含むことを特徴とする請求項に記載のシステム。
  22. 前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストをチャンキングすることは、
    前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストのバイトオフセットごとに第3のフィンガプリント関数を計算し、
    前記第3のフィンガプリント関数に基づいて前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストをチャンキングして、前記チャンキングされたリモートのシグネチャおよびチャンク長のリストを提供する
    ように設定されていることを特徴とする請求項に記載のシステム。
  23. 前記ローカルデバイス上で前記ローカルのシグネチャおよびチャンク長のリストをチャンキングすることは、
    前記ローカルデバイス上で前記ローカルのシグネチャおよびチャンク長のリストのバイトオフセットごとに第4のフィンガプリント関数を計算し、ここで前記第4のフィンガプリント関数が、前記第3のフィンガプリント関数に一致し、
    前記第4のフィンガプリント関数に基づいて前記ローカルデバイス上で前記ローカルのシグネチャおよびチャンク長のリストをチャンキングして前記チャンキングされたローカルのシグネチャおよびチャンク長のリストを提供し、ここで前記ローカルデバイス上で前記ローカルのシグネチャおよびチャンク長のリストのチャンキングが、前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストのチャンキングと一致する
    ように設定されていることを特徴とする請求項22に記載のシステム。
  24. 前記リモートデバイス上で、前記第3のフィンガプリント関数を計算すること、および前記リモートのシグネチャおよびチャンク長のリストをチャンキングすることは、前記リモートデバイス上での前記第1のフィンガプリント関数を計算すること、および前記第1のオブジェクトをチャンキングすることとは異なる方法を使用することを特徴とする請求項23に記載のシステム。
  25. 前記リモートデバイス上での前記第3のフィンガプリント関数を計算すること、および前記リモートのシグネチャおよびチャンク長のリストをチャンキングすることは、前記リモートデバイス上での前記第1のフィンガプリント関数を計算すること、および前記第1のオブジェクトをチャンキングすることと同じやり方を使用することを特徴とする請求項22に記載のシステム。
  26. 前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストのバイトオフセットごとに前記第3のフィンガプリント関数を計算することは、
    前記リモートのシグネチャおよびチャンク長のリストに関連する各バイト位置の周囲で参照されるスモールウィンドウを提供し、
    バイト位置ごとに前記スモールウィンドウを使用してフィンガプリントを生成する
    ことを含むことを特徴とする請求項22に記載のシステム。
  27. 前記第1のプロセッサは、さらに、前記第1のオブジェクトに関連するデータタイプ、前記第2のオブジェクトに関連するデータタイプ、前記リモートデバイスに関連する環境制約、および前記ローカルデバイスに関連する環境制約と、前記ネットワークの特性と、前記第1のオブジェクトに関連する使用モデルと、前記第2のオブジェクトに関連する使用モデルを含むグループの少なくとも1つのメンバーに基づいて、前記スモールウィンドウに関連するウィンドウサイズを調整するように設定されていることを特徴とする請求項26に記載のシステム。
  28. 前記第3のフィンガプリント関数は、ラビン多項式を使用したハッシュ関数、循環シフティングハッシュ関数、32ビットアドラーハッシュ関数、循環シフトをもつ62ビットランダムハッシュを含むグループの少なくとも1つのメンバーからなることを特徴とする請求項22に記載のシステム。
  29. 前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストをチャンキングすることは、少なくとも1つの再帰的チャンキングパラメータを決定することを含むことを特徴とする請求項に記載のシステム。
  30. 前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストをチャンキングすることは、さらに、
    前記少なくとも1つの再帰的チャンキングパラメータから再帰的チャンキングホライズンを決定し、
    前記リモートのシグネチャおよびチャンク長のリスト内の各位置においてハッシュ値を計算し、
    前記リモートのシグネチャおよびチャンク長のリスト内の各位置の周囲の前記再帰的チャンキングホライズン内に位置づけられたハッシュ値に数学関数を適用し、
    前記数学関数が満たされるときに前記チャンキング境界中にカットポイントを指定し、
    前記指定されたカットポイントを用いて前記リモートのシグネチャおよびチャンク長のリストをチャンキングする
    ことを含むことを特徴とする請求項29に記載のシステム。
  31. 前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストをチャンキングすることは、さらに、
    前記少なくとも1つの再帰的チャンキングパラメータから再帰的ホライズン、再帰的トリガ値、および他の再帰的トリガのリストを決定し、
    前記リモートのシグネチャおよびチャンク長のリスト内の各位置においてハッシュ値を計算し、
    計算された各ハッシュ値に数学関数を適用し、
    前記数学関数が、所与のオフセットにおいて前記再帰的トリガ値を獲得し、前記再帰的ホライズンが提供するすべての対応するオフセットにおいて前記他の再帰的トリガを獲得するときにおいて、少なくとも1つのカットポイントおよびチャンキング境界を指定し、
    前記指定されたカットポイントを用いて前記リモートのシグネチャおよびチャンク長のリストをチャンキングする
    ことを含むことを特徴とする請求項29に記載のシステム。
  32. 前記数学関数は、ハッシュ値をブール値にマッピングする述語、およびハッシュ値を適切な小さなドメイン中に区分する他の任意の数学関数を含むグループの少なくとも1つのメンバーからなることを特徴とする請求項30に記載のシステム。
  33. 前記数学関数は、前記ホライズン内の最大値の決定、前記ホライズン内の最小値の決定、前記ホライズン内のハッシュ値の間の差分の評価、前記ホライズン内のハッシュ値の合計、および前記ホライズン内のハッシュ値の平均値の計算を含むグループの少なくとも1つのメンバーからなることを特徴とする請求項30に記載のシステム。
  34. 前記第1のプロセッサは、さらに、前記第1のオブジェクトに関連するデータタイプ、前記第2のオブジェクトに関連するデータタイプ、前記リモートデバイスに関連する環境制約、前記ローカルデバイスに関連する環境制約、前記ネットワークの特性、前記第1のオブジェクトに関連する使用モデル、前記第2のオブジェクトに関連する使用モデルを含むグループの少なくとも1つのメンバーに基づいて、前記少なくとも1つの再帰的チャンキングパラメータを調整するように設定されていることを特徴とする請求項31に記載のシステム。
  35. 前記リモートデバイス上で前記チャンキングされたリモートのシグネチャおよびチャンク長のリストに関連するシグネチャチャンクごとに前記再帰的リモートシグネチャを計算することは、さらに、前記リモートデバイス上で前記シグネチャチャンクに対して強化ハッシング関数を適用することを含むことを特徴とする請求項27に記載のシステム。
  36. 前記第1のプロセッサは、さらに、前記少なくとも1つの更新されたシグネチャチャンクの伝送を求める前記受信された要求に応答して前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストから前記少なくとも1つの更新されたシグネチャチャンクを抽出するように設定されていることを特徴とする請求項に記載のシステム。
  37. 前記ローカルのシグネチャおよびチャンク長のリストを組み立てることは、さらに、前記ローカルデバイス上で、前記リモートのシグネチャおよびチャンク長のリストの新しいコピーを提供することを含み、前記リモートのシグネチャおよびチャンク長のリストの前記新しいコピーは、前記少なくとも1つの更新されたシグネチャチャンクを含むことを特徴とする請求項36に記載のシステム。
  38. 前記第2のプロセッサは、さらに、
    前記ローカルデバイスを用いて前記ネットワークから前記少なくとも1つの更新されたシグネチャチャンクを受信し、
    前記少なくとも1つの更新されたシグネチャチャンクを用いて前記ローカルデバイス上で前記リモートのシグネチャおよびチャンク長のリストのコピーを組み立てる
    ように設定されていることを特徴とする請求項に記載のシステム。
  39. 前記リモートのシグネチャおよびチャンク長のリストが、前記ローカルのシグネチャおよびチャンク長のリストからの少なくとも1つの変更されていないチャンクを含むことを特徴とする請求項36に記載のシステム。
  40. 前記ローカルデバイス上で前記再帰的リモートシグネチャおよびチャンク長のリストと前記再帰的ローカルシグネチャおよびチャンク長のリストとの間の差分を識別することは、さらに、
    前記再帰的リモートシグネチャおよびチャンク長のリストを前記再帰的ローカルシグネチャおよびチャンク長のリストと比較し、
    前記再帰的リモートシグネチャおよびチャンク長のリストと前記再帰的ローカルシグネチャおよびチャンク長のリストとの間の差分に関連する少なくとも1つのシグネチャチャンクを識別し、
    前記少なくとも1つのシグネチャチャンクを前記リモートのシグネチャおよびチャンク長のリストにマッピングし、
    前記少なくとも1つのシグネチャチャンクと前記リモートのシグネチャおよびチャンク長のリストの間の前記マッピングから前記少なくとも1つの更新されたシグネチャチャンクを識別する
    ことを含むことを特徴とする請求項に記載のシステム。
  41. 前記リモートデバイス上で前記リモートのシグネチャおよびチャンク長のリストを生成することは、さらに前記リモートのシグネチャおよびチャンク長のリストをコンパクトに符号化することを含むことを特徴とする請求項1に記載のシステム。
  42. 前記ローカルデバイス上で前記ローカルのシグネチャおよびチャンク長のリストを生成することは、さらに前記ローカルのシグネチャおよびチャンク長のリストをコンパクトに符号化することを含むことを特徴とする請求項1に記載のシステム。
  43. 前記リモートデバイス上で前記再帰的リモートシグネチャおよびチャンク長のリストを生成することは、さらに前記再帰的リモートシグネチャおよびチャンク長のリストをコンパクトに符号化することを含むことを特徴とする請求項に記載のシステム。
  44. 前記ローカルデバイス上で前記再帰的ローカルシグネチャおよびチャンク長のリストを生成することは、さらに前記再帰的ローカルシグネチャおよびチャンク長のリストをコンパクトに符号化することを含むことを特徴とする請求項に記載のシステム。
JP2005073985A 2004-04-15 2005-03-15 遠隔差分圧縮用の効率的アルゴリズムとプロトコル Expired - Fee Related JP4796315B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/825,735 2004-04-15
US10/825,735 US7555531B2 (en) 2004-04-15 2004-04-15 Efficient algorithm and protocol for remote differential compression

Publications (3)

Publication Number Publication Date
JP2005302004A JP2005302004A (ja) 2005-10-27
JP2005302004A5 JP2005302004A5 (ja) 2008-05-01
JP4796315B2 true JP4796315B2 (ja) 2011-10-19

Family

ID=34939140

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005073985A Expired - Fee Related JP4796315B2 (ja) 2004-04-15 2005-03-15 遠隔差分圧縮用の効率的アルゴリズムとプロトコル

Country Status (18)

Country Link
US (1) US7555531B2 (ja)
EP (2) EP1587007A3 (ja)
JP (1) JP4796315B2 (ja)
KR (1) KR100922674B1 (ja)
CN (2) CN102170455B (ja)
AU (1) AU2005201386B2 (ja)
BR (1) BRPI0501166A (ja)
CA (1) CA2500894C (ja)
CO (1) CO5680121A1 (ja)
IL (1) IL167467A (ja)
MX (1) MXPA05002949A (ja)
MY (1) MY144798A (ja)
NO (1) NO20051344L (ja)
NZ (1) NZ538839A (ja)
RU (1) RU2382511C2 (ja)
SG (1) SG116576A1 (ja)
TW (1) TWI360336B (ja)
ZA (1) ZA200502115B (ja)

Families Citing this family (83)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060047855A1 (en) * 2004-05-13 2006-03-02 Microsoft Corporation Efficient chunking algorithm
US7555531B2 (en) 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US20050262167A1 (en) * 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US20050256974A1 (en) * 2004-05-13 2005-11-17 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a remote device
US8376855B2 (en) 2004-06-28 2013-02-19 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US8870639B2 (en) 2004-06-28 2014-10-28 Winview, Inc. Methods and apparatus for distributed gaming over a mobile device
US10226698B1 (en) 2004-07-14 2019-03-12 Winview, Inc. Game of skill played by remote participants utilizing wireless devices in connection with a common game event
US7613787B2 (en) * 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US8073926B2 (en) * 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
US20060184784A1 (en) * 2005-02-16 2006-08-17 Yosi Shani Method for secure transference of data
US20060277322A1 (en) * 2005-06-03 2006-12-07 Nokia Corporation System and method for implementing reference-based electronic mail compression
US10721543B2 (en) 2005-06-20 2020-07-21 Winview, Inc. Method of and system for managing client resources and assets for activities on computing devices
EP1904196A2 (en) 2005-06-20 2008-04-02 Airplay Network, Inc. Method of and system for managing client resources and assets for activities on computing devices
US20070070999A1 (en) * 2005-08-02 2007-03-29 Black Jeffrey T Synchronization of historical data without retransmission
US8149530B1 (en) 2006-04-12 2012-04-03 Winview, Inc. Methodology for equalizing systemic latencies in television reception in connection with games of skill played in connection with live television programming
US8705195B2 (en) 2006-04-12 2014-04-22 Winview, Inc. Synchronized gaming and programming
US9919210B2 (en) 2005-10-03 2018-03-20 Winview, Inc. Synchronized gaming and programming
US9511287B2 (en) 2005-10-03 2016-12-06 Winview, Inc. Cellular phone games based upon television archives
US9056251B2 (en) 2006-01-10 2015-06-16 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US8002618B1 (en) 2006-01-10 2011-08-23 Winview, Inc. Method of and system for conducting multiple contests of skill with a single performance
US10556183B2 (en) 2006-01-10 2020-02-11 Winview, Inc. Method of and system for conducting multiple contest of skill with a single performance
US20070226298A1 (en) * 2006-03-24 2007-09-27 Sap Ag. Methods and systems providing metadata in service signatures
US11082746B2 (en) 2006-04-12 2021-08-03 Winview, Inc. Synchronized gaming and programming
KR101381551B1 (ko) 2006-05-05 2014-04-11 하이버 인크 그룹 기반의 완료 및 증분 컴퓨터 파일 백업 시스템, 프로세스 및 장치
US7617322B2 (en) * 2006-09-29 2009-11-10 Microsoft Corporation Secure peer-to-peer cache sharing
US7844581B2 (en) * 2006-12-01 2010-11-30 Nec Laboratories America, Inc. Methods and systems for data management using multiple selection criteria
US8214517B2 (en) * 2006-12-01 2012-07-03 Nec Laboratories America, Inc. Methods and systems for quick and efficient data management and/or processing
US7954008B2 (en) * 2007-01-15 2011-05-31 Microsoft Corporation Objective assessment of application crashes from a customer environment
CN103516725B (zh) * 2007-03-12 2017-01-11 思杰系统有限公司 用于使用压缩历史来改进网络性能的系统和方法
US8255570B2 (en) 2007-03-12 2012-08-28 Citrix Systems, Inc. Systems and methods of compression history expiration and synchronization
AU2012203797B2 (en) * 2007-03-12 2015-05-07 Citrix Systems, Inc. Systems and methods for using compression histories to improve network performance
US7460038B2 (en) 2007-03-12 2008-12-02 Citrix Systems, Inc. Systems and methods of clustered sharing of compression histories
US7532134B2 (en) 2007-03-12 2009-05-12 Citrix Systems, Inc. Systems and methods for sharing compression histories between multiple devices
US7827237B2 (en) 2007-03-12 2010-11-02 Citrix Systems, Inc. Systems and methods for identifying long matches of data in a compression history
US7865585B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
US7619545B2 (en) 2007-03-12 2009-11-17 Citrix Systems, Inc. Systems and methods of using application and protocol specific parsing for compression
US8819288B2 (en) 2007-09-14 2014-08-26 Microsoft Corporation Optimized data stream compression using data-dependent chunking
US8813112B1 (en) 2007-10-23 2014-08-19 Winview, Inc. Method of and apparatus for utilizing SMS while running an application on a mobile device controlling a viewer's participation with a broadcast
US8200969B2 (en) * 2008-01-31 2012-06-12 Hewlett-Packard Development Company, L.P. Data verification by challenge
US8375396B2 (en) * 2008-01-31 2013-02-12 Hewlett-Packard Development Company, L.P. Backup procedure with transparent load balancing
WO2009108579A2 (en) 2008-02-26 2009-09-03 Vmware, Inc. Extending server-based desktop virtual machine architecture to client machines
JP2009245089A (ja) * 2008-03-31 2009-10-22 Fujitsu Ltd 分散オブジェクト・プログラム及びレプリケーション処理方法
FR2929778B1 (fr) * 2008-04-07 2012-05-04 Canon Kk Procedes et dispositifs de codage et de decodage binaire iteratif pour documents de type xml.
WO2009132261A1 (en) 2008-04-25 2009-10-29 Vmware, Inc. Updating a file using differences and file format therefor
US8527482B2 (en) * 2008-06-06 2013-09-03 Chrysalis Storage, Llc Method for reducing redundancy between two or more datasets
US8255806B2 (en) * 2008-09-15 2012-08-28 Vmware, Inc. Unified secure virtual machine player and remote desktop client
US9716918B1 (en) 2008-11-10 2017-07-25 Winview, Inc. Interactive advertising system
US8380663B2 (en) * 2008-12-17 2013-02-19 Sybase, Inc. Data integrity in a database environment through background synchronization
US8977765B1 (en) * 2009-02-27 2015-03-10 Symantec Corporation Method and apparatus for streaming applications to a plurality of clients within a peer to-peer network
US8583625B2 (en) * 2009-03-20 2013-11-12 The Trustees Of Princeton Systems and methods for network acceleration and efficient indexing for caching file systems
US8805953B2 (en) * 2009-04-03 2014-08-12 Microsoft Corporation Differential file and system restores from peers and the cloud
US20100268784A1 (en) * 2009-04-17 2010-10-21 Marc Henness Data synchronization system and method
US20100318759A1 (en) * 2009-06-15 2010-12-16 Microsoft Corporation Distributed rdc chunk store
US8321484B2 (en) * 2010-02-26 2012-11-27 Microsoft Corporation Minimizing bandwidth in file path-centric protocol message
US8909657B2 (en) * 2011-01-14 2014-12-09 Apple Inc. Content based file chunking
FR2972546B1 (fr) * 2011-03-07 2013-03-08 Bull Sas Procedes, dispositifs et programmes d'ordinateur pour optimiser la replication de donnees dans des systemes informatiques
EP2645286A1 (en) * 2012-03-09 2013-10-02 ABB Research Ltd. Authentication in an industrial control system
US8856445B2 (en) 2012-05-24 2014-10-07 International Business Machines Corporation Byte caching with chunk sizes based on data type
US8832375B2 (en) 2012-05-24 2014-09-09 International Business Machines Corporation Object type aware byte caching
CN103580982B (zh) * 2012-07-19 2017-12-15 腾讯科技(深圳)有限公司 代收电子邮件的方法、装置及系统
US9626373B2 (en) * 2012-10-01 2017-04-18 Western Digital Technologies, Inc. Optimizing data block size for deduplication
US9110964B1 (en) * 2013-03-05 2015-08-18 Emc Corporation Metadata optimization for network replication using differential encoding
US9235475B1 (en) 2013-03-05 2016-01-12 Emc Corporation Metadata optimization for network replication using representative of metadata batch
KR101479864B1 (ko) * 2013-11-08 2015-01-06 주식회사 엘지유플러스 멀티미디어 청크(chunk)를 수신하는 통신 단말기 및 그 제어방법과, 그 제어방법을 실행하기 위한 프로그램을 기록한 기록 매체
US10097868B2 (en) 2013-12-09 2018-10-09 Sony Corporation Data processing device and data processing method
CN105024970B (zh) * 2014-04-18 2018-07-13 中国电信股份有限公司 移动应用数据拷贝的控制方法、系统、客户端和服务器
WO2016088964A1 (ko) * 2014-12-02 2016-06-09 엘지전자(주) 무선 통신 시스템에서 블루투스 통신을 이용하여 객체 전송 서비스를 수행하기 위한 방법 및 장치
US9973597B1 (en) 2014-12-10 2018-05-15 Amazon Technologies, Inc. Differential dictionary compression of network-accessible content
US10574751B2 (en) 2016-03-22 2020-02-25 International Business Machines Corporation Identifying data for deduplication in a network storage environment
US11551529B2 (en) 2016-07-20 2023-01-10 Winview, Inc. Method of generating separate contests of skill or chance from two independent events
CN107783990B (zh) * 2016-08-26 2021-11-19 华为技术有限公司 一种数据压缩方法及终端
CN107468240B (zh) * 2017-09-18 2024-05-07 山东正心医疗科技有限公司 手持式心电监护系统
US11308765B2 (en) 2018-10-08 2022-04-19 Winview, Inc. Method and systems for reducing risk in setting odds for single fixed in-play propositions utilizing real time input
CN110443156B (zh) * 2019-07-16 2022-03-25 浙江大华技术股份有限公司 轨迹相似度度量方法、数据处理设备及存储设备
US11449325B2 (en) 2019-07-30 2022-09-20 Sony Interactive Entertainment LLC Data change detection using variable-sized data chunks
US11307841B2 (en) 2019-07-30 2022-04-19 Sony Interactive Entertainment LLC Application patching using variable-sized units
US11262927B2 (en) 2019-07-30 2022-03-01 Sony Interactive Entertainment LLC Update optimization using feedback on probability of change for regions of data
CN110740352B (zh) * 2019-11-14 2021-07-20 北京京航计算通讯研究所 显卡透传环境下基于spice协议的差异图像显示方法
CN110868614B (zh) * 2019-11-14 2021-09-28 北京京航计算通讯研究所 显卡透传环境下基于spice协议的差异图像显示系统
CN112286550B (zh) * 2020-10-22 2024-08-16 上海艾拉比智能科技有限公司 一种嵌入式设备系统升级的安全性签名算法
US11681659B2 (en) * 2021-05-21 2023-06-20 Red Hat, Inc. Hybrid file compression model

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446888A (en) 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
US5488364A (en) 1994-02-28 1996-01-30 Sam H. Eulmi Recursive data compression
US5486826A (en) 1994-05-19 1996-01-23 Ps Venture 1 Llc Method and apparatus for iterative compression of digital data
WO1996025801A1 (en) 1995-02-17 1996-08-22 Trustus Pty. Ltd. Method for partitioning a block of data into subblocks and for storing and communicating such subblocks
US5933104A (en) 1995-11-22 1999-08-03 Microsoft Corporation Method and system for compression and decompression using variable-sized offset and length fields
WO1997027707A1 (en) 1996-01-22 1997-07-31 Matsushita Electric Industrial Co., Ltd. Digital image encoding and decoding method and digital image encoding and decoding device using the same
US5794254A (en) 1996-12-03 1998-08-11 Fairbanks Systems Group Incremental computer file backup using a two-step comparison of first two characters in the block and a signature with pre-stored character and signature sets
US5987022A (en) 1996-12-27 1999-11-16 Motorola, Inc. Method for transmitting multiple-protocol packetized data
US6374250B2 (en) 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
AU6151598A (en) 1997-02-11 1998-08-26 Connected Corporation File comparison for data backup and file synchronization
US6226629B1 (en) 1997-02-28 2001-05-01 Compaq Computer Corporation Method and apparatus determining and using hash functions and hash values
US6449612B1 (en) 1998-03-17 2002-09-10 Microsoft Corporation Varying cluster number in a scalable clustering system for use with large databases
US6052531A (en) 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6317754B1 (en) 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6952823B2 (en) 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
BR9914551A (pt) * 1998-10-16 2002-03-05 Computer Ass Think Inc Processo e sistema para macro-linguagem extensìvel
US6819271B2 (en) 1999-01-29 2004-11-16 Quickshift, Inc. Parallel compression and decompression system and method having multiple parallel compression and decompression engines
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US6791982B2 (en) 1999-09-29 2004-09-14 Telefonaktiebolaget Lm Ericsson Segmentation protocol that supports compressed segmentation headers
EP1168174A1 (en) 2000-06-19 2002-01-02 Hewlett-Packard Company, A Delaware Corporation Automatic backup/recovery process
AU2001272970A1 (en) * 2000-06-22 2002-01-02 Synchrologic, Inc. A system and method for file transmission using file differentiation
US6470329B1 (en) * 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US7058941B1 (en) 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
JP2004514214A (ja) 2000-11-17 2004-05-13 ビットフォン コーポレイション 情報をアップデートおよび配布するシステムおよび方法
US7054912B2 (en) 2001-03-12 2006-05-30 Kabushiki Kaisha Toshiba Data transfer scheme using caching technique for reducing network load
US20020152219A1 (en) 2001-04-16 2002-10-17 Singh Monmohan L. Data interexchange protocol
US8041803B2 (en) 2001-09-26 2011-10-18 Qurio Holdings, Inc. Method and system for delivering files in digital file marketplace
BR0206453A (pt) 2001-11-16 2004-01-13 Koninkl Philips Electronics Nv Método para atualizar, cliente compartilhador de arquivo arranjado para atualizar, servidor arranjado papa atualizar, um banco de dados compreendendo uma impressão digital de, e, um conjunto de metadados associado para cada um de, um número de objetos de multimìdia, e, rede de compartilhamento de arquivo
US7370120B2 (en) 2001-12-07 2008-05-06 Propel Software Corporation Method and system for reducing network latency in data communication
EP1326189A3 (en) * 2001-12-12 2005-08-17 Microsoft Corporation Controls and displays for acquiring preferences, inspecting behaviour, and guiding the learning and decision policies of an adaptive communications prioritization and routing systems
US6947604B2 (en) 2002-01-17 2005-09-20 Intel Corporation Method and hardware to implement two-dimensional compression
US7188160B2 (en) * 2002-01-22 2007-03-06 Ericsson Ab Method and apparatus for updating network device configuration information in a network management system
JP4020676B2 (ja) 2002-03-26 2007-12-12 株式会社東芝 Webシステム及びWebシステムの制御方法
JP3848209B2 (ja) * 2002-05-23 2006-11-22 株式会社東芝 データ転送装置、データ転送方法及びプログラム
US7360093B2 (en) 2002-07-22 2008-04-15 Xerox Corporation System and method for authentication of JPEG image data
US20040039716A1 (en) 2002-08-23 2004-02-26 Thompson Dean S. System and method for optimizing a computer program
JP2004094617A (ja) 2002-08-30 2004-03-25 Fujitsu Ltd 差分圧縮によるバックアップ方法、システム及び差分圧縮方法
US7099884B2 (en) * 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US20060047855A1 (en) 2004-05-13 2006-03-02 Microsoft Corporation Efficient chunking algorithm
US7555531B2 (en) 2004-04-15 2009-06-30 Microsoft Corporation Efficient algorithm and protocol for remote differential compression
US20050262167A1 (en) 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US20050256974A1 (en) 2004-05-13 2005-11-17 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a remote device
US7613787B2 (en) 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
WO2006052897A2 (en) 2004-11-08 2006-05-18 Innopath Software, Inc. Reorganizing images in static file system differencing and updating
US7640363B2 (en) 2005-02-16 2009-12-29 Microsoft Corporation Applications for remote differential compression

Also Published As

Publication number Publication date
BRPI0501166A (pt) 2005-12-06
TWI360336B (en) 2012-03-11
CA2500894C (en) 2013-07-02
EP1587007A3 (en) 2007-04-18
TW200537881A (en) 2005-11-16
ZA200502115B (en) 2007-08-29
EP2444909A2 (en) 2012-04-25
KR20060043620A (ko) 2006-05-15
NZ538839A (en) 2007-07-27
KR100922674B1 (ko) 2009-10-19
SG116576A1 (en) 2005-11-28
RU2005105759A (ru) 2006-08-10
MXPA05002949A (es) 2005-10-19
IL167467A (en) 2010-11-30
AU2005201386A1 (en) 2005-10-27
RU2382511C2 (ru) 2010-02-20
EP1587007A2 (en) 2005-10-19
CN102170455B (zh) 2015-12-16
NO20051344D0 (no) 2005-03-15
US20050235043A1 (en) 2005-10-20
US7555531B2 (en) 2009-06-30
CN1684464A (zh) 2005-10-19
CO5680121A1 (es) 2006-09-29
MY144798A (en) 2011-11-15
CA2500894A1 (en) 2005-10-15
NO20051344L (no) 2005-10-17
CN1684464B (zh) 2011-07-27
CN102170455A (zh) 2011-08-31
AU2005201386B2 (en) 2010-06-17
JP2005302004A (ja) 2005-10-27

Similar Documents

Publication Publication Date Title
JP4796315B2 (ja) 遠隔差分圧縮用の効率的アルゴリズムとプロトコル
US8117173B2 (en) Efficient chunking algorithm
US7613787B2 (en) Efficient algorithm for finding candidate objects for remote differential compression
US20050262167A1 (en) Efficient algorithm and protocol for remote differential compression on a local device
US7640363B2 (en) Applications for remote differential compression
US20050256974A1 (en) Efficient algorithm and protocol for remote differential compression on a remote device
US8698657B2 (en) Methods and systems for compressing and decompressing data
AU1853699A (en) Data file synchronisation
CN110599169B (zh) 数据处理方法、装置、终端及介质
CN102318310A (zh) 用于重建种子内容元数据的方法和设备
US10339124B2 (en) Data fingerprint strengthening
CN118210770A (zh) 增量数据同步方法、装置、计算机设备和存储介质
US8645482B2 (en) Network coding with last modified dates for P2P web caching
US20170048303A1 (en) On the fly statistical delta differencing engine
WO2013136584A1 (ja) データ転送システム
US20170048302A1 (en) Static statistical delta differencing engine

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080317

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080317

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101214

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110314

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110317

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110414

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110419

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110513

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110722

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110729

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4796315

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140805

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees