記憶技術の継続中の進展とともに、生成されるデータの量はますます増大し、大量のデータが、記憶容量のための最高の要件を上げた。IT設備の購入コストは記憶容量とともに増加する。データ量と記憶容量とIT設備のより低い購入コストの間の要求の対立を軽減するために、重複データを除去する技術がデータ記憶の分野に導入される。
本発明の実施例の使用シナリオは、データバックアップシナリオである。データバックアップは、バックアップサーバを使用することによって、様々な理由によるデータ損失を防止するために他の記憶媒体にデータのバックアップを作成するプロセスである。図1は、データバックアップシステムのアーキテクチャを表わす。データバックアップシステムは、クライアント(101a、101b、・・・、および101n)、バックアップサーバ102、重複データ除去サーバ(略して重複排除サーバまたは重複除去サーバと呼ばれる)103、および記憶デバイス(104a、104b、・・・、および104n)を含む。クライアント(101a、101b、・・・、および101n)は、アプリケーションサーバ、ワークステーション、等であり得る。バックアップサーバ102は、クライアントによって生成されたデータのバックアップを作成するように構成される。重複排除サーバ103は、バックアップデータについて重複データを除去するタスクを実行するように構成される。記憶デバイス(104a、104b、・・・、および104n)は、それから重複データが除去されたデータを記憶する記憶媒体としての役目をし、ディスクアレイおよびテープライブラリのような記憶媒体であり得る。クライアント(101a、101b、・・・、および101n)、バックアップサーバ102、重複データ除去サーバ103、および記憶デバイス(104a、104b、・・・、および104n)は、スイッチ、ローカルエリアネットワーク、インターネット、または光ファイバーを使用することによって、等の形態で接続され得る。上記のデバイスは、同じサイトに位置することが可能であり、または異なるサイトに位置することが可能である。バックアップサーバ102、重複除去サーバ103、記憶デバイス(104a, 104b、・・・、および104n)は、独立の物理デバイスであることが可能であり、または具体的に実現において統一体に物理的に統合されることが可能であり、またはバックアップサーバ102および重複除去サーバ103は統一体に統合される、または重複除去サーバ103および記憶デバイス(104a、104b、・・・、および104n)は統一体に統合される、等である。
重複排除サーバ103は、バックアップデータのデータストリームについて重複データを除去する動作を行い、ここで動作は一般に次のステップ、
(1)データストリーム分割点を探索すること:特定のアルゴリズムに従ってデータストリーム内のデータストリーム分割点を探索すること、
(2)見出されたデータストリーム分割点に従って分割を実行してデータチャンクを取得すること、
(3)各データチャンクの特徴値を計算すること:データチャンクを識別するための特徴としての役目をする、データチャンクの特徴値を計算し、計算によって取得された特徴値を、データストリームに対応するファイルのデータチャンク特徴リストに加えること、ここでデータチャンクの特徴値を計算するためにSHA-1またはMD5アルゴリズムが一般に使用され、
(4)同じデータチャンクを検出すること:計算によって取得されたデータチャンクの特徴値を、データチャンク特徴リスト内に既に存在する特徴値と比較して、同一のデータチャンクが存在するかどうかを判定すること、および、
(5)重複データブロックを除去すること:同じデータチャンクを検出することによって、データチャンクのそれと同じ特徴値がデータチャンク特徴リスト内に存在することが見出されたならば、データチャンクの記憶をスキップすること、またはバックアップポリシーに従って決定される重複データチャンクの記憶量に従ってデータチャンクを記憶するかどうかを判定すること、
を含む。
重複排除サーバ103により、バックアップデータのデータストリームについて重複データを除去する動作を行うステップから、重複データを除去する動作における重要なステップとしての役目をする、データストリーム分割点の探索は、重複データ除去の性能を直接に決定することを知ることができる。
本発明の実施例において、重複排除サーバ103は、バックアップサーバ102によって送信されたバックアップファイルを受信し、ファイルについて重複データを除去する処理を行う。処理されるべきバックアップファイルは、通常、重複排除サーバ103においてデータストリームの形式で提示される。重複排除サーバ103がデータストリーム内の分割点を探索するとき、データストリーム分割点を探索するための最小単位が、通常、決定される必要がある。具体的には、図2に表わされたように、例えば、データストリーム分割点を探索するための、その順序番号が1および2である2個の連続した最小単位の間に潜在的な分割点k1が位置する。潜在的な分割点は、それがデータストリーム分割点としての役目をすることができるかどうかが判定される必要がある点を指す。点k1がデータストリーム分割点であるとき、図2に矢印で表わされたデータストリーム分割点を探索する方向に、次の潜在的な分割点k7、すなわち、データストリーム分割点を探索するための、その順序番号が7および8である2個の連続した最小単位の間に位置する点が探索される。潜在的な分割点k7がデータストリーム分割点であるとき、2個の隣接するデータストリーム分割点k1とk7の間のデータは1個のデータチャンクである。データストリーム分割点を探索するための最小単位は、具体的には、実際の要件に従って決定することが可能であり、ここで1バイト(Byte)が例として使用され、すなわち、データストリーム分割点を探索するための、その順序番号が1、2、7、および8である全ての最小単位は1バイトのサイズを有する。図2に表わされたデータストリーム分割点を探索する方向は、通常、ファイルのヘッダからファイルのトレーラーへの探索方向またはファイルのトレーラーからファイルのヘッダへの方向を表現し、この実施例においてファイルのヘッダからファイルのトレーラーへの探索方向が例として使用される。
重複データを除去するシナリオにおいて、より小さいデータチャンクは、重複データを除去する、より高いレート、および、重複データチャンクを見出す、より容易なやり方を一般に示すが、より大量のメタデータがそれから生成され、さらに、データチャンクがある程度に小さくなった後、重複データを除去するレートはもはや増加しないが、メタデータの量は急速に増加する。従って、データチャンクのサイズは制御され得る。実際の適用において、データチャンクの最小値、例えば4KB(4,096バイト)が、通常、設定され、重複データを除去するレートを同時に考慮して、データチャンクの最大値も設定され、すなわち、データチャンクのサイズは最大値、例えば12KB(12288バイト)を超えることができない。具体的な実現形態が図3に表わされている。重複排除サーバ103は、矢印によって表わされた方向に沿ってデータストリーム分割点を探索する。kaは現在見出されたデータストリーム分割点であり、kaから、データストリーム分割点を探索する方向に次の潜在的な分割点が探索される。最小データチャンクの要件を満たすために、通常、データストリーム分割点から開始し、データストリーム分割点を探索する方向に沿って最小データチャンクのサイズがスキップされ、探索が最小データチャンクの終了位置から開始し、すなわち、最小データチャンクの終了位置は、次の潜在的な分割点kiとしての役目をする。本発明のこの実施例において、データストリーム分割点を探索する方向に沿って点kaから4KB、すなわち、4*1024=4096バイトの最小データチャンクがまずスキップされ得る。データストリーム分割点を探索する方向に沿って点kaから4096バイトがスキップされ、潜在的な分割点としての役目をするために4096番目のバイトの終了位置で点kiが取得される。例えば、データストリーム分割点を探索するための、その順序番号が4096および4097である2個の連続した最小単位の間にkiが位置する。例として依然として図3を使用して、kaは現在見出されたデータストリーム分割点であり、図3に表わされた方向に沿って次のデータストリーム分割点が探索される。データチャンクの最大値を超えた後に次のデータストリーム分割点が見出されないならば、データストリーム分割点を探索する方向に点kaから開始し、データチャンクの最大値に到達した点kzは次のデータストリーム分割点としての役目をし、強制的な分割が行われる。
本発明の実施例は、重複排除サーバに基づいてデータストリーム分割点を探索するための方法を提供し、これは図4に表わされたように、下記を含む。
規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、M個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、ここでpxと潜在的な分割点kの間の間隔は、データストリーム分割点を探索するためのdx個の最小単位であり、データストリーム分割点を探索するための最小単位はUと表現され、この実施例においてU=1バイトである。図3に表わされた実現形態において、Mの値について、一実現形態において、M*Uの値は2個の隣接するデータストリーム分割点の間の予め設定された最大の間隔、すなわち、データチャンクの予め設定された最大の長さより大きくない。点pzに対応するウィンドウWz[pz-Az, pz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定され、ここでzは整数であり、1≦z≦Mであり、(pz-Az)および(pz+Bz)はウィンドウWzの2つの境界を表現する。いずれか1個の点pzのウィンドウWz[pz-Az, pz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って、予め設定された条件を満たさないウィンドウWz[pz-Az, pz+Bz]に対応する点pzからNバイトがスキップされ、ここで
であり、ここで
は、M個の点pxのうちのいずれかの点と潜在的な分割点kの間の間隔を表現し、
は、M個の点pxのうちのいずれかの点と潜在的な分割点kの間の間隔の絶対値と、当該いずれかの点に対応するAxの絶対値の和の最大値を表現し、
は、Wz[pz-Az, pz+Bz]内のBzの絶対値を表現する。Nの値を設定するための原理は、具体的には、下記の実施例において紹介される。M個のウィンドウのうちの各ウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすと判定されたとき、潜在的な分割点kがデータストリーム分割点である。
具体的には、現在の潜在的な分割点kiについて、規則に従って下記のステップが行われる。
ステップ401:規則に従って、現在の潜在的な分割点kiについて、点pizおよび点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定し、ここでiおよびzは整数であり、1≦z≦Mである。
ステップ402:ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、ここでN*Uは
より大きくなく、それによって新しい潜在的な分割点を取得し、ステップ401を行い、
現在の潜在的な分割点kiのM個のウィンドウのうちの各ウィンドウWix[pix-Ax, pix+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすとき、データストリーム分割点として現在の潜在的な分割点kiを選択する。
さらに、規則は、少なくとも2個の点peおよびpfが条件Ae=Af、Be=Bf、およびCe=Cfを満たすことをさらに含む。
規則は、潜在的な分割点kに関して、少なくとも2個の点peおよびpfがデータストリーム分割点を探索する方向と反対の方向にあることをさらに含む。
規則は、少なくとも2個の点peとpfの間の間隔が1 Uであることをさらに含む。
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することは、具体的には、
ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することを含む。
ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することは、具体的には、hash関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することである。
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uがスキップされ、それによって新しい潜在的な分割点を取得し、規則に従って、新しい潜在的な分割点について決定された点picに対応するウィンドウWic[pic-Ac, pic+Bc]の左の境界はウィンドウWiz[piz-Az, piz+Bz]の右の境界と一致し、または新しい潜在的な分割点について決定された点picに対応するウィンドウWic[pic-Ac, pic+Bc]の左の境界はウィンドウWiz[piz-Az, piz+Bz]の範囲内にあり、ここで新しい潜在的な分割点について決定された点picは、規則に従って新しい潜在的な分割点について決定されたM個の点の、データストリーム分割点を探索する方向に従って取得されたシーケンス内で1番目の順位を有する点である。
本発明のこの実施例において、M個のウィンドウのうちのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定することによってデータストリーム分割点が探索され、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、N*Uの長さがスキップされ、ここでN*Uは
より大きくなく、それによって次の潜在的な分割点を取得し、それによりデータストリーム分割点を探索する効率を向上させる。
重複データを除去するプロセスにおいて、偶数サイズのデータチャンクを保証するために、平均データチャンク(平均チャンクとも呼ばれる)のサイズが考慮される。すなわち、最小データチャンクのサイズと最大データチャンクのサイズについての制限が満たされる間、偶数サイズの取得されたデータチャンクを保証するために平均データチャンクのサイズが決定される。データストリーム分割点を見出す確率(P(n)と表現される)は2つの要因、すなわち、点pxの数量Mおよび点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率に依存し、ここで前者はスキップする長さに影響し、後者はスキップする確率に影響し、2つはともに平均チャンクのサイズに影響する。一般に、平均チャンクのサイズが固定であるとき、点pxの数量M が増加するに連れて、単一の点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率も増加する。例えば、重複排除サーバ103において予め設定された規則は、潜在的な分割点kについて、11個の点pxを決定することであり、ここでxは個々に1から11までの連続した自然数を示し、11個の点のうちのいずれかの点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率は1/2である。重複排除サーバ103において予め設定された規則の他のグループは、潜在的な分割点kについて24個の点pxを選択することであり、ここでxは個々に1から24までの連続した自然数を示し、24個の点のうちのいずれかの点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率は3/4である。特定のウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率の設定について、ウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすかどうかを判定する部分の記載への参照が行われ得る。P(n)は、2つの要因、すなわち、点pxの数量Mおよび点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率に依存し、P(n)は、データストリームの開始位置/前のデータストリーム分割点からの探索において、データストリーム分割点を探索するためのn個の最小単位の後にデータストリーム分割点が見出されない確率を表現する。2つの要因に依存するP(n)を計算するプロセスは、実際、nステップのFibonacci数列であり、これは下記で詳細に記載される。P(n)が取得された後、1-P(n)は、データストリーム分割点の分布関数であり、(1-P(n))-(1-P(n-1))=P(n-1)-P(n)は、データストリーム分割点がn番目の点で見出される確率、すなわち、データストリーム分割点の密度関数である。積分
はデータストリーム分割点の密度関数に従って行われることが可能であり、それによってデータストリーム分割点の期待される長さ、すなわち平均チャンクのサイズを取得し、ここで4*1024(バイト)は最小データチャンクの長さを表現し、12*1024(バイト)は最大データチャンクの長さを表現する。
図3に表わされたデータストリーム分割点の探索に基づいて、図5に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx](略してウィンドウWx)、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでA1=A2=A3=A4=A5=A6=A7=A8=A9=A10=A11=169、B1=B2=B3=B4=B5=B6=B7=B8=B9=B10=B11=0、かつC1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11である。点pxと潜在的な分割点kの間の間隔はdxバイトである。具体的には、点p1と潜在的な分割点kの間の間隔は0バイトであり、点p2と潜在的な分割点kの間の間隔は1バイトであり、点p3と潜在的な分割点kの間の間隔は2バイトであり、点p4と潜在的な分割点kの間の間隔は3バイトであり、点p5と潜在的な分割点kの間の間隔は4バイトであり、点p6と潜在的な分割点kの間の間隔は5バイトであり、点p7と潜在的な分割点kの間の間隔は6バイトであり、点p8と潜在的な分割点kの間の間隔は7 バイトであり、点p9と潜在的な分割点kの間の間隔は8バイトであり、点p10と潜在的な分割点kの間の間隔は9バイトであり、点p11と潜在的な分割点kの間の間隔は10バイトであり、潜在的な分割点kに関して、点p2、p3、p4、p5、p6、p7、p8、p9、p10、およびp11全ては、データストリーム分割点を探索する方向と反対の方向にある。kaはデータストリーム分割点であり、図5に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から11までの連続した自然数を示す。図5に表わされた実現形態において、潜在的な分割点kiについて11個の点が決定され、個々にpi1、pi2、pi3、pi4、pi5、pi6、p
i7、pi8、pi9、pi10、およびpi11であり、点pi1、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11に対応するウィンドウは、それぞれWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-169, pi11]である。上記のウィンドウは、略して個々にWi1、Wi2、Wi3、Wi4、Wi5、Wi6、Wi7、Wi8、Wi9、Wi10、およびWi11と呼ばれる。点pixと潜在的な分割点kiの間の間隔はdxバイトである。具体的には、pi1とkiの間の間隔は0バイトであり、pi2とkiの間の間隔は1バイトであり、pi3とkiの間の間隔は2バイトであり、pi4とkiの間の間隔は3バイトであり、pi5とkiの間の間隔は4 バイトであり、pi6とkiの間の間隔は5バイトであり、pi7とkiの間の間隔は6バイトであり、pi8とkiの間の間隔は7バイトであり、pi9とkiの間の間隔は8 バイトであり、pi10とkiの間の間隔は9バイトであり、pi11とkiの間の間隔は10バイトであり、潜在的な分割点kiに関して、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11全ては、データストリーム分割点を探索する方向と反対の方向にある。Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[pi6-169, pi6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[pi7-169, pi7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[pi8-169, pi8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[pi9-169, pi9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[pi10-169, pi10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[pi11-169, pi11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。11個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が対応する予め設定された条件を満たさない、例えば、図6に表わされたように、Wi5[pi5-169, pi5]内のデータの少なくとも一部が対応する予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って点pi5からNバイトがスキップされ、ここでNバイトは
より大きくない。図6に表わされた実現形態において、スキップされるNバイトは179バイトより大きくなく、この実施例において、N=11であり、それによって次の潜在的な分割点を取得する。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。図5に表わされた実現形態において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて11個の点が決定され、個々にpj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11であり、点pj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11に対応するウィンドウが決定され、それぞれWj1[pj1-169, pj1]、Wj2[pj2-169, pj2]、Wj3[pj3-169, pj3]、Wj4[pj4-169, pj4]、Wj5[pj5-169, pj5]、Wj6[pj6-169, pj6]、Wj7[pj7-169, pj7]、Wj8[pj8-169, pj8]、Wj9[pj9-169, pj9]、Wj10[pj10-169, pj10]、およびWj11[pj11-169, pj11]である。pjxと潜在的な分割点kjの間の間隔はdxバイトである。具体的には、pj1とkjの間の間隔は0バイトであり、pj12とkjの間の間隔は1バイトであり、pj3とkjの間の間隔は2バイトであり、pj4とkjの間の間隔は3バイトであり、pj5とkjの間の間隔は4バイトであり、pj6とkjの間の間隔は5バイトであり、pj7とkjの間の間隔は6バイトであり、pj8とkjの間の間隔は7バイトであり、pj9とkjの間の間隔は8バイトであり、pj10とkjの間の間隔は9バイトであり、pj11とkjの間の間隔はバイトであり、潜在的な分割点kjに関して、pj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11全ては、データストリーム分割点を探索する方向と反対の方向にある。図6に表わされた実現形態において、潜在的な分割点kjについて11番目のウィンドウWj11[pj11-169, pj11]が判定されるとき、潜在的な分割点kiと潜在的な分割点kjの間の範囲全てが判定する範囲内にあることを保証するために、この実現形態において、ウィンドウWj11[pj11-169, pj11]の左の境界は、Wi5[pi5-169, pi5]の右の境界pi5と一致し、またはWi5[pi5-169, pi5]の範囲内にあることが保証されることが可能であり、ここで潜在的な分割点kjについて決定された点pj11は、規則に従って潜在的な分割点kjについて決定されたM個の点の、データストリーム分割点を探索する方向に従って取得されたシーケンス内で1番目の順位を有する点である。従って、そのような制限内で、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿ってpi5からスキップする間隔は
より大きくなく、ここでM=11であり、11*Uは
より大きくなく、従って、データストリーム分割点を探索する方向に沿ってpi5からスキップする間隔は179より大きくない。Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。もちろん、本発明のこの実施例において、潜在的な分割点kaがデータストリーム分割点であるかどうかが判定されるときも規則に従い、具体的な実現は再度記載されず、潜在的な分割点kiを判定する記載への参照が行われ得る。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一
部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点であり、kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、次の潜在的な分割点を取得するために、kiのそれと同じ形態で11バイトがスキップされ、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
図5に表わされた実現形態において、重複排除サーバ103において予め設定された規則に従って、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定することから開始して、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすと判定され、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすと判定され、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすと判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすと判定され、かつWi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って点pi5から10バイトがスキップされ、10番目のバイトの終了位置で新しい潜在的な分割点が取得され、これは、他の潜在的な分割点からの区別のために、ここでkgと表現される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kgについて11個の点pgxが決定され、ここでxは個々に1から11までの連続した自然数を示し、個々にpg1、pg2、pg3、pg4、pg5、pg6、pg7、pg8、pg9、pg10、およびpg11であり、点pg1、pg2、pg3、pg4、pg5、pg6、pg7、pg8、pg9、pg10、およびpg11に対応するウィンドウが決定され、それぞれWg1[pg1-169, pg1]、Wg2[pg2-169, pg2]、Wg3[pg3-169, pg3]、Wg4[pg4-169, pg4]、Wg5[pg5-169, pg5]、Wg6[pg6-169, pg6]、Wg7[pg7-169, pg7]、Wg8[pg8-169, pg8]、Wg9[pg9-169, pg9]、Wg10[pg10-169, pg10]、およびWg11[pg11-169, pg11]である。pgxと潜在的な分割点kgの間の間隔はdxバイトである。具体的には、pg1とkgの間の間隔は0バイトであり、pg2とkgの間の間隔は1バイトであり、pg3とkgの間の間隔は2バイトであり、pg4とkgの間の間隔は3バイトであり、pg5とkgの間の間隔は4バイトであり、pg6とkgの間の間隔は5バイトであり、pg7とkgの間の間隔は6バイトであり、pg8とkgの間の間隔は7バイトであり、pg9とkgの間の間隔は8バイトであり、pg10とkgの間の間隔は9バイトであり、pg11とkgの間の間隔は10バイトであり、潜在的な分割点kgに関して、pg2、pg3、pg4、pg5、pg6、pg7、pg8、pg9、pg10、およびpg11全ては、データストリーム分割点を探索する方向と反対の方向にある。Wg1[pg1-169, pg1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wg2[pg2-169, pg2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wg3[pg3-169, pg3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wg4[pg4-169, pg4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wg5[pg5-169, pg5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wg6[pg6-169, pg6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wg7[pg7-169, pg7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wg8[pg8-169, pg8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wg9[pg9-169, pg9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wg10[pg10-169, pg10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWg11[pg11-169, pg11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。従って、潜在的な分割点kgに対応する点pg11は潜在的な分割点kiに対応する点pi5と一致し、点pg11に対応するウィンドウWg11[pg11-169, pg11]は点pi5に対応するウィンドウWi5[pi5-169, pi5]と一致し、C5=C11であり、従って、潜在的な分割点kiについて、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って点pi5から10バイトをスキップすることによって取得された潜在的な分割点kgは、データストリーム分割点としての役目をする条件を依然として満たさない。従って、データストリーム分割点を探索する方向に沿って点pi5から10バイトがスキップされるとき、繰り返される計算が存在するならば、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされるとき、繰り返される計算は減少されることが可能であり、効率はより高い。従って、データストリーム分割点を探索する速度は増加される。予め設定された規則に従って決定された点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率が1/2である、すなわち、スキップを実行する確率が1/2であるとき、最大で179バイトが毎回スキップされることが可能である。
この実現形態において、予め設定された規則は、潜在的な分割点kについて、11個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは個々に1から11までの連続した自然数を示し、ここで点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率は1/2であり、P(n)は、2つの要因、すなわち、点pxの数量および点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率を使用することによって計算されることが可能である。さらに、A1=A2=A3=A4=A5=A6=A7=A8=A9=A10=A11=169、B1=B2=B3=B4=B5=B6=B7=B8=B9=B10=B11=0、かつC1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11であり、ここでpxと潜在的な分割点kの間の間隔はdxバイトである。具体的には、p1と潜在的な分割点kの間の間隔は0バイトであり、p2とkの間の間隔は1バイトであり、p3とkの間の間隔は2 バイトであり、p4とkの間の間隔は3バイトであり、p5とkの間の間隔は4バイトであり、p6とkの間の間隔は5バイトであり、p7とkの間の間隔は6バイトであり、p8とkの間の間隔は7バイトであり、p9とkの間の間隔は8バイトであり、p10とkの間の間隔は9バイトであり、p11とkの間の間隔は10バイトであり、潜在的な分割点kに関して、p2、p3、p4、p5、p6、p7、p8、p9、p10、およびp11全ては、データストリーム分割点を探索する方向と反対の方向にある。従って、潜在的な分割点kがデータストリーム分割点であるかどうかは、11個の連続した点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たすことが存在するかどうかに依存する。データストリームの開始位置/前のデータストリーム分割点から4096バイトの最小チャンクの長さがスキップされた後、データストリーム分割点を探索する方向と反対の方向に10バイトだけ戻ることによって4086番目の点が見出され、その点においてデー
タストリーム分割点は存在せず、従って、P(4086)=1、およびP(4087)=1、...、P(4095)=1、等である。4096番目の点、すなわち、最小チャンクを取得するために使用される点において、(1/2)^11の確率で、11個の点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たす。従って、(1/2)^11の確率で、データストリーム分割点が存在し、1-(1/2)^11の確率で、データストリーム分割点は存在せず、従ってP(11)=1-(1/2)^11である。
n番目の点において、帰納法によってP(n)を取得する12のケースがあり得る。
ケース1:1/2の確率で、n番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、このケースにおいて、P(n-1)の確率で、n番目の点の前の(n-1)個の点の中に11個の連続した点は存在せず、ここで11個の連続した点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を個々に満たす。従って、P(n)は1/2*P(n-1)を含む。n番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、n番目の点の前の(n-1)個の点の中に11個の連続した点が存在する場合であって、11個の連続した点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を個々に満たす場合は、P(n)に関係しない。
ケース2:1/2の確率で、n番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、1/2の確率で、(n-1)番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、このケースにおいて、P(n-2)の確率で、(n-1)の点の前の(n-2)個の点の中に11個の連続した点は存在せず、ここで11個の連続した点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を個々に満たす。従って、P(n)は1/2*1/2*P(n-2)を含む。n番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、(n-1)番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、(n-1)番目の点の前の(n-2)個の点の中に11個の連続した点が存在する場合であって、11個の連続した点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を個々に満たす場合は、P(n)に関係しない。
上記の記載によれば、ケース11:(1/2)^10の確率で、n番目から(n-9)番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、1/2の確率で、(n-10)番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、このケースにおいて、P(n-11)の確率で、(n-10)の点の前の(n-11)個の点の中に11個の連続した点は存在せず、ここで11個の連続した点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を個々に満たす。従って、P(n)は(1/2)^10*1/2*P(n-11)を含む。n番目から(n-9)番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、(n-10)番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、(n-10)番目の点の前の(n-11)個の点の中に11個の連続した点が存在する場合であって、11個の連続した点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を個々に満たす場合は、P(n)に関係しない。
ケース12:(1/2)^11の確率で、n番目から(n-10)番目の点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、この場合は、P(n)に関係しない。
従って、P(n)=1/2*P(n-1)+(1/2)^2*P(n-2)+...+(1/2)^11*P(n-11)である。他の予め設定された規則は、潜在的な分割点kについて、24個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは個々に1から24までの連続した自然数を示し、ここで点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率は3/4であり、P(n)は、2つの要因、すなわち、点pxの数量および点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率を使用することによって計算されることが可能である。さらに、A1=A2=A3=A4=A5=A6=A7=A8=A9=A10=A11=169、B1=B2=B3=B4=B5=B6=B7=B8=B9=B10=B11=0、かつC1=C2=C3=C4=C5=C6=C7=C8=C9=...=C22=C23=C24であり、ここでpxと潜在的な分割点kの間の間隔はdxバイトである。具体的には、p1と潜在的な分割点kの間の間隔は0バイトであり、p2とkの間の間隔は1バイトであり、p3とkの間の間隔は2バイトであり、p4とkの間の間隔は3バイトであり、p5とkの間の間隔は4バイトであり、p6とkの間の間隔は5バイトであり、p7とkの間の間隔は6バイトであり、p8とkの間の間隔は7バイトであり、p9とkの間の間隔は8バイトであり、...、p22とkの間の間隔は21バイトであり、p23とkの間の間隔は22バイトであり、p24とkの間の間隔は23バイトであり、潜在的な分割点kに関して、p2、p3、p4、p5、p6、p7、p8、p9、...、p22、p23、およびp24全ては、データストリーム分割点を探索する方向と反対の方向にある。従って、潜在的な分割点kがデータストリーム分割点であるかどうかは、24個の連続した点に対応するウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たすことが存在するかどうかに依存し、計算は次の数式
P(4073)=1、P(4074)=1、...、P(4095)=1、P(4096)=1-(3/4)^24、および
P(n)=1/4*P(n-1)+1/4*(3/4)*P(n-2)+...+1/4*(3/4)^23*P(n-24)
を使用することによって行われることが可能である。
計算の後、P(5*1024)=0.78、P(11*1024)=0.17、およびP(12*1024)=0.13である。すなわち、探索がデータストリームの開始位置/前のデータストリーム分割点から12KBの間隔における点に進んだ後、13%の確率でデータストリーム分割点が見出されないならば、強制的な分割が行われる。データストリーム分割点の密度関数はこの確率を使用することによって取得され、積分の後に、平均して、探索がデータストリームの開始位置/前のデータストリーム分割点から約7.6 KBの間隔における点に進んだ後にデータストリーム分割点が見出されることが得られ、すなわち、平均チャンクの長さは約7.6 KBである。11個の連続した点に対応するウィンドウ内のデータの少なくとも一部が予め設定された条件を1/2の確率で満たすこととは異なり、従来のCDCアルゴリズムは、1個のウィンドウが1/2^12の確率で条件を満たすときのみ、7.6 KBである平均チャンクの長さの効果を達成することが可能である。
図3に表わされたデータストリーム分割点の探索に基づいて、図7に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは個々に1から11までの連続した自然数を示し、ここで点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率は1/2であり、A1=A2=A3=A4=A5=A6=A7=A8=A9=A10=A11=169、B1=B2=B3=B4=B5=B6=B7=B8=B9=B10=B11=0、かつC1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11であり、ここでpxと潜在的な分割点kの間の間隔はdxバイトである。具体的には、p1と潜在的な分割点kの間の間隔は2バイトであり、p2とkの間の間隔は3バイトであり、p3とkの間の間隔は4バイトであり、p4とkの間の間隔は5バイトであり、p5とkの間の間隔は6バイトであり、p6とkの間の間隔は7バイトであり、p7とkの間の間隔は8バイトであり、p8とkの間の間隔は9バイトであり、p9とkの間の間隔は10バイトであり、p10とkの間の間隔は1バイトであり、p11とkの間の間隔は0バイトであり、潜在的な分割点kに関して、p1、p2、p3、p4、p5、p6、p7、p8、p9、およびp10全ては、データストリーム分割点を探索する方向と反対の方向にある。kaはデータストリーム分割点であり、図7に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から11までの連続した自然数を示す。図7に表わされた実現形態において、予め設定された規則に従って、潜在的な分割点kiについて11個の点が決定され、個々にpi1、pi2、pi
3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11であり、点pi1、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11に対応するウィンドウは、それぞれWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-169, pi11]である。点pixと潜在的な分割点kiの間の間隔はdixバイトである。具体的には、pi1とkiの間の間隔は2バイトであり、pi2とkiの間の間隔は3バイトであり、pi3とkiの間の間隔は4バイトであり、pi4とkiの間の間隔は5バイトであり、pi5とkiの間の間隔は6バイトであり、pi6とkiの間の間隔は7バイトであり、pi7とkiの間の間隔は8バイトであり、pi8とkiの間の間隔は9バイトであり、pi9とkiの間の間隔は10バイトであり、pi10とkiの間の間隔は1バイトであり、pi11とkiの間の間隔は0バイトであり、潜在的な分割点kiに関して、pi1、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、およびpi10全ては、データストリーム分割点を探索する方向と反対の方向にある。Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[pi6-169, pi6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[pi7-169, pi7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[pi8-169, pi8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[pi9-169, pi9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[pi10-169, pi10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[pi11-169, pi11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、 ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。11個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件を満たさないとき、図8に表わされたように、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たさず、データストリーム分割点を探索する方向に沿って点pi3から11バイトがスキップされることは、記載のための例として使用される。図8に表わされたように、W3が予め設定された条件を満たさないと判定されたとき、開始点としての役目をするp3から、データストリーム分割点を探索する方向に沿ってNバイトがスキップされ、ここでNバイトは
より大きくない。図6に表わされた実現形態において、Nバイトがスキップされ、具体的には、179バイトより大きくなく、この実施例において、N=11である。11番目のバイトの終了位置において次の潜在的な分割点が取得される。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて11個の点が決定され、個々にpj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11であり、点pj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11に対応するウィンドウが決定され、それぞれWj1[pj1-169, pj1]、Wj2[pj2-169, pj2]、Wj3[pj3-169, pj3]、Wj4[pj4-169, pj4]、Wj5[pj5-169, pj5]、Wj6[pj6-169, pj6]、Wj7[pj7-169, pj7]、Wj8[pj8-169, pj8]、Wj9[pj9-169, pj9]、Wj10[pj10-169, pj10]、およびWj11[pj11-169, pj11]である。pjxと潜在的な分割点kjの間の間隔はdxバイトである。具体的には、pj1とkjの間の間隔は2バイトであり、pj2とkjの間の間隔は3バイトであり、pj3とkjの間の間隔は4バイトであり、pj4とkjの間の間隔は5バイトであり、pj5とkjの間の間隔は6バイトであり、pj6とkjの間の間隔は7バイトであり、pj7とkjの間の間隔は8バイトであり、pj8とkjの間の間隔は9バイトであり、pj9とkjの間の間隔は10バイトであり、pj10とkjの間の間隔は1バイトであり、pj11とkjの間の間隔は0バイトであり、潜在的な分割点kjに関して、pj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、およびpj10全ては、データストリーム分割点を探索する方向と反対の方向にある。Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。もちろん、本発明のこの実施例において、潜在的な分割点kaがデータストリーム分割点であるかどうかが判定されるときも規則に従い、具体的な実現は再度記載されず、潜在的な分割点kiを判定する記載への参照が行われ得る。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点であり、kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、次の潜在的な分割点を取得するために、kiのそれと同じ形態で11バイトがスキップされ、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。もちろん、本方法の実現は、最大データチャンクの長さおよびデータストリームを形成するファイルのサイズによって制限され、これは再度ここに記載されない。
図3に表わされたデータストリーム分割点の探索に基づいて、図9に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここで
A1=A2=A3=A4=A5=A6=A7=A8=A9=A10=A11=169、B1=B2=B3=B4=B5=B6=B7=B8=B9=B10=B11=0、かつC1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11である。pxと潜在的な分割点kの間の間隔はdxバイトである。具体的には、p1と潜在的な分割点kの間の間隔は3バイトであり、p2とkの間の間隔は2バイトであり、p3とkの間の間隔は1バイトであり、p4とkの間の間隔は0バイトであり、p5とkの間の間隔は1バイトであり、p6とkの間の間隔は2バイトであり、p7とkの間の間隔は3バイトであり、p8とkの間の間隔は4バイトであり、p9とkの間の間隔は5 バイトであり、p10とkの間の間隔は6バイトであり、p11とkの間の間隔は7バイトであり、p5、p6、p7、p8、p9、p10、およびp11全ては、潜在的な分割点kに関して、データストリーム分割点を探索する方向と反対の方向にあり、p1、p2、およびp3全ては、潜在的な分割点kに関して、データストリーム分割点を探索する方向にある。kaはデータストリーム分割点であり、図9に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定され、この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から11までの連続した自然数を示す。図9に表わされた実現形態において、潜在的な分割点kiについて11個の点が決定され、個々にpi1、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11であり、点pi1、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11に対応するウィンドウは、それぞれWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-169, pi11]である。pixと潜在的な分割点kiの間の間隔はdxバイトである。具体的には、pi1とkiの間の間隔は3バイトであり、pi2とkiの間の間隔は2バイトであり、pi3とkiの間の間隔は1バイトであり、pi4とkiの間の間隔は0バイトであり、pi5とkiの間の間隔は1バイトであり、pi6とkiの間の間隔は2バイトであり、pi7とkiの間の間隔は3バイトであり、pi8とkiの間の間隔は4バイトであり、pi9とkiの間の間隔は5バイトであり、pi10とkiの間の間隔は6バイトであり、pi11とkiの間の間隔は7バイトであり、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11全ては、潜在的な分割点kiに関して、データストリーム分割点を探索する方向と反対の方向にあり、pi1、pi2、およびpi3全ては、潜在的な分割点kiに関して、データストリーム分割点を探索する方向にある。Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[pi6-169, pi6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[pi7-169, pi7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[pi8-169, pi8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[pi9-169, pi9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[pi10-169, pi10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[pi11-169, pi11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。11個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件を満たさない、例えば、図10に表されたように、Wi7[pi7-169, pi7]内のデータの少なくとも一部が、対応する予め設定された条件を満たさないとき、データストリーム分割点を探索する方向に沿って点pi7からNバイトがスキップされ、ここでNバイトは
より大きくない。図10に表わされた実現形態において、スキップされるNバイトは、具体的には、179バイトより大きくなく、この実施例において、具体的には、N=8であり、それによって新しい潜在的な分割点を取得する。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。図9に表わされた実現形態において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて11個の点が決定され、個々にpj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11であり、点pj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11に対応するウィンドウが決定され、それぞれWj1[pj1-169, pj1]、Wj2[pj2-169, pj2]、Wj3[pj3-169, pj3]、Wj4[pj4-169, pj4]、Wj5[pj5-169, pj5]、Wj6[pj6-169, pj6]、Wj7[pj7-169, pj7]、Wj8[pj8-169, pj8]、Wj9[pj9-169, pj9]、Wj10[pj10-169, pj10]、およびWj11[pj11-169, pj11]である。pjxと潜在的な分割点kjの間の間隔はdxバイトである。具体的には、pj1とkjの間の間隔は3バイトであり、pj2とkjの間の間隔は2バイトであり、pj3とkjの間の間隔は1バイトであり、pj4とkjの間の間隔は0バイトであり、pj5とkjの間の間隔は1バイトであり、pj6とkjの間の間隔は2バイトであり、pj7とkjの間の間隔は3バイトであり、pj8とkjの間の間隔は4バイトであり、pj9とkjの間の間隔は5バイトであり、pj10とkjの間の間隔は6バイトであり、pj11とkjの間の間隔は7バイトであり、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11全ては、潜在的な分割点kjに関して、データストリーム分割点を探索する方向と反対の方向にあり、pj1、pj2、およびpj3全ては、潜在的な分割点kjに関して、データストリーム分割点を探索する方向にある。Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。もちろん、本発明のこの実施例において、潜在的な分割点kaがデータストリーム分割点であるかどうかが判定されるときも規則に従い、具体的な実現は再度記載されず、潜在的な分割点kiを判定する記載への参照が行われ得る。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定さ
れた条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されとき、現在の潜在的な分割点kjがデータストリーム分割点であり、kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、次の潜在的な分割点を取得するために、kiのそれと同じ形態で8バイトがスキップされ、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
図3に表わされたデータストリーム分割点の探索に基づいて、図11に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここで
A1=A2=A3=A4=A5=A6=A7=A8=A9=A10=169、A11=182、B1=B2=B3=B4=B5=B6=B7=B8=B9=B10=B11=0、かつC1=C2=C3=C4=C5=C6=C7=C8=C9=C10≠C11である。pxと潜在的な分割点kの間の間隔はdxバイトである。具体的には、p1と潜在的な分割点kの間の間隔は0バイトであり、p2とkの間の間隔は1バイトであり、p3とkの間の間隔は2バイトであり、p4とkの間の間隔は3バイトであり、p5とkの間の間隔は4バイトであり、p6とkの間の間隔は5バイトであり、p7とkの間の間隔は6バイトであり、p8とkの間の間隔は7バイトであり、p9とkの間の間隔は8バイトであり、p10とkの間の間隔は1バイトであり、p11とkの間の間隔は3バイトであり、p2、p3、p4、p5、p6、p7、p8、およびp9全ては、潜在的な分割点kに関して、データストリーム分割点を探索する方向と反対の方向にあり、p10とp11両方は、潜在的な分割点kに関して、 データストリーム分割点を探索する方向にある。kaはデータストリーム分割点であり、図11に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から11までの連続した自然数を示す。図11に表わされた実現形態において、潜在的な分割点kiについて11個の点が決定され、個々にpi1、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11であり、点pi1、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11に対応するウィンドウは、それぞれWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-169, pi11]である。pixと潜在的な分割点kiの間の間隔はdxバイトである。具体的には、pi1とkiの間の間隔は0 バイトであり、pi2とkiの間の間隔は1 バイトであり、pi3とkiの間の間隔は2バイトであり、pi4とkiの間の間隔は3バイトであり、pi5とkiの間の間隔は4バイトであり、pi6とkiの間の間隔は5バイトであり、pi7とkiの間の間隔は6バイトであり、pi8とkiの間の間隔は7バイトであり、pi9とkiの間の間隔は8バイトであり、pi10とkiの間の間隔は1バイトであり、pi11とkiの間の間隔は3バイトであり、pi2、pi3、pi4、pi5、pi6、pi7、pi8、およびpi9全ては、潜在的な分割点kiに関して、データストリーム分割点を探索する方向と反対の方向にあり、pi10とpi11両方は、潜在的な分割点kiに関して、データストリーム分割点を探索する方向にある。Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[pi6-169, pi6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[pi7-169, pi7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[pi8-169, pi8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[pi9-169, pi9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[pi10-169, pi10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[pi11-169, pi11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。ウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから1バイトがスキップされ、それによって新しい潜在的な分割点を取得する。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。10個のウィンドウWi1、Wi2、Wi3、Wi4、Wi5、Wi6、Wi7、Wi8、Wi9、およびWi10のうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件、例えば、図12に表わされたWi4[pi4-169, pi4]を満たさないとき、データストリーム分割点を探索する方向に沿って点pi4からNバイトがスキップされ、ここでNバイトは
より大きくない。図12に表わされた実現形態において、スキップされるNバイトは、具体的には、179より大きくなく、この実施例において、具体的には、N=9であり、それによって新しい潜在的な分割点を取得する。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。図11に表わされた実現形態において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて11個の点が決定され、個々にpj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11であり、点pj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11に対応するウィンドウが決定され、それぞれWj1[pj1-169, pj1]、Wj2[pj2-169, pj2]、Wj3[pj3-169, pj3]、Wj4[pj4-169, pj4]、Wj5[pj5-169, pj5]、Wj6[pj6-169, pj6]、Wj7[pj7-169, pj7]、Wj8[pj8-169, pj8]、Wj9[pj9-169, pj9]、Wj10[pj10-169, pj10]、およびWj11[pj11 -182, pj11 ]である。pjxと潜在的な分割点kjの間の間隔はdxバイトである。具体的には、pj1とkjの間の間隔は0バイトであり、pj2とkjの間の間隔は1バイトであり、pj3とkjの間の間隔は2バイトであり、pj4とkjの間の間隔は3バイトであり、pj5とkjの間の間隔は4バイトであり、pj6とkjの間の間隔は5バイトであり、pj7とkjの間の間隔は6バイトであり、pj8とkjの間の間隔は7バイトであり、pj9とkjの間の間隔は8バイトであり、pj10とkjの間の間隔は1バイトであり、pj11とkjの間の間隔は3バイトであり、pj2、pj3、pj4、pj5、pj6、pj7、pj8、およびpj9全ては、潜在的な分割点kjに関して、データストリーム分割点を探索する方向と反対の方向にあり、pj10とpj11両方は、潜在的な分割点kjに関して、データストリーム分割点を探索する方向にある。Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-182, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。もちろん、本発明のこの実施例において、潜在的な分割点kaがデータストリーム分割点であるかどうかが判定されるときも規則に従い、具体的な実現は再度記載されず、潜在的な分割点kiを判定する記載への参照が行われ得る。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C
9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点であり、kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、kiのそれと同じ形態で次の潜在的な分割点が取得され、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
図3に表わされたデータストリーム分割点の探索に基づいて、図13に表わされた実現形態において、重複排除サーバ103において予め設定された規則は、潜在的な分割点kについて、11個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは個々に1から11までの連続した自然数を示し、ここで点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率は1/2であり、A1=A2=A3=A4=A5=A6=A7=A8=A9=A10=A11=169、B1=B2=B3=B4=B5=B6=B7=B8=B9=B10=B11=0、かつC1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11であり、ここでpxと潜在的な分割点kの間の間隔はdxバイトである。具体的には、p1と潜在的な分割点kの間の間隔は0バイトであり、p2とkの間の間隔は2バイトであり、p3とkの間の間隔は4バイトであり、p4とkの間の間隔は6バイトであり、p5とkの間の間隔は8バイトであり、p6とkの間の間隔は10バイトであり、p7とkの間の間隔は12バイトであり、p8とkの間の間隔は14バイトであり、p9とkの間の間隔は16バイトであり、p10とkの間の間隔は18バイトであり、p11とkの間の間隔は20バイトであり、潜在的な分割点kに関して、p2、p3、p4、p5、p6、p7、p8、p9、p10、およびp11全ては、データストリーム分割点を探索する方向と反対の方向にある。kaはデータストリーム分割点であり、図13に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は、次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から11までの連続した自然数を示す。図13に表わされた実現形態において、予め設定された規則に従って、潜在的な分割点kiについて11個の点が決定され、個々にpi1、pi2、
pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11であり、点pi1、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11に対応するウィンドウは、それぞれWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-169, pi11]である。pixと潜在的な分割点kiの間の間隔はdxバイトである。具体的には、pi1とkiの間の間隔は0バイトであり、pi2とkiの間の間隔は2バイトであり、pi3とkiの間の間隔は4バイトであり、pi4とkiの間の間隔は6バイトであり、pi5とkiの間の間隔は8バイトであり、pi6とkiの間の間隔は10バイトであり、pi7とkiの間の間隔は12バイトであり、pi8とkiの間の間隔は14バイトであり、pi9とkiの間の間隔は16バイトであり、pi10とkiの間の間隔は18バイトであり、pi11とkiの間の間隔は20バイトであり、潜在的な分割点kiに関して、pi2、pi3、pi4、pi5、pi6、pi7、pi8、pi9、pi10、およびpi11全ては、データストリーム分割点を探索する方向と反対の方向にある。Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[pi6-169, pi6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[pi7-169, pi7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[pi8-169, pi8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[pi9-169, pi9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[pi10-169, pi10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[pi11-169, pi11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。11個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件を満たさない、例えば、図14に表わされたように、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たさないとき、次の潜在的な分割点が選択される。潜在的な分割点kiからの区別のために、次の潜在的な分割点は、ここでkjと表現され、ここでkjはkiの右に位置し、kjとkiの間の間隔は1バイトである。図14に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて11個の点が決定され、個々にpj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11であり、点pj1、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11に対応するウィンドウが決定され、それぞれWj1[pj1-169, pj1]、Wj2[pj2-169, pj2]、Wj3[pj3-169, pj3]、Wj4[pj4-169, pj4]、Wj5[pj5-169, pj5]、Wj6[pj6-169, pj6]、Wj7[pj7-169, pj7]、Wj8[pj8-169, pj8]、Wj9[pj9-169, pj9]、Wj10[pj10-169, pj10]、およびWj11[pj11-169, pj11]であり、ここでA1=A2=A3=A4=A5=A6=A7=A8=A9=A10=A11=169、B1=B2=B3=B4=B5=B6=B7=B8=B9=B10=B11=0、かつC1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11である。pjxと潜在的な分割点kjの間の間隔はdxバイトである。具体的には、pj1とkjの間の間隔は0バイトであり、pj2とkjの間の間隔は2バイトであり、pj3とkjの間の間隔は4バイトであり、pj4とkjの間の間隔は6バイトであり、pj5とkjの間の間隔は8バイトであり、pj6とkjの間の間隔は10バイトであり、pj7とkjの間の間隔は12バイトであり、pj8とkjの間の間隔は14バイトであり、pj9とkjの間の間隔は16バイトであり、pj10とkjの間の間隔は18バイトであり、pj11とkjの間の間隔は20バイトであり、潜在的な分割点kjに関して、pj2、pj3、pj4、pj5、pj6、pj7、pj8、pj9、pj10、およびpj11全ては、データストリーム分割点を探索する方向と反対の方向にある。Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件
C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点である。ウィンドウWj1、Wj2、Wj3、Wj4、Wj5、Wj6、Wj7、Wj8、Wj9、Wj10、およびWj11のうちのいずれかのウィンドウ内
のデータの少なくとも一部が予め設定された条件を満たさないと判定されたとき、例えば、図15に表わされたように、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たさないとき、点pi4はデータストリーム分割点を探索する方向に関して点pj3の左に位置し、データストリーム分割点を探索する方向に沿って、点pi4から21バイトがスキップされ、それによって次の潜在的な分割点を取得する。潜在的な分割点kiおよびkjからの区別のために、次の潜在的な分割点は、klと表現される。図13に表わされた実現形態において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点klについて11個の点が決定され、個々にpl1、pl2、pl3、pl4、pl5、pl6、pl7、pl8、pl9、pl10、およびpl11であり、点pl1、pl2、pl3、pl4、pl5、pl6、pl7、pl8、pl9、pl10、およびpl11に対応するウィンドウは、それぞれWl1[pl1-169, pl1]、Wl2[pl2-169, pl2]、Wl3[pl3-169, pl3]、Wl4[pl4-169, pl4]、Wl5[pl5-169, pl5]、Wl6[pl6-169, pl6]、Wl7[pl7-169, pl7]、Wl8[pl8-169, pl8]、Wl9[pl9-169, pl9]、Wl10[pl10-169, pl10]、およびWl11[pl11-169, pl11]であり、ここでplxと潜在的な分割点klの間の間隔はdxバイトである。具体的には、pl1と潜在的な分割点klの間の間隔は0バイトであり、pl2とklの間の間隔は2バイトであり、pl3とklの間の間隔は4バイトであり、pl4とklの間の間隔は6バイトであり、pl5とklの間の間隔は8バイトであり、pl6とklの間の間隔は10バイトであり、pl7とklの間の間隔は12バイトであり、pl8とklの間の間隔は14バイトであり、pl9とklの間の間隔は16バイトであり、pl10とklの間の間隔は18バイトであり、pl11とklの間の間隔は20バイトであり、潜在的な分割点klに関して、pl2、pl3、pl4、pl5、pl6、pl7、pl8、pl9、pl10、およびpl11全ては、データストリーム分割点を探索する方向と反対の方向にある。Wl1[pl1-169, pl1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wl2[pl2-169, pl2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wl3[pl3-169, pl3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wl4[pl4-169, pl4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wl5[pl5-169, pl5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wl6[pl6-169, pl6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wl7[pl7-169, pl7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wl8[pl8-169, pl8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wl9[pl9-169, pl9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wl10[pl10-169, pl10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWl11[pl11-169, pl11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWl1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWl2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWl3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWl4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWl5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWl6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWl7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWl8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWl9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWl10内のデータの少なくと
も一部が予め設定された条件C10を満たし、かつウィンドウWl11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点klがデータストリーム分割点である。ウィンドウWl1、Wl2、Wl3、Wl4、Wl5、Wl6、Wl7、Wl8、Wl9、Wl10、およびWl11のうちのいずれかのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、次の潜在的な分割点が選択される。潜在的な分割点ki、kj、およびklからの区別のために、次の潜在的な分割点は、kmと表現され、ここでkmはklの右に位置し、kmとklの間の間隔は1バイトである。図13に表わされた実施例において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kmについて11個の点が決定され、個々にpm1、pm2、pm3、pm4、pm5、pm6、pm7、pm8、pm9、pm10、およびpm11であり、点pm1、pm2、pm3、pm4、pm5、pm6、pm7、pm8、pm9、pm10、およびpm11に対応するウィンドウは、それぞれWm1[pm1-169, pm1]、Wm2[pm2-169, pm2]、Wm3[pm3-169, pm3]、Wm4[pm4-169, pm4]、Wm5[pm5-169, pm5]、Wm6[pm6-169, pm6]、Wm7[pm7-169, pm7]、Wm8[pm8-169, pm8]、Wm9[pm9-169, pm9]、Wm10[pm10-169, pm10]、およびWm11[pm11-169, pm11]であり、ここでpmxと潜在的な分割点kmの間の間隔はdxバイトである。具体的には、pm1と潜在的な分割点kmの間の間隔は0バイトであり、pm2とkmの間の間隔は2バイトであり、pm3とkmの間の間隔は4バイトであり、pm4とkmの間の間隔は6バイトであり、pm5とkmの間の間隔は8バイトであり、pm6とkmの間の間隔は10バイトであり、pm7とkmの間の間隔は12バイトであり、pm8とkmの間の間隔14バイト、pm9とkmの間の間隔は16バイトであり、pm10とkmの間の間隔は18バイトであり、pm11とkmの間の間隔は20バイトであり、潜在的な分割点kmに関して、pm2、pm3、pm4、pm5、pm6、pm7、pm8、pm9、pm10、およびpm11全ては、データストリーム分割点を探索する方向と反対の方向にある。Wm1[pm1-169, pm1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wm2[pm2-169, pm2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wm3[pm3-169, pm3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wm4[pm4-169, pm4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wm5[pm5-169, pm5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wm6[pm6-169, pm6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wm7[pm7-169, pm7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wm8[pm8-169, pm8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wm9[pm9-169, pm9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wm10[pm10-169, pm10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWm11[pm11-169, pm11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWm1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWm2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWm3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWm4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWm5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWm6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWm7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWm8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWm9内のデータの少なく
とも一部が予め設定された条件C9を満たし、ウィンドウWm10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWm11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されとき、現在の潜在的な分割点kmがデータストリーム分割点である。いずれかのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、上記で記載された解決策に従って、スキップが実行され、それによって次の潜在的な分割点を取得し、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。
本発明の実施例は、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するための方法を提供する。この実施例において、ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定され、図5に表わされた実現形態が例として使用される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、点pi1および点pi1に対応するウィンドウWi1[pi1-169, pi1]が決定され、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図16に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図16において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはam,1、...、およびam,8と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
と表現されることが可能であり、ここでam,n=1であるときVam,n=1であり、am,n=0であるときVam,n=-1であり、ここでam,nはam,1、...、およびam,8のうちのいずれか1つを表現し、行列Vaは255バイトに対応するビットからam,nとVam,nの間の変換関係に従って取得され、
と表現されることが可能である。大量の乱数が選択されて行列を形成し、一旦形成されると、乱数によって形成された行列は不変のままである。例えば、特定の分布(ここで例として正規分布が使用される)に従う乱数から255*8個の乱数が選択されて行列R
を形成し、ここで行列Vaのm番目の行と行列Rのm番目の行の乱数が乗算され、積が加算されて値を取得し、これは、具体的には、Sam=Vam,1*hm,1+Vam,2*hm,2+...+Vam,8*hm,8と表現される。Sa1、Sa2、...、およびSa255は本方法に従って取得され、Sa1、Sa2、...、およびSa255の中で特定の条件(ここで例として0より大きいことが使用される)を満たす値の数量Kがカウントされる。行列Rは正規分布に従うので、行列Rが従うようにSamは依然として正規分布に従う。確率論によれば、正規分布における乱数が0より大きい確率は1/2であり、Sa1、Sa2、...、およびSa255の中の各値が0より大きい確率は1/2であり、従って、Kは二項分布
を満たす。カウント結果に従って、Sa1、Sa2、...、およびSa255の中で0より大きい値の数量Kが偶数であるかどうかが判定され、二項分布における乱数が偶数である確率は1/2であり、従って、Kは1/2の確率で条件を満たす。Kが偶数であるとき、それはWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすことを示す。Kが奇数であるとき、それはWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たさないことを示す。C1は、ここで、Sa1、Sa2、...、およびSa255の中で0より大きい値の、上記の形態に従って取得された数量Kが偶数であることを指す。図5に表わされた実現形態において、Wi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-169, pi11]について、ウィンドウはサイズにおいて同じであり、すなわち、全てのウィンドウは169バイトのサイズを有し、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態も同じである。詳細については、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する上記の記載を参照されたい。従って、図16に表わされたように、
は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはbm,1、...,およびbm,8と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
と表現されることが可能であり、ここでbm,n=1であるときVbm,n=1であり、bm,n=0であるときVbm,n=-1であり、ここでbm,nはbm,1、...、およびbm,8のうちのいずれか1つを表現し、行列Vbは255バイトに対応するビットからbm,nとVbm,nの間の変換関係に従って取得され、
と表現されることが可能である。Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態と同じであり、従って、行列R
が使用され、行列Vbのm番目の行と行列Rのm番目の行の乱数が乗算され、積が加算されて値を取得し、これは、具体的には、Sbm=Vbm,1*hm,1+Vbm,2*hm,2+...+Vbm,8*hm,8と表現される。Sb1、Sb2、...、およびSb255は本方法に従って取得され、Sb1、Sb2、...、およびSb255の中で特定の条件(ここで例として0より大きいことが使用される)を満たす値の数量Kがカウントされる。行列Rは正規分布に従うので、行列Rが従うようにSbmは依然として正規分布に従う。確率論によれば、正規分布における乱数が0より大きい確率は1/2であり、Sb1、Sb2、...、およびSb255の中の各値が0より大きい確率は1/2であり、従って、Kは二項分布
を満たす。カウント結果に従って、Sb1、Sb2、...、およびSb255の中で0より大きい値の数量Kが偶数であるかどうかが判定され、二項分布における乱数が偶数である確率は1/2であり、従って、Kは1/2の確率で条件を満たす。Kが偶数であるとき、それはWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすことを示す。Kが奇数であるとき、それはWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たさないことを示す。C2は、ここで、Sb1、Sb2、...、およびSb255の中で0より大きい値の、上記の形態に従って取得された数量Kが偶数であることを指す。図3に表わされた実現形態において、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たす。
従って、図16に表わされたように、
は、ウィンドウWi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。そして、ウィンドウWi1[pi1-169, pi1]およびWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定するための方法は、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定するために使用される。図5に表わされた実現形態において、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件を満たす。図16に表わされたように、
は、ウィンドウWi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。そして、ウィンドウWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、およびWi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定するための方法は、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかを判定するために使用される。図5に表わされた実現形態において、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たす。図16に表わされたように、
は、ウィンドウWi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。そして、ウィンドウWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、およびWi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定するための方法は、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかを判定するために使用される。図5に表わされた実現形態において、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさない。
Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において次の潜在的な分割点kjが取得される。図6に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、5バイトは、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために選択される。図17において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはam,1'、...、およびam,8'と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
と表現されることが可能であり、ここでam,n'=1であるときVam,n'=1であり、am,n'=0であるときVam,n'=-1であり、ここでam,n'はam,1'、...、およびam,8'のうちのいずれか1つを表現し、行列Va'は255バイトに対応するビットからam,n'とVam,n'の間の変換関係に従って取得され、
と表現されることが可能である。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態と同じである。従って、行列R
が使用され、行列Va'のm番目の行と行列Rのm番目の行の乱数が乗算され、積が加算されて値を取得し、これは、具体的には、Sam'=Vam,1'*hm,1+Vam,2'*hm,2+...+Vam,8'*hm,8と表現される。Sa1'、Sa2'、...、およびSa255'は本方法に従って取得され、Sa1'、Sa2'、...、およびSa255'の中で特定の条件(ここで例として0より大きいことが使用される)を満たす値の数量Kがカウントされる。行列Rは正規分布に従うので、行列Rが従うようにSam'は依然として正規分布に従う。確率論によれば、正規分布における乱数が0より大きい確率は1/2であり、Sa1'、Sa2'、...、およびSa255'の中の各値が0より大きい確率は1/2であり、従って、Kは二項分布
を満たす。カウント結果に従って、Sa1'、Sa2'、...、およびSa255'の中で0より大きい値の数量Kが偶数であるかどうかが判定され、二項分布における乱数が偶数である確率は1/2であり、従って、Kは1/2の確率で条件を満たす。Kが偶数であるとき、それはWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすことを示す。Kが奇数であるとき、それはWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たさないことを示す。
Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはbm,1'、...、およびbm,8'と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
と表現されることが可能であり、ここでbm,n'=1であるときVbm,n'=1であり、bm,n'=0であるときVbm,n'=-1であり、ここでbm,n'はbm,1'、...、およびbm,8'のうちのいずれか1つを表現し、行列Vb'は255バイトに対応するビットからbm,n'とVbm,n'の間の変換関係に従って取得され、
と表現されることが可能である。ウィンドウW2[p2-169, p2]およびW2[q2-169, q2]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は同じであり、従って、行列R
が依然として使用される。行列Vb'のm番目の行と行列Rのm番目の行の乱数が乗算され、積が加算されて値を取得し、これは、具体的には、Sbm'=Vbm,1'*hm,1+Vbm,2'*hm,2+...+Vbm,8'*hm,8と表現される。Sb1'、Sb2'、...、およびSb255'は本方法に従って取得され、Sb1'、Sb2'、...、およびSb255'の中で特定の条件(ここで例として0より大きいことが使用される)を満たす値の数量Kがカウントされる。行列Rは正規分布に従うので、行列Rが従うようにSbm'は依然として正規分布に従う。確率論によれば、正規分布における乱数が0より大きい確率は1/2であり、Sb1'、Sb2'、...、およびSb255'の中の各値が0より大きい確率は1/2であり、従って、Kは二項分布
を満たす。カウント結果に従って、Sb1'、Sb2'、...、およびSb255'の中で0より大きい値の数量Kが偶数であるかどうかが判定され、二項分布における乱数が偶数である確率は1/2であり、従って、Kは1/2の確率で条件を満たす。Kが偶数であるとき、それはWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすことを示す。Kが奇数であるとき、それはWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たさないことを示す。同様に、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
例として図5に表わされた実現形態を依然として使用して、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するための方法が提供される。この実施例において、ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、点pi1および点pi1に対応するウィンドウWi1[pi1-169, pi1]が決定され、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図16に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図16において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。一実現形態において、選択された5バイトを計算するためにhash関数が使用され、hash関数を使用することによって計算によって取得された値は、一定の一様分布をなす。hash関数を使用することによって計算によって取得された値が偶数であるならば、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、すなわち、C1は、hash関数を使用することによって、上記の形態に従って、計算によって取得された値が偶数であることを表現する。従って、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件を満たす確率は1/2である。図5に表わされた実現形態において、hash関数を使用することによって、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうか、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうか、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうか、かつWi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定される。具体的な実現について、図5に表わされた実現形態において、hash関数を使用することによって、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態の記載への参照が行われることが可能であり、これは再度ここに記載されない。
Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図6に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図17において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。ウィンドウWj1[pj1-169, pj1]から選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たす。図17において、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たす。図17において、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、
は、ウィンドウWj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たす。図17において、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかを判定する形態は、ウィンドウWi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、
は、ウィンドウWj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。選択された5バイトがhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たす。上記の方法に従って、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
例として図5に表わされた実現形態を使用して、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するための方法が提供される。この実施例において、ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、点pi1およびpi1に対応するウィンドウWi1[pi1-169, pi1]が決定され、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図16に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図16において、その順序番号が169、127、85、43、および1であるバイト
の各々は、1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
はそれぞれa1、a2、a3、a4、およびa5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、a1、a2、a3、a4、およびa5のうちのいずれのarも0≦ar≦255を満たす。a1、a2、a3、a4、およびa5は1*5行列を形成する。二項分布に従う乱数から256*5個の乱数が選択されて
と表現される行列Rを形成する。
行列Rはa1の値およびa1が位置する列に従って対応する値について探索される。例えば、a1=36であり、a1が1番目の列に位置するならば、h36,1に対応する値が探索される。行列Rはa2の値およびa2が位置する列に従って対応する値について探索される。例えば、a2=48であり、a2が2番目の列に位置するならば、h48,2に対応する値が探索される。行列Rはa3の値およびa3が位置する列に従って対応する値について探索される。例えば、a3=26であり、a3が3番目の列に位置するならば、h26,3に対応する値が探索される。行列Rはa4の値およびa4が位置する列に従って対応する値について探索される。例えば、a4=26であり、a4が4番目の列に位置するならば、h26,4に対応する値が探索される。行列Rはa5の値およびa5が位置する列に従って対応する値について探索される。例えば、a5=88であり、a5が5番目の列に位置するならば、h88,5に対応する値が探索される。S1=h36,1+h48,2+h26,3+h26,4+h88,5であり、行列Rは二項分布に従うので、S1も二項分布に従う。S1が偶数であるとき、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たし、S1が奇数であるとき、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たさない。S1が偶数である確率は1/2であり、C1は、上記の形態に従って計算によって取得されたS1が偶数であることを表現する。図5に表わされた実施例において、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす。図16に表わされたように、
は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図16において、バイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は、それぞれb1、b2、b3、b4、...、およびb5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、b1、b2、b3、b4、...、およびb5のうちのいずれのbrも0≦br≦255を満たす。b1、b2、b3、b4、...、およびb5は1*5行列を形成する。この実現形態において、Wi1およびWi2内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は同じであり、従って、行列Rが依然として使用される。行列Rはb1の値およびb1が位置する列に従って対応する値について探索される。例えば、b1=66であり、b1が1番目の列に位置するならば、h66,1に対応する値が探索される。行列Rはb2の値およびb2が位置する列に従って対応する値について探索される。例えば、b2=48であり、b2が2番目の列に位置するならば、h48,2に対応する値が探索される。行列Rはb3の値およびb3が位置する列に従って対応する値について探索される。例えば、b3=99であり、b3が3番目の列に位置するならば、h99,3に対応する値が探索される。行列Rはb4の値およびb4が位置する列に従って対応する値について探索される。例えば、b4=26であり、b4が4番目の列に位置するならば、h26,4に対応する値が探索される。行列Rはb5の値およびb5が位置する列に従って対応する値について探索される。例えば、b5=90であり、b5が5番目の列に位置するならば、h90,5に対応する値が探索される。S2=h66,1+h48,2+h99,3+h26,4+h90,5であり、行列Rは二項分布に従うので、S2も二項分布に従う。S2が偶数であるとき、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たし、S2が奇数であるとき、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たさない。S2が偶数である確率は1/2である。図5に表わされた実施例において、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たす。同じ規則を使用することによって、個々に、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[p
i5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[pi6-169, pi6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[pi7-169, pi7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[pi8-169, pi8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[pi9-169, pi9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[pi10-169, pi10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[pi11-169, pi11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。図5に表わされた実現形態において、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図6に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図17において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は、それぞれa1'、a2'、a3'、a4'、...、およびa5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、a1'、a2'、a3'、a4'、...、およびa5'のうちのいずれのar'も0≦ar'≦255を満たす。a1'、a2'、a3'、a4'、...、およびa5'は1*5行列を形成する。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じであり、従って、行列Rが依然として使用され、
と表現される。
行列Rはa1'の値およびa1'が位置する列に従って対応する値について探索される。例えば、a1'=16であり、a1'が1番目の列に位置するならば、h16,1に対応する値が探索される。行列Rはa2'の値およびa2'が位置する列に従って対応する値について探索される。例えば、a2'=98であり、a2'が2番目の列に位置するならば、h98,2に対応する値が探索される。行列Rはa3'の値およびa3'が位置する列に従って対応する値について探索される。例えば、a3'=56であり、a3'が3番目の列に位置するならば、h56,3に対応する値が探索される。行列Rはa4'の値およびa4'が位置する列に従って対応する値について探索される。例えば、a4'=36であり、a4'が4番目の列に位置するならば、h36,4に対応する値が探索される。行列Rはa5'の値およびa5'が位置する列に従って対応する値について探索される。例えば、a5'=99であり、a5'が5番目の列に位置するならば、h99,5に対応する値が探索される。S1'=h16,1+h98,2+h56,3+h36,4+h99,5であり、行列Rは二項分布に従うので、S1'も二項分布に従う。S1'が偶数であるとき、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たし、S1'が奇数であるとき、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たさない。S1'が偶数である確率は1/2である。
Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は、それぞれb1'、b2'、b3'、b4'、...、およびb5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、b1'、b2'、b3'、b4'、...、およびb5'のうちのいずれのbr'も0≦br'≦255を満たす。b1'、b2'、b3'、b4'、...、およびb5'は1*5行列を形成する。ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに使用されたのと同じ行列Rが使用される。行列Rはb1'の値およびb1'が位置する列に従って対応する値について探索される。例えば、b1'=210であり、b1'が1番目の列に位置するならば、h210,1に対応する値が探索される。行列Rはb2'の値およびb2'が位置する列に従って対応する値について探索される。例えば、b2'=156であり、b2'が2番目の列に位置するならば、h156,2に対応する値が探索される。行列Rはb3'の値およびb3'が位置する列に従って対応する値について探索される。例えば、b3'=144であり、b3'が3番目の列に位置するならば、h144,3に対応する値が探索される。行列Rはb4'の値およびb4'が位置する列に従って対応する値について探索される。例えば、b4'=60であり、b4'が4番目の列に位置するならば、h60,4に対応する値が探索される。行列Rはb5'の値およびb5'が位置する列に従って対応する値について探索される。例えば、b5'=90であり、b5'が5番目の列に位置するならば、h90,5に対応する値が探索される。S2'=h210,1+h156,2+h144,3+h60,4+h90,5である。S2の判定条件と同じく、S2'が偶数であるとき、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たし、S2'が奇数であるとき、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たさない。S2'が偶数である確率は1/2である。
同様に、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
例として図5に表わされた実現形態を使用して、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するための方法が提供される。この実施例において、ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、点pi1およびpi1に対応するウィンドウWi1[pi1-169, pi1]が決定され、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図16に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図16において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は、それぞれa1、a2、a3、a4、...、およびa5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、a1、a2、a3、a4、...、およびa5のうちのいずれのasも0≦as≦255を満たす。a1、a2、a3、a4、...、およびa5は1*5行列を形成する。二項分布に従う乱数から256*5個の乱数が選択されて
と表現される行列Rを形成する。二項分布に従う乱数から256*5個の乱数が選択されて
と表現される行列Gを形成する。
a1の値およびa1が位置する列に従って、例えば、a1=36であり、a1は1番目の列に位置し、行列Rはh36,1に対応する値について探索され、行列Gはg36,1に対応する値について探索される。a2の値およびa2が位置する列に従って、例えば、a2=48であり、a2は2番目の列に位置し、行列Rはh48,2に対応する値について探索され、行列Gはg48,2に対応する値について探索される。a3の値およびa3が位置する列に従って、例えば、a3=26であり、a3は3番目の列に位置し、行列Rはh26,3に対応する値について探索され、行列Gはg26,3に対応する値について探索される。a4の値およびa4が位置する列に従って、例えば、a4=26であり、a4は4番目の列に位置し、行列Rはh26,4に対応する値について探索され、行列Gはg26,4に対応する値について探索される。a5の値およびa5が位置する列に従って、例えば、a5=88であり、a5は5番目の列に位置し、行列Rはh88,5に対応する値について探索され、行列Gはg88,5に対応する値について探索される。S1h=h36,1+h48,2+h26,3+h26,4+h88,5であり、行列Rは二項分布に従うので、S1hも二項分布に従う。S1g=g36,1+g48,2+g26,3+g26,4+g88,5であり、行列Gは二項分布に従うので、S1gも二項分布に従う。S1hおよびS1gのうちの1つが偶数であるとき、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たし、S1hとS1g両方が奇数であるとき、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たさず、C1は、上記の方法に従って取得されたS1hおよびS1gのうちの1つが偶数であることを示す。S1hとS1g両方は二項分布に従うので、S1hが偶数である確率は1/2であり、S1gが偶数である確率は1/2であり、S1hおよびS1gのうちの1つが偶数である確率は1-1/4=3/4である。従って、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす確率は3/4である。図5に表わされた実施例において、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす。図5に表わされた実現形態において、Wi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-169, pi11]について、ウィンドウはサイズにおいて同じであり、すなわち、全てのウィンドウは169バイトのサイズを有し、一方、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態も同じである。詳細については、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する上記の記載を参照されたい。従って、図16に表わされたように、
は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図16において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は、それぞれb1、b2、b3、b4、...、およびb5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、b1、b2、b3、b4、...、およびb5のうちのいずれのbsも0≦bs≦255を満たす。b1、b2、b3、b4、...、およびb5は1*5行列を形成する。この実現形態において、各ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は同じであり、従って、同じ行列RおよびGが依然として使用される。b1の値およびb1が位置する列に従って、例えば、b1=66であり、b1は1番目の列に位置し、行列Rはh66,1に対応する値について探索され、行列Gはg66,1に対応する値について探索される。b2の値およびb2が位置する列に従って、例えば、b2=48であり、b2は2番目の列に位置し、行列Rはh48,2に対応する値について探索され、行列Gはg48,2に対応する値について探索される。b3の値およびb3が位置する列に従って、例えば、b3=99であり、b3は3番目の列に位置し、行列Rはh99,3に対応する値について探索され、行列Gはg99,3に対応する値について探索される。b4の値およびb4が位置する列に従って、例えば、b4=26であり、b4は4番目の列に位置し、行列Rはh26,4に対応する値について探索され、行列Gはg26,4に対応する値について探索される。b5の値およびb5が位置する列に従って、例えば、b5=90であり、b5は5番目の列に位置し、行列Rはh90,5に対応する値について探索され、行列Gはg90,5に対応する値について探索される。S2h=h66,1+h48,2+h99,3+h26,4+h90,5であり、行列Rは二項分布に従うので、S2hも二項分布に従う。S2g=g66,1+g48,2+g99,3+g26,4+g90,5であり、行列Gは二項分布に従うので、S2gも二項分布に従う。S2hおよびS2gのうちの1つが偶数であるとき、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たし、S2hとS2g両方が奇数であるとき、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たさない。S2hおよびS2gのうちの1つが偶数である確率は3/4である。図5に表わされた実施例において、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たす。同じ規則を使用することによって、個々に、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[pi6-169, pi6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[pi7-169, pi7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[pi8-169, pi8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[pi9-169, pi9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[pi10-169, pi10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[pi11-169, pi11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。図5に表わされた実現形態において、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図6に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図17において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は、それぞれa1'、a2'、a3'、a4'、...、およびa5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、a1'、a2'、a3'、a4'、...、およびa5'のうちのいずれのas'も0≦as'≦255を満たす。a1'、a2'、a3'、a4'、...、およびa5'は1*5行列を形成する。ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定されるときに使用されたのと同じ行列RおよびGが使用され、それぞれ
および
と表現される。
a1'の値およびa1'が位置する列に従って、例えば、a1'=16であり、a1'は1番目の列に位置し、行列Rはh16,1に対応する値について探索され、行列Gはg16,1に対応する値について探索される。a2'の値およびa2'が位置する列に従って、例えば、a2'=98であり、a2'は2番目の列に位置し、行列Rはh98,2に対応する値について探索され、行列Gはg98,2に対応する値について探索される。a3'の値およびa3'が位置する列に従って、例えば、a3'=56であり、a3'は3番目の列に位置し、行列Rはh56,3に対応する値について探索され、行列Gはg56,3に対応する値について探索される。a4'の値およびa4'が位置する列に従って、例えば、a4'=36であり、a4'は4番目の列に位置し、行列Rはh36,4に対応する値について探索され、行列Gはg36,4に対応する値について探索される。a5'の値およびa5'が位置する列に従って、例えば、a5'=99であり、a5'は5番目の列に位置し、行列Rはh99,5に対応する値について探索され、行列Gはg99,5に対応する値について探索される。S1h'=h16,1+h98,2+h56,3+h36,4+h99,5であり、行列Rは二項分布に従うので、S1h'も二項分布に従う。S1g'=g16,1+g98,2+g56,3+g36,4+g99,5であり、行列Gは二項分布に従うので、S1g'も二項分布に従う。S1h'およびS1g'のうちの1つが偶数であるとき、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たし、S1h'とS1g'両方が奇数であるとき、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たさない。S1h'およびS1g'のうちの1つが偶数である確率は3/4である。
Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。図17において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は、それぞれb1'、b2'、b3'、b4'、...、およびb5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、b1'、b2'、b3'、b4'、...、およびb5'のうちのいずれのbs'も0≦bs'≦255を満たす。b1'、b2'、b3'、b4'、...、およびb5'は1*5行列を形成する。ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに使用されたのと同じ行列RおよびGが使用される。b1'の値およびb1'が位置する列に従って、例えば、b1'=210であり、b1'は1番目の列に位置し、行列Rはh210,1に対応する値について探索され、行列Gはg210,1に対応する値について探索される。b2'の値およびb2'が位置する列に従って、例えば、b2'=156であり、b2'は2番目の列に位置し、行列Rはh156,2に対応する値について探索され、行列Gはg156,2に対応する値について探索される。b3'の値およびb3'が位置する列に従って、例えば、b3'=144であり、b3'は3番目の列に位置し、行列Rはh144,3に対応する値について探索され、行列Gはg144,3に対応する値について探索される。b4'の値およびb4'が位置する列に従って、例えば、b4'=60であり、b4'は4番目の列に位置し、行列Rはh60,4に対応する値について探索され、行列Gはg60,4に対応する値について探索される。b5'の値およびb5'が位置する列に従って、例えば、b5'=90であり、b5'は5番目の列に位置し、行列Rはh90,5に対応する値について探索され、行列Gはg90,5に対応する値について探索される。S2h'=h210,1+h156,2+h144,3+h60,4+h90,5であり、S2g'=g210,1+g156,2+g144,3+g60,4+g90,5である。S2h'およびS2g'のうちの1つが偶数であるとき、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たし、S2h'とS2g'両方が奇数であるとき、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たさない。S2h'およびS2g'のうちの1つが偶数である確率は3/4である。
同様に、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
例として図5に表わされた実現形態を使用して、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するための方法が提供される。この実施例において、ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、点pi1およびpi1に対応するウィンドウWi1[pi1-169, pi1]が決定され、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図16に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図16において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は40個の連続するビットとみなされ、これらは個々にa1、a2、a3、a4、...、およびa40と表現される。a1、a2、a3、a4、...、およびa40のうちのいずれのatについても、at=0であるときVat=-1であり、at=1であるときVat=1である。atとVatの間の対応に従って、Va1、Va2、Va3、Va4、...、およびVa40が生成される。正規分布に従う乱数から40個の乱数が選択され、個々にh1、h2、h3、h4、...、およびh40と表現される。Sa=Va1*h1+Va2*h2+Va3*h3+Va4*h4+...+Va40*h40である。h1、h2、h3、h4、...、およびh40は正規分布に従うので、Saも正規分布に従う。Saが正の数であるとき、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たし、Saが負の数または0であるとき、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たさない。Saが正の数である確率は1/2である。図5に表わされた実施例において、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす。図16に表わされたように、
は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図16において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は40個の連続するビットとみなされ、これらは個々にb1、b2、b3、b4、...、およびb40と表現される。b1、b2、b3、b4、...、およびb40のうちのいずれのbtについても、bt=0であるときVbt=-1であり、bt=1であるときVbt=1である。btとVbtの間の対応に従って、Vb1、Vb2、Vb3、Vb4、...、およびVb40が生成される。ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じであり、従って、同じ乱数h1、h2、h3、h4、...、およびh40が使用される。Sb=Vb1*h1+Vb2*h2+Vb3*h3+Vb4*h4+...+Vb40*h40である。h1、h2、h3、h4、...、およびh40は正規分布に従うので、Sbも正規分布に従う。Sbが正の数であるとき、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たし、Sbが負の数または0であるとき、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たさない。Sbが正の数である確率は1/2である。図5に表わされた実施例において、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たす。同じ規則を使用することによって、個々に、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[pi6-169, pi6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[pi7-169, pi7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[pi8-169, pi8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[pi9-169, pi9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[pi10-169, pi10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[pi11-169, pi11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。図5に表わされた実現形態において、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図6に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、W j1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図17において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は40個の連続するビットとみなされ、これらは個々にa1'、a2'、a3'、a4'、...、およびa40'と表現される。a1'、a2'、a3'、a4'、...、およびa40'のうちのいずれのat'についても、at'=0であるときVat'=-1であり、at'=1であるときVat'=1である。at'とVat'の間の対応に従って、Va1'、Va2'、Va3'、Va4'、...、およびVa40'が生成される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じであり、従って、同じ乱数h1、h2、h3、h4、...、およびh40が使用される。Sa'=Va1'*h1+Va2'*h2+Va3'*h3+Va4'*h4+...+Va40'*h40である。h1、h2、h3、h4、...、およびh40は正規分布に従うので、Sa'も正規分布に従う。Sa'が正の数であるとき、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たし、Sa'が負の数または0であるとき、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たさない。Sa'が正の数である確率は1/2である。
Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図17に表わされたように、
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。図17において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は40個の連続するビットとみなされ、これらは個々にb1'、b2'、b3'、b4'、...、およびb40'と表現される。b1'、b2'、b3'、b4'、...、およびb40'のうちのいずれのbt'についても、bt'=0であるときVbt'=-1であり、bt'=1であるときVbt'=1である。bt'とVbt'の間の対応に従って、Vb1'、Vb2'、Vb3'、Vb4'、...、およびVb40'が生成される。Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じであり、従って、同じ乱数h1、h2、h3、h4、...、およびh40が使用される。Sb'=Vb1'*h1+Vb2'*h2+Vb3'*h3+Vb4'*h4+...+Vb40'*h40である。h1、h2、h3、h4、...、およびh40は正規分布に従うので、Sb'も正規分布に従う。Sb'が正の数であるとき、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たし、Sb'が負の数または0であるとき、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たさない。Sb'が正の数である確率は1/2である。
同様に、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
例として図5に表わされた実現形態を依然として使用して、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するため方法が提供される。この実施例において、ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、点pi1およびpi1に対応するウィンドウWi1[pi1-169, pi1]が決定され、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図16に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図16において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
の各々は1個の10進数に変換され、その範囲は0から(2^40-1)である。0から(2^40-1)の中の各10進数について1個の指定された値を生成するために一様分布乱数生成器が使用され、0から(2^40-1)の中の各10進数と指定された値の間の対応Rが記録される。一旦指定されると、10進数に対応する指定された値は不変のままであり、指定された値は一様分布に従う。指定された値が偶数であるならば、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たし、指定された値が奇数であるならば、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たさない。C1は、上記の方法に従って取得された指定された値が偶数であることを表現する。一様分布における乱数が偶数である確率は1/2であるので、W i1 [pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす確率は1/2である。図5に表わされた実現形態において、同じ規則を使用することによって、個々に、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、かつWi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、これらは再度ここに記載されない。
Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図6に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、0から(2^40-1)の中の各10進数と指定された値の間の同じ対応Rが使用される。図17に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図17において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
の各々は1個の10進数に変換され、その10進数に対応する指定された値についてRが探索される。指定された値が偶数であるならば、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たし、指定された値が奇数であるならば、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たさない。一様分布における乱数が偶数である確率は1/2であるので、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たす確率は1/2である。同様に、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じであり、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[pj5-169, pj5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[pj6-169, pj6]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[pj7-169, pj7]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[pj8-169, pj8]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[pj9-169, pj9]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[pj10-169, pj10]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[pj11-169, pj11]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
図1に表わされた本発明の実施例における重複排除サーバ103は、本発明の実施例に記載された技術的解決策を実現することが可能である装置を指し、図18に表わされたように、通常、中央処理ユニット、主要メモリ、および入力/出力インタフェースを含む。中央処理ユニット、主要メモリ、および入力/出力インタフェースは、互いに通信する。主メモリは実行可能な命令を記憶し、中央処理ユニットは、主要メモリに記憶された実行可能な命令を実行し、それによって、特定の機能、例えば、本発明の実施例における図4から図17に記載されたデータストリーム分割点を探索することを遂行する。従って、図19に表わされたように、図4から図17に表わされた本発明の実施例によれば、重複排除サーバ103について、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、M個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数である。重複排除サーバ103は、決定ユニット1901および判断および処理ユニット1902を含む。決定ユニット1901は、ステップ(a)、(a)規則に従って、現在の潜在的な分割点kiについて、点piz および点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定することを行うように構成され、ここでiおよびzは整数であり、1≦z≦Mである。判断および処理ユニット1902は、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得するように構成され、ここでN*Uは
より大きくなく、ここで決定ユニットは新しい潜在的な分割点についてステップ(a)を行い、判断および処理ユニット1902は、現在の潜在的な分割点kiのM個のウィンドウのうちの各ウィンドウWix[pix-Ax, pix+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすとき、データストリーム分割点として現在の潜在的な分割点kiを選択するように構成される。
さらに、規則は、少なくとも2個の点peおよびpfが条件Ae=Af、Be=Bf、およびCe=Cfを満たすことをさらに含む。さらに、規則は、潜在的な分割点kに関して、少なくとも2個の点peおよびpfがデータストリーム分割点を探索する方向と反対の方向にあることをさらに含む。
さらに、規則は、少なくとも2個の点peとpfの間の間隔が1 Uであることをさらに含む。
さらに、判断および処理ユニット1902は、具体的には、ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するように構成される。具体的には、判断および処理ユニット1902は、具体的には、hash関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するように構成される。具体的には、判断および処理ユニット1902は、具体的には、ランダム関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するように構成されることは、具体的には、
ウィンドウWiz[piz-Az, piz+Bz]内のFバイトを選択し、Fバイトを繰り返しH回使用して合計でF*Hバイトを取得することを含み、ここでF≧1であり、各バイトは8ビットで形成され、これらはF*Hバイト内のm番目のバイトの1番目のビットから8番目のビットを表現するam,1、...、およびam,8と示され、F*Hバイトに対応するビットは
と表現されることが可能であり、ここでam,n=1であるときVam,n=1であり、am,n=0であるときVam,n=-1であり、ここでam,nはam,1、...、およびam,8のうちのいずれか1つを表現し、行列VaはF*Hバイトに対応するビットからam,nとVam,nの間の変換関係に従って取得され、行列Vaは
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
と表現され、行列Vaのm番目の行および行列Rのm番目の行内の乱数が乗算され、積が加算されて値を取得し、これは具体的にはSam=Vam,1*hm,1+Vam,2*hm,2+...+Vam,8*hm,8と表現され、Sa1、Sa2、...、およびSaF*Hが同様に取得され、Sa1、Sa2、...、およびSaF*Hの中で0より大きい値の数量Kがカウントされ、Kが偶数であるとき、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たす。
さらに、判断および処理ユニット1902は、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得するように構成され、決定ユニット1901は新しい潜在的な分割点についてステップ(a)を行い、ここで規則に従って、新しい潜在的な分割点について決定された点picに対応するウィンドウWic[pic-Ac, pic+Bc]の左の境界はウィンドウWiz[piz-Az, piz+Bz]の右の境界と一致し、またはウィンドウWic[pic-Ac, pic+Bc]の左の境界はウィンドウWiz[piz-Az, piz+Bz]の範囲内にあり、ここで新しい潜在的な分割点について決定された点p ic は、規則に従って新しい潜在的な分割点について決定されたM個の点の、データストリーム分割点を探索する方向に従って取得されたシーケンス内で1番目の順位を有する点である。
図4から図17に表わされた本発明の実施例におけるサーバに基づいてデータストリーム分割点を探索するための方法によれば、潜在的な分割点kiについて、点pixおよび点pix に対応するウィンドウWix[pix-Ax, pix+Bx]が決定され、ここでxは個々に1からMまでの連続した自然数を示し、M≧2である。M個のウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たすかどうかは並列に判定されることが可能であり、またはウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかは順次的に判定されることが可能であり、またはウィンドウWi1[pi1-A1, pi1+B1]内のデータの少なくとも一部が予め設定された条件C1を満たすことが最初に判定されることが可能であり、そして、Wim[pim-Am, pim+Bm]内のデータの少なくとも一部が予め設定された条件Cmを満たすことが判定されるまで、Wi2[pi2-A2, pi2+B2]内のデータの少なくとも一部が予め設定された条件C2を満たすことが判定される。この実施例における他のウィンドウは上記と同じ形態で判定され、これは再度記載されない。
さらに、図4から図17に表わされた本発明の実施例によれば、実際の適用において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、M個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは個々に1からMまでの連続した自然数を示し、M≧2である。予め設定された規則において、A1、A2、A3、...、およびAmは全て等しくなくてもよく、B1、B2、B3、...、およびBmは全て等しくなくてもよく、C1、C2、C3、...、およびCMも全て同じでなくてもよい。図5に表わされた実現形態において、ウィンドウWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-169, pi11]について、ウィンドウはサイズにおいて同じであり、すなわち、全てのウィンドウは169バイトのサイズを有し、一方、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態も同じである。詳細については、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する上記の記載を参照されたい。しかし、図11に表わされた実現形態において、ウィンドウWi1[pi1-169, pi1]、Wi2[pi2-169, pi2]、Wi3[pi3-169, pi3]、Wi4[pi4-169, pi4]、Wi5[pi5-169, pi5]、Wi6[pi6-169, pi6]、Wi7[pi7-169, pi7]、Wi8[pi8-169, pi8]、Wi9[pi9-169, pi9]、Wi10[pi10-169, pi10]、およびWi11[pi11-182, pi11]はサイズにおいて異なることが可能であり、一方、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態も異なることが可能である。全ての実施例において、重複排除サーバ103において予め設定された規則に従って、ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、もちろん、ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じであり、Wi2内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、もちろん、Wj2内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じであり、...、かつウィンドウWiM内のデータの少なくとも一部が予め設定された条件CMを満たすかどうかを判定する形態は、もちろん、ウィンドウWjM内のデータの少なくとも一部が予め設定された条件CMを満たすかどうかを判定する形態と同じであり、これらは再度ここに記載されない。一方、図4から図17に表わされた本発明の実施例によれば、M=11が例として使用されたが、Mの値は実際の要件に従って11に限定されず、この技術分野の当業者は、本発明の実施例における記載に従って、Mの値を決定する。
図4から図17に表わされた本発明の実施例によれば、規則が重複排除サーバ103において予め設定され、ka、ki、kj、kl、およびkmは、データストリーム分割点を探索する方向に沿って分割点の探索において取得された潜在的な分割点であり、ka、ki、kj、kl、およびkm全ては規則に従う。本発明のこの実施例におけるウィンドウWx[px-Ax, px+Bx]は特定の範囲を表現し、データが予め設定された条件Cxを満たすかどうかを判定するために、データが特定の範囲内で選択される。具体的には、データが予め設定された条件Cxを満たすかどうかを判定するために、特定の範囲内で、データの一部が選択されることが可能であり、または全てのデータが選択されることが可能である。本発明のこの実施例において具体的に使用されるウィンドウの概念について、ウィンドウWx[px-Ax, px+Bx]への参照が行われることが可能であり、これは再度ここに記載されない。
図4から図17に表わされた本発明の実施例によれば、ウィンドウWx[px-Ax, px+Bx]において、(px-Ax)および(px+Bx)はウィンドウWx[px-Ax, px+Bx]の2つの境界を表現し、ここで(px-Ax)は、ウィンドウWx[px-Ax, px+Bx]の、点pxに関してデータストリーム分割点を探索する方向と反対の方向にある境界を表現し、(px+Bx)は、ウィンドウWx[px-Ax, px+Bx]の、点pxに関してデータストリーム分割点を探索する方向にある境界を表現する。具体的には、本発明の実施例において、図3から図15に表わされたデータストリーム分割点を探索する方向は左から右であり、従って、(px-Ax)は、ウィンドウWx[px-Ax, px+Bx]の、点pxに関してデータストリーム分割点を探索する方向と反対の方向にある境界(すなわち、左の境界)を表現し、(px+Bx)は、ウィンドウWx[px-Ax, px+Bx]の、点pxに関してデータストリーム分割点を探索する方向にある境界(すなわち、右の境界)を表現する。図3から図15に表わされたデータストリーム分割点を探索する方向が右から左であるならば、(px-Ax)は、ウィンドウWx[px-Ax, px+Bx]の、点pxに関してデータストリーム分割点を探索する方向と反対の方向にある境界(すなわち、右の境界)を表現し、(px+Bx)は、ウィンドウWx[px-Ax, px+Bx]の、点pxに関してデータストリーム分割点を探索する方向にある境界(すなわち、左の境界)を表現する。
この技術分野の当業者は、本発明の実施例に記載された各種の例示のユニットおよびアルゴリズムのステップと関連して、本発明の実施例における重要な特徴は、他の技術と組み合わされ、より複雑な形式で提示されることが可能であるが、本発明の重要な特徴が依然として含まれることを認識し得る。現実の環境において代わりの分割点が使用され得る。例えば、実現形態において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、11個の点pxが決定され、ここでxは1から11までの連続した自然数を示し、点pxに対応するウィンドウWx[px-Ax, px+Bx]およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxが決定される。11個のウィンドウのうちの各ウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすとき、潜在的な分割点kiがデータストリーム分割点である。設定された最大データチャンクを超えたとき分割点が見出されないとき、この場合、代わりの点についての予め設定された規則が使用され得る。代わりの点についての予め設定された規則は、重複排除サーバ103において予め設定された規則と類似し、代わりの点についての予め設定された規則は、例えば、潜在的な分割点kiについて、10個の点pxが決定され、ここでxは1から10までの連続した自然数を示し、点pxに対応するウィンドウWx[px-Ax, px+Bx]およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxが決定される。10個のウィンドウのうちの各ウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすとき、潜在的な分割点kiがデータストリーム分割点であり、設定された最大データチャンクを超えたときデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
規則が重複排除サーバ103において予め設定され、規則において、潜在的な分割点kについて、M個の点が決定される。前もって潜在的な分割点kがあることは必ずしも要求されず、潜在的な分割点kは、決定されたM個の点を使用することによって決定され得る。
本発明の実施例は、重複排除サーバに基づいてデータストリーム分割点を探索するための方法を提供し、これは、図20に表わされたように、下記を含む。
規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数である。図13に表わされた実現形態において、Mの値について、一実現形態において、M*Uの値は、2個の隣接するデータストリーム分割点の間の予め設定された最大の間隔、すなわち、データチャンクの予め設定された最大の長さより大きくない。ウィンドウWz[k-Az, k+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定され、ここでzは整数であり、1≦z≦Mであり、(k-Az)および(k+Bz)は個々にウィンドウWzの2つの境界を表現する。いずれか1個のウィンドウWz[k-Az, k+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kからNバイトがスキップされ、ここで
である。
はWz[k-Az, k+Bz]内のBzの絶対値を表現し、
はM個のウィンドウにおけるAxの絶対値の中で最大値を表現し、Nの値を決定する原理は、具体的には、下記の実施例において紹介される。M個のウィンドウのうちの各ウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすと判定されたとき、潜在的な分割点kがデータストリーム分割点である。
具体的には、現在の潜在的な分割点kiについて、下記のステップが規則に従って行われる。
ステップ2001:規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定し、ここでiおよびzは整数であり、1≦z≦Mである。
ステップ2002:ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、ここでN*Uは
より大きくなく、それによって新しい潜在的な分割点を取得し、ステップ2001を行い、
現在の潜在的な分割点kiのM個のウィンドウのうちの各ウィンドウWix[ki-Ax, ki+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすとき、データストリーム分割点として現在の潜在的な分割点kiを選択する。
さらに、規則は、少なくとも2個のウィンドウWie[ki-Ae, ki+Be]およびWif[ki-Af, ki+Bf]が条件|Ae+Be|=|Af+Bf|およびCe=Cfを満たすことをさらに含む。さらに、規則は、AeおよびAfが正の整数であることをさらに含む。なお、さらに、規則は、Ae-1=AfおよびBe+1=Bfをさらに含む。|Ae+Be|はウィンドウWieのサイズを表現し、|Af+Bf|はウィンドウWifのサイズを表現する。
さらに、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することは、具体的には、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することを含む。なお、さらに、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することは、具体的には、hash関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することである。
ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uがスキップされ、それによって新しい潜在的な分割点を取得する。規則に従って、新しい潜在的な分割点について決定されたウィンドウWic[ki-Ac, ki+Bc]の左の境界はウィンドウWiz[ki-Az, ki+Bz]の右の境界と一致し、または新しい潜在的な分割点について決定されたウィンドウWic[ki-Ac, ki+Bc]の左の境界はウィンドウWiz[ki-Az, ki+Bz]の範囲内にあり、ここで新しい潜在的な分割点について決定されたウィンドウWic[ki-Ac, ki+Bc]は、規則に従って新しい潜在的な分割点について決定されたM個のウィンドウの、データストリーム分割点を探索する方向に従って取得されたシーケンス内で1番目の順位を有するウィンドウである。
本発明のこの実施例において、M個のウィンドウのうちのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定することによって、データストリーム分割点が探索され、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、N*Uの長さがスキップされ、ここでN*Uは
より大きくなく、それによって次の潜在的な分割点を取得し、それによりデータストリーム分割点を探索する効率を向上させる。
重複データを除去するプロセスにおいて、偶数サイズのデータチャンクを保証するために、平均データチャンク(平均チャンクとも呼ばれる)のサイズが考慮される。すなわち、最小データチャンクのサイズと最大データチャンクのサイズにおける制限が満たされる一方、偶数サイズの取得されたデータチャンクを保証するために平均データチャンクのサイズが決定される。データストリーム分割点を見出す確率(P(n)と表現される)は2つの要因、すなわち、ウィンドウWx[k-Ax, k+Bx]の数量MおよびウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率に依存し、ここで前者はスキップする長さに影響し、後者はスキップする確率に影響し、2つはともに平均チャンクのサイズに影響する。一般に、平均チャンクのサイズが固定であるとき、Wx[k-Ax, k+Bx]の数量が増加するに連れて、単一のウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率も増加する。例えば、規則が重複排除サーバ103において予め設定され、規則は、潜在的な分割点kについて、11個のウィンドウWx[k-Ax, k+Bx]を決定することであり、ここでxは個々に1から11までの連続した自然数を示し、11個のウィンドウのうちのいずれかのウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率は1/2である。重複排除サーバ103において予め設定された規則の他のグループは、潜在的な分割点kについて、24個のウィンドウWx[k-Ax, k+Bx]を決定することであり、ここでxは個々に1から24までの連続した自然数を示し、24個のウィンドウのうちのいずれかのウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率は3/4である。特定のウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率の設定について、ウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する部分の記載への参照が行われ得る。P(n)は、2つの要因、すなわち、ウィンドウWx[k-Ax, k+Bx]の数量MおよびウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率に依存し、P(n)は、データストリームの開始位置または前のデータストリーム分割点からの探索において、データストリーム分割点を探索するためのn個の最小単位の後にデータストリーム分割点が見出されない確率を表現する。2つの要因に依存するP(n)を計算するプロセスは、実際、nステップのFibonacci数列であり、これは下記で詳細に記載される。P(n)が取得された後、1-P(n)は、データストリーム分割点の分布関数であり、(1-P(n))-(1-P(n-1))=P(n-1)-P(n)は、データストリーム分割点を探索するためのn個の最小単位の間隔においてデータストリーム分割点が見出される確率、すなわち、データストリーム分割点の密度関数である。積分
はデータストリーム分割点の密度関数に従って行われることが可能であり、それによってデータストリーム分割点の期待される長さ、すなわち平均チャンクのサイズを取得し、ここで4*1024(バイト)は最小データチャンクの長さを表現し、12*1024(バイト)は最大データチャンクの長さを表現する。
図3に表わされたデータストリーム分割点の探索に基づいて、図21に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1から11までの連続した自然数を示し、AxおよびBxは整数である。A1=169、B1=0、A2=170、B2=-1、A3=171、B3=-2、A4=172、B4=-3、A5=173、B5=-4、A6=174、B6=-5、A7=175、B7=-6、A8=176、B8=-7、A9=177、B9=-8、A10=178、B10=-9、A11=179、B11=-10である。C1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11である。従って、11個のウィンドウは、W1[k-169, k]、W2[k-170, k-1]、W3[k-171, k-2]、W4[k-172, k-3]、W5[k-173, k-4]、W6[k-174, k-5]、W7[k-175, k-6]、W8[k-176, k-7]、W9[k-177, k-8]、W10[k-178, k-9]、およびW11[k-179, k-10]である。kaはデータストリーム分割点であり、図21に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をする。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについてウィンドウWix[ki-Ax, ki+Bx]が決定され、この実施例において、xは個々に1から11までの連続した自然数を示す。図21に表わされた実現形態において、潜在的な分割点kiについて11個のウィンドウが決定され、個々にWi1[ki-169, ki]、Wi2[ki-170, ki-1]、Wi3[ki-171, ki-2]、Wi4[ki-172, ki-3]、Wi5[ki-173, ki-4]、Wi6[ki-174, ki-5]、Wi7[ki-175, ki-6]、Wi8[ki-176, ki-7]、Wi9[ki-177, ki-8]、Wi10[ki-178, ki-9]、およびWi11[ki-179, ki-10]である。Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[ki-174, ki-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[ki-176, ki-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[ki-177, ki-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[ki-178, ki-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[ki-179, ki-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi
9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。11個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件、例えば、図22に表わされたWi5[ki-173, ki-4]を満たさないとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiからNバイトがスキップされ、ここでNバイトは
より大きくない。図22に表わされた実現形態において、スキップされるNバイトは183バイトより大きくなく、この実施例において、N=7であり、それによって新しい潜在的な分割点を取得する。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここで、ここでkjと表現される。図21に表わされた実現形態によれば、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kjについてウィンドウWjx[kj-Ax, kj+Bx]を決定することであり、ここでこの実施例において、xは個々に1から11までの連続した自然数を示す。潜在的な分割点kjについて11個のウィンドウが決定され、個々にWj1[kj-169, kj]、Wj2[kj-170, kj-1]、Wj3[kj-171, kj-2]、Wj4[kj-172, kj-3]、Wj5[kj-173, kj-4]、Wj6[kj-174, kj-5]、Wj7[kj-175, kj-6]、Wj8[kj-176, kj-7]、Wj9[kj-177, kj-8]、Wj10[kj-178, kj-9]、およびWj11[kj-179, kj-10]である。図22に表わされたように、潜在的な分割点について11番目のウィンドウWj11[kj-179, kj-10]が決定されたとき、潜在的な分割点kiと潜在的な分割点kjの間の範囲が完全に判定範囲内にあることを保証するために、この実現形態において、ウィンドウWj11[kj-179, kj-10]の左の境界がウィンドウWi5[ki-173, ki-4]の右の境界(ki-4)と一致する、またはウィンドウWi5[ki-173, ki-4]の範囲内にあることが保証されることが可能であり、ここでウィンドウWj11[kj-179, kj-10]は、規則に従って潜在的な分割点kjについて決定された11個のウィンドウの、データストリーム分割点を探索する方向に従って取得されたシーケンス内で1番目の順位を有するウィンドウである。従って、そのような制限内で、ウィンドウWi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiからスキップする間隔は、
より大きくない。Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-178, kj-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定さ
れた条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点k j がデータストリーム分割点であり、kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、kiのそれと同じ形態で次の潜在的な分割点が取得され、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
図21に表わされた実現形態において、重複排除サーバ103において予め設定された規則に従って、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定することから開始して、Wi1[ki-169, ki ]内のデータの少なくとも一部、Wi2[ki-170, ki-1]内のデータの少なくとも一部、Wi3[ki-171, ki-2]内のデータの少なくとも一部、およびWi4[ki-172, ki-3]内のデータの少なくとも一部が、それぞれ、予め設定された条件C1、C2、C3、およびC4を満たすと判定され、かつWi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから6バイトがスキップされ、6番目のバイトの終了位置において新しい潜在的な分割点が取得される。他の潜在的な分割点からの区別のために、新しい潜在的な分割点は、ここでkgと表現される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kgについて11個のウィンドウが決定され、個々にWg1[kg-169, kg]、Wg2[kg-170, kg-1]、Wg3[kg-171, kg-2]、Wg4[kg-172, kg-3]、Wg5[kg-173, kg-4]、Wg6[kg-174, kg-5]、Wg7[kg-175, kg-6]、Wg8[kg-176, kg-7]、Wg9[kg-177, kg-8]、Wg10[kg-178, kg-9]、およびWg11[kg-179, kg-10]である。Wg1[kg-169, kg]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wg2[kg-170, kg-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wg3[kg-171, kg-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wg4[kg-172, kg-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wg5[kg-173, kg-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wg6[kg-174, kg-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wg7[kg-175, kg-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wg8[kg-176, kg-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wg9[kg-177, kg-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wg10[kg-178, kg-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWg11[kg-179, kg-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWg11[kg-179, kg-10]はウィンドウWi5[ki-173, ki-4]と一致し、C5=C11であり、従って、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiからTバイトをスキップすることによって取得された潜在的な分割点kgは、データストリーム分割点としての役目をするための条件を依然として満たさない。従って、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから6バイトがスキップされるとき繰り返される計算が存在するならば、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから7バイトがスキップされるとき繰り返される計算は減少されることが可能であり、効率はより高い。従って、データストリーム分割点を探索する速度は増加される。予め設定された規則に従って決定されたウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率が1/2である、すなわち、スキップを実行する確率が1/2であるとき、毎回、最大で
バイトがスキップされることが可能である。
この実現形態において、予め設定された規則は、潜在的な分割点kについて、11個のウィンドウWx[k-Ax, k+Bx]が決定され、ウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすことであり、ここでWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率は1/2であり、ここでxは個々に1から11までの連続した自然数を示し、AxおよびBxは整数である。A1=169、B1=0、A2=170、B2=-1、A3=171、B3=-2、A4=172、B4=-3、A5=173、B5=-4、A6=174、B6=-5、A7=175、B7=-6、A8=176、B8=-7、A9=177、B9=-8、A10=178、B10=-9、A11=179、B11=-10である。C1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11である。すなわち、潜在的な分割点kについて11個のウィンドウが選択され、11個のウィンドウは連続し、P(n)は、2つの要因、すなわち、ウィンドウの数量およびウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率を使用することによって計算されることが可能である。11個のウィンドウを選択し、11個のウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たすことを判定する形態は、重複排除サーバ103において予め設定された規則に従い、従って、潜在的な分割点kがデータストリーム分割点であるかどうかは、11個の連続したウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たすことが存在するかどうかに依存する。2バイトの間のギャップは1個の点と呼ばれる。P(n)は、条件を満たす11個の連続したウィンドウが n個の連続したウィンドウの中に存在しない確率、すなわち、データストリーム分割点が存在しない確率を表現する。ファイルヘッダ/前の分割点から4 KBの最小チャンクサイズがスキップされた後、データストリーム分割点を探索する方向と反対の方向に10バイトだけ戻ることによって4086番目の点が見出され、その点においてデータストリーム分割点は存在せず、従って、P(4086)=1、およびP(4087)
=1、...、P(4095)=1、等である。4096番目の点、すなわち、最小チャンクを取得するために使用される点において、(1/2)^11の確率で、11個のウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たす。従って、(1/2)^11の確率で、データストリーム分割点が存在し、1-(1/2)^11の確率で、データストリーム分割点が存在せず、従って、P(4096)=1-(1/2)^11である。
n番目のウィンドウにおいて、帰納法によってP(n)を取得する12のケースがあり得る。
ケース1:1/2の確率で、n番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、このケースにおいて、P(n-1)の確率で、n番目のウィンドウの前の(n-1)個のウィンドウの中に11個の連続したウィンドウは存在せず、ここで11個の連続したウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たす。従って、P(n)は1/2*P(n-1)を含む。n番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、n番目のウィンドウの前の(n-1)個のウィンドウの中に11個の連続したウィンドウが存在する場合であって、11個の連続したウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たす場合は、P(n)に関係しない。
ケース2:1/2の確率で、n番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、1/2の確率で、(n-1)番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、このケースにおいて、P(n-2)の確率で、(n-1)番目のウィンドウの前の(n-2)個のウィンドウの中に11個の連続したウィンドウは存在せず、ここで、11個の連続したウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たす。従って、P(n)は1/2*1/2*P(n-2)を含む。n番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、(n-1)番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、(n-1)番目のウィンドウの前の(n-2)個のウィンドウの中に11個の連続したウィンドウが存在する場合であって、11個の連続したウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たす場合は、P(n)に関係しない。
上記の記載によれば、ケース11:(1/2)^10の確率で、n番目から(n-9)番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、1/2の確率で、(n-10)番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、このケースにおいて、P(n-11)の確率で、(n-10)番目のウィンドウの前の(n-11)個のウィンドウの中に11個の連続したウィンドウは存在せず、ここで11個の連続したウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たす。従って、P(n)は(1/2)^10*1/2*P(n-11)を含む。n番目から(n-9)番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、(n-10)番目のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさず、(n-10)番目のウィンドウの前の(n-11)個のウィンドウの中で11個の連続したウィンドウが存在する場合であって、11個の連続したウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たす場合、P(n)に関係しない。
ケース12:(1/2)^11の確率で、n番目から(n-10)のウィンドウ内のデータの少なくとも一部が予め設定された条件を満たし、この場合はP(n)に関係しない。
従って、P(n)=1/2*P(n-1)+(1/2)^2*P(n-2)+...+(1/2)^11*P(n-11)である。他の予め設定された規則は、潜在的な分割点kについて、24個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxが決定され、ここでxは1から11までの連続した自然数を示し、A1=169、B1=0、A2=170、B2=-1、A3=171、B3=-2、A4=172、B4=-3、A5=173、B5=-4、A6=174、B6=-5、A7=175、B7=-6、A8=176、B8=-7、A9=177、B9=-8、A10=178、B10=-9、A11=179、B11=-10、...、およびA24=192、B24=-23である。C1=C2=C3=C4=C5=C6=C7=C8=C9=...=C24である。ウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率は3/4であり、P(n)は、2つの要因、すなわち、ウィンドウの数量およびウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率を使用することによって計算されることが可能である。
従って、潜在的な分割点kがデータストリーム分割点であるかどうかは、24個の連続したウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たすことが存在するかどうかに依存し、下記の数式、
P(1)=1、P(2)、...、P(23)=1、P(24)=1-(3/4)^24、および
P(n)=1/4*P(n-1)+1/4*(3/4)*P(n-2)+...+1/4*(3/4)^23*P(n-24)
を使用することによって計算が行われることが可能である。
計算の後、P(5*1024)=0.78、P(11*1024)=0.17、およびP(12*1024)=0.13である。すなわち、データストリームの開始位置/前のデータストリーム分割点から12 KBの間隔における点に探索が進んだ後、13%の確率でデータストリーム分割点は見出されず、強制的な分割が行われる。この確率を使用することによってデータストリーム分割点の密度関数が取得され、積分の後、平均で、データストリームの開始位置/前のデータストリーム分割点から約7.6 KBの間隔における点に探索が進んだ後、データストリーム分割点が見出される、すなわち、平均チャンクの長さは約7.6 KBであることが得られる。1/2の確率で11個の連続したウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすこととは異なり、従来のCDCアルゴリズムは、1/2^12の確率で1個のウィンドウが条件を満たすときのみ、平均チャンクの長さが7.6 KB であるという効果を達成することが可能である。
図3に表わされたデータストリーム分割点の探索に基づいて、図23に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1から11までの連続した自然数を示し、AxおよびBxは整数である。ウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率は1/2である。A1=171、B1=-2、A2=172、B2=-3、A3=173、B3=-4、A4=174、B4=-5、A5=175、B5=-6、A6=176、B6=-7、A7=177、B7=-8、A8=178、B8=-9、A9=179、B9=-10、A10=170、B10=-1、A11=169、B11=0である。C1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11である。kaはデータストリーム分割点であり、図23に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をする。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、W ix[k i -Ax, k i +Bx]およびウィンドウW ix[k i -Ax, k i +Bx]に対応する予め設定された条件Cxが決定され、ここでxは1から11までの連続した自然数を示す。決定された11個のウィンドウは、個々にWi1[ki-171, ki-2]、Wi2[ki-172, ki-3]、Wi3[ki-173, ki-4]、Wi4[ki-174, ki-5]、Wi5[ki-175, ki-6]、Wi6[ki-176, ki-7]、Wi7[ki-177, ki-8]、Wi8[ki-178, ki-9]、Wi9[ki-179, ki-10]、Wi10[ki-170, ki-1]、およびWi11[ki-169, ki]である。Wi1[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-174, ki-5]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[ki-176, ki-7]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[ki-177, ki-8]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[ki-178, ki-9]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[ki-179, ki-10]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点k
iがデータストリーム分割点である。11個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件を満たさないとき、図24に表わされたように、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たさず、データストリーム分割点を探索する方向に沿って点pi3から11バイトがスキップされることは、記載のための例として使用される。図24に表わされたように、W3が予め設定された条件C3を満たさないと判定されたとき、開始点としての役目をするkiから、データストリーム分割点を探索する方向に沿ってNバイトがスキップされ、ここでNバイトは
より大きくない。この実施例において、N=7であり、7番目のバイトの終了位置において次の潜在的な分割点が取得される。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、11個のウィンドウWjx[kj-Ax, kj+Bx]が決定され、個々にWj1[kj-171, kj-2]、Wj2[kj-172, kj-3]、Wj3[kj-173, kj-4]、Wj4[kj-174, kj-5]、Wj5[kj-175, kj-6]、Wj6[kj-176, kj-7]、Wj7[kj-177, kj-8]、Wj8[kj-178, kj-9]、Wj9[kj-179, kj-10]、Wj10[kj-170, kj-1]、およびWj11[kj-169, kj]である。Wj1[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-178, kj-9]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。もちろん、本発明のこの実施例において、潜在的な分割点kaがデータストリーム分割点であるかどうかが判定されるときも規則に従い、具体的な実現は再度記載されず、潜在的な分割点kiを判定する記載への参照が行われ得る。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点であり、kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、kiのそれと同じ形態で次の潜在的な分割点が取得され、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。 設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。もちろん、本方法の実現は、最大データチャンクの長さおよびデータストリームを形成するファイルのサイズによって制限されず、これは再度ここに記載されない。
図3に表わされたデータストリーム分割点の探索に基づいて、図25に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1から11までの連続した自然数を示す。A1=166、B1=3、A2=167、B2=2、A3=168、B3=1、A4=169、B4=0、A5=170、B5=-1、A6=171、B6=-2、A7=172、B7=-3、A8=173、B8=-4、A9=174、B9=-5、A10=175、B10=-6、A11=176、B11=-7、C1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11であり、11個のウィンドウは、個々にW1[k-166, k+3]、W2[k-167, k+2]、W3[k-168, k+1]、W4[k-169, k]、W5[k-170, k-1]、W6[k-171, k-2]、W7[k-172, k-3]、W8[k-173, k-4]、W9[k-174, k-5]、W10[k-175, k-6]、およびW11[k-176, k-7]である。kaはデータストリーム分割点であり、図25に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をする。この実施例において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、11個のウィンドウWix[k-Ax, k+Bx]およびウィンドウWix[k-Ax, k+Bx]に対応する予め設定された条件Cxが決定され、ここでxは個々に1から11までの連続した自然数を示す。図25に表わされた実現形態において、潜在的な分割点kiについて、決定された11個のウィンドウは、個々にWi1[ki-166, ki+3]、Wi2[ki-167, ki+2]、Wi3[ki-168, ki+1]、Wi4[ki-169, ki]、Wi5[ki-170, ki-1]、Wi6[ki-171, ki-2]、Wi7[ki-172, ki-3]、Wi8[ki-173, ki-4]、Wi9[ki-174, ki-5]、Wi10[ki-175, ki-6]、およびWi11[ki-176, ki-7]である。Wi1[ki-166, ki+3]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[ki-167, ki+2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[ki-168, ki+1]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7Wi7[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[ki-174, ki-5]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[ki-176, ki-7]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。11個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件、例えば、図26に表わされたWi7[ki-172, ki-3]を満たさないとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiからNバイトがスキップされ、ここでNバイトは
より大きくない。図26に表わされた実現形態において、スキップされるNバイトは185バイトより大きくなく、この実施例において、N=5であり、それによって新しい潜在的な分割点を取得する。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。図25に表わされた実現形態において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、11個のウィンドウが決定され、個々にWj1[kj-166, kj+3]、Wj2[kj-167, kj+2]、Wj3[kj-168, kj+1]、Wj4[kj-169, kj]、Wj5[kj-170, kj-1]、Wj6[kj-171, kj-2]、Wj7[kj-172, kj-3]、Wj8[kj-173, kj-4]、Wj9[kj-174, kj-5]、Wj10[kj-175, kj-6]、およびWj11[kj-176, kj-7]である。Wj1[kj-166, kj+3]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[kj-167, kj+2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[kj-168, kj+1]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。もちろん、本発明のこの実施例において、潜在的な分割点kaがデータストリーム分割点であるかどうかが判定されるときも規則に従い、具体的な実現は再度記載されず、潜在的な分割点kiを判定する記載への参照が行われ得る。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点であり、kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、kiのそれと同じ形態で次の潜在的な分割点が取得され、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
図3に表わされたデータストリーム分割点の探索に基づいて、図27に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1から11までの連続した自然数を示す。A1=169、B1=0、A2=170、B2=-1、A3=171、B3=-2、A4=172、B4=-3、A5=173、B5=-4、A6=174、B6=-5、A7=175、B7=-6、A8=176、B8=-7、A9=177、B9=-8、A10=168、B10=1、A11=179、B11=3である。C1=C2=C3=C4=C5=C6=C7=C8=C9=C10≠C11であり、11個のウィンドウは、個々にW1[k-169, k]、W2[k-170, k-1]、W3[k-171, k-2]、W4[k-172, k-3]、W5[k-173, k-4]、W6[k-174, k-5]、W7[k-175, k-6]、W8[k-176, k-7]、W9[k-177, k-8]、W10[k-168, k+1]、およびW11[k-179, k+3]である。kaはデータストリーム分割点であり、図27に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をする。この実施例において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、ウィンドウWix[ki-Ax, ki+Bx]が決定され、ここで xは個々に1から11までの連続した自然数を示す。図27に表わされた実現形態において、潜在的な分割点kiについて、決定された11個のウィンドウは、個々にWi1[ki-169, ki]、Wi2[ki-170, ki-1]、Wi3[ki-171, ki-2]、Wi4[ki-172, ki-3]、Wi5[ki-173, ki-4]、Wi6[ki-174, ki-5]、Wi7[ki-175, ki-6]、Wi8[ki-176, ki-7]、Wi9[ki-177, ki-8]、Wi10[ki-168, ki+1]、およびWi11[ki-179, ki+3]である。Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[ki-174, ki-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[ki-176, ki-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[ki-177, ki-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[ki-168, ki+1]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[ki-179, ki+3]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部
が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。ウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから1バイトがスキップされ、それによって新しい潜在的な分割点を取得する。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。10個のウィンドウWi1、Wi2、Wi3、Wi4、Wi5、Wi6、Wi7、Wi8、Wi9、およびWi10いずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件、例えば、図28に表わされたWi4[ki-172, ki-3]を満たさないとき、データストリーム分割点を探索する方向に沿って点kiからNバイトがスキップされ、ここでNバイトは
より大きくない。図28に表わされた実現形態において、スキップされるNバイトは182バイトより大きくなく、この実施例において、N=6であり、それによって新しい潜在的な分割点を取得する。潜在的な分割点kiからの区別のために、新しい潜在的な分割点は、ここでkjと表現される。図27に表わされた実現形態において重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて決定されたウィンドウは、個々にWj1[kj-169, kj]、Wj2[kj-170, kj-1]、Wj3[kj-171, kj-2]、Wj4[kj-172, kj-3]、Wj5[kj-173, kj-4]、Wj6[kj-174, kj-5]、Wj7[kj-175, kj-6]、Wj8[kj-176, kj-7]、Wj9[kj-177, kj-8]、Wj10[kj-168, kj+1]、およびWj11[kj-179, kj+3]である。Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-168, kj+1]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-179, kj+3]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。もちろん、本発明のこの実施例において、潜在的な分割点kaがデータストリーム分割点であるかどうかが判定されるときも規則に従い、具体的な実現は再度記載されず、潜在的な分割点kiを判定する記載への参照が行われ得る。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点である。kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、kiのそれと同じ形態で次の潜在的な分割点が取得され、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
図3に表わされたデータストリーム分割点の探索に基づいて、図29に表わされた実現形態において、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、11個のウィンドウWx[px-Ax, px+Bx]およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは個々に1から11までの連続した自然数を示し、ここでウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率は1/2である。A1=169、B1=0、A2=171、B2=-2、A3=173、B3=-4、A4=175、B4=-6、A5=177、B5=-8、A6=179、B6=-10、A7=181、B7=-12、A8=183、B8=-14、A9=185、B9=-16、A10=187、B10=-18、A11=189、B11=-20である。C1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11であり、11個のウィンドウは、個々にW1[k-169, k]、W2[k-171, k-2]、W3[k-173, k-4]、W4[k-175, k-6]、W5[k-177, k-8]、W6[k-179, k-10]、W7[k-181, k-12]、W8[k-183, k-14]、W9[k-185, k-16]、W10[k-187, k-18]、およびW11[k-189, k-20]である。kaはデータストリーム分割点であり、図29に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から11までの連続した自然数を示す。図29に表わされた実現形態において、予め設定された規則に従って、潜在的な分割点kiについて決定された11個のウィンドウは、個々にWi1[ki-169, ki]、Wi2[ki-171, ki-2]、Wi3[ki-173, ki-4]、Wi4[ki-175, ki-6]、Wi5[ki-177, ki-8]、Wi6[ki-179, ki-10]、Wi7[ki-181, ki-12]、Wi8[ki-183, ki-14]、Wi9[ki-185, ki-16]、Wi10[ki-187, ki-18]、およびWi11[ki-189, ki-20]である。Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wi2[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-177, ki-8]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[ki-179, ki-10]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[ki-181, ki-12]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[ki-183, ki-14]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[ki-185, ki-16]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[ki-187, ki-18]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[ki-189, ki-20]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWi2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWi3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWi4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWi5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWi6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWi7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWi8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWi9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWi10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWi11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kiがデータストリーム分割点である。11個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件を満たさない、例えば、図30に表わされたように、Wi4[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C4を満たさないとき、次の潜在的な分割点が選択される。潜在的な分割点kiからの区別のために、次の潜在的な分割点は、ここでkjと表現され、ここでkjはkiの右に位置し、kjとkiの間の間隔は1バイトである。図30に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、11個のウィンドウが決定され、個々にWj1[kj-169, kj]、Wj2[kj-171, kj-2]、Wj3[kj-173, kj-4]、Wj4[kj-175, kj-6]、Wj5[kj-177, kj-8]、Wj6[kj-179, kj-10]、Wj7[kj-181, kj-12]、Wj8[kj-183, kj-14]、Wj9[kj-185, kj-16]、Wj10[kj-187, kj-18]、およびWj11[kj-189, kj-20]であり、ここでC1=C2=C3=C4=C5=C6=C7=C8=C9=C10=C11である。Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wj2[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wj3[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wj4[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-181, kj-12]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-183, kj-14]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-185, kj-16]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-187, kj-18]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-189, kj-20]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWj2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWj3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWj4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWj5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWj6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWj7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWj8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWj9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点である。ウィンドウWj1、Wj2、Wj3、Wj4、Wj5、Wj6、Wj7、Wj8、Wj9、Wj10、およびWj11のうちのいずれかのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないと判定されたとき、例えば、図31に表わされたように、Wj3[kj-173, kj-4]内のデータの少なくとも一部が
予め設定された条件C3を満たさないとき、kjはkiの右に位置し、データストリーム分割点を探索する方向に沿ってkiからNバイトがスキップされ、ここでNバイトは
より大きくない。図28に表わされた実現形態において、Nバイトは195バイトより大きくなく、この実施例において、N=15であり、それによって次の潜在的な分割点を取得する。潜在的な分割点kiおよびkjからの区別のために、次の潜在的な分割点はklと表現される。図29における実現形態において重複排除サーバ103において予め設定された規則に従って、潜在的な分割点klについて、11個のウィンドウが決定され、個々にWl1[kl-169, kl]、Wl2[kl-171, kl-2]、Wl3[kl-173, kl-4]、Wl4[kl-175, kl-6]、Wl5[kl-177, kl-8]、Wl6[kl-179, kl-10]、Wl7[kl-181, kl-12]、Wl8[kl-183, kl-14]、Wl9[kl-185, kl-16]、Wl10[kl-187, kl-18]、およびWl11[kl-189, kl-20]である。Wl1[kl-169, kl]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wl2[kl-171, kl-2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wl3[kl-173, kl-4]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wl4[kl-175, kl-6]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wl5[kl-177, kl-8]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wl6[kl-179, kl-10]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wl7[kl-181, kl-12]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wl8[kl-183, kl-14]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wl9[kl-185, kl-16]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wl10[kl-187, kl-18]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWl11[kl-189, kl-20]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWl1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWl2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWl3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWl4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWl5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWl6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWl7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWl8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWl9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWl10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWl11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点klがデータストリーム分割点である。ウィンドウWl1、Wl2、Wl3、Wl4、Wl5、Wl6、Wl7、Wl8、Wl9、Wl10、およびWl11のうちのいずれかのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、次の潜在的な分割点が選択される。潜在的な分割点ki、kj、およびklからの区別のために、次の潜在的な分割点はkmと表現され、ここでkmはklの右に位置し、kmとklの間の間隔は1バイトである。図29に表わされた実施例において重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kmについて決定された11個のウィンドウは、個々にWm1[km-169, km]、Wm2[km-171, km-2]、Wm3[km-173, km-4]、Wm4[km-175, km-6]、Wm5[km-177, km-8]、Wm6[km-179, km-10]、Wm7[km-181, km-12]、Wm8[km-183, km-14]、Wm9[km-185, km-16]、Wm10[km-187, km-18]、およびWm11[km-189, km-20]である。Wm1[km-169, km]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、Wm2[km-171, km-2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wm3[km-173, km-4]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wm4[km-175, km-6]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wm5[km-177, km-8]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wm6[km-179, km-10]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wm7[km-181, km-12]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wm8[km-183, km-14]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wm9[km-185, km-16]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wm10[km-187, km-18]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWm11[km-189, km-20]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。ウィンドウWm1内のデータの少なくとも一部が予め設定された条件C1を満たし、ウィンドウWm2内のデータの少なくとも一部が予め設定された条件C2を満たし、ウィンドウWm3内のデータの少なくとも一部が予め設定された条件C3を満たし、ウィンドウWm4内のデータの少なくとも一部が予め設定された条件C4を満たし、ウィンドウWm5内のデータの少なくとも一部が予め設定された条件C5を満たし、ウィンドウWm6内のデータの少なくとも一部が予め設定された条件C6を満たし、ウィンドウWm7内のデータの少なくとも一部が予め設定された条件C7を満たし、ウィンドウWm8内のデータの少なくとも一部が予め設定された条件C8を満たし、ウィンドウWm9内のデータの少なくとも一部が予め設定された条件C9を満たし、ウィンドウWm10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWm11
内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kmがデータストリーム分割点である。いずれかのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、次の潜在的な分割点を取得するために上記で記載された解決策に従ってスキップが実行され、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。
本発明の実施例はウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するための方法を提供する。この実施例において、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定され、図21に表わされた実現形態が例として使用される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、ウィンドウWi1[ki-169, ki]が決定され、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図32に表わされたように、Wi1はウィンドウWi1[ki-169, ki]を表現し、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図32において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはam,1、...、およびam,8と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
と表現されることが可能であり、ここでam,n=1であるときVam,n=1であり、am,n=0であるときVam,n=-1であり、ここでam,nはam,1、...、およびam,8のうちのいずれか1つを表現し、行列Vaは255バイトに対応するビットからam,nとVam,nの間の変換関係に従って取得され、
と表現されることが可能である。大量の乱数が選択されて行列を形成する。一旦形成されると、乱数によって形成された行列は不変のままである。例えば、特定の分布(ここで例として正規分布が使用される)に従う乱数から255*8個の乱数が選択されて行列R
を形成し、ここで行列Vaのm番目の行の乱数と行列Rのm番目の行が乗算され、積が加算されて値を取得し、これは具体的には、Sam=Vam,1*hm,1+Vam,2*hm,2+...+Vam,8*hm,8と表現される。Sa1、Sa2、...、およびSa255は本方法に従って取得され、Sa1、Sa2、...、およびSa255の中で特定の条件(ここで例として0より大きいことが使用される)を満たす値の数量Kがカウントされる。行列Rは正規分布に従うので、行列Rが従うようにSamは依然として正規分布に従う。確率論によれば、正規分布における乱数が0より大きい確率は1/2であり、Sa1、Sa2、...、およびSa255の中の各値が0より大きい確率は1/2であり、従って、Kは二項分布
を満たす。カウント結果に従って、Sa1、Sa2、...、およびSa255の中で0より大きい値の数量Kが偶数であるかどうかが判定され、二項分布における乱数が偶数である確率は1/2であり、従って、Kは1/2の確率で条件を満たす。Kが偶数であるとき、それはWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすことを示す。Kが奇数であるとき、それはW1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たさないことを示す。C1は、ここで、Sa1、Sa2、...、およびSa255の中で0より大きい値の、上記の形態に従って取得された数量Kが偶数であることを指す。図21に表わされた実現形態において、Wi1[ki-169, ki]、Wi2[ki-170, ki-1]、Wi3[ki-171, ki-2]、Wi4[ki-172, ki-3]、Wi5[ki-173, ki-4]、Wi6[ki-174, ki-5]、Wi7[ki-175, ki-6]、Wi8[ki-176, ki-7]、Wi9[ki-177, ki-8]、Wi10[ki-178, ki-9]、およびWi11[ki-179, ki-10]について、ウィンドウはサイズにおいて同じであり、すなわち、全てのウィンドウは169バイトのサイズを有し、一方、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態も同じである。詳細については、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する上記の記載を参照されたい。従って、図32に表わされたように、
は、ウィンドウWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはbm,1、...、およびbm,8と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
と表現されることが可能であり、ここでbm,n=1であるときVbm,n=1であり、bm,n=0であるときVbm,n=-1であり、ここでbm,nはbm,1、...、およびbm,8のうちのいずれか1つを表現し、行列Vbは255バイトに対応するビットからbm,nとVbm,nの間の変換関係に従って取得され、
と表現されることが可能である。Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は、ウィンドウWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態と同じであり、従って、行列R
が使用され、行列Vbのm番目の行と行列Rのm番目の行の乱数が乗算され、積が加算されて値を取得し、これは、具体的には、Sbm=Vbm,1*hm,1+Vbm,2*hm,2+...+Vbm,8*hm,8と表現される。Sb1、Sb2、...、およびSb255は本方法に従って取得され、Sb1、Sb2、...、およびSb255の中で特定の条件(ここで例として0より大きいことが使用される)を満たす値の数量Kがカウントされる。行列Rは正規分布に従うので、行列Rが従うようにSbmは依然として正規分布に従う。確率論によれば、正規分布における乱数が0より大きい確率は1/2であり、Sb1、Sb2、...、およびSb255の中の各値が0より大きい確率は1/2であり、従って、Kは二項分布
を満たす。カウント結果に従って、Sb1、Sb2、...、およびSb255の中で0より大きい値の数量Kが偶数であるかどうかが判定され、二項分布における乱数が偶数である確率は1/2であり、従って、Kは1/2の確率で条件を満たす。Kが偶数であるとき、それはWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすことを示す。Kが奇数であるとき、それはWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たさないことを示す。C2は、ここで、Sb1、Sb2、...、およびSb255の中で0より大きい値の、上記の形態に従って取得された数量Kが偶数であることを指す。図21に表わされた実現形態において、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たす。
従って、図32に表わされたように、
は、ウィンドウWi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。そして、ウィンドウWi1[ki-169, ki]およびWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定するための方法は、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定するために使用される。図21に表わされた実現形態において、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件を満たす。図32に表わされたように、
は、ウィンドウWi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。そして、ウィンドウWi1[ki-169, ki]、Wi2[ki-170, ki-1]、およびWi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定するための方法は、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかを判定するために使用される。図21に表わされた実現形態において、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たす。図32に表わされたように、
は、ウィンドウWi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。そして、ウィンドウWi1[ki-169, ki]、Wi2[ki-170, ki-1]、Wi3[ki-171, ki-2]、およびWi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定するための方法は、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかを判定するために使用される。図21に表わされた実現形態において、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさない。
Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って点pi5から7バイトがスキップされ、7番目のバイトの終了位置において次の潜在的な分割点kjが取得される。図22に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについてウィンドウWj1[kj-169, kj]が決定される。ウィンドウWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、Wj1はウィンドウを表現し、ウィンドウ内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図33において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはam,1'、...、およびam,8'と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
と表現されることが可能であり、ここでam,n'=1であるときVam,n'=1であり、am,n'=0であるときVam,n'=-1であり、ここでam,n'はam,1'、...、およびam,8'のうちのいずれか1つを表現し、行列Va'は255バイトに対応するビットからam,n'とVam,n'の間の変換関係に従って取得され、
と表現されることが可能である。ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態と同じである。従って、行列R
が使用され、行列Va'のm番目の行と行列Rのm番目の行の乱数が乗算され、積が加算されて値を取得し、これは、具体的には、Sam'=Vam,1'*hm,1+Vam,2'*hm,2+...+Vam,8'*hm,8と表現される。Sa1'、Sa2'、...、およびSa255'は本方法に従って取得され、Sa1'、Sa2'、...、およびSa255'の中で特定の条件(ここで例として0より大きいことが使用される)を満たす値の数量Kがカウントされる。行列Rは正規分布に従うので、行列Rが従うようにSam'は依然として正規分布に従う。確率論によれば、正規分布における乱数が0より大きい確率は1/2であり、Sa1'、Sa2'、...、およびSa255'の中の各値が0より大きい確率は1/2であり、従って、Kは二項分布
を満たす。カウント結果に従って、Sa1'、Sa2'、...、およびSa255'の中で0より大きい値の数量Kが偶数であるかどうかが判定され、二項分布における乱数が偶数である確率は1/2であり、従って、Kは1/2の確率で条件を満たす。Kが偶数であるとき、それはWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすことを示す。Kが奇数であるとき、それはWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たさないことを示す。
Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、
は、ウィンドウWj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはbm,1'、...、およびbm,8'と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
と表現されることが可能であり、ここでbm,n'=1であるときVbm,n'=1であり、bm,n'=0であるときVbm,n'=-1であり、ここでbm,n'はbm,1'、...、およびbm,8'のうちのいずれか1つを表現し、行列Vb'は255バイトに対応するビットからbm,n'とVbm,n'の間の変換関係に従って取得され、
と表現されることが可能である。ウィンドウWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じであり、従って、行列R
が依然として使用される。行列Vb'のm番目の行と行列Rのm番目の行の乱数が乗算され、積が加算されて値を取得し、これは、具体的には、Sbm'=Vbm,1'*hm,1+Vbm,2'*hm,2+...+Vbm,8'*hm,8と表現される。Sb1'、Sb2'、...、およびSb255'は本方法に従って取得され、Sb1'、Sb2'、...、およびSb255'の中で特定の条件(ここで例として0より大きいことが使用される)を満たす値の数量Kがカウントされる。行列Rは正規分布に従うので、行列Rが従うようにSbm'は依然として正規分布に従う。確率論によれば、正規分布における乱数が0より大きい確率は1/2であり、Sb1'、Sb2'、...、およびSb255'の中の各値が0より大きい確率は1/2であり、従って、Kは二項分布
を満たす。カウント結果に従って、Sb1'、Sb2'、...、およびSb255'の中で0より大きい値の数量Kが偶数であるかどうかが判定され、二項分布における乱数が偶数である確率は1/2であり、従って、Kは1/2の確率で条件を満たす。Kが偶数であるとき、それはWj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすことを示す。Kが奇数であるとき、それはWj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たさないことを示す。同様に、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-178, kj-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
この実施例において、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。図21に表わされた実現形態が依然として例として使用される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについてウィンドウWi1[ki-169, ki]が決定され、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図32に表わされたように、Wi1はウィンドウWi1[ki-169, ki]を表現し、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図32において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。一実現形態において、選択された5バイトを計算するためにhash関数が使用され、hash関数を使用することによって計算によって取得された値は、一定の一様分布をなす。hash関数を使用することによって計算によって取得された値が偶数であるならば、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすと判定される。すなわち、C1は、上記の形態に従って、hash関数を使用することによって計算によって取得された値が偶数であることを表現する。従って、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件を満たす確率は1/2である。図21に表わされた実現形態において、hash関数を使用することによって、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうか、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうか、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうか、かつWi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定される。具体的な実現について、図21に表わされた実現形態において、hash関数を使用することによって、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態の記載への参照が行われることが可能であり、これは再度ここに記載されない。
Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから7バイトがスキップされ、7番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図22に表わされたように、重複排除サーバ103において予め設定された規則に従って、 潜在的な分割点kjについてウィンドウWj1[kj-169, kj]が決定される。ウィンドウWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、Wj1はウィンドウWj1[kj-169, kj]を表現し、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図33において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。ウィンドウWj1[kj-169, kj]から選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たす。図33において、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、
は、ウィンドウWj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たす。図33において、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、
は、ウィンドウWj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たす。図33において、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかを判定する形態は、ウィンドウWi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、
は、ウィンドウWj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たす。上記の方法に従って、Wj5[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-178, kj-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
この実施例において、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。図21に表わされた実現形態が例として使用される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについてウィンドウWi1[ki-169, ki]が決定され、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図32に表わされたように、Wi1はウィンドウWi1[ki-169, ki]を表現し、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図32において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は、それぞれa1、a2、a3、a4、...、およびa5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、a1、a2、a3、a4、...、およびa5のうちのいずれのarも0≦ar≦255を満たす。a1、a2、a3、a4、...、およびa5は1*5行列を形成する。二項分布に従う乱数から256*5個の乱数が選択されて
と表現される行列Rを形成する。
行列Rはa1の値およびa1が位置する列に従って対応する値について探索される。例えば、a1=36であり、a1が1番目の列に位置するならば、h36,1に対応する値が探索される。行列Rはa2の値およびa2が位置する列に従って対応する値について探索される。例えば、a2=48であり、a2が2番目の列に位置するならば、h48,2に対応する値が探索される。行列Rはa3の値およびa3が位置する列に従って対応する値について探索される。例えば、a3=26であり、a3が3番目の列に位置するならば、h26,3に対応する値が探索される。行列Rはa4の値およびa4が位置する列に従って対応する値について探索される。例えば、a4=26であり、a4が4番目の列に位置するならば、h26,4に対応する値が探索される。行列Rはa5の値およびa5が位置する列に従って対応する値について探索される。例えば、a5=88であり、a5が5番目の列に位置するならば、h88,5に対応する値が探索される。S1=h36,1+h48,2+h26,3+h26,4+h88,5であり、行列Rは二項分布に従うので、S1も二項分布に従う。S1が偶数であるとき、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たし、S1が奇数であるとき、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たさない。S1が偶数である確率は1/2であり、C1は、上記の形態に従って計算によって取得されたS1が偶数であることを表現する。図21に表わされた実施例において、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たす。図32に表わされたように、
は、ウィンドウWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図32において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は、それぞれb1、b2、b3、b4、およびb5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、b1、b2、b3、b4、およびb5のうちのいずれのbrも0≦br≦255を満たす。b1、b2、b3、b4、およびb5は1*5行列を形成する。この実現形態において、Wi1およびWi2内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は同じであり、従って、行列Rが依然として使用される。行列Rはb1の値およびb1が位置する列に従って対応する値について探索される。例えば、b1=66であり、b1が1番目の列に位置するならば、h66,1に対応する値が探索される。行列Rはb2の値およびb2が位置する列に従って対応する値について探索される。例えば、b2=48であり、b2が2番目の列に位置するならば、h48,2に対応する値が探索される。行列Rはb3の値およびb3が位置する列に従って対応する値について探索される。例えば、b3=99であり、b3が3番目の列に位置するならば、h99,3に対応する値が探索される。行列Rはb4の値およびb4が位置する列に従って対応する値について探索される。例えば、b4=26であり、b4が4番目の列に位置するならば、h26,4に対応する値が探索される。行列Rはb5の値およびb5が位置する列に従って対応する値について探索される。例えば、b5=90であり、b5が5番目の列に位置するならば、h90,5に対応する値が探索される。S2=h66,1+h48,2+h99,3+h26,4+h90,5であり、行列Rは二項分布に従うので、S2も二項分布に従う。S2が偶数であるとき、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たし、S2が奇数であるとき、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たさない。S2が偶数である確率は1/2である。図21に表わされた実施例において、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たす。同じ規則を使用することによって、個々に、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-173,
ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[ki-174, ki-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[ki-176, ki-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[ki-177, ki-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[ki-178, ki-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[ki-179, ki-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。図21に表わされた実現形態において、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから7バイトがスキップされ、7番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図22に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについてウィンドウWj1[kj-169, kj]が決定される。ウィンドウWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、Wj1はウィンドウWj1[kj-169, kj]を表現し、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図33において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は、それぞれa1'、a2'、a3'、a4'、およびa5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、a1'、a2'、a3'、a4'、およびa5'のうちのいずれのar'も0≦ar'≦255を満たす。a1'、a2'、a3'、a4'、およびa5'は1*5行列を形成する。ウィンドウWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、行列Rが依然として使用され、
と表現される。
行列Rはa1'の値およびa1'が位置する列に従って対応する値について探索される。例えば、a1'=16であり、a1'が1番目の列に位置するならば、h16,1に対応する値が探索される。行列Rはa2'の値およびa2'が位置する列に従って対応する値について探索される。例えば、a2'=98であり、a2'が2番目の列に位置するならば、h98,2に対応する値が探索される。行列Rはa3'の値およびa3'が位置する列に従って対応する値について探索される。例えば、a3'=56であり、a3'が3番目の列に位置するならば、h56,3に対応する値が探索される。行列Rはa4'の値およびa4'が位置する列に従って対応する値について探索される。例えば、a4'=36であり、a4'が4番目の列に位置するならば、h36,4に対応する値が探索される。行列Rはa5'の値およびa5'が位置する列に従って対応する値について探索される。例えば、a5'=99であり、a5'が5番目の列に位置するならば、h99,5に対応する値が探索される。S1'=h16,1+h98,2+h56,3+h36,4+h99,5であり、行列Rは二項分布に従うので、S1'も二項分布に従う。S1'が偶数であるとき、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たし、S1'が奇数であるとき、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たさない。S1'が偶数である確率は1/2である。
Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、
は、ウィンドウWj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は、それぞれb1'、b2'、b3'、b4'、およびb5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、b1'、b2'、b3'、b4'、およびb5'のうちのいずれのbr'も0≦br'≦255を満たす。b1'、b2'、b3'、b4'、およびb5'は1*5行列を形成する。ウィンドウWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに使用されたのと同じ行列Rが使用される。行列Rはb1'の値およびb1'が位置する列に従って対応する値について探索される。例えば、b1'=210であり、b1'が1番目の列に位置するならば、h210,1に対応する値が探索される。行列Rはb2'の値およびb2'が位置する列に従って対応する値について探索される。例えば、b2'=156であり、b2'が2番目の列に位置するならば、h156,2に対応する値が探索される。行列Rはb3'の値およびb3'が位置する列に従って対応する値について探索される。例えば、b3'=144であり、b3'が3番目の列に位置するならば、h144,3に対応する値が探索される。行列Rはb4'の値およびb4'が位置する列に従って対応する値について探索される。例えば、b4'=60であり、b4'が4番目の列に位置するならば、h60,4に対応する値が探索される。行列Rはb5'の値およびb5'が位置する列に従って対応する値について探索される。例えば、b5'=90であり、b5'が5番目の列に位置するならば、h90,5に対応する値が探索される。S2'=h210,1+h156,2+h144,3+h60,4+h90,5である。S2の判定条件と同じく、S2'が偶数であるとき、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たし、S2'が奇数であるとき、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たさない。S2'が偶数である確率は1/2である。
同様に、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-178, kj-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
この実施例において、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。図21に表わされた実現形態が例として使用される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについてウィンドウWi1[ki-169, ki]が決定され、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図32に表わされたように、Wi1はウィンドウWi1[ki-169, ki]を表現し、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図32においてその順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は、それぞれa1、a2、a3、a4、およびa5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、a1、a2、a3、a4、およびa5のうちのいずれのasも0≦as≦255を満たす。a1、a2、a3、a4、およびa5は1*5行列を形成する。二項分布に従う乱数から256*5個の乱数が選択されて
と表現される行列Rを形成する。二項分布に従う乱数から256*5個の乱数が選択されて
と表現される行列Gを形成する。
a1の値およびa1が位置する列に従って、例えば、a1=36であり、a1は1番目の列に位置し、行列Rはh36,1に対応する値について探索され、行列Gはg36,1に対応する値について探索される。a2の値およびa2が位置する列に従って、例えば、a2=48であり、a2は2番目の列に位置し、行列Rはh48,2に対応する値について探索され、行列Gはg48,2に対応する値について探索される。a3の値およびa3が位置する列に従って、例えば、a3=26であり、a3は3番目の列に位置し、行列Rはh26,3に対応する値について探索され、行列Gはg26,3に対応する値について探索される。a4の値およびa4が位置する列に従って、例えば、a4=26であり、a4は4番目の列に位置し、行列Rはh26,4に対応する値について探索され、行列Gはg26,4に対応する値について探索される。a5の値およびa5が位置する列に従って、例えば、a5=88であり、a5は5番目の列に位置し、行列Rはh88,5に対応する値について探索され、行列Gはg88,5に対応する値について探索される。S1h=h36,1+h48,2+h26,3+h26,4+h88,5であり、行列Rは二項分布に従うので、S1hも二項分布に従う。S1g=g36,1+g48,2+g26,3+g26,4+g88,5であり、行列Gは二項分布に従うので、S1gも二項分布に従う。S1hおよびS1gのうちの1つが偶数であるとき、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たし、S1hとS1g両方が奇数であるとき、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たさず、C1は、上記の方法に従って取得されたS1hおよびS1gのうちの1つが偶数であることを示す。S1hとS1g両方が二項分布に従うので、S1hが偶数である確率は1/2であり、S1gが偶数である確率は1/2であり、S1hおよびS1gのうちの1つが偶数である確率は1-1/4=3/4である。従って、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たす確率は3/4である。図21に表わされた実施例において、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たす。図21に表わされた実現形態において、Wi1[ki-169, ki]、Wi2[ki-170, ki-1]、Wi3[ki-171, ki-2]、Wi4[ki-172, ki-3]、Wi5[ki-173, ki-4]、Wi6[ki-174, ki-5]、Wi7[ki-175, ki-6]、Wi8[ki-176, ki-7]、Wi9[ki-177, ki-8]、Wi10[ki-178, ki-9]、およびWi11[ki-179, ki-10]について、ウィンドウはサイズにおいて同じであり、すなわち、全てのウィンドウは169バイトのサイズを有し、一方、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態も同じである。詳細については、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する上記の記載を参照されたい。 従って、図32に表わされたように、
は、ウィンドウWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図32において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は、それぞれb1、b2、b3、b4、およびb5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、b1、b2、b3、b4、およびb5のうちのいずれのbsも0≦bs≦255を満たす。b1、b2、b3、b4、およびb5は1*5行列を形成する。この実現形態において、各ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は同じであり、従って、同じ行列RおよびGが依然として使用される。b1の値およびb1が位置する列に従って、例えば、b1=66であり、b1は1番目の列に位置し、行列Rはh66,1に対応する値について探索され、行列Gはg66,1に対応する値について探索される。b2の値およびb2が位置する列に従って、例えば、b2=48であり、b2は2番目の列に位置し、行列Rはh48,2に対応する値について探索され、行列Gはg48,2に対応する値について探索される。b3の値およびb3が位置する列に従って、例えば、b3=99であり、b3は3番目の列に位置し、行列Rはh99,3に対応する値について探索され、行列Gはg99,3に対応する値について探索される。b4の値およびb4が位置する列に従って、例えば、b4=26であり、b4は4番目の列に位置し、行列Rはh26,4に対応する値について探索され、行列Gはg26,4に対応する値について探索される。b5の値およびb5が位置する列に従って、例えば、b5=90であり、b5は5番目の列に位置し、行列Rはh90,5に対応する値について探索され、行列Gはg90,5に対応する値について探索される。S2h=h66,1+h48,2+h99,3+h26,4+h90,5であり、行列Rは二項分布に従うので、S2hも二項分布に従う。S2g=g66,1+g48,2+g99,3+g26,4+g90,5であり、行列Gは二項分布に従うので、S2gも二項分布に従う。S2hおよびS2gのうちの1つが偶数であるとき、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たし、S2hとS2g両方が奇数であるとき、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たさない。S2hおよびS2gのうちの1つが偶数である確率は3/4である。図21に表わされた実施例において、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たす。同じ規則を使用することによって、個々に、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[ki-174, ki-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[ki-176, ki-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[ki-177, ki-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[ki-178, ki-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[ki-179, ki-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。図21に表わされた実現形態において、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから7バイトがスキップされ、7番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図22に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについてウィンドウWj1[kj-169, kj]が決定される。ウィンドウWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、Wj1はウィンドウWj1[kj-169, kj]を表現し、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図33において、そ
の順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は、それぞれa1'、a2'、a3'、a4'、およびa5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、a1'、a2'、a3'、a4'、およびa5'のうちのいずれのas'も0≦as'≦255を満たす。a1'、a2'、a3'、a4'、およびa5'は1*5行列を形成する。ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定されるときに使用されたのと同じ行列RおよびGが使用され、それぞれ
および
と表現される。
a1'の値およびa1'が位置する列に従って、例えば、a1'=16であり、a1'は1番目の列に位置し、行列Rはh16,1に対応する値について探索され、行列Gはg16,1に対応する値について探索される。a2'の値およびa2'が位置する列に従って、例えば、a2'=98であり、a2'は2番目の列に位置し、行列Rはh98,2に対応する値について探索され、行列Gはg98,2に対応する値について探索される。a3'の値およびa3'が位置する列に従って、例えば、a3'=56であり、a3'は3番目の列に位置し、行列Rはh56,3に対応する値について探索され、行列Gはg56,3に対応する値について探索される。a4'の値およびa4'が位置する列に従って、例えば、a4'=36であり、a4'は4番目の列に位置し、行列Rはh36,4に対応する値について探索され、行列Gはg36,4に対応する値について探索される。a5'の値およびa5'が位置する列に従って、例えば、a5'=99であり、a5'は5番目の列に位置し、行列Rはh99,5に対応する値について探索され、行列Gはg99,5に対応する値について探索される。S1h'=h16,1+h98,2+h56,3+h36,4+h99,5であり、行列Rは二項分布に従うので、S1h'も二項分布に従う。S1g'=g16,1+g98,2+g56,3+g36,4+g99,5であり、行列Gは二項分布に従うので、S1g'も二項分布に従う。S1h'およびS1g'のうちの1つが偶数であるとき、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たし、S1h'とS1g'両方が奇数であるとき、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たさない。S1h'およびS1g'のうちの1つが偶数である確率は3/4である。
Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、
は、ウィンドウWj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。図33において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は、それぞれb1'、b2'、b3'、b4'、およびb5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
は値としての役目をし、b1'、b2'、b3'、b4'、およびb5'のうちのいずれのbs'も0≦bs'≦255を満たす。b1'、b2'、b3'、b4'、およびb5'は1*5行列を形成する。ウィンドウW i2[k i -170, k i -1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに使用されたのと同じ行列RおよびGが使用される。b1'の値およびb1'が位置する列に従って、例えば、b1'=210であり、b1'は1番目の列に位置し、行列Rはh210,1に対応する値について探索され、行列Gはg210,1に対応する値について探索される。b2'の値およびb2'が位置する列に従って、例えば、b2'=156であり、b2'は2番目の列に位置し、行列Rはh156,2に対応する値について探索され、行列Gはg156,2に対応する値について探索される。b3'の値およびb3'が位置する列に従って、例えば、b3'=144であり、b3'は3番目の列に位置し、行列Rはh144,3に対応する値について探索され、行列Gはg144,3に対応する値について探索される。b4'の値およびb4'が位置する列に従って、例えば、b4'=60であり、b4'は4番目の列に位置し、行列Rはh60,4に対応する値について探索され、行列Gはg60,4に対応する値について探索される。b5'の値およびb5'が位置する列に従って、例えば、b5'=90であり、b5'は5番目の列に位置し、行列Rはh90,5に対応する値について探索され、行列Gはg90,5に対応する値について探索される。S2h'=h210,1+h156,2+h144,3+h60,4+h90,5であり、S2g'=g210,1+g156,2+g144,3+g60,4+g90,5である。S2h'およびS2g'のうちの1つが偶数であるとき、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たし、S2h'とS2g'両方が奇数であるとき、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たさない。S2h'およびS2g'のうちの1つが偶数である確率は3/4である。
同様に、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-178, kj-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
この実施例において、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。図21に表わされた実現形態が例として使用される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについてウィンドウWi1[ki-169, ki]が決定され、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図32に表わされたように、Wi1はウィンドウWi1[ki-169, ki]を表現し、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図32において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は40個の連続するビットとみなされ、これらは個々にa1、a2、a3、a4、...、およびa40と表現される。a1、a2、a3、a4、...、およびa40のうちのいずれのatについても、at=0であるときVat=-1であり、at=1であるときVat=1である。atとVatの間の対応に従って、Va1、Va2、Va3、Va4、...、およびVa40が生成される。正規分布に従う乱数から40個の乱数が選択され、個々にh1、h2、h3、h4、...、およびh40と表現される。Sa=Va1*h1+Va2*h2+Va3*h3+Va4*h4+...+Va40*h40である。h1、h2、h3、h4、...、およびh40は正規分布に従うので、Saも正規分布に従う。Saが正の数であるとき、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たし、Saが負の数または0であるとき、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たさない。Saが正の数である確率は1/2である。図21に表わされた実施例において、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たす。図32に表わされたように、
は、ウィンドウWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図32において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は40個の連続するビットとみなされ、これらは個々にb1、b2、b3、b4、...、およびb40と表現される。b1、b2、b3、b4、...、およびb40のうちのいずれのbtについても、bt=0であるときVbt=-1であり、bt=1であるときVbt=1である。btとVbtの間の対応に従って、Vb1、Vb2、Vb3、Vb4、...、およびVb40が生成される。ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、同じ乱数h1、h2、h3、h4、...、およびh40が使用され、Sb=Vb1*h1+Vb2*h2+Vb3*h3+Vb4*h4+...+Vb40*h40である。h1、h2、h3、h4、...、およびh40は正規分布に従うので、Sbも正規分布に従う。Sbが正の数であるとき、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たし、Sbが負の数または0であるとき、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たさない。Sbが正の数である確率は1/2である。図21に表わされた実施例において、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たす。同じ規則を使用することによって、個々に、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wi6[ki-174, ki-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wi7[ki-175, ki-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wi8[ki-176, ki-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wi9[ki-177, ki-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wi10[ki-178, ki-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWi11[ki-179, ki-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定される。図21に表わされた実現形態において、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから7バイトがスキップされ、7番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図22に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについてウィンドウWj1[kj-169, kj]が決定される。ウィンドウWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、Wj1はウィンドウWj1[kj-169, kj]を表現し、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図33において、その順序番号が図33において169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
は40個の連続するビットとみなされ、これらは個々にa1'、a2'、a3'、a4'、...、およびa40'と表現される。a1'、a2'、a3'、a4'、...、およびa40'のうちのいずれのat'についても、at'=0であるときVat'=-1であり、at'=1であるときVat'=1である。at'とVat'の間の対応に従って、Va1'、Va2'、Va3'、Va4'、...、およびVa40'が生成される。ウィンドウWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、同じ乱数h1、h2、h3、h4、...、およびh40が使用される。Sa'=Va1'*h1+Va2'*h2+Va3'*h3+Va4'*h4+...+Va40'*h40である。h1、h2、h3、h4、...、およびh40は正規分布に従うので、Sa'も正規分布に従う。Sa'が正の数であるとき、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たし、Sa'が負の数または0であるとき、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たさない。Sa'が正の数である確率は1/2である。
Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図33に表わされたように、
は、ウィンドウWj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。図33において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
は40個の連続するビットとみなされ、これらは個々にb1'、b2'、b3'、b4'、...、およびb40'と表現される。b1'、b2'、b3'、b4'、...、およびb40'のうちのいずれのbt'についても、bt'=0であるときVbt'=-1であり、bt'=1であるときVbt'=1である。bt'とVbt'の間の対応に従って、Vb1'、Vb2'、Vb3'、Vb4'、...、およびVb40'が生成される。Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、同じ乱数h1、h2、h3、h4、...、およびh40が使用され、Sb'=Vb1'*h1+Vb2'*h2+Vb3'*h3+Vb4'*h4+...+Vb40'*h40である。h1、h2、h3、h4、...、およびh40は正規分布に従うので、Sb'も正規分布に従う。Sb'が正の数であるとき、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たし、Sb'が負の数または0であるとき、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たさない。Sb'が正の数である確率は1/2である。
同様に、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-178, kj-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
この実施例において、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定される。図21に表わされた実現形態が依然として例として使用される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、潜在的な分割点kiについてウィンドウWi1[ki-169, ki]が決定され、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図32に表わされたように、Wi1はウィンドウWi1[ki-169, ki]を表現し、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図32において、その順序番号が169、127、85、43、および1であるバイト
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
の各々は1個の10進数に変換され、その範囲は0から(2^40-1)である。0から(2^40-1)の中の各10進数について1個の指定された値を生成するために一様分布乱数生成器が使用され、0から(2^40-1)の中の各10進数と指定された値の間の対応Rが記録される。一旦指定されると、10進数に対応する指定された値は不変のままであり、指定された値は一様分布に従う。指定された値が偶数であるならば、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たし、指定された値が奇数であるならば、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たさない。C1は、上記の方法に従って取得された指定された値が偶数であることを表現する。一様分布における乱数が偶数である確率は1/2であるので、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たす確率は1/2である。図21に表わされた実現形態において、同じ規則を使用することによって、個々に、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定され、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定され、Wi4[ki-172, ki-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、これらは再度ここに記載されない。
Wi5[ki-173, ki-4]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kiから7バイトがスキップされ、7番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図22に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについてウィンドウWj1[kj-169, kj]が決定される。ウィンドウWj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、0から(2^40-1)の中の各10進数と指定された値の間の同じ対応Rが使用される。図33に表わされたように、Wj1はウィンドウを表現し、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図33において、
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
の間に42バイトがある。その順序番号169、127、85、43、および1のバイト
の各々が1個の10進数に変換され、10進数に対応する指定された値についてRが探索される。指定された値が偶数であるならば、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たし、指定された値が奇数であるならば、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たさない。一様分布における乱数が偶数である確率は1/2であるので、Wj1[kj-169, kj]内のデータの少なくとも一部が予め設定された条件C1を満たす確率は1/2である。同様に、Wi2[ki-170, ki-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[kj-170, kj-1]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じであり、Wi3[ki-171, ki-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[kj-171, kj-2]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。同様に、Wj4[kj-172, kj-3]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定され、Wj5[kj-173, kj-4]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定され、Wj6[kj-174, kj-5]内のデータの少なくとも一部が予め設定された条件C6を満たすかどうかが判定され、Wj7[kj-175, kj-6]内のデータの少なくとも一部が予め設定された条件C7を満たすかどうかが判定され、Wj8[kj-176, kj-7]内のデータの少なくとも一部が予め設定された条件C8を満たすかどうかが判定され、Wj9[kj-177, kj-8]内のデータの少なくとも一部が予め設定された条件C9を満たすかどうかが判定され、Wj10[kj-178, kj-9]内のデータの少なくとも一部が予め設定された条件C10を満たすかどうかが判定され、かつWj11[kj-179, kj-10]内のデータの少なくとも一部が予め設定された条件C11を満たすかどうかが判定され、これらは再度ここに記載されない。
図1に表わされた本発明の実施例における重複排除サーバ103は、本発明の実施例に記載された技術的解決策を実現することが可能である装置を指し、図18に表わされたように、通常、中央処理ユニット、主要メモリ、および入力/出力インタフェースを含む。中央処理ユニット、主要メモリ、および入力/出力インタフェースは、互いに通信する。主メモリは実行可能な命令を記憶し、中央処理ユニットは、主メモリに記憶された実行可能な命令を実行して特定の機能を遂行し、それによって、重複排除サーバ103は、特定の機能、例えば、本発明の実施例における図20から図33に記載されたデータストリーム分割点を探索すること、を有する。従って、図19に表わされたように、図20から図33に表わされた本発明の実施例によれば、重複排除サーバ103について、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数である。
重複排除サーバ103は、決定ユニット1901および判断および処理ユニット1902を含む。決定ユニット1901は、ステップ(a)、
(a)規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップを行うように構成され、ここでiおよびzは整数であり、1≦z≦Mである。
判断および処理ユニット1902は、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップするように構成され、ここでN*Uは
より大きくなく、それによって新しい潜在的な分割点を取得し、ここで決定ユニット1901は新しい潜在的な分割点についてステップ(a)を行い、
判断および処理ユニット1902は、現在の潜在的な分割点kiのM個のウィンドウのうちの各ウィンドウWix[ki-Ax, ki+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすとき、データストリーム分割点として現在の潜在的な分割点kiを選択するように構成される。
さらに、規則は、少なくとも2個のウィンドウWie[ki-Ae, ki+Be]およびWif[ki-Af, ki+Bf]が条件|Ae+Be|=|Af+Bf|およびCe=Cfを満たすことをさらに含む。さらに、規則は、AeおよびAfが正の整数であることをさらに含む。さらに、規則は、Ae-1=AfおよびBe+1=Bfをさらに含む。
さらに、判断および処理ユニット1902は、具体的には、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するように構成される。なお、さらに、判断および処理ユニット1902は、具体的には、hash関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定する。
さらに、判断および処理ユニット1902は、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得するように構成され、決定ユニット1901は新しい潜在的な分割点についてステップ(a)を行い、ここで規則に従って、新しい潜在的な分割点について決定されたウィンドウWic[ki-Ac, ki+Bc]の左の境界はウィンドウWiz[ki-Az, ki+Bz]の右の境界と一致し、または新しい潜在的な分割点について決定されたウィンドウWic[ki-Ac, ki+Bc]の左の境界はウィンドウWiz[ki-Az, ki+Bz]の範囲内にあり、ここで新しい潜在的な分割点について決定されたウィンドウWic[ki-Ac, ki+Bc]は、規則に従って新しい潜在的な分割点について決定されたM個のウィンドウの、データストリーム分割点を探索する方向に従って取得されたシーケンス内で1番目の順位を有するウィンドウである。
さらに、判断および処理ユニット1902は、ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定することは、具体的には、
ウィンドウWiz[ki-Az, ki+Bz]内のFバイトを選択し、Fバイトを繰り返しH回使用して合計でF*Hバイトを取得することを含み、ここでF≧1であり、各バイトは8ビットで形成され、これらはF*Hバイト内のm番目のバイトの1番目のビットから8番目のビットを表現するam,1、...、およびam,8と示され、F*Hバイトに対応するビットは
と表現されることが可能であり、ここでam,n=1であるときVam,n=1であり、am,n=0であるときVam,n=-1であり、ここでam,nはam,1、...、およびam,8のうちのいずれか1つを表現し、行列VaはF*Hバイトに対応するビットからam,nとVam,nの間の変換関係に従って取得され、行列Vaは
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
と表現され、行列Vaのm番目の行および行列Rのm番目の行内の乱数が乗算され、積が加算されて値を取得し、これは具体的にはSam=Vam,1*hm,1+Vam,2*hm,2+...+Vam,8*hm,8と表現され、Sa1、Sa2、...、およびSaF*Hが同様に取得され、Sa1、Sa2、...、およびSaF*Hの中で0より大きい値の数量Kがカウントされ、Kが偶数であるとき、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たす。
図20から図33に表わされた本発明の実施例におけるサーバに基づいてデータストリーム分割点を探索するための方法によれば、潜在的な分割点kiについてウィンドウWix[ki-Ax, ki+Bx]が決定され、ここでxは個々に1からMまでの連続した自然数を示し、M≧2である。M個のウィンドウのうちの各ウィンドウ内のデータの少なくとも一部が予め設定された条件Cxを満たすかどうかは並列に判定されることが可能であり、またはウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかは順次的に判定されることが可能であり、またはウィンドウWi1[pi1-A1, pi1+B1]内のデータの少なくとも一部が予め設定された条件C1を満たすことが最初に判定されることが可能であり、Wim[pim-Am, pim+Bm]内のデータの少なくとも一部が予め設定された条件Cmを満たすことが判定されるまで、次いでWi2[pi2-A2, pi2+B2]内のデータの少なくとも一部が予め設定された条件C2を満たすことが判定される。上記と同じ形態でこの実施例における他のウィンドウが決定され、これは再度記載されない。
さらに、図20から図33に表わされた本発明の実施例によれば、規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについてのM個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは個々に1からMまでの連続した自然数を示し、M≧2である。予め設定された規則において、A1、A2、A3、...、およびAmは全て等しいとは限らないことが可能であり、B1、B2、B3、...、およびBmは全て等しいとは限らないことが可能であり、C1、C2、C3、...、およびCMも全て同じとは限らないことが可能である。図21に表わされた実現形態において、Wi1[ki-169, ki]、Wi2[ki-170, ki-1]、Wi3[ki-171, ki-2]、Wi4[ki-172, ki-3]、Wi5[ki-173, ki-4]、Wi6[ki-174, ki-5]、Wi7[ki-175, ki-6]、Wi8[ki-176, ki-7]、Wi9[ki-177, ki-8]、Wi10[ki-178, ki-9]、およびWi11[ki-179, ki-10]について、ウィンドウはサイズにおいて同じであり、すなわち、全てのウィンドウは169バイトのサイズを有し、一方、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態も同じである。詳細については、Wi1[ki-169, ki]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する上記の記載を参照されたい。しかし、図11に表わされた実現形態において、ウィンドウWi1[ki-169, ki]、Wi2[ki-170, ki-1]、Wi3[ki-171, ki-2]、Wi4[ki-172, ki-3]、Wi5[ki-173, ki-4]、Wi6[ki-174, ki-5]、Wi7[ki-175, ki-6]、Wi8[ki-176, ki-7]、Wi9[ki-177, ki-8]、Wi10[ki-168, ki+1]、およびWi11[ki-179, ki+3]はサイズにおいて異なることが可能であり、一方、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態も異なることが可能である。全ての実施例において、重複排除サーバ103において予め設定された規則に従って、ウィンドウWi1内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、もちろん、ウィンドウWj1内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じであり、Wi2内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、もちろん、Wj2内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定すると同じであり、...、かつウィンドウWiM内のデータの少なくとも一部が予め設定された条件CMを満たすかどうかを判定する形態は、もちろん、ウィンドウWjM内のデータの少なくとも一部が予め設定された条件CMを満たすかどうかを判定する形態と同じであり、これらは再度ここに記載されない。
図20から図33に表わされた本発明の実施例によれば、規則が重複排除サーバ103において予め設定され、ka、ki、kj、kl、およびkmは、データストリーム分割点を探索する方向に沿って分割点の探索において取得された潜在的な分割点であり、ka、ki、kj、kl、およびkm全ては規則に従う。本発明のこの実施例において、ウィンドウWx[k-Ax, k+Bx]は特定の範囲を表現し、データが予め設定された条件Cxを満たすかどうかを判定するために、データが特定の範囲内で選択される。具体的には、特定の範囲内で、データが予め設定された条件Cxを満たすかどうかを判定するために、データの一部が選択されることが可能であり、または全てのデータが選択されることが可能である。本発明のこの実施例において具体的に使用されるウィンドウの概念について、ウィンドウWx[k-Ax, k+Bx]への参照が行われることが可能であり、これは再度ここに記載されない。
ウィンドウWx[k-Ax, k+Bx]において、(k-Ax)および(k+Bx)は、ウィンドウWx[k-Ax, k+Bx]の2つの境界を表現し、ここで(k-Ax)は、ウィンドウWx[k-Ax, k+Bx]の、潜在的な分割点kに関してデータストリーム分割点を探索する方向と反対の方向にある境界を表現し、(k+Bx)は、ウィンドウWx[k-Ax, k+Bx]の、潜在的な分割点kに関してデータストリーム分割点を探索する方向にある境界を表現する。具体的には、本発明の実施例において、図20から図33に表わされたデータストリーム分割点を探索する方向は左から右であり、従って、(k-Ax)は、ウィンドウWx[k-Ax, k+Bx]の、潜在的な分割点kに関してデータストリーム分割点を探索する方向と反対の方向にある境界(すなわち、左の境界)を表現し、(k+Bx)は、ウィンドウWx[k-Ax, k+Bx]の、潜在的な分割点kに関してデータストリーム分割点を探索する方向にある境界(すなわち、右の境界)を表現する。図20から図33に表わされたデータストリーム分割点を探索する方向が右から左ならば、(k-Ax)は、ウィンドウWx[k-Ax, k+Bx]の、潜在的な分割点kに関してデータストリーム分割点を探索する方向と反対の方向にある境界(すなわち、右の境界)を表現し、(k+Bx)は、ウィンドウWx[k-Ax, k+Bx]の、潜在的な分割点kに関してデータストリーム分割点を探索する方向にある境界(すなわち、左の境界)を表現する。
この技術分野の当業者は、本発明の実施例の図20から図33に記載された各種の例示のユニットおよびアルゴリズムのステップと関連して、本発明の実施例における重要な特徴は、他の技術と組み合わされ、より複雑な形式で提示されることが可能であるが、本発明の重要な特徴が依然として含まれることを認識し得る。現実の環境において代わりの分割点が使用され得る。例えば、実現形態において、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、11個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxが決定され、ここでxは1から11までの連続した自然数を示す。11個のウィンドウのうちの各ウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすとき、潜在的な分割点kiがデータストリーム分割点である。設定された最大データチャンクを超えた後に分割点が見出されないとき、代わりの点についての予め設定された規則が使用され得る。代わりの点についての予め設定された規則は、重複排除サーバ103において予め設定された規則と類似し、代わりの点についての予め設定された規則は、例えば、潜在的な分割点kiについて、10個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1から10までの連続した自然数を示す。10個のウィンドウのうちの各ウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たすと判定されたとき、潜在的な分割点kiがデータストリーム分割点である。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
図20から図33に表わされた本発明の実施例によれば、規則が重複排除サーバ103において予め設定され、規則において、潜在的な分割点kについてM個のウィンドウが決定される。前もって潜在的な分割点kがあることは必ずしも要求されず、潜在的な分割点kは、決定されたM個のウィンドウを使用することによって決定され得る。
この技術分野の当業者は、この明細書に開示された実施例に記載された例と組み合わせて、ユニットおよびアルゴリズムのステップが、電子的ハードウェアまたはコンピュータソフトウェアと電子的ハードウェアの組み合わせによって実現され得ることを認識し得る。機能がハードウェアによって実行されるか、またはソフトウェアによって実行されるかは、技術的解決策の特定の適用および設計制約条件に依存する。この技術分野の当業者は、各々の特定の適用について、記載された機能を実現するために、異なる方法を使用し得るが、その実現は本発明の範囲を超えると考えるべきでない。
便利で簡潔な記載の目的のために、上記のシステム、装置、およびユニットの詳細な動作プロセスについて、上記の方法の実施例における対応するプロセスへの参照が行われ得ることは、この技術分野の当業者によって明確に理解されることが可能であり、詳細は再度ここに記載されない。
いくつかの提供された実施例において、開示されたシステムおよび方法は他の形態で実現され得ることを理解すべきである。例えば、記載された装置の実施例は単に例示である。例えば、ユニットの区分は単に論理的な機能区分であり、実際の実現において他の区分であり得る。例えば、複数のユニットまたは構成要素は、他のシステムに組み合わされ、または統合されることが可能であり、またはいくつかの特徴は無視され、または遂行されないことが可能である。さらに、表示された、または説明された相互の結合、または直接の結合、または通信接続は、いくつかのインタフェースを通して実現され得る。装置間またはユニット間の間接的な結合または通信接続は、電子的、機械的、または他の形式で実現され得る。
別個の部分として記載されたユニットは、物理的に別個であることが可能であり、または物理的に別個でないことが可能であり、ユニットとして表示された部分は、物理的なユニットであることが可能であり、または物理的なユニットでないことが可能であり、1つの位置に配置されることが可能であり、または複数のネットワークユニット上に分散されることが可能である。ユニットのいくつかまたは全ては、実施例の解決策の目的を達成するための実際の必要性に従って選択され得る。
さらに、本発明の実施例における機能ユニットは、1つの処理ユニットに統合されることが可能であり、またはユニットの各々は物理的に単独で存在することが可能であり、または2つまたはより多くのユニットが1つのユニットに統合される。
機能が、ソフトウェア機能ユニットの形式で実現され、独立の製品として販売または使用されるとき、機能は、コンピュータ読み取り可能な不揮発性記憶媒体に記憶され得る。そのような理解に基づいて、必須な本発明の技術的解決策、または先行技術に貢献する部分、または技術的解決策のいくつかは、ソフトウェア製品の形式で実現され得る。ソフトウェア製品は、不揮発性記憶媒体に記憶され、本発明の実施例に記載された方法のステップの全てまたはいくつかを行うように(パーソナルコンピュータ、サーバ、またはネットワークデバイスであり得る)コンピュータデバイスに命令するためのいくつかの命令を含む。上記の不揮発性記憶媒体は、USBフラッシュドライブ、取り外し可能なハードディスク、リード・オンリ・メモリ(Read-Only Memory、ROM)、磁気ディスク、または光ディスクのような、プログラムコードを記憶することが可能であるいずれの媒体も含む。
上記の記載は、単に本発明の特定の実現形態であるが、本発明の保護範囲を限定することは意図されない。本発明において開示された技術的範囲内でこの技術分野の当業者によって容易に理解されるいずれの変形または代替も、本発明の保護範囲内にあるものである。従って、本発明の保護範囲は、請求項の保護範囲に従うものである。