JP4961126B2 - リモート差分圧縮のための候補オブジェクトを見つける効率のよいアルゴリズム - Google Patents

リモート差分圧縮のための候補オブジェクトを見つける効率のよいアルゴリズム Download PDF

Info

Publication number
JP4961126B2
JP4961126B2 JP2005277831A JP2005277831A JP4961126B2 JP 4961126 B2 JP4961126 B2 JP 4961126B2 JP 2005277831 A JP2005277831 A JP 2005277831A JP 2005277831 A JP2005277831 A JP 2005277831A JP 4961126 B2 JP4961126 B2 JP 4961126B2
Authority
JP
Japan
Prior art keywords
characteristic
signature
chunk
objects
chunks
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.)
Active
Application number
JP2005277831A
Other languages
English (en)
Other versions
JP2006092558A (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 JP2006092558A publication Critical patent/JP2006092558A/ja
Application granted granted Critical
Publication of JP4961126B2 publication Critical patent/JP4961126B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、リモート差分圧縮の候補オブジェクトを見つけるための方法およびシステムに関する。
イントラネット、エクストラネット、およびインターネットなどのネットワークの急増により、広域ネットワーク間で情報を共有するユーザ数の増大をもたらした。最大データ転送速度は、伝送媒体に関連する帯域幅とともに他のインフラ関係の制限に基づいてそれぞれの物理ネットワークに関連付けられる。ネットワーク帯域幅が制限されている結果として、ユーザは、ネットワーク間で大量のデータの取り出しおよび転送を行っているときに長い遅延を経験することがある。
データ圧縮技術は、帯域幅が限られているネットワーク間で大量のデータを転送する手段として広く受け入れられている。データ圧縮は、一般に、可逆圧縮または非可逆圧縮のいずれかで特徴付けられる。可逆圧縮は、圧縮解除変換を適用することによりデータセットの正確な再現を取り出せるようにデータセットを変換することを伴う。可逆圧縮は、正確なレプリカが必要とされる場合に、データをコンパクトにする場合に使用されることが最も多い。
データオブジェクトの受信者がそのオブジェクトの旧バージョンつまり古いバージョンをすでに持っている場合、リモート差分圧縮(Remote Differential Compression)(RDC)と呼ばれる可逆圧縮方式を使用すると、オブジェクトの新バージョンと旧バージョンとの差分を決定し、転送するだけでよい。RDC転送では新バージョンと旧バージョンとの観察された差分を伝達するだけでよいので(例えば、ファイルの場合には、ファイル変更または最終アクセス日時、ファイル属性、またはファイル内容に対する小さな変更)、転送されるデータの総量を大幅に減らせる。RDCを他の可逆圧縮アルゴリズムと併用することにより、ネットワークトラフィックをさらに低減することができる。RDCの利点は、大きなオブジェクトをコンピューティング装置間で頻繁にやり取りする必要があり、それらのオブジェクトの古いコピーを保持することが困難であるか、または実現不可能であり、ローカル差分アルゴリズムを使用できない場合に最も顕著である。
オブジェクトは、必要なデータ転送が最小限に抑えられるようにリモート差分圧縮(RDC)技術を使用して2つまたはそれ以上のコンピューティング装置間で更新される。一態様では、送信者が少量のメタデータを受信者に伝達し、受信者がこのメタデータを使用して送信者から転送される必要があるオブジェクトに類似のオブジェクトの集合を特定できるようにすることにより効率を高めるアルゴルズムを実現する。この類似オブジェクトの集合が見つかった後、受信者は、RDCアルゴリズムの実行時に必要に応じてそれらのオブジェクトの一部を再利用することができる。
本発明およびその改良のより詳しい評価は、後の方で簡単に概要が説明されている付属の図面、本発明の実施例の以下の詳細な説明、および添付の特許請求の範囲を参照することにより得られる。
本発明の限定されない、包括的ではない実施形態は、以下の図面を参照しつつ説明される。
本発明の様々な実施形態は、複数の図面にわたって類似の参照番号は類似の部分およびアセンブリを表す図面を参照しつつ詳しく説明される。様々な実施形態を参照しても、本発明の範囲を限定することにはならず、本発明は添付の特許請求の範囲の範囲によってのみ限定される。さらに、本明細書で述べられている実施例は、限定することを意図しておらず、請求されている発明の多くの可能な実施形態の一部を述べているにすぎない。
本発明は、1つまたは複数の通常関連付けられているオブジェクトが格納されるローカルおよびリモートのコンピューティング装置(または、簡単に「装置」と呼ぶ)の文脈において説明される。「ローカル」および「リモート」という用語は、この方法の1つの状況を指す。しかし、同じ装置で、異なる状況において「ローカル」および「リモート」の両方の役割を果たすこともできる。リモート差分圧縮(RDC)法は、帯域幅が制限されているネットワーク上で通常関連付けられているオブジェクトを効率よく更新するために使用される。オブジェクトの新しいコピーを有する装置が同じオブジェクトの古いコピー、または類似のオブジェクトの古いコピーを有する装置を更新する必要がある場合、RDC法を使用して、ネットワーク上でオブジェクト間の差分の送信のみを行う。説明されているRDC法の実施例では、(1)RDCメタデータの伝送を行う再帰的方式を使用して、大きなオブジェクトの場合に転送されるメタデータの量を低減し、(2)ローカル最大ベースのチャンキング法を使用して、帯域幅利用が最小になるようにオブジェクト差分抽出に関連する精度を高める。説明されているRDC法を利用するアプリケーションのいくつかの例として、ピアツーピアレプリケーションサービス、SMBなどのファイル転送プロトコル、大きなイメージを転送する仮想サーバ、電子メールサーバ、携帯電話およびPDA同期、データベースサーバレプリケーションがある。
(動作環境)
図1に、本発明の動作環境例を示す。図に例示されているように、装置はネットワーク上で通信を行うように構成されている。これらの装置は、汎用コンピューティング装置、専用コンピューティング装置、またはネットワークに接続される他の適切な装置とすることができる。ネットワーク102は、限定はしないが、直接配線接続(例えば、パラレルポート、シリアルポート、USB、IEEE 1394など)、無線接続(例えば、IRポート、Bluetoothポートなど)、有線ネットワーク、無線ネットワーク、ローカルエリアネットワーク、ワイドエリアネットワーク、ウルトラワイドエリアネットワーク、インターネット、イントラネット、およびエクストラネットを含む、接続トポロジに対応しうる。
装置A(100)と装置B(101)との間のやり取りの例では、異なるバージョンのオブジェクトつまり100上のオブジェクトOAおよび101上のオブジェクトOBがローカルの2つの装置に格納される。ある時点において、装置A(100)は、オブジェクトOAのコピーを装置B(101)上に格納されているコピー(オブジェクトOB)で更新することを決定し、RDC法を開始する要求を装置B(101)に送信する。他の実施形態では、RDC法は、装置B(101)により開始することも可能である。
装置A(100)および装置B(101)は、両方とも、ローカルに格納されたオブジェクトを処理し、関連付けられたデータをデータ依存の方法で可変個数のチャンクに分割する(例えば、オブジェクトOBに対してはチャンク1〜n、オブジェクトOAに対してはチャンク1〜k)。複数のチャンクに対する強いハッシュ(SHA)などのシグネチャの集合は、両方の装置によりローカルに計算される。装置は両方とも、シグネチャの別個のリストをコンパイルする。RDC法の次のステップで、装置B(101)は、ネットワーク102を介してシグネチャおよびチャンク長1〜nの計算されたリストを装置A(100)に送信する。装置A(100)は、各受信したシグネチャを装置A側の生成されたシグネチャリスト1〜kと比較する。シグネチャリストの不一致は、オブジェクト内に是正を必要とする1つまたは複数の相違点のあることを示す。装置A(100)は、装置B(101)がシグネチャリスト内の不一致により識別されたチャンクを送信するように要求を送信する。装置B(101)は、その後、要求されたチャンクを圧縮して送信し、その後、それらのチャンクは、受信および圧縮解除の実行後、装置A(100)により再び組み立てられる。装置A(100)は、受信チャンクをその装置の一致する自チャンクと合わせて再び組み立て、オブジェクトOBのローカルコピーを得る。
(コンピューティング装置の実施例)
図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)またはその他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置、または所望の情報を格納するために使用することができコンピューティング装置200によりアクセスできるその他の媒体がある。このような任意のコンピュータ記憶媒体を装置200の一部とすることができる。さらにコンピューティング装置200は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの(複数の)入力装置212を備えることもできる。ディスプレイ、スピーカ、プリンタなどの(複数の)出力装置214を備えることもできる。これらの装置はすべて、当業で知られているため、本明細書でさらに詳しい説明をする必要はない。
また、コンピューティング装置200は、装置がネットワークなどを経由して他のコンピューティング装置218と通信するために使用する(複数の)通信接続216も含むことができる。(複数の)通信接続216は、通信媒体の一実施例である。通信媒体は、通常、コンピュータ読み取り可能命令、データ構造体、プログラムモジュール、または搬送波もしくはその他のトランスポートメカニズムなどの変調データ信号によるその他のデータを具現するものであり、任意の情報配信媒体を含む。「変調データ信号」という用語は、信号内に情報を符号化するような方法で特性のうちの1つまたは複数が設定または変更された信号を意味する。例えば、限定はしないが、通信媒体としては、有線ネットワークまたは直接配線接続などの有線媒体、ならびに、音響、RF、マイクロ波、衛星、赤外線、およびその他の無線媒体などの無線媒体がある。本明細書で使用されているコンピュータ読み取り可能媒体という用語は、記憶媒体と通信媒体との両方を含む。
様々な手順およびインターフェースは、システムメモリ204内に常駐する1つまたは複数のアプリケーションプログラムで実装することができる。一実施例では、アプリケーションプログラムは、コンピューティング装置(例えば、クライアント)と他のリモートに置かれているコンピューティング装置(例えば、サーバ)との間のファイル同期化をスケジュールするリモート差分圧縮アルゴリズムである。他の実施例では、アプリケーションプログラムは、圧縮および圧縮解除データ用のシステムメモリ204内に用意されている圧縮/圧縮解除手順である。さらに他の実施例では、アプリケーションプログラムは、クライアント装置のシステムメモリ204内に用意されている暗号解読手順である。
(リモート差分圧縮(RDC))
図3Aおよび3Bは、本発明の少なくとも1つの態様によるRDC手順例を示す図である。チャンクの個数は、特に、実際のオブジェクトOAおよびOBに応じてインスタンス毎に異なることがある。
図3Aを参照すると、基本RDCプロトコルは、2つのコンピューティング装置(装置Aおよび装置B)の間で折衝される。RDCプロトコルでは、暗黙のうちに、装置AおよびBが、オブジェクトインスタンス(またはバージョン)OAおよびOBによりそれぞれ示される同じオブジェクトまたはリソースの2つの異なるインスタンス(またはバージョン)を有すると想定している。この図に示されている実施例では、装置Aは、リソースOAの旧バージョンを持つが、装置Bは、リソースに関連付けられたコンテンツ(またはデータ)がわずかに(または付加的に)異なるバージョンOBを持つ。
以下では、更新されたOBを装置Bから装置Aに転送するプロトコルについて説明する。類似のプロトコルを使用して、オブジェクトを装置Aから装置Bに転送することができ、後述のプロトコルを著しく変更せずに、装置Aまたは装置Bのいずれかからの命令により転送を開始できる。
1.装置Aは、RDCプロトコルを使用してオブジェクトOBを転送する要求を装置Bに送信する。他の実施形態では、装置Bは転送を開始し、この場合、プロトコルはステップ1をスキップし、以下のステップ2から開始する。
2.装置Aは、オブジェクトOAをチャンク1〜kに分割し、オブジェクトOAのそれぞれのチャンク1..kについてシグネチャSigAiおよび長さ(またはバイトで表されるサイズ)LenAiを計算する。複数のチャンクへの分割について、以下で詳述する。装置Aは、シグネチャおよびチャンク長のリスト((SigA1,LenA1)...(SigAk,LenAk))を格納する。
3.装置Bは、オブジェクトOBをチャンク1〜nに分割し、オブジェクトOBのそれぞれのチャンク1..nについてシグネチャSigBiおよび長さLenBiを計算する。ステップ3で使用される分割化アルゴリズムは、上記のステップ2のアルゴリズムと一致していなければならない。
4.装置Bは、オブジェクトOBに関連付けられている計算されたチャンクシグネチャおよびチャンク長((SigB1,LenB1)...(SigBn,LenBn))を装置Aに送信する。チャンク長情報は、その後装置Aによって使用され、チャンクの特定の集合をその開始オフセットおよび長さで識別することによりチャンクの特定の集合を要求することができる。リストの順次的性質のため、リスト内の先行するすべてのチャンクの長さを足し合わせて、各チャンクBiのバイト単位の開始オフセットを計算することが可能である。
他の実施形態では、チャンクシグネチャおよびチャンク長のリストは、コンパクトになるように符号化され、可逆圧縮アルゴリズムを使用してさらに圧縮された後、装置Aに送信される。
5.このデータを受信した後、装置Aは、受信されたシグネチャリストを、コンテンツの旧バージョンに関連付けられている、ステップ2でオブジェクトOAについて計算されたシグネチャSigA1..SigAkと突き合わせて比較する。
6.装置Aは、ステップ4で装置Bから受信したシグネチャがステップ2で装置Aにより計算されたシグネチャのどれとも一致しなかったすべてのチャンクについて装置Bに要求を送信する。要求されたチャンクBi毎に、要求は、ステップ4で装置Aにより計算されたチャンク開始オフセットおよびチャンク長を含む。
7.装置Bは、すべての要求されたチャンクに関連付けられているコンテンツを装置Aに送信する。装置Bにより送信されるコンテンツは、さらに、可逆圧縮アルゴリズムを使用して圧縮した後に、装置Aに送信することができる。
8.装置Aは、ステップ7で装置Bから受信されるチャンクとともに、ステップ4で装置Bにより送信されるシグネチャと一致したオブジェクトOAの装置Aのチャンクを使用することにより、オブジェクトOBのローカルコピーを再構成する。ローカルおよびリモートチャンクが装置A上に再配列される順序は、ステップ4で装置Aにより受信されるチャンクシグネチャのリストにより決定される。
パーティション分割ステップ2および3は、関連付けられたオブジェクト(それぞれ、OAおよびOB)内のすべてのバイト位置で計算されるフィンガープリント関数を使用するデータ依存の方法で実行することができる。所定の位置について、フィンガープリント関数は、オブジェクト内のその位置を囲む小さなデータウィンドウを使用して計算され、フィンガープリント関数の値は、そのウィンドウに含まれるオブジェクトのすべてのバイトに依存する。フィンガープリント関数は、例えば、ハッシュ関数またはラビン多項式(Rabin polynomial)などの適切な関数とすることができる。
チャンク境界は、選択された条件を満たすようにフィンガープリント関数によって計算されるオブジェクト内の位置に決定される。チャンクシグネチャは、暗号的に安全なハッシュ関数(SHA)また衝突困難なハッシュ関数などの他の何らかのハッシュ関数を使用して計算することができる。
ステップ4で送信されるシグネチャおよびチャンク長リストは、オリジナルのチャンクおよび識別された更新済みまたは新規チャンクの両方を使用してオブジェクトを再構成する基盤となる。ステップ6で要求されるチャンクは、そのオフセットおよび長さにより識別される。オブジェクトは、シグネチャがステップ4で装置Aにより受信されたシグネチャと同じ順序で一致するローカルおよびリモートチャンクを使用することにより装置A上に再構成される。
再構成ステップが装置Aによって実行された後、オブジェクトOAは、装置A上に再構成されたオブジェクトOBのコピーにより削除され、および置き換えられることが可能である。他の実施形態では、装置Aは、将来のRDC転送時にチャンクの潜在的「再利用」のため、オブジェクトOAを保持することができる。
大きなオブジェクトについては、図3Aに例示されている基本的なRDCプロトコルインスタンスだと、オブジェクトOAおよびオブジェクトOBが非常に近い、または同一であっても、ステップ4で著しい固定オーバーヘッドが生じる。平均チャンクサイズCが与えられると、ステップ4においてネットワーク経由で伝送される情報の量は、オブジェクトOBのサイズに比例し、特に、オブジェクトOBのサイズを、オブジェクトBのチャンクの個数である、したがってステップ4で送信される(チャンクシグネチャ、チャンク長)ペアの個数であるCで割った値に比例する。
例えば、図6を参照すると、大きなイメージ(例えば、Microsoft Virtual Serverなどの仮想マシンモニタにより使用される仮想ハードディスクイメージ)では、サイズが9.1GBのオブジェクト(OB)が生じる可能性がある。平均的チャンクサイズCが3KBに等しいと、9GBのオブジェクトでは、オブジェクトOBに対し300万個のチャンクが生成される可能性があり、ステップ4で42MBの関連するシグネチャおよびチャンク長情報をネットワーク経由で送信する必要がある。オブジェクトOAとオブジェクトOBとの間の差分(およびステップ7で送信する必要があるデータの量)は非常に小さくてもネットワーク上で42MBのシグネチャ情報が送信されなければならないため、プロトコルの固定オーバーヘッドコストは過度に高い。
ステップ4でのシグネチャ情報転送の代わりにRDCプロトコルの再帰的適用を使用することにより、この固定オーバーヘッドコストを著しく低減できる。図3Bを参照すると、追加ステップ4.2〜4.8は、基本的なRDCアルゴリズムのその置換ステップ4の下で以下のように説明されている。ステップ4.2〜4.8は、上述の基本的なRDCプロトコルのステップ2〜8の再帰的適用に対応する。再帰的適用は、以下のステップ4.4に適用し、というように、所望の再帰の深さまで適用を続けることができる。
4.2.装置Aは、再帰的シグネチャチャンクの中へのシグネチャおよびチャンク長リスト((SigA1,LenA1)...(SigAk,LenAk))の再帰的チャンキングを実行し、s<<kの場合、再帰的シグネチャおよび再帰的チャンク長の他のリスト((RSigA1,RLenA1)...(RSigAs,RLenAs))を取得する。
4.3.装置Bは、シグネチャおよびチャンク長のリスト((SigB1,LenB1)...(SigBn,LenBn))を再帰的にチャンクアップして、r<<nの場合、再帰的シグネチャおよび再帰的チャンク長のリスト((RSigB1,RLenB1)...(RSigBr,RLenBr))を生成する。
4.4.装置Bは、再帰的シグネチャおよび再帰的チャンク長の順序付きリスト((RSigB1,RLenB1)...(RSigBr,RLenBr))を装置Aに送信する。再帰的チャンクシグネチャおよび再帰的チャンク長のリストは、コンパクトになるように符号化され、可逆圧縮アルゴリズムを使用してさらに圧縮された後、装置Aに送信される。
4.5.装置Aは、装置Bから受信された再帰的シグネチャをステップ4.2で計算された再帰的シグネチャの装置Aのリストとを比較する。
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が完了した後、実行は、図3Aに例示されている、上述の基本的なRDCプロトコルのステップ5に続く。
再帰的チャンクキング動作の結果として、オブジェクトに関連付けられている再帰的シグネチャの個数は、平均チャンクサイズCに等しい割合で減らされ、再帰的シグネチャの個数が著しく減る(それぞれ、オブジェクトOAについてはr<<nおよびオブジェクトOBについてはs<<k)。一実施形態では、同じチャンキングパラメータは、オリジナルのオブジェクトOAおよびOBをチャンキングする場合のようにシグネチャをチャンキングするために使用することが可能である。他の実施形態では、再帰的ステップに、他のチャンキングパラメータを使用することができる。
非常に大きなオブジェクトについては、上記の再帰的ステップを、k≧1としてk回適用することができる。Cの平均チャンクサイズについては、再帰的チャンキングにより、ネットワーク上のシグネチャトラフィックのサイズ(ステップ4.2から4.8)をCkにほぼ対応する分だけ小さくできる。Cは、比較的大きいので、1を超える再帰の深さは、非常に大きなオブジェクトの場合にのみ必要と考えられる。
一実施形態では、再帰的ステップの数は、予想平均チャンクサイズ、オブジェクトOAおよび/またはOBのサイズ、オブジェクトOAおよび/またはOBのデータ形式、装置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に例示されているように、やり取りは、装置Aがステップ400内のオブジェクトOBのRDC転送を要求し、装置Bがステップ450でこの要求を受信することにより始まる。この後、ローカル装置Aおよびリモート装置Bは両方とも、ステップ401および451内のフィンガープリントを独立に計算し、ステップ402および452でそれぞれのオブジェクトを複数のチャンクに分割し、ステップ403および453においてそれぞれのチャンクについてシグネチャ(例えば、SHA)を計算する。
ステップ454で、装置Bは、ステップ452および453で計算されたシグネチャおよびチャンク長リストを装置Aに送信し、装置Aは、ステップ404でこの情報を受信する。
ステップ405で、ローカル装置Aは、要求されたチャンクのリストを空リストに初期化し、リモートチャンクの追跡オフセットを0に初期化する。ステップ406で、次の(シグネチャ、チャンク長)ペア(SigBi、LenBi)は、ステップ404で受信されたリストから考慮対象として選択される。ステップ407で、装置Aは、ステップ406で選択されたシグネチャSigBiがステップ403で計算されたシグネチャのいずれかと一致するか否かをチェックする。一致する場合、実行はステップ409に続く。一致しない場合、追跡リモートチャンクオフセットおよびバイト単位の長さLenBiがステップ408で要求リストに追加される。ステップ409で、追跡オフセットは、現在のチャンクLenBiの長さだけインクリメントされる。
ステップ410で、ローカル装置Aは、ステップ404で受信されたすべての(シグネチャ、チャンク長)ペアがすでに処理されているか否かを検査する。処理済みでない場合、実行はステップ406に続く。そうでない場合、ステップ411で、チャンク要求リストは、小さくなるように適宜符号化され、圧縮され、リモート装置Bに送信される。
リモート装置Bは、ステップ455でチャンクの圧縮されたリストを受信し、それを圧縮解除し、その後、ステップ456で圧縮してチャンクデータを送り返す。
ローカル装置は、ステップ412で、要求されたチャンクデータを受信し、圧縮解除する。ローカル装置では、オブジェクトOAのローカルコピーおよび受信されたチャンクデータを用いて、ステップ413でOBのローカルコピーを組み立て直す。
図4Bは、図4Aからのステップ413の詳細な例を示している。処理はステップ414に続き、そこで、ローカル装置Aは、再構成されたオブジェクトを空に初期化する。
ステップ415で、次の(シグネチャ、チャンク長)ペア(SigBi、LenBi)は、ステップ404で受信されたリストから考慮対象として選択される。ステップ416で、装置Aは、ステップ417で選択されたシグネチャSigBiがステップ403で計算されたシグネチャのいずれかと一致するか否かをチェックする。
一致した場合、実行はステップ417に続き、そこで、対応するローカルチャンクが再構成されたオブジェクトに付加される。一致しない場合、受信され圧縮解除されたリモートチャンクは、ステップ418で、再構成されたオブジェクトに付加される。
ステップ419で、ローカル装置Aは、ステップ404で受信されたすべての(シグネチャ、チャンク長)ペアがすでに処理されているか否かを検査する。処理済みでない場合、実行はステップ415に続く。処理済みの場合、再構成されたオブジェクトは、ステップ420で、装置A上のオブジェクトOAの古いコピーを置き換えるために使用される。
(再帰的シグネチャ転送プロセスの流れの例)
図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は、要求された再帰的チャンクのリストを空リストに初期化し、リモート再帰的チャンクの追跡リモート再帰的オフセットを0に初期化する。ステップ506で、次の(再帰的シグネチャ、再帰的チャンク長)ペア(RSigBi、RLenBi)は、ステップ504で受信されたリストから考慮対象として選択される。ステップ507で、装置Aは、ステップ506で選択された再帰的シグネチャRSigBiがステップ503で計算された再帰的シグネチャのどれかと一致するか否かをチェックする。一致する場合、実行はステップ509に続く。一致しない場合、追跡リモート再帰的チャンクオフセットおよびバイト単位の長さRLenBiがステップ508で要求リストに追加される。ステップ509で、追跡リモート再帰的オフセットは、現在の再帰的チャンクRLenBiの長さだけインクリメントされる。
ステップ510で、ローカル装置Aは、ステップ504で受信されたすべての(再帰的シグネチャ、再帰的チャンク長)ペアがすでに処理されているか否かを検査する。処理済みでない場合、実行はステップ506に続く。そうでない場合、ステップ511で、再帰的チャンク要求リストは、小さくなるように符号化され、圧縮され、リモート装置Bに送信される。
リモート装置Bは、ステップ555で再帰的チャンクの圧縮されたリストを受信し、そのリストを圧縮解除し、その後、ステップ556で、圧縮して再帰的チャンクデータを送り返す。
ローカル装置は、ステップ512で、要求された再帰的チャンクデータを受信し、圧縮解除する。ローカル装置は、シグネチャおよびチャンク長リスト((SigA1,LenA1),...(SigAk,LenAk))のローカルコピーおよび受信された再帰的チャンクデータを用いて、ステップ513で、シグネチャおよびチャンク長リスト((SigB1,LenB1),(SigBk,LenBn))のローカルコピーを組み立て直す。その後、実行は図4Aのブロック405に続く。
図5Bに、図5Aのステップ513の詳細な例を示す。処理はステップ514に続き、そこで、ローカル装置Aは、リモートシグネチャおよびチャンク長のリストSIGCLを空リストに初期化する。
ステップ515で、次の(再帰的シグネチャ、再帰的チャンク長)ペア(RSigBi、RLenBi)は、ステップ504で受信されたリストから考慮対象として選択される。ステップ516で、装置Aは、ステップ515で選択された再帰的シグネチャRSigBiがステップ503で計算された再帰的シグネチャのいずれかと一致するか否かをチェックする。
一致する場合、実行はステップ517に続き、そこで装置Aは、対応するローカル再帰的チャンクをSIGCLに付加する。一致しない場合、受信されたリモート再帰的チャンクは、ステップ518で、SIGCLに付加される。
ステップ519で、ローカル装置Aは、ステップ504で受信されたすべての(再帰的シグネチャ、再帰的チャンク長)ペアがすでに処理されているか否かを検査する。処理済みでない場合、実行はステップ515に続く。処理済みの場合、シグネチャおよびチャンク長リスト((SigB1,LenB1),...(SigBk,LenBn))は、ステップ520でSIGCLの値に設定される。その後、実行は図4Aのブロック405に戻って続く。
状況に応じて、再帰的シグネチャおよびチャンク長リストを評価し、前述のように帯域幅利用度を最小にするためにさらに再帰的リモート差分圧縮が必要か否かを判定することができる。再帰的シグネチャおよびチャンク長リストは、所望の圧縮レベルが得られるまで、ステップ504および554をRDC手順の他のインスタンスに置き換える操作を続けて行くことにより前述のチャンキング手順を使用して再帰的に圧縮することができる。再帰的シグネチャリストが十分に圧縮された後、前述のようにリモート装置とローカル装置との間の伝送のために再帰的シグネチャリストが返される。
図6は、一実施例により用意されたRDCシーケンス例における再帰的圧縮の例をグラフィックで例示する図である。図6に示されている実施例では、オリジナルのオブジェクトは9.1GB分のデータである。シグネチャおよびチャンク長リストは、チャンキング手順を使用してコンパイルされ、そこで、シグネチャおよびチャンク長リストから300万個のチャンク(または42MBのサイズ)が得られる。第1の再帰的ステップの後、シグネチャリストは、33000個のチャンクに分割され、サイズ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からのシグネチャおよびチャンク長|=|OB|*|SigLen|/C、ただし、|OB|はオブジェクトOBのバイト単位のサイズであり、SigLenは(シグネチャ,チャンク長)ペアのバイト単位のサイズであり、Cはバイト単位の予想平均チャンクサイズである。
(S2)Σchunk_length、ただし、(signature,chunk_length)∈Bからのシグネチャ、
およびsignature
Figure 0004961126
Aからのシグネチャ。
通信コストは、大きな平均チャンクサイズおよびリモートチャンクとローカルチャンクとの間の大きな共通集合から恩恵を受ける。オブジェクトを複数のチャンクに切り分ける方法の選択により、プロトコルの品質が決定される。ローカルおよびリモート装置は、事前の通信なしで、オブジェクトを切り分ける場所について合意していなければならない。以下では、切り分けを見つける様々な方法を説明し、分析する。
切り分けアルゴリズムについては、以下の特徴が知られていると仮定する。
1.スラック:ファイル差分の帳尻を合わせるためにチャンクに必要なバイト数。シーケンスs1、s2、およびs3を考え、2つのシーケンスs1s3、s2s3を連結により形成する。2つのシーケンスChunks1、およびChunks2のチャンクを生成する。Chunks1’およびChunks2’が、Chunks1およびChunks2からそれぞれ第1の共通接尾辞に達するまでのチャンク長の総和である場合、バイト単位のスラックは以下の公式により与えられる。
slack=Chunks1’−|s1|=Chunks2’−|s2
2.平均チャンクサイズC:
オブジェクトOAおよびOBが平均サイズKと共通のS個のセグメントを持つ場合、ローカルのクライアント上で得られるチャンクの個数は以下の式で与えられ、
Figure 0004961126
上記の(S2)は以下のように書き換えられる。
Figure 0004961126
そのため、slackを最小にするチャンキングアルゴリズムにより、電話回線で送信されるバイト数は最小にされる。したがって、予想されるスラックを最小にするチャンキングアルゴリズムを使用すると都合がよい。
(フィンガープリント関数)
すべてのチャンキングアルゴリズムは、小さなウィンドウ、つまり、バイトの制限されたシーケンスに依存するフィンガープリント関数、またはハッシュを使用する。チャンキングに使用されるハッシュアルゴリズムの実行時間は、それらのアルゴリズムが有限差分(強度削減)最適化の影響を受けやすいとき、ハッシュウィンドウサイズと無関係である。したがって、サイズkのハッシュウィンドウについては、b0、bk、および#[b0,b1,...,bk-1]のみを使用してハッシュ#[b1,...,bk-1,bk]を計算するのは容易であろう(一定数のステップのみを必要とする)。ラビン多項式を使用するハッシュ関数とともに事前計算された乱数の表に基づく計算効率の高いと思われる他のハッシュ関数などの様々なハッシュ関数を採用することができる。
一実施例では、ローリングチェックサムに基づく32ビットAdlerハッシュは、フィンガープリントのハッシュ関数として使用することができる。この手順は、それぞれが事前計算された16ビットの乱数である、256個のエントリを持つ固定テーブルを使用することにより十分に良好なランダムハッシュ関数を実現する。このテーブルは、フィンガープリントバイトを16ビットの乱数に変換するために使用される。32ビットハッシュは、2つの16ビット数sum1とsum2に分割され、以下の手順で更新される。
sum1+=table[bk]−table[b0
sum2+=sum1−k*table[b0
他の実施例では、循環シフトを使用する64ビットランダムハッシュは、フィンガープリントのためのハッシュ関数として使用することができる。循環シフトの周期は、ハッシュ値のサイズにより制限される。そのため、64ビットハッシュ値を使用すると、ハッシュの周期は64に設定される。ハッシュを更新する手順は以下のとおりである。
hash=hash∧((table[b0]<<1)|(table[b0]>>u))∧table[bk];
hash=(hash<<1)|(hash>>63);
ただし、1=k%64およびu=64−1
さらに他の実施例では、他のシフト方法を使用して、フィンガープリントを実現できる。直接的な循環シフトは、制限された長さの周期を生成し、ハッシュ値のサイズにより制限される。他の順列は周期がそれよりも長い。例えば、循環(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の周期を有する。右へのシフトの後に各区間の始めの位置を修正する演算を使用して、この順列の例の単一の適用を計算することができる。
(所定のパターンでのチャンキングに対する従来技術の分析)
以前のチャンキング方法は、所定のウィンドウサイズk(=48)のフィンガープリントハッシュを計算し、ハッシュビットの部分集合が所定のパターンと一致するか否かに基づいて切点を識別することにより決定される。ランダムハッシュ値を使用すると、このパターンは0とすることもでき、関連する部分集合も、ハッシュの接頭辞とすることができる。基本命令では、これは、以下の形式の述部に翻訳される。
CutPoint(hash)≡0==(hash&((1<<c)−1))
ただし、cは、照合されるべきビットの個数である。
ランダムハッシュ関数が与えられた場合の一致に対する確率が2-cなので、平均チャンクサイズC=2cが結果として得られる。しかし、最小、または最大チャンクサイズはいずれも、この手順では決定されない。mの最小チャンク長が課された場合、平均チャンクサイズは以下のようになる。
C=m+2c
予想されるスラックの概算は、ストリームs13およびs23を考慮することにより得られる。s1およびs2における切点は、任意の桁に出現できる。平均チャンク長はC=m+2cなので、s1およびs2の最後の切点の約(2c/C)2は、距離mを超える。これらは、約2cのところでスラックに寄与する。残りの1−(2c/C)2は、長さ約Cのスラックとともに関わる。その後、予想されるスラックは、(2c/C)3+(1−(2c/C)2)*(C/C)=(2c/C)3+1−(2c/C)2程度となり、m=2c-1に対し大域的な最小値を持ち、値は約23/27=0.85である。より正確な分析により、残り1−(2c/C)2の端数に対しいくらか低い推定値が得られるが、s3の内側の距離mの範囲内の切断を補正する必要もあり、より高い推定値の一因となる。
そのため、従来技術の予想されるスラックは約0.85*Cである。
(フィルタでのチャンキング(新しい技術))
フィルタでのチャンキングは、フィルタを固定することに基づいており、これは、長さmのパターン列であり、フィンガープリントハッシュのシーケンスをフィルタと照合する。このフィルタで、ハッシュのシーケンスをフィルタの接頭辞と接尾辞の両方に一致させることができない場合、2つの一致の間の最小距離は少なくともmでなければならないと推論することができる。フィルタ例は、最初のm−1個のパターンを
0!=(hash&((1<<c)−1))
に設定し、最後のパターンを
0==(hash&((1<<c)−1))
に設定することにより、従来技術で使用されるCutPoint述部から得られる。
このフィルタの一致の確率は、pが2-cとすると、(1−p)m-1pで与えられる。予想されるチャンク長は、フィルタの一致の確率の逆数をとることにより与えられ(フィルタで、シーケンスが接頭辞と接尾辞との両方と一致しないようにすることが必要である)、したがって、フィルタ例の予想される長さは(1−p)-m+1-1である。この長さは、p:=1/mに設定した場合に最小になり、約(e*m)であることが分かる。平均スラックは、0.8を中心として変動するが、当業者であれば検証可能である。この方法の他の実施形態では、raw入力と直接連携するパターンを使用し、ローリングハッシュを使用しない。
(局所最大値でのチャンキング(新しい技術))
局所最大値でのチャンキングは、有界な水平軸の範囲内にある切点として選択することに基づく。以下では、水平軸の値に対しhを使用することにする。オフセットoffset−h、...、offset−1とともにoffset+1、...、offset+hでのハッシュ値がすべてoffsetでのハッシュ値よりも小さい場合に、位置offsetのハッシュはh局所最大であるという。つまり、左にhステップ、および右にhステップのすべての位置は、より小さなハッシュ値を持つ。当業者であれば、局所最大値は、局所最小値または他の測定基準ベースの比較(「ハッシュ値の中央値に最も近い」など)で置き換えられることを理解するであろう。
サイズnのオブジェクトに対する局所最大値の集合は、2・n回の演算を限界とする時間で計算することができ、局所最大値の集合を計算するコストは、独立のチャンキングに基づいて切点を計算するコストに近いか、または同じである。局所最大値を使用して生成されたチャンクは、常に、hに対応する最小サイズを持ち、平均サイズは約2h+1である。CutPoint手順は、図8および9に例示されており、以下のように説明される。
1.エントリがレコード{isMax=false,hash=0,offset=0}で初期化された長さhの配列Mを割り当てる。各フィールド内の第1のエントリ(isMax)は、候補が局所最大値とすることが可能か否かを示す。第2のフィールドのエントリ(hash)は、そのエントリに関連付けられたハッシュ値を示し、0(またはそれとは別に、可能な最大ハッシュ値)に初期化される。エントリ内の最後のフィールド(offset)は、フィンガープリントオブジェクトの中への候補までのバイト単位の絶対オフセットを示す。
2.配列Mの中へのオフセットminおよびmaxを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で条件が偽の場合、実行はステップ811に続き、そこで、minは(min+1)%hに設定される。次に、実行は、ステップ805に戻って続く。
4.CutPoint(hash,offset)が真を返す場合、これは位置offset−h−1が新しい切点である場合となる。
(局所最大値手順の分析)
nバイトのオブジェクトは、与えられたオブジェクトについて高々n個のエントリが挿入されるように、CutPointをn回呼び出すことにより処理される。削除されるエントリがn個以下となるように、ステップ805で開始するループが繰り返される毎に1つのエントリが削除される。そのため、この処理ループには、エントリ毎に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の確率で任意の位置に見つかる。この漸化式は、調和級数Hn=1+1/2+1/3+1/4+...+1/nに対応する解を持ち、これはHnを式の中に代入し、nについての帰納法を実行することにより妥当性を確認することができる。Hnは、nの自然対数に比例する。したがって、配列Mはサイズhのものが割り当てられるが、サイズの小数部ln(h)のみが、どの時点においても使用される。
係数hとともにminおよびmaxを計算することで、数値間の距離がhの範囲内にある限りは、Mの使用される区間を任意に拡大することができる。
Mに対する初期値の選択は、切点を第1の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
に簡略化し、これは、ベルヌーイ数Bkの展開を使用して、
(1/m)2h+11/(2h+1)Σ0≦k<2h(2h+1)!/k!(2h+1−k)!Bk2h+1-k
にすることにより、より正確に計算することができる。
ゼロでない唯一の奇数のベルヌーイ数はB1であり、対応する値は−1/2である。偶数のベルヌーイ数は、以下の式を満たす。
(2n)=(−1)n-12n-1π2n2n/(2n)!
左辺は、無限和1+(1/2)2n+(1/3)2n+...を表し、これは、nが控えめな値であっても、1に非常に近い。
mがhよりもかなり大きい場合、積分により分かるように、最初の項を除いてすべての項を無視することができる。これらは、0から1の範囲の定数により与えられ、これにhk-1/mkに比例する項を掛ける。第1の項(B0=1)は1/(2h+1)に簡約される。(第2の項は−1/(2m)であり、第3の項はh/(6m2)である)。
予想されるスラックの概算について、ストリームs13およびs23を考慮する。s1およびs2の内側の最後の切点は、任意の桁に出現できる。平均チャンク長は約2h+1なので、最後の切点の約1/4は、s1およびs2内の距離hの範囲内にある。これらは、約7/8hのところで切点に寄与する。この場合の次の1/2では、一方の切点は距離h内にあり、他方の切点は距離hを超えたところにある。これらは、3/4hの周りの切点に寄与する。s1およびs2内の最後の切点の残り1/4部分は、hを超える距離内にある。したがって、予想されるスラックは、約1/4*7/8+1/2*3/4+1/4*1/4=0.66となる。
そのため、この独立のチャンキング方式の予想されるスラックは0.66*Cであり、従来技術(0.85*C)に比べて改善されている。
高々hに比例するか、またはh内の平均で空間を使用しながら、平均して比較的少ない命令で実行することを必要とする切点を識別する他の手段がある。上記の手順では、長さnのストリーム内に、すべての位置0..n−1に対するエントリを挿入する。代替の手順における基本的な考え方は、長さhの区間内の上昇連鎖の要素に遭遇した場合のみ更新するというものである。平均して区間毎にln hのそのような更新のみがあることが観察される。さらに、長さhの2つの連続する区間内の局所最大値を比較することにより、2つの局所最大値のそれぞれがさらにh局所最大値にもなりうるかを判定することができる。代替の手順には奇妙な点が1つあるが、それは、それぞれのブロックが逆方向にトラバースされる、サイズhのブロック単位でストリームをトラバースすることにより上昇連鎖を計算することを必要とする。
他の手順(図10および11を参照)では、簡単のため、ハッシュのストリームは1つのシーケンスとして与えられていると仮定する。サブルーチンCutPointは、(図では「水平」に展開されている)長さ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のループでB[1].hashと突き合わせてハッシュ値をチェックし、第2のループでA[k]を更新する。他の場合は、A[k]を更新し、その後、B[1].isMaxを更新するだけのループを使用して処理することができる。
CutPointを呼び出す毎に、平均してAへのln h回のメモリ書き込み、およびループの昇降(hoisting)による、最大値を見つけることに関連しているh+ln h回の比較を行う必要がある。A[k].isMaxの最後の更新は、二分探索法を使用するか、または平均して高々対数ln hステップでインデックス0から始まるBをトラバースすることにより実行することができる。また、CutPointを呼び出す毎に、更新されるウィンドウ内の最後の位置でローリングハッシュを再計算する必要がある。これは、ローリングハッシュウィンドウのサイズと同じだけのステップを要する。
(改善されたチャンキングアルゴリズムの観察された利点)
最小チャンクサイズは、局所最大値および上述のフィルタ方法の両方の中に組み込まれている。従来の実装では、最小チャンクサイズを付加的パラメータと別に供給する必要がある。
局所最大値(または数学)ベースの方法では、測定可能な比較的良好なスラック推定値が得られ、ネットワーク経由でさらに圧縮したものに変換される。フィルタ方法では、さらに、従来方法に比べて良好なスラック効率が得られる。
新しい方法は両方とも、切点の局所性の特性を持つ。水平を越えるs3の内側のすべての切点は、ストリームs13およびs23の両方の切点となる。(つまり、ストリームs13を考察し、pが位置≧|s1|+水平であり、pがs13内の切点である場合、これはさらに、s23内の切点でもある。この同じ特性は、他の方向も保持し(対称的に)、pがs23内の切点の場合、s13内の切点でもある)。このようなことは従来の方法にはなく、切断が何らかの最小チャンクサイズを超えるべきという要求条件は干渉し悪影響を及ぼす可能性がある。
(他の数学関数)
上述のチャンキングの手順では、局所最大値計算を使用して切点を特定する手段を説明しているが、本発明はそれに限定されるわけではない。潜在的切点を調べられるように数学関数を用意することができる。それぞれの潜在的切点は、考察される切点を中心とする水平ウィンドウ内に置かれているハッシュ値を評価することにより評価される。ハッシュ値の評価は、これは、水平内の最大値を特定すること、水平内の最小値を特定すること、ハッシュ値間の差を評価すること、ハッシュ値の差異を評価すること、任意の定数と突き合わせてその結果を比較することのうちの少なくとも1つを含むことができる数学関数だけでなく、他の何らかの数学または統計関数により実行される。
局所最大値についてすでに説明されている特定の数学関数は、2値述部「_>_」である。pがオブジェクト内のオフセットである場合、pは、すべてのkについて、p−horizon≦k<p、またはp<k≦p+horizonとして、hashp>hashkであれば切点として選択される。しかし、2値述部>は、本発明の精神から逸脱することなく他の数学関数で置き換えることができる。
(リモート差分圧縮の候補オブジェクトの検出)
上述の基本的なRDC手順の有効性は、RDCアルゴリズムのステップ4および8でシグネチャおよびチャンク再利用についてそれぞれレシーバ上の候補オブジェクトを見つけることにより高めることができる。このアルゴリズムは、装置Aが、RDCアルゴリズムを使用して装置Bから転送される必要のあるオブジェクトOBに類似のOA1、OA2、...、OAnにより表されるオブジェクトの小さな部分集合を識別するのを助ける。OA1、OA2、...、OAnは、装置A上にすでに格納されているオブジェクトの一部である。
2つのオブジェクトOBとOAとの類似性は、割った2つのオブジェクトが共有する異なるチャンクの数を第1のオブジェクト内の異なるチャンクの総数で割った値に関して測定される。そのため、Chunks(OB)およびChunks(OA)がそれぞれRDCアルゴリズムのOBおよびOAについて計算されたチャンクの集合である場合、表記|X|を使用して、集合Xの濃度、つまり要素の個数を表すと、以下の式が得られる。
Figure 0004961126
チャンク等式の代わりとして、チャンクのシグネチャに関する等式が使用される。これは、ハッシュ衝突の確率がきわめて低く、暗号的に安全なハッシュ関数(SHA−1またはMD5など)を使用してシグネチャを計算した場合に非常に正確である。したがって、Signatures(OB)およびSignatures(OA)がRDCアルゴリズムのチャンキング部分の中のOBおよびOAについて計算されたチャンクシグネチャの集合である場合、以下の式が得られる。
Figure 0004961126
オブジェクトOBおよび装置A上に格納されているオブジェクトObjectsAの集合が与えられた場合、OBとの類似度が与えられた閾値sを超えるObjectsAのメンバが識別される。sの標準的な値は、s=0.5(50%の類似度)である、つまり、OBと共通のチャンクの少なくとも半分を持つオブジェクトに関心があるということである。しかし、sの値は、アプリケーションにとって意味のある値であればどのような値にも設定できる。例えば、sは0.01から1.0(1%の類似度から100%の類似度まで)の範囲で設定可能である。オブジェクトのこの集合は以下のように定義される。
Similar(OB,ObjectsA,s)={OA|OA∈ObjectsA∧Similarity(OB,OA)≧s}
オブジェクトOA1、OA2、...、OAnの集合は、最も良いnの一致をとることによりSimilar(OB,ObjectsA,s)の部分集合として計算される。
上述の基本的なRDCアルゴリズムは、類似のオブジェクトOA1、A2、...、OAnの集合を識別し、使用するように以下のように修正される。
図12に、本発明のいくつかの態様による、候補オブジェクトを見つけて使用するように修正されたRDCアルゴリズムを例示する。装置A上の候補オブジェクトを見つけ、使用するプロトコル、および更新されたオブジェクトOBを装置Bから装置Aに転送することについて説明する。類似のプロトコルを使用して、オブジェクトを装置Aから装置Bに転送することができ、転送は、後述のプロトコルを著しく変更せずに装置Aまたは装置Bのいずれかからの命令により開始できる。
1.装置Aは、RDCプロトコルを使用してオブジェクトOBを転送する要求を装置Bに送信する。
1.5.装置Bは、装置AにオブジェクトOBの特性の集合Traits(OB)を送信する。一般に、これらの特性は、オブジェクトOBに関係する特性のコンパクトな表現である。後述のように、装置Bは、装置Aに送信する前に再計算する必要がないように、OBの特性をキャッシュすることができる。
1.6.装置AはTraits(OB)を使用して、オブジェクトOBに類似の、すでに格納されているオブジェクトの部分集合である、OA1、OA2、...、OAnを識別する。この決定は、確率論的に実行される。
2.装置Aは、識別されたオブジェクトOA1、OA2、...、OAnを複数のチャンクに分割する。このパーティション分割は、オブジェクトのすべてのバイト位置で計算されるフィンガープリント関数を使用することによりデータに依存する形で実行される。チャンク境界は、フィンガープリント関数が所定の条件を満たす位置で決定される。チャンクへのパーティション分割に続いて、装置Aは、各オブジェクトOAiの各チャンクkについてシグネチャSigAikを計算する。
3.ステップ2と類似の方式を使用して、装置Bは、オブジェクトOBを複数のチャンクに分割し、それらのチャンクのそれぞれについてシグネチャSigBjを計算する。ステップ3で使用されるパーティション分割アルゴリズムは、上記のステップ2のアルゴリズムと一致していなければならない。
4.装置Bは、チャンクシグネチャのリスト(SigB1...SigBn)を装置Aに送信する。このリストは、装置AでオブジェクトOBを再構成できるための基盤となる。チャンクシグネチャSigBjに加えて、オブジェクトOB内の各チャンクのオフセットおよび長さに関する情報が送信される。
5.装置Aが装置Bからチャンクシグネチャを受信すると、ステップ2で計算されたシグネチャの集合(SigA11,...SigA1m,...,SigAn1,...SigAn1)と突き合わせて受信されたシグネチャを比較する。この比較の一部として、装置Aは、オブジェクトOA1,OA2,...,OAnのチャンクについて計算された自シグネチャの1つSigAikと一致しない、装置Bから受信したすべての異なるシグネチャ値を記録する。
6.装置Aは、シグネチャが前のステップで装置Bから受信されたが、装置A上で一致するシグネチャを持たなかったすべてのチャンクについて装置Bに要求を送信する。これらのチャンクは、ステップ4で送信された対応する情報に基づき、オブジェクトOB内のオフセットおよび長さにより要求される。
7.装置Bは、要求されたすべてのチャンクに関連付けられているコンテンツを装置Aに送信する。
8.装置Aは、ステップ6で装置Bから受信されたチャンクとともに、ステップ4で装置Bにより送信されたシグネチャと一致したオブジェクトOA1、OA2、...、OAnの自チャンクをも使用することにより、オブジェクトOBを再構成する。この再構成ステップが完了した後、装置Aは、次に、オブジェクトOBの再構成されたコピーをそのすでに格納されているオブジェクトに追加することができる。
ネットワークトラフィックおよびCPUオーバーヘッドを最小にするために、Traits(OB)は、非常に小さくなければならず、類似のオブジェクトOA1,OA2,...,OAnの集合の決定は、装置A上のごく少数の演算で実行すべきである。
(オブジェクトの特性の集合の計算)
オブジェクトOの特性の集合Traits(O)は、それぞれ、RDCアルゴリズムのステップ2または3について説明されているように、Oについて計算されたチャンクシグネチャに基づき計算される。
図13および14に、本発明の態様による、特性計算のプロセスおよび例を示す。
類似のオブジェクトを識別するためのアルゴリズムは、以下に簡単に説明する4つの主要パラメータ(q、b、t、x)を持つ。
q:シングルサイズ
b:特性毎のビット数
t:オブジェクト毎の特性数
x:一致する特性の最小個数
以下のステップは、オブジェクトOの特性Traits(O)を計算するために使用される。
1.ブロック1310で、O、Sig1...Signは、サイズqの重なり合うシングルのグループにまとめられ、そこでは、すべてのシングルは、q個未満のシグネチャを含む、最後のq−1個のシングルを除く、q個のチャンクシグネチャを含む。他のグループ分け(不連続部分集合、非連結部分集合など)も可能であるが、付加的なシグネチャを挿入して前に考察された部分集合のすべてがそのまま考察されるようにすることが実用上有益である。
2.ブロック1320では、各シングル1...nに対し、シングルシグネチャShingle1...Shinglenは、q個のチャンクシグネチャを連結してシングルを形成することにより計算される。q=1の場合、Shingle1=Sig1,...,Shinglen=Sign
3.ブロック1330では、シングル集合{Shingle1...Shinglen}は、t個のハッシュ関数H1...Htを適用することによりt個のイメージ集合にマッピングされる。これは、以下のように、それぞれn個の要素を含むt個のイメージ集合を生成する。
IS1={H1(Shingle1),H1(Shingle2),...,H1(Shinglen)}
...
ISt={Ht(Shingle1),Ht(Shingle2),...,Ht(Shinglen
4.ブロック1340では、事前特性PT1...PTtは、それぞれのイメージ集合の最小要素をとることにより計算される。
PT1=min(IS1
...
PTt=min(ISt
他の決定論的数学関数も、事前特性を計算するのに使用できる。例えば、事前特性PT1...PTtは、それぞれのイメージ集合の最大要素をとることにより計算される。
PT1=max(IS1
...
PTt=max(ISt
数学的には、値を適切に順序付けられた集合に移すマッピングは、2つの単純な実現(realization)となる有界整数上の最大値および最小値を満たす。
5.ブロック1350では、特性T1...Ttは、それぞれの事前特性PT1...PTtからbビットを選択することにより計算される。サンプルの独立性を保持するために、事前特性が十分に長ければ、ビットの重なり合わないスライスを、第1については0..b−1、第2についてはb..2b−1というように選択するのがよい。
1=select0..b-1(PT1
...
t=select(t-1)b..tb-1(PTt
事前特性よりもサイズの小さい特性を作成するために、いかなる決定論的関数でも使用できる。例えば、ハッシュ関数は、結果のサイズが事前特性よりも小さい限り事前特性のそれぞれに適用することが可能であり、必要なビット総数(tb)が事前特性を超える場合、いくつかのハッシュ関数は、部分集合を選択する前にビットの数を拡大するために使用されるべきである。
特性の個数tおよび特性サイズbは、オブジェクトの特性を表すビットの総数(t*b)が小さいものだけ選択される。これは、後述のように特性が装置Aにより事前に計算されキャッシュされる場合には都合がよい。一実施形態によれば、適切に機能することがわかっている(b,t)パラメータのいくつかの典型的な組合せは、例えば、オブジェクト毎に合計96ビットについて(4,24)および(6,16)である。他の組合せも使用できる。説明のために、オブジェクトAのi番目の特性は、Ti(A)で表される。
(事前特性の効率的な選択)
事前特性PT1...PTtを効率よく選択するために、以下の方式を使用し、シングルの部分評価を行って、事前特性を選択するための計算要件を低減することができる。論理的には、各Hiは、2つの部分HighiとLowiに分割される。それぞれのイメージ集合の最小要素のみが選択されるので、Highiは、すべてのチャンクシグネチャについて計算され、Lowiは、Highiについてこれまでに得られた最小値を与えるチャンクシグネチャについてのみ計算される。High値が比較的小さな空間から引き出される場合、これは計算を節約できる。さらに、いくつかのHigh値が1つにまとめられれば、かなりの計算を節約できる。例えば、それぞれのHigh値が8ビット長であると仮定する。これらのうち8つを長整数にパックすることができ、シグネチャから単一の8バイトハッシュを計算するのと引き換えに、その値を8つの独立の1バイトスライスに刻むことができる。High値しか必要なかった場合には、計算コストは1/8に低減される。しかし、平均256回に1回、対応するLow値を計算し、等しいHigh値に対応する他のLow値と比較する必要がある。
(特性の集合を使用した類似のオブジェクトの検出)
このアルゴリズムは、OBと類似の特性を持つオブジェクトの集合を計算することにより与えられたオブジェクトOBに類似のオブジェクトの集合を近似する。
TraitSimiarity(OB,OA)=|{i|Ti(A)=Ti(B)}|
SimilarTraits(OB,ObjectsA,x)={OA|OA∈ObjectsA∧TraitSimiiarity(OB,OA)≧t}
これらの値を導き出せる他の計算もうまくゆく。
与えられたオブジェクトOBに最も類似しているn個のオブジェクトを選択するために、SimilarTraits(OB,ObjectsA,x)が計算され、その集合からn個の最も良く一致したオブジェクトが取り出される。SimilarTraits(OB,ObjectsA,x)のサイズがnよりも小さい場合、集合全体が取り出される。その結果のオブジェクトの集合は、図12に例示されている修正されたRDCアルゴリズムのステップ1.6で識別されたオブジェクトOA1,OA2,...,OAnの潜在的集合を形成する。実施形態によれば、オブジェクトは、類似度に従って選択することができるが、ターゲットに類似であるが、互いに似ていないオブジェクトを選択するか、または類似の特性を持つオブジェクトの集合から他の選択を行うことにより、オブジェクトの集合内の多様性を高めることを試みることもできる。
一実施形態によれば、パラメータ(q,b,t,x)の組合せとして、(q=1,b=4,t=24,x=9)および(q=1,b=6,t=16,x=5)を使用することができる。
図15および16は、本発明の態様により、bおよびtに対するパラメータを選択する場合に使用することができる。一致を検出する確率と、まず(b=4,t=24)に対する偽陽性とに対する曲線が図15に示され、次に(b=6,t=16)に対する曲線が図16に示されている。類似度曲線(1510および1610)の両方の集合により、真の類似度が0〜100%の範囲内にある類似のオブジェクトに対する確率論的検出を実行できる。一実施形態では、表示1520および1620に例示されている偽陽性率は、おおよそ24のうちの10(真の一致の40ビットを与える)、および16のうちの6(一致の36ビット)程度の許容可能なレベルに低下する。ビットの必要な個数の差は、主に、より小さな集合から引き出された組合せの数が少ないことによる。大きな集合の効果(advantage)は、リコールの増大である。つまり、有用な一致が少ないほど気付かれず、誤って検出された一致の割合が増える。精度とリコールの両方を改善するために、ビットの総数を増やすことができる。例えば、(b=5,t=24)に切り換えると、オブジェクト特性に対するメモリ消費量の増大と引き換えに、精度は劇的に改善される。
(特性の集合に対するコンパクトな表現)
装置Aおよび装置Bの両方で格納されているオブジェクトのすべてに対する特性の集合をキャッシュし、修正されたRDCアルゴリズムのステップ1.6および1.5をそれぞれ実行するときに毎回その特性を再計算しなくて済むようにすると都合がよい(図12および関連する説明を参照)。RDC計算をスピードアップするために、特性情報を装置Aおよび装置Bのメモリにそれぞれ格納することができる。
後述の表現では、tを特性の個数、pをオブジェクトへの参照またはポインタを格納するために必要なバイト数としたときにオブジェクト毎にt+p個のメモリバイト順を使用する。参照例として、ファイルパス、ファイル識別子、またはオブジェクト識別子がある。tおよびpの典型的な値に対し、この方式では、50MB未満のメインメモリを使用して100万個のオブジェクトをサポートすることができる。装置にさらに多くのオブジェクトを格納する場合、発見的手法を使用して類似度計算に関わるオブジェクトの個数を切り詰めることができる。例えば、非常に小さなオブジェクトは、図12に例示されているRDCアルゴリズムのステップ4および8で多くのチャンクを与えすぎるということがありえないため先験的に排除することができる。
図17に、本発明のいくつかの態様による、ObjectMapおよびt個の特性テーブルの集合のコンパクトな表現を構成するデータ構造を例示する。
最初に、短い識別子、つまりオブジェクトIDがすべてのオブジェクトに割り当てられる。一実施形態では、これらの識別子は連続する非負4バイト整数であり、したがって、最大40億個のオブジェクトを表すことができる。
データ構造体(ObjectMap)では、オブジェクトIDからオブジェクト参照へのマッピングを保持する。これは、装置上に格納されているオブジェクトが割り当てられたオブジェクトIDをどの順序で取得するかは問題でない。最初に、この割り当ては、単に格納されているオブジェクトのその装置側のリストをスキャンすることにより実行できる。オブジェクトが削除された場合、ObjectMap内の対応するエントリは、(オブジェクト参照用に予約されている値を使用することにより)デッドエントリというマークが付けられる。オブジェクトが修正されると、ObjectMap内の対応するエントリはデッドエントリのマークを付けられ、そのオブジェクトは、次に高い未使用オブジェクトIDを割り当てられる。
ObjectMapがあまりにも疎らになる場合(デッドエントリの合計サイズおよび個数を追跡することにより容易に決定できる何か)、ObjectMapおよび特性テーブルは両方とも破棄され、最初から作り直される。
特性テーブルは、特性番号(1からtまで)および特性値(0から2b−1まで)から、その特定の特性を持つオブジェクトに対するオブジェクトIDの集合である、TraitSetにマッピングする2レベルインデックスを形成する。TraitSetは、新しいオブジェクトを格納するため最後にいくつかの未使用エントリを含む配列として表される。インデックスIXi,kは、付加できるように各TraitSet配列内の第1の未使用エントリを追跡する。
TraitSet内では、オブジェクトの特定の集合がオブジェクトIDの昇順で格納される。オブジェクトIDの空間は密に保たれるため、TraitSets内の連続するエントリは、オブジェクトID空間内で互いに「近い」と予期することができる−平均して、2個の連続するエントリは約t*2b(ただし、少なくとも1)だけ異なるであろう。t*2b<<255となるようにtおよびbの値を選択した場合、連続するエントリは、図17に示されているように、2つのオブジェクトIDの間の差を表す符号なしバイトを平均して1つだけ使用することにより符号化できる。2つの連続するオブジェクトIDが256以上異なる稀な場合について、0×00バイトを使用して、次に完全な4バイトオブジェクトIDが続くことを示すエスケープメカニズムが用意されている。
異なる実施形態では、オブジェクトIDの差が256よりも小さい場合、これは、単一バイトとして表すことができ、そうでない場合、例えば「8つのうちの7つ」表現を使用することにより、後続バイトが差分−256を表す値0が予約される。すると、b=6の場合、差分の98%が1バイトに収まり、99.7%が2バイトに収まり、10億にほとんど2つが3バイトに収まる。このスキームではオブジェクト毎に平均1.02バイトを使用するが、それに対して、図17に示されているスキームではオブジェクト毎に1.08バイトを使用する。
デッドオブジェクトIDに対応する特性テーブル内のエントリは、特性テーブル内に残すことができる。新しいエントリが末尾に付加される(インデックスIX1,0...IXt,2 b -1を使用して)。
(コンパクト表現を使用した類似オブジェクトの検出)
図18に、本発明の様々な態様による類似の特性を持つオブジェクトを見つけるプロセスを例示する。一実施形態によれば、SimilarTraits(OB,ObjectsA,x)を計算する場合、これらのステップはマージソートアルゴリズムに似ている。このアルゴリズムでは、OBの少なくともxおよびt個までの特性にそれぞれ一致するObjectsAに属しているオブジェクトを格納するために使用される(t−x+1)個のオブジェクトバケット、OBx...OBtを使用する。
1.ブロック1810で、OBのt個の特性TS1...TStに対応するt個のTraitSetsを選択する。OBx...OBtを空に初期化する。インデックスP1...Ptを初期化して、それぞれ、TS1...TStの第1の要素を指すようにする。TSk[Pk]は、Pkによって指されるオブジェクトIDの表記である。
2.決定ブロック1820で、P1...PtのすべてがそのTraitSet配列TS1...TStの最後の要素を越えてそれぞれ指す場合、ステップ6(ブロック1860)に進む。
3.ブロック1830で、以下のように、最小オブジェクトIDを指すインデックスの集合であるMinP集合が選択される。
Figure 0004961126
MinIDをMinPすべてのインデックスによって指される最小オブジェクトIDとする。
4.ブロック1840で、k=|MinP|とするが、これは一致する特性の個数に対応する。k≧xであり、ObjectMap(MinP)がデッドエントリでない場合、MinIDをOBkに付加する。
5.MinP内のすべてのインデックスPkをそれぞれのTraitSet配列TSk内の次のオブジェクトIDに進める。ステップ2(ブロック1820)に進む。
6.ブロック1860で、まずOB1からオブジェクトを選択し、次にOBt-1からオブジェクトを選択し、というように、所望の個数の類似オブジェクトが選択されてしまうか、またはOBx内にオブジェクトが残らなくなるまで繰り返す。上記のステップで得られたオブジェクトIDは、ObjectMapを使用することによりオブジェクト参照に容易にマッピングすることができる。
上記の明細、実施例、およびデータは、本発明の構成の製造および使用に関する完全な説明となっている。本発明の多くの実施形態は、本発明の精神と範囲を逸脱することなく実装できるため、本発明は添付の特許請求の範囲によって定められる。
動作環境を例示する図である。 コンピューティング装置の例を示す図である。 RDC手順例を示す図である。 RDC手順例を示す図である。 RDC手順例を実施したときのローカル装置とリモート装置との間のやり取りに対するプロセスの流れを例示する図である。 RDC手順例を実施したときのローカル装置とリモート装置との間のやり取りに対するプロセスの流れを例示する図である。 RDC手順を実施したときのやり取りの例におけるシグネチャおよびチャンク長のリストの再帰的リモート差分圧縮に対するプロセスの流れを例示する図である。 RDC手順を実施したときのやり取りの例におけるシグネチャおよびチャンク長のリストの再帰的リモート差分圧縮に対するプロセスの流れを例示する図である。 RDCシーケンス例における再帰的圧縮の例をグラフィックで例示する図である。 RDC手順例を使用してクライアントおよびサーバアプリケーションのやり取りを例示する図である。 チャンキング手順例のプロセスの流れを例示する図である。 チャンキング手順例の命令コード例を示す図である。 他のチャンキング手順例の命令コード例を示す図である。 他のチャンキング手順例の命令コード例を示す図である。 候補オブジェクトを見つけて使用するように修正されたRDCアルゴリズムを例示する図である。 特性計算(trait computation)のプロセスおよび例を示す図である。 特性計算のプロセスおよび例を示す図である。 bおよびtに対するパラメータを選択する際に使用できる図である。 bおよびtに対するパラメータを選択する際に使用できる図である。 オブジェクトマップおよび特性テーブルの集合のコンパクトな表現を構成するデータ構造を例示する図である。 本発明の様々な態様による類似の特性を計算するためのプロセスを例示する図である。

Claims (11)

  1. リモート差分圧縮で用いるオブジェクトをコンピュータが識別する方法であって、
    前記方法は、
    オブジェクトの特性を計算するステップであって、該特性を計算するステップは、
    前記オブジェクトを複数のチャンクに分割することと、
    前記オブジェクトのチャンクのそれぞれについてのシグネチャを計算することと、
    前記シグネチャを複数のシングルにグループ化することと、
    前記シングルのそれぞれについての少なくとも一つのシングルシグネチャを計算することと、
    前記シングルシグネチャをイメージ集合にマッピングすることと、
    前記イメージ集合から所定の条件に基づいて前記シングルシグネチャを選択することによって事前特性を計算することと、
    前記事前特性の一部のビット選択して前記特性を計算することであって、該特性は、該事前特性に比べて小さいサイズである、ことと
    を含む、ステップと、
    前記計算された特性と類似の特性を持つ、前記オブジェクトに類似する候補オブジェクトを識別するステップと、
    前記識別された候補オブジェクトを使用して前記オブジェクトを再構成することによって最終オブジェクトを選択するステップと
    を含むことを特徴とする方法。
  2. 前記オブジェクトの特性を計算するステップは、
    それぞれの位置を中心とする小さなウィンドウ内のバイトの値を使用することによって前記オブジェクトのそれぞれのバイト位置でフィンガープリントを生成するステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記オブジェクトの特性を計算するステップは、
    それぞれの位置を中心とする小さなウィンドウ内のバイトの値を使用することによって前記オブジェクトのそれぞれのバイト位置でフィンガープリントを生成するステップをさらに含み、
    前記オブジェクトをチャンクに分割することは、前記フィンガープリントに基づいて前記オブジェクトをチャンクすることを含むことを特徴とする請求項1に記載の方法。
  4. 前記候補オブジェクトを使用することは、
    前記候補オブジェクトのうちk個の最も良く一致するオブジェクトを複数のローカルチャンクに分割することと、
    それぞれのローカルチャンクについてのローカルシグネチャを計算することと、
    リモート装置から受信されたリモートシグネチャと前記ローカルシグネチャとを比較することと、
    前記シグネチャ比較により前記ローカルチャンクが再利用可能であることが示される場合に、ローカルチャンクを再利用して、前記リモートオブジェクトを再構成することと
    を含むことを特徴とする請求項1に記載の方法。
  5. 前記特性をコンパクトに符号化することによって装置の揮発性メモリ内に前記特性を格納するステップと、
    オブジェクトIDをコンパクトに表すオブジェクトマップを装置上に生成するステップであって、それぞれのコンパクトな表現が所定のサイズを使用して表される、ステップと、
    特性番号および特性値から特性集合にマッピングする少なくとも2レベルインデックスを形成する特性テーブルを生成するステップと
    をさらに含むことを特徴とする請求項1に記載の方法。
  6. 類似の特性を持つオブジェクトを検出するステップをさらに含み、該検出するステップは、
    バケット(OBx....OBt)を生成して、リモートオブジェクトOBの少なくともx個の特性と一致するローカルオブジェクトを格納することと、
    オブジェクトOBのt個の特性に対応するt個のTraitSets(TS1...TSt)を選択することと、
    インデックス(P1...Pt)を初期化して、それぞれ、TS1...TStの第1の要素を指すことであって、TSk[Pk]がPkによって指される前記オブジェクトIDの表記である、ことと、
    1...PtのそれぞれがそのTraitSet配列TS1...TStの最後の要素をそれぞれ指すと判定される場合に所望の数の類似のオブジェクトを選択することと、
    最小オブジェクトIDを指すインデックスの集合である、MinP集合を選択することと、
    MinIDをMinP内のすべてのインデックスによって指される最小オブジェクトIDとして設定することと、
    一致する特性の数に対応する、k=|MinP|の場合に、k≧xおよびObjectMap(MinP)はデッドエントリでないと判定される場合にMinIDをOBkに付加することと、
    MinP内のそれぞれのインデックスPkをそれぞれのTraitSet配列TSk内の次のオブジェクトIDに進めることと
    を含むことを特徴とする請求項5に記載の方法。
  7. リモート差分圧縮のためオブジェクトを識別するコンピュータ実行可能命令を格納するコンピュータ読み取り可能な記憶媒体であって、前記コンピュータ実行可能命令は、実行される時に、コンピュータに、
    オブジェクトを複数のチャンクに分割するステップと、
    前記オブジェクトチャンクのそれぞれについてのシグネチャを計算するステップと、
    前記シグネチャを複数のシングルにグループ化するステップと、
    前記シングルのそれぞれについての少なくとも1つのシングルシグネチャを計算するステップと、
    前記シングルシグネチャを複数のイメージ集合にマッピングするステップと、
    前記イメージ集合から所定の条件に基づいて前記シングルシグネチャを選択することによって事前特性を計算するステップであって、該ステップは、それぞれのイメージ集合から計算されたハッシュ値の1つを選択する決定論的数学関数を適用することを含み、該決定論的数学関数は、最大値関数および最小値関数から選択される、ステップと、
    前記事前特性の一部のビット選択して特性を計算するステップであって、前記特性は、前記オブジェクトに類似する最終オブジェクトを識別する該特性を使用する前記事前特性と比較して小さいサイズであり、前記特性を計算するステップは、それぞれが前記特性よりも小さい所定のビット数を有する特性を生成する前記事前特性のそれぞれに決定論的数学関数を適用することを含む、ステップと
    を含む方法を実行させることを特徴とするコンピュータ読み取り可能な記憶媒体。
  8. 前記オブジェクトを複数のチャンクに分割するステップは、
    それぞれの位置を中心とする小さなウィンドウ内のバイトの値を使用することにより前記オブジェクトのそれぞれのバイト位置でフィンガープリントを生成することと、
    前記フィンガープリントに基づいて前記オブジェクトをチャンクすることと
    を含むことを特徴とする請求項7に記載のコンピュータ読み取り可能な記憶媒体。
  9. 前記シグネチャを複数のシングルにグループ化するステップは、シグネチャを連結して1つのシングルを形成することから成ることを特徴とする請求項7に記載のコンピュータ読み取り可能な記憶媒体。
  10. オブジェクトIDをコンパクトに表すオブジェクトマップを装置上に生成するステップであって、各コンパクトな表現が所定のサイズを使用して表される、ステップと、
    特性番号および特性値から特性集合にマッピングする少なくとも2レベルインデックスを形成する特性テーブルを生成するステップと
    をさらに含むことを特徴とする請求項7に記載のコンピュータ読み取り可能な記憶媒体。
  11. 類似の特性を持つオブジェクトを検出するステップをさらに含み、該検出するステップは、
    バケット(OBx....OBt)を生成して、リモートオブジェクトOBの少なくともx個の特性と一致するローカルオブジェクトを格納することと、
    オブジェクトOBのt個の特性に対応するt個のTraitSets(TS1...TSt)を選択することと、
    インデックス(P1...Pt)を初期化して、それぞれ、TS1...TStの第1の要素を指すことであって、TSk[Pk]がPkによって指される前記オブジェクトIDの表記である、ことと、
    1...PtのそれぞれがそのTraitSet配列TS1...TStの最後の要素をそれぞれ指すと判定される場合に所望の数の類似のオブジェクトを選択することと、
    最小オブジェクトIDを指すインデックスの集合である、MinP集合を選択することと、
    MinIDをMinP内のすべてのインデックスによって指される最小オブジェクトIDとして設定することと、
    一致する特性の数に対応する、k=|MinP|の場合に、k≧xおよびObjectMap(MinP)はデッドエントリでないと判定される場合にMinIDをOBkに付加することと、
    MinP内のそれぞれのインデックスPkをそれぞれのTraitSet配列TSk内の次のオブジェクトIDに進めることと
    を含むことを特徴とする請求項10に記載のコンピュータ読み取り可能な記憶媒体。
JP2005277831A 2004-09-24 2005-09-26 リモート差分圧縮のための候補オブジェクトを見つける効率のよいアルゴリズム Active JP4961126B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/948,980 US7613787B2 (en) 2004-09-24 2004-09-24 Efficient algorithm for finding candidate objects for remote differential compression
US10/948,980 2004-09-24

Publications (2)

Publication Number Publication Date
JP2006092558A JP2006092558A (ja) 2006-04-06
JP4961126B2 true JP4961126B2 (ja) 2012-06-27

Family

ID=35149055

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005277831A Active JP4961126B2 (ja) 2004-09-24 2005-09-26 リモート差分圧縮のための候補オブジェクトを見つける効率のよいアルゴリズム

Country Status (5)

Country Link
US (2) US7613787B2 (ja)
EP (1) EP1641219A3 (ja)
JP (1) JP4961126B2 (ja)
KR (1) KR101201031B1 (ja)
CN (1) CN1753368B (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590643B2 (en) 2003-08-21 2009-09-15 Microsoft Corporation Systems and methods for extensions and inheritance for units of information manageable by a hardware/software interface system
US8238696B2 (en) 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US7529811B2 (en) * 2003-08-21 2009-05-05 Microsoft Corporation Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
US7401104B2 (en) 2003-08-21 2008-07-15 Microsoft Corporation Systems and methods for synchronizing computer systems through an intermediary file system share or device
US8166101B2 (en) 2003-08-21 2012-04-24 Microsoft Corporation Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system
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
US7711856B1 (en) * 2004-09-30 2010-05-04 Avaya Inc. Method and apparatus for providing an interface for a messaging mailbox
US7680798B2 (en) * 2004-11-20 2010-03-16 International Business Machines Corporation Method, device and system for automatic retrieval of similar objects in a network of devices
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US8073926B2 (en) * 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
US7788223B2 (en) * 2005-12-05 2010-08-31 Microsoft Corporation Resource freshness and replication
US7882084B1 (en) * 2005-12-30 2011-02-01 F5 Networks, Inc. Compression of data transmitted over a network
JP5204099B2 (ja) 2006-05-05 2013-06-05 ハイバー インコーポレイテッド グループ・ベースの完全および増分コンピュータ・ファイル・バックアップ・システム、処理および装置
US8892761B1 (en) 2008-04-04 2014-11-18 Quickplay Media Inc. Progressive download playback
EP2177010B1 (en) 2006-12-13 2015-10-28 Quickplay Media Inc. Mobile media platform
US9571902B2 (en) 2006-12-13 2017-02-14 Quickplay Media Inc. Time synchronizing of distinct video and data feeds that are delivered in a single mobile IP data network compatible stream
US20080154986A1 (en) * 2006-12-22 2008-06-26 Storage Technology Corporation System and Method for Compression of Data Objects in a Data Storage System
US20080219495A1 (en) * 2007-03-09 2008-09-11 Microsoft Corporation Image Comparison
US20080288527A1 (en) * 2007-05-16 2008-11-20 Yahoo! Inc. User interface for graphically representing groups of data
US8122056B2 (en) 2007-05-17 2012-02-21 Yahoo! Inc. Interactive aggregation of data on a scatter plot
US7756900B2 (en) * 2007-05-22 2010-07-13 Yahoo!, Inc. Visual interface to indicate custom binning of items
US7739229B2 (en) 2007-05-22 2010-06-15 Yahoo! Inc. Exporting aggregated and un-aggregated data
US8819288B2 (en) * 2007-09-14 2014-08-26 Microsoft Corporation Optimized data stream compression using data-dependent chunking
US7836053B2 (en) * 2007-12-28 2010-11-16 Group Logic, Inc. Apparatus and methods of identifying potentially similar content for data reduction
US9690668B2 (en) * 2008-03-05 2017-06-27 Ca, Inc. Data boundary identification
US8769236B2 (en) * 2008-04-15 2014-07-01 Microsoft Corporation Remote differential compression applied to storage
US8078957B2 (en) 2008-05-02 2011-12-13 Microsoft Corporation Document synchronization over stateless protocols
US8645333B2 (en) * 2008-05-29 2014-02-04 International Business Machines Corporation Method and apparatus to minimize metadata in de-duplication
JP5220483B2 (ja) * 2008-06-06 2013-06-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 木構造のデータに対する集約計算を行うコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
US8447740B1 (en) * 2008-11-14 2013-05-21 Emc Corporation Stream locality delta compression
US8751462B2 (en) 2008-11-14 2014-06-10 Emc Corporation Delta compression after identity deduplication
US8849772B1 (en) 2008-11-14 2014-09-30 Emc Corporation Data replication with delta compression
US20100198829A1 (en) * 2009-01-30 2010-08-05 Elzinga D Blair Method and computer-program product for ranged indexing
WO2010125230A1 (en) * 2009-04-30 2010-11-04 Nokia Corporation Data transmission optimization
US8412848B2 (en) * 2009-05-29 2013-04-02 Exagrid Systems, Inc. Method and apparatus for content-aware and adaptive deduplication
US8219526B2 (en) * 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
US20100318759A1 (en) * 2009-06-15 2010-12-16 Microsoft Corporation Distributed rdc chunk store
JP4852135B2 (ja) * 2009-09-30 2012-01-11 株式会社東芝 データ分割方法及び装置
US9736286B2 (en) * 2009-12-22 2017-08-15 Here Global B.V. Method and apparatus for quick selection from ordered list
US20130179413A1 (en) * 2010-09-21 2013-07-11 Georgia Tech Research Corporation Compressed Distributed Storage Systems And Methods For Providing Same
US9928091B2 (en) * 2010-09-30 2018-03-27 Microsoft Technology Licensing, Llc Techniques for streaming virtual machines from a server to a host
JP2012164130A (ja) * 2011-02-07 2012-08-30 Hitachi Solutions Ltd データ分割プログラム
WO2012140686A1 (en) * 2011-04-11 2012-10-18 Hitachi, Ltd. Data management method and data management system
WO2013040708A1 (en) * 2011-09-19 2013-03-28 Quickplay Media Inc. Media processor
US8667032B1 (en) 2011-12-22 2014-03-04 Emc Corporation Efficient content meta-data collection and trace generation from deduplicated storage
US8914338B1 (en) 2011-12-22 2014-12-16 Emc Corporation Out-of-core similarity matching
US8631052B1 (en) 2011-12-22 2014-01-14 Emc Corporation Efficient content meta-data collection and trace generation from deduplicated storage
US20130262704A1 (en) * 2012-04-03 2013-10-03 Google Inc. System and method for improving delivery of content over a network
US9471591B2 (en) * 2012-05-02 2016-10-18 Microsoft Technology Licensing, Llc Iterative disk upload based on differencing disk format
US20140143553A1 (en) * 2012-11-20 2014-05-22 Cloudioh Inc. Method and Apparatus for Encapsulating and Encrypting Files in Computer Device
US20140215094A1 (en) * 2013-01-29 2014-07-31 Anders Nordin Method and system for data compression
US20150213103A1 (en) * 2013-04-18 2015-07-30 Hitachi, Ltd. Computer system and asynchronous replication management method
US9424061B2 (en) 2013-04-30 2016-08-23 International Business Machines Corporation Bandwidth-efficient virtual machine image delivery
US10372695B2 (en) * 2014-12-27 2019-08-06 Intel Corporation Technologies for computing rolling hashes
US10146752B2 (en) 2014-12-31 2018-12-04 Quantum Metric, LLC Accurate and efficient recording of user experience, GUI changes and user interaction events on a remote web document
US10339124B2 (en) * 2015-05-27 2019-07-02 Quest Software Inc. Data fingerprint strengthening
ES2900999T3 (es) * 2015-07-16 2022-03-21 Quantum Metric Inc Captura de documentos utilizando codificación delta basada en el cliente con un servidor
CN106685429B (zh) * 2016-12-29 2020-07-10 广州华多网络科技有限公司 整数压缩方法及装置
CN109495525B (zh) * 2017-09-12 2020-09-18 华为技术有限公司 网络组件、解析内容标识的方法和计算机可读存储介质
US11240039B2 (en) * 2019-06-28 2022-02-01 Intel Corporation Message index aware multi-hash accelerator for post quantum cryptography secure hash-based signing and verification
US11681659B2 (en) * 2021-05-21 2023-06-20 Red Hat, Inc. Hybrid file compression model

Family Cites Families (174)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4853842A (en) 1985-09-11 1989-08-01 Texas Instruments Incorporated Computer memory system having persistent objects
EP0498472B1 (en) 1986-08-12 1994-10-12 Hitachi, Ltd. Microprocessor for retrying data transfer
US5544347A (en) * 1990-09-24 1996-08-06 Emc Corporation Data storage system controlled remote data mirroring with respectively maintained data indices
US5592661A (en) 1992-07-16 1997-01-07 International Business Machines Corporation Detection of independent changes via change identifiers in a versioned database management system
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
DE69527623T2 (de) 1994-05-19 2003-03-13 British Telecomm Dateiübertragungsmechanismus
US5486826A (en) 1994-05-19 1996-01-23 Ps Venture 1 Llc Method and apparatus for iterative compression of digital data
US5987432A (en) 1994-06-29 1999-11-16 Reuters, Ltd. Fault-tolerant central ticker plant system for distributing financial market data
US5592618A (en) 1994-10-03 1997-01-07 International Business Machines Corporation Remote copy secondary data copy validation-audit function
US5596710A (en) 1994-10-25 1997-01-21 Hewlett-Packard Company Method for managing roll forward and roll back logs of a transaction object
US6006016A (en) 1994-11-10 1999-12-21 Bay Networks, Inc. Network fault correlation
US5724323A (en) 1995-01-30 1998-03-03 Sanyo Electric Co., Ltd. Recording and reproducing apparatus for recording media
US5990810A (en) 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating such subblocks
US6453325B1 (en) 1995-05-24 2002-09-17 International Business Machines Corporation Method and means for backup and restoration of a database system linked to a system for filing data
US6044475A (en) 1995-06-16 2000-03-28 Lucent Technologies, Inc. Checkpoint and restoration systems for execution control
US5778395A (en) * 1995-10-23 1998-07-07 Stac, Inc. System for backing up files from disk volumes on multiple nodes of a computer network
US5933104A (en) 1995-11-22 1999-08-03 Microsoft Corporation Method and system for compression and decompression using variable-sized offset and length fields
KR100328416B1 (ko) 1996-01-22 2002-05-09 모리시타 요이찌 디지털화상부호화,복호화방법및그것을사용한디지털화상부호화,복호화장치
US5673382A (en) 1996-05-30 1997-09-30 International Business Machines Corporation Automated management of off-site storage volumes for disaster recovery
US5758359A (en) 1996-10-24 1998-05-26 Digital Equipment Corporation Method and apparatus for performing retroactive backups in a computer system
US5797016A (en) 1996-10-29 1998-08-18 Cheyenne Software Inc. Regeneration agent for back-up software
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
US6963923B1 (en) 1997-02-10 2005-11-08 International Business Machines Corporation Method for file transfer restarts using standard internet protocol
US6157931A (en) 1997-02-11 2000-12-05 Connected Corporation Database/template driven file selection for backup programs
WO1998035306A1 (en) 1997-02-11 1998-08-13 Connected Corporation File comparison for data backup and file synchronization
US6049892C1 (en) 1997-02-24 2002-06-04 Ethos Software Corp Process and apparatus for downloading data from a server computer to a client computer
US6226629B1 (en) 1997-02-28 2001-05-01 Compaq Computer Corporation Method and apparatus determining and using hash functions and hash values
US6014669A (en) 1997-10-01 2000-01-11 Sun Microsystems, Inc. Highly-available distributed cluster configuration database
US6061733A (en) 1997-10-16 2000-05-09 International Business Machines Corp. Method and apparatus for improving internet download integrity via client/server dynamic file sizes
US6166735A (en) 1997-12-03 2000-12-26 International Business Machines Corporation Video story board user interface for selective downloading and displaying of desired portions of remote-stored video data objects
US6269362B1 (en) * 1997-12-19 2001-07-31 Alta Vista Company System and method for monitoring web pages by comparing generated abstracts
US6205527B1 (en) 1998-02-24 2001-03-20 Adaptec, Inc. Intelligent backup and restoring system and method for implementing the same
US6449612B1 (en) 1998-03-17 2002-09-10 Microsoft Corporation Varying cluster number in a scalable clustering system for use with large databases
US6205449B1 (en) 1998-03-20 2001-03-20 Lucent Technologies, Inc. System and method for providing hot spare redundancy and recovery for a very large database management system
US6052531A (en) * 1998-03-25 2000-04-18 Symantec Corporation Multi-tiered incremental software updating
US6799206B1 (en) 1998-03-31 2004-09-28 Qualcomm, Incorporated System and method for the intelligent management of archival data in a computer network
US6604236B1 (en) 1998-06-30 2003-08-05 Iora, Ltd. System and method for generating file updates for files stored on read-only media
US6317754B1 (en) 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6505228B1 (en) 1998-07-22 2003-01-07 Cisco Technology, Inc. Dynamic determination of execution sequence
US6574618B2 (en) 1998-07-22 2003-06-03 Appstream, Inc. Method and system for executing network streamed application
US6952823B2 (en) 1998-09-01 2005-10-04 Pkware, Inc. Software patch generator using compression techniques
JP3724959B2 (ja) * 1998-11-02 2005-12-07 三菱電機株式会社 ネットワークプリントシステム
US6240511B1 (en) 1998-12-14 2001-05-29 Emc Corporation Method and apparatus for detecting system configuration changes
US6654801B2 (en) * 1999-01-04 2003-11-25 Cisco Technology, Inc. Remote system administration and seamless service integration of a data communication network management system
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
US6681034B1 (en) * 1999-07-15 2004-01-20 Precise Biometrics Method and system for fingerprint template matching
JP3312335B2 (ja) 1999-07-30 2002-08-05 株式会社コムスクエア 利用者認証方法、利用者認証システムおよび記録媒体
US6571282B1 (en) 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6434568B1 (en) 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
US6496901B1 (en) * 1999-09-22 2002-12-17 Storage Technology Corporation Mapping variable size data blocks into a fixed block structure
US6791982B2 (en) 1999-09-29 2004-09-14 Telefonaktiebolaget Lm Ericsson Segmentation protocol that supports compressed segmentation headers
TW510107B (en) 1999-10-19 2002-11-11 Geneticware Co Ltd A coding system and method of secure data transmission
US6772302B1 (en) 1999-11-12 2004-08-03 International Business Machines Corporation Virtual copy method for data spanning storage boundaries
US6651074B1 (en) * 1999-12-20 2003-11-18 Emc Corporation Method and apparatus for storage and retrieval of very large databases using a direct pipe
US6377974B1 (en) 2000-01-19 2002-04-23 Speedbit Ltd. Methods and apparatus for downloading a file from a server
US6618758B1 (en) 2000-02-18 2003-09-09 Lucent Technologies Inc. System for downloading only a portion of a file from a server through a computer network utilizing a client menu downloaded periodically from the server
AU2001247213A1 (en) 2000-02-22 2001-09-03 Visualgold.Com, Inc. Secure distributing services network system and method thereof
US20010047273A1 (en) 2000-03-17 2001-11-29 Greer Edward Cooper Electronic transaction clearing system
US7003554B1 (en) 2000-03-20 2006-02-21 Netscape Communications Corp. System and method for downloading portions of a remotely located network object to produce a completely downloaded local copy of the network object
US6522708B1 (en) * 2000-04-03 2003-02-18 Westinghouse Electric Company Llc Seal arrangement for in-core instrument housing
US6671802B1 (en) 2000-04-13 2003-12-30 Hewlett-Packard Development Company, L.P. Performance optimization of computer system by dynamically and immediately updating a configuration setting based on detected change in preferred use
DE60036539T2 (de) 2000-06-09 2008-05-08 Hewlett-Packard Development Co., L.P., Houston Verwendung von ungenutzter Speicherkapazität bei vernetzten Computern
EP1168174A1 (en) 2000-06-19 2002-01-02 Hewlett-Packard Company, A Delaware Corporation Automatic backup/recovery process
JP2002025139A (ja) 2000-07-06 2002-01-25 Fujitsu Ltd 情報記憶装置及び情報記憶方法
US6842777B1 (en) 2000-10-03 2005-01-11 Raja Singh Tuli Methods and apparatuses for simultaneous access by multiple remote devices
US6665780B1 (en) 2000-10-06 2003-12-16 Radiant Data Corporation N-way data mirroring systems and methods for using the same
US7058941B1 (en) 2000-11-14 2006-06-06 Microsoft Corporation Minimum delta generator for program binaries
US6594677B2 (en) 2000-12-22 2003-07-15 Simdesk Technologies, Inc. Virtual tape storage system and method
JP2004514214A (ja) 2000-11-17 2004-05-13 ビットフォン コーポレイション 情報をアップデートおよび配布するシステムおよび方法
US6965916B1 (en) 2000-12-14 2005-11-15 Bellsouth Intellectual Property Corp. System and method for data distribution and recovery
US20020083182A1 (en) * 2000-12-18 2002-06-27 Alvarado Juan C. Real-time streamed data download system and method
US20040133606A1 (en) * 2003-01-02 2004-07-08 Z-Force Communications, Inc. Directory aggregation for files distributed over a plurality of servers in a switched file system
US7383288B2 (en) * 2001-01-11 2008-06-03 Attune Systems, Inc. Metadata based file switch and switched file system
US6751753B2 (en) 2001-02-27 2004-06-15 Sun Microsystems, Inc. Method, system, and program for monitoring system components
US7054912B2 (en) 2001-03-12 2006-05-30 Kabushiki Kaisha Toshiba Data transfer scheme using caching technique for reducing network load
US6910071B2 (en) 2001-04-02 2005-06-21 The Aerospace Corporation Surveillance monitoring and automated reporting method for detecting data changes
US6766314B2 (en) 2001-04-05 2004-07-20 International Business Machines Corporation Method for attachment and recognition of external authorization policy on file system resources
US20020147733A1 (en) * 2001-04-06 2002-10-10 Hewlett-Packard Company Quota management in client side data storage back-up
US20030167287A1 (en) * 2001-04-11 2003-09-04 Karl Forster Information protection system
US20020152219A1 (en) 2001-04-16 2002-10-17 Singh Monmohan L. Data interexchange protocol
TW514810B (en) 2001-05-18 2002-12-21 Mitac Int Corp On-line authorization method providing quality assurance
US20040012808A1 (en) * 2001-06-04 2004-01-22 Payne David M. Network-based technical support and diagnostics
US20020199040A1 (en) * 2001-06-26 2002-12-26 Irwin David S. High speed communications device/system
US7743126B2 (en) * 2001-06-28 2010-06-22 Hewlett-Packard Development Company, L.P. Migrating recovery modules in a distributed computing environment
IL159381A0 (en) * 2001-07-06 2004-06-01 Computer Ass Think Inc Systems and methods of information backup
TW550490B (en) 2001-07-13 2003-09-01 Shacom Com Inc On-line finance management method combined with existent banking mechanism
US20030018657A1 (en) * 2001-07-18 2003-01-23 Imation Corp. Backup of data on a network
US6948038B2 (en) * 2001-07-24 2005-09-20 Microsoft Corporation System and method for backing up and restoring data
GB2378535A (en) * 2001-08-06 2003-02-12 Ibm Method and apparatus for suspending a software virtual machine
JP4860070B2 (ja) * 2001-08-30 2012-01-25 株式会社日立製作所 ファイル伝送方法及びファイル伝送システム
US8041803B2 (en) 2001-09-26 2011-10-18 Qurio Holdings, Inc. Method and system for delivering files in digital file marketplace
JP2003121547A (ja) 2001-10-18 2003-04-23 Fuji Heavy Ind Ltd 車外監視装置
US7318095B2 (en) * 2001-11-21 2008-01-08 Clearcube Technology, Inc. Data fail-over for a multi-computer system
WO2003046721A1 (en) * 2001-11-23 2003-06-05 Commvault Systems, Inc. Selective data replication system and method
US7370120B2 (en) 2001-12-07 2008-05-06 Propel Software Corporation Method and system for reducing network latency in data communication
US7158972B2 (en) 2001-12-11 2007-01-02 Sun Microsystems, Inc. Methods and apparatus for managing multiple user systems
US20030120920A1 (en) * 2001-12-20 2003-06-26 Svensson Sven Anders Borje Remote device authentication
US6947604B2 (en) 2002-01-17 2005-09-20 Intel Corporation Method and hardware to implement two-dimensional compression
US6938045B2 (en) * 2002-01-18 2005-08-30 Seiko Epson Corporation Image server synchronization
US6941328B2 (en) * 2002-01-22 2005-09-06 International Business Machines Corporation Copy process substituting compressible bit pattern for any unqualified data objects
US7310654B2 (en) * 2002-01-31 2007-12-18 Mirapoint, Inc. Method and system for providing image incremental and disaster recovery
US20030147564A1 (en) 2002-02-01 2003-08-07 Chulhee Lee Fast hybrid interpolation methods
US6826666B2 (en) * 2002-02-07 2004-11-30 Microsoft Corporation Method and system for transporting data content on a storage area network
US7178140B2 (en) * 2002-02-28 2007-02-13 Sun Microsystems, Inc. Speeding up application downloading from a remote server
JP4020676B2 (ja) 2002-03-26 2007-12-12 株式会社東芝 Webシステム及びWebシステムの制御方法
US6993686B1 (en) 2002-04-30 2006-01-31 Cisco Technology, Inc. System health monitoring and recovery
US6925540B2 (en) 2002-05-02 2005-08-02 Intel Corporation Systems and methods for chassis identification
US7249118B2 (en) * 2002-05-17 2007-07-24 Aleri, Inc. Database system and methods
US7363538B1 (en) * 2002-05-31 2008-04-22 Oracle International Corporation Cost/benefit based checkpointing while maintaining a logical standby database
US7318073B2 (en) * 2002-05-31 2008-01-08 Microsoft Corporation System and method for downloading information to a mobile device
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 差分圧縮によるバックアップ方法、システム及び差分圧縮方法
CA2497306A1 (en) * 2002-09-10 2004-03-25 Exagrid Systems, Inc. Method and apparatus for integrating primary data storage with local and remote data protection
JP4130615B2 (ja) * 2003-07-02 2008-08-06 株式会社日立製作所 ストレージ装置を有するネットワークにおける障害情報管理方法及び管理サーバ
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7424514B2 (en) * 2002-11-08 2008-09-09 The Regents Of The University Of Michigan Peer-to-peer method and system for performing and managing backups in a network of nodes
US7107483B2 (en) * 2002-11-15 2006-09-12 Lsi Logic Corporation Apparatus and method for enhancing data availability by leveraging primary/backup data storage volumes
US7099884B2 (en) 2002-12-06 2006-08-29 Innopath Software System and method for data compression and decompression
US7526800B2 (en) * 2003-02-28 2009-04-28 Novell, Inc. Administration of protection of data accessible by a mobile device
TW580656B (en) 2002-12-20 2004-03-21 Inst Information Industry Protection and verification method for digital image copyright
JP3974538B2 (ja) * 2003-02-20 2007-09-12 株式会社日立製作所 情報処理システム
US7178065B2 (en) * 2003-04-02 2007-02-13 Sun Microsystems, Inc. System and method for measuring performance with distributed agents
US7461319B2 (en) * 2003-04-04 2008-12-02 Sun Microsystems, Inc. System and method for downloading files over a network with real time verification
US8209680B1 (en) * 2003-04-11 2012-06-26 Vmware, Inc. System and method for disk imaging on diverse computers
US7107293B2 (en) * 2003-04-30 2006-09-12 International Business Machines Corporation Nested recovery scope management for stateless recovery agents
US6925385B2 (en) * 2003-05-16 2005-08-02 Seawest Holdings, Inc. Wind power management system and method
US7328366B2 (en) * 2003-06-06 2008-02-05 Cascade Basic Research Corp. Method and system for reciprocal data backup
US7567991B2 (en) * 2003-06-25 2009-07-28 Emc Corporation Replication of snapshot using a file system copy differential
US20050010593A1 (en) * 2003-07-10 2005-01-13 International Business Machines Corporation System and method for performing predictive file storage management
US7174479B2 (en) 2003-09-10 2007-02-06 Microsoft Corporation Method and system for rollback-free failure recovery of multi-step procedures
US7225208B2 (en) * 2003-09-30 2007-05-29 Iron Mountain Incorporated Systems and methods for backing up data files
US7054960B1 (en) 2003-11-18 2006-05-30 Veritas Operating Corporation System and method for identifying block-level write operations to be transferred to a secondary site during replication
US7328217B2 (en) * 2003-11-26 2008-02-05 Symantec Operating Corporation System and method for detecting and storing file identity change information within a file system
US8135683B2 (en) * 2003-12-16 2012-03-13 International Business Machines Corporation Method and apparatus for data redundancy elimination at the block level
US20050198303A1 (en) * 2004-01-02 2005-09-08 Robert Knauerhase Dynamic virtual machine service provider allocation
US7917910B2 (en) * 2004-03-26 2011-03-29 Intel Corporation Techniques to manage critical region interrupts
US20050228836A1 (en) * 2004-04-08 2005-10-13 Bacastow Steven V Apparatus and method for backing up computer files
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
US7096392B2 (en) 2004-05-07 2006-08-22 Asempra Technologies, Inc. Method and system for automated, no downtime, real-time, continuous data protection
US8230095B2 (en) * 2004-05-07 2012-07-24 Wyse Technology, Inc. System and method for integrated on-demand delivery of operating system and applications
US8024733B2 (en) * 2004-05-13 2011-09-20 International Business Machines Corporation Component model for batch computing in a distributed object environment
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
US20070180490A1 (en) * 2004-05-20 2007-08-02 Renzi Silvio J System and method for policy management
US7908339B2 (en) * 2004-06-03 2011-03-15 Maxsp Corporation Transaction based virtual file system optimized for high-latency network connections
US7281124B2 (en) * 2004-06-17 2007-10-09 Intel Corporation Establishing a virtual drive accessible to pre-boot and operating system runtime phases
US7444341B2 (en) * 2004-06-29 2008-10-28 International Business Machines Corporation Method and system of detecting a change in a server in a server system
US7428754B2 (en) * 2004-08-17 2008-09-23 The Mitre Corporation System for secure computing using defense-in-depth architecture
US7299376B2 (en) * 2004-08-25 2007-11-20 International Business Machines Corporation Apparatus, system, and method for verifying backup data
US7389314B2 (en) * 2004-08-30 2008-06-17 Corio, Inc. Database backup, refresh and cloning system and method
US7769709B2 (en) * 2004-09-09 2010-08-03 Microsoft Corporation Method, system, and apparatus for creating an archive routine for protecting data in a data protection system
US7567974B2 (en) * 2004-09-09 2009-07-28 Microsoft Corporation Method, system, and apparatus for configuring a data protection system
US7502961B2 (en) * 2004-09-09 2009-03-10 Microsoft Corporation Method, system, and apparatus for providing alert synthesis in a data protection system
US7523098B2 (en) * 2004-09-15 2009-04-21 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US7756833B2 (en) * 2004-09-22 2010-07-13 Microsoft Corporation Method and system for synthetic backup and restore
US7613787B2 (en) 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
JP2008522254A (ja) 2004-11-08 2008-06-26 イノパス・ソフトウェアー・インコーポレーテッド スタティック・ファイル・システムの差異検出および更新
US7487169B2 (en) * 2004-11-24 2009-02-03 International Business Machines Corporation Method for finding the longest common subsequences between files with applications to differential compression
US7353355B1 (en) * 2004-12-28 2008-04-01 Acronis Inc. System and method for rapid restoration of server from backup
US8073926B2 (en) * 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US7362758B2 (en) * 2005-01-14 2008-04-22 1E Limited Data distribution apparatus and method
US7640363B2 (en) * 2005-02-16 2009-12-29 Microsoft Corporation Applications for remote differential compression
US20060218435A1 (en) * 2005-03-24 2006-09-28 Microsoft Corporation Method and system for a consumer oriented backup
US7496613B2 (en) * 2006-01-09 2009-02-24 International Business Machines Corporation Sharing files among different virtual machine images
US7519635B1 (en) * 2008-03-31 2009-04-14 International Business Machines Corporation Method of and system for adaptive selection of a deduplication chunking technique

Also Published As

Publication number Publication date
US7613787B2 (en) 2009-11-03
EP1641219A3 (en) 2006-12-20
EP1641219A2 (en) 2006-03-29
KR20060051041A (ko) 2006-05-19
CN1753368B (zh) 2010-05-05
KR101201031B1 (ko) 2012-11-14
US8112496B2 (en) 2012-02-07
JP2006092558A (ja) 2006-04-06
CN1753368A (zh) 2006-03-29
US20060085561A1 (en) 2006-04-20
US20100064141A1 (en) 2010-03-11

Similar Documents

Publication Publication Date Title
JP4961126B2 (ja) リモート差分圧縮のための候補オブジェクトを見つける効率のよいアルゴリズム
US8117173B2 (en) Efficient chunking algorithm
JP4796315B2 (ja) 遠隔差分圧縮用の効率的アルゴリズムとプロトコル
US20050262167A1 (en) Efficient algorithm and protocol for remote differential compression on a local device
US7640363B2 (en) Applications for remote differential compression
US11627207B2 (en) Systems and methods for data deduplication by generating similarity metrics using sketch computation
US9823975B2 (en) Efficient computation of sketches
CN109586896B (zh) 一种基于哈希前缀树的数据完整性验证方法
US20050256974A1 (en) Efficient algorithm and protocol for remote differential compression on a remote device
US11995050B2 (en) Systems and methods for sketch computation
US20210191640A1 (en) Systems and methods for data segment processing
WO2023000915A1 (en) Method and apparatus for replicating a target file between devices
US20170048303A1 (en) On the fly statistical delta differencing engine
US20170048302A1 (en) Static statistical delta differencing engine
CN117421481A (zh) 人群查找方法、系统、电子设备和计算机可读存储介质
JP2013190891A (ja) データ転送システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080926

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110415

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110708

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110922

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120118

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20120119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120119

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20120208

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: 20120319

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: 20120326

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

Free format text: PAYMENT UNTIL: 20150330

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4961126

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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