(57)【要約】  本発明の実施例は、サーバに基づいてデータストリーム分割点を探索するための方法を提供する。本発明の実施例において、M個のウィンドウのうちのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定することによって、データストリーム分割点が探索され、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、N*Uの長さがスキップされ、それによって次の潜在的な分割点を取得し、それによりデータストリーム分割点を探索する効率を向上させる。
2017505927.tif 000002
【特許請求の範囲】
【請求項１】
サーバに基づいてデータストリーム分割点を探索するための方法であって、
前記サーバにおいて規則を予め設定するステップを含み、前記規則は、潜在的な分割点kについて、M個の点px、前記点pxに対応するウィンドウWx[px-Ax, px+Bx]、および前記ウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、xは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
前記方法は、
(a)前記規則に従って、現在の潜在的な分割点kiについて、点pizおよび前記点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って前記点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【数１】
2017505927.tif 000223
より大きくない、ステップと、
(c)前記現在の潜在的な分割点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個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である、請求項１から６のいずれか一項に記載の方法。
【請求項８】
ランダム関数を使用することによって、前記ウィンドウ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バイトに対応するビットは
【数２】
2017505927.tif 000224
と表現されることが可能であり、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は
【数３】
2017505927.tif 000225
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、前記行列Rは
【数４】
2017505927.tif 000226
と表現され、前記行列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を満たす、請求項５に記載の方法。
【請求項９】
サーバに基づいてデータストリーム分割点を探索するための方法であって、
前記サーバにおいて規則を予め設定するステップを含み、前記規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]および前記ウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、xは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
前記方法は、
(a)前記規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って前記現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【数５】
2017505927.tif 000227
より大きくない、ステップと、
(c)前記現在の潜在的な分割点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をさらに含む、請求項１０または１１に記載の方法。
【請求項１３】
前記ウィンドウ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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである、請求項９から１４のいずれか一項に記載の方法。
【請求項１６】
ランダム関数を使用することによって、前記ウィンドウ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バイトに対応するビットは
【数６】
2017505927.tif 000228
と表現されることが可能であり、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は
【数７】
2017505927.tif 000229
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、前記行列Rは
【数８】
2017505927.tif 000230
と表現され、前記行列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を満たす、請求項１３に記載の方法。
【請求項１７】
データストリーム分割点を探索するためのサーバであって、前記サーバは中央処理ユニットおよび主要メモリを含み、前記中央処理ユニットは前記主要メモリと通信し、規則が前記サーバにおいて予め設定され、前記規則は、潜在的な分割点kについて、M個の点px、前記点pxに対応するウィンドウWx[px-Ax, px+Bx]、および前記ウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Czを決定することであり、xは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
前記主メモリは、実行可能な命令を記憶するように構成され、前記中央処理ユニットは、前記実行可能な命令を実行して次のステップ、
(a)前記規則に従って、現在の潜在的な分割点kiについて、点pizおよび前記点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って前記点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【数９】
2017505927.tif 000231
より大きくない、ステップと、
(c)前記現在の潜在的な分割点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を満たすかどうかを判定するように構成される、請求項１７から２０のいずれか一項に記載のサーバ。
【請求項２２】
前記中央処理ユニットは、具体的には、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個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である、請求項１７から２２のいずれか一項に記載のサーバ。
【請求項２４】
前記中央処理ユニットにより、ランダム関数を使用することによって、前記ウィンドウ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バイトに対応するビットは
【数１０】
2017505927.tif 000232
と表現されることが可能であり、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は
【数１１】
2017505927.tif 000233
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、前記行列Rは
【数１２】
2017505927.tif 000234
と表現され、前記行列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を満たす、請求項２１に記載のサーバ。
【請求項２５】
データストリーム分割点を探索するためのサーバであって、前記サーバは中央処理ユニットおよび主要メモリを含み、前記中央処理ユニットは前記主要メモリと通信し、規則が前記サーバにおいて予め設定され、前記規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]および前記ウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、xは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
前記主メモリは、実行可能な命令を記憶するように構成され、前記中央処理ユニットは、前記実行可能な命令を実行して次のステップ、
(a)前記規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップであて、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って前記現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【数１３】
2017505927.tif 000235
より大きくない、ステップと、
(c)前記現在の潜在的な分割点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をさらに含む、請求項２６または２７に記載のサーバ。
【請求項２９】
前記中央処理ユニットは、具体的には、ランダム関数を使用することによって、前記ウィンドウ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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである、請求項２５から３０のいずれか一項に記載のサーバ。
【請求項３２】
前記中央処理ユニットにより、ランダム関数を使用することによって、前記ウィンドウ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バイトに対応するビットは
【数１４】
2017505927.tif 000236
と表現されることが可能であり、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は
【数１５】
2017505927.tif 000237
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、前記行列Rは
【数１６】
2017505927.tif 000238
と表現され、前記行列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を満たす、請求項２９に記載のサーバ。
【請求項３３】
データストリーム分割点を探索するためのサーバであって、規則が前記サーバにおいて予め設定され、前記規則は、潜在的な分割点kについて、M個の点px、前記点pxに対応するウィンドウWx[px-Ax, px+Bx]、および前記ウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、xは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
前記サーバは、ステップ(a)、(a)前記規則に従って、現在の潜在的な分割点kiについて、点pizおよび前記点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップを行うように構成される決定ユニットと、
前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って前記点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得するように構成される判断および処理ユニットであって、N*Uは
【数１７】
2017505927.tif 000239
より大きくない、判断および処理ユニットと、を含み、前記決定ユニットは前記新しい潜在的な分割点についてステップ(a)を行い、
前記判断および処理ユニットは、前記現在の潜在的な分割点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を満たすかどうかを判定するように構成される、請求項３３から３６のいずれか一項に記載のサーバ。
【請求項３８】
前記判断および処理ユニットは、具体的には、hash関数を使用することによって、前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たすかどうかを判定するように構成される、請求項３７に記載のサーバ。
【請求項３９】
前記判断および処理ユニットは、前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する前記方向に沿って前記点pizからデータストリーム分割点を探索するための前記N個の最小単位Uをスキップし、それによって前記新しい潜在的な分割点を取得するように構成され、前記決定ユニットは前記新しい潜在的な分割点についてステップ(a)を行い、前記規則に従って、前記新しい潜在的な分割点について決定された点picに対応するウィンドウWic[pic-Ac, pic+Bc]の左の境界は前記ウィンドウWiz[piz-Az, piz+Bz]の右の境界と一致し、または前記新しい潜在的な分割点について決定されたウィンドウWic[pic-Ac, pic+Bc]の左の境界は前記ウィンドウWiz[piz-Az, piz+Bz]の範囲内にあり、前記新しい潜在的な分割点について決定されたウィンドウWic[pic-Ac, pic+Bc]は、前記規則に従って前記新しい潜在的な分割点について決定されたM個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である、請求項３３から３８のいずれか一項に記載のサーバ。
【請求項４０】
前記判断および処理ユニットが、具体的には、ランダム関数を使用することによって、前記ウィンドウ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バイトに対応するビットは
【数１８】
2017505927.tif 000240
と表現されることが可能であり、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は
【数１９】
2017505927.tif 000241
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、前記行列Rは
【数２０】
2017505927.tif 000242
と表現され、前記行列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を満たす、請求項３７に記載のサーバ。
【請求項４１】
データストリーム分割点を探索するためのサーバであって、規則が前記サーバにおいて予め設定され、前記規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]および前記ウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、xは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
前記サーバは、ステップ(a)、
(a)前記規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップを行うように構成される決定ユニットと、
前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って前記現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得するように構成される判断および処理ユニットであって、N*Uは
【数２１】
2017505927.tif 000243
より大きくない、判断および処理ユニットと、を含み、前記決定ユニットは前記新しい潜在的な分割点についてステップ(a)を行い、
前記判断および処理ユニットは、前記現在の潜在的な分割点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をさらに含む、請求項４２または４３に記載のサーバ。
【請求項４５】
前記判断および処理ユニットは、具体的には、
ランダム関数を使用することによって、前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たすかどうかを判定する
ように構成される、請求項４１から４４のいずれか一項に記載のサーバ。
【請求項４６】
前記判断および処理ユニットは、具体的には、hash関数を使用することによって、前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たすかどうかを判定する、請求項４５に記載のサーバ。
【請求項４７】
前記判断および処理ユニットは、前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する前記方向に沿って前記現在の潜在的な分割点kiからデータストリーム分割点を探索するための前記N個の最小単位Uをスキップし、それによって前記新しい潜在的な分割点を取得するように構成され、前記決定ユニットは前記新しい潜在的な分割点についてステップ(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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである、請求項４１から４６のいずれか一項に記載のサーバ。
【請求項４８】
前記判断および処理ユニットが、ランダム関数を使用することによって、前記ウィンドウ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バイトに対応するビットは
【数２２】
2017505927.tif 000244
と表現されることが可能であり、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は
【数２３】
2017505927.tif 000245
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、前記行列Rは
【数２４】
2017505927.tif 000246
と表現され、前記行列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を満たす、請求項４６に記載のサーバ。
【請求項４９】
コンピュータ読み取り可能な記憶媒体であって、前記コンピュータ読み取り可能な記憶媒体は実行可能な命令を記憶するように構成され、サーバは前記実行可能な命令を実行してデータストリーム分割点を探索し、規則が前記サーバにおいて予め設定され、前記規則は、潜在的な分割点kについて、M個の点px、前記点pxに対応するウィンドウWx[px-Ax, px+Bx]、および前記ウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、xは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
前記サーバは前記実行可能な命令を実行して次のステップ、
(a)前記規則に従って、現在の潜在的な分割点kiについて、pizおよびpizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
前記ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って前記点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【数２５】
2017505927.tif 000247
より大きくない、ステップと、
(c)前記現在の潜在的な分割点kiのM個のウィンドウのうちの各ウィンドウWix[pix-Ax, pix+Bx]内のデータの少なくとも一部が前記予め設定された条件Czを満たすとき、データストリーム分割点として前記現在の潜在的な分割点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個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である、請求項４９から５４のいずれか一項に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５６】
ランダム関数を使用することによって、前記ウィンドウ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バイトに対応するビットは
【数２６】
2017505927.tif 000248
と表現されることが可能であり、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は
【数２７】
2017505927.tif 000249
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、前記行列Rは
【数２８】
2017505927.tif 000250
と表現され、前記行列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を満たす、請求項５３に記載のコンピュータ読み取り可能な記憶媒体。
【請求項５７】
コンピュータ読み取り可能な記憶媒体であって、前記コンピュータ読み取り可能な記憶媒体は実行可能な命令を記憶するように構成され、サーバは前記実行可能な命令を実行してデータストリーム分割点を探索し、規則が前記サーバにおいて予め設定され、前記規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]および前記ウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、xは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
前記サーバは前記実行可能な命令を実行して次のステップ、
(a)前記規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
前記ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が前記予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って前記現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【数２９】
2017505927.tif 000251
より大きくない、ステップと、
(c)前記現在の潜在的な分割点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をさらに含む、請求項５８または５９に記載のコンピュータ読み取り可能な記憶媒体。
【請求項６１】
前記サーバにより、前記ウィンドウ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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである、請求項５７から６２のいずれか一項に記載のコンピュータ読み取り可能な記憶媒体。
【請求項６４】
ランダム関数を使用することによって、前記ウィンドウ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バイトに対応するビットは
【数３０】
2017505927.tif 000252
と表現されることが可能であり、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は
【数３１】
2017505927.tif 000253
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、前記行列Rは
【数３２】
2017505927.tif 000254
と表現され、前記行列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を満たす、請求項６１に記載のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報技術の分野、詳細には、サーバに基づいてデータストリーム分割点を探索するための方法およびサーバに関する。
【背景技術】
【０００２】
データ量は増大し続けているので、現在、記憶分野において十分なデータ記憶を提供することが、重大な課題になっている。現在、そのような課題に対処する形態は、記憶される必要があるデータの冗長性の特徴による重複排除技術を使用することであり、それによって記憶されるデータの量を減少させる。
【０００３】
先行技術におけるコンテンツ定義されたチャンク（Content Defined Chunk、CDC）に基づいて重複データを除去するアルゴリズムにおいて、記憶されるべきデータストリームは、まず、複数のデータチャンクに分割される。データストリームをデータチャンクに分割するために、データストリーム内で適切な分割点が見出される必要があり、データストリーム内の2個の隣接する分割点の間のデータは1個のデータチャンクを形成する。データチャンクの特徴値が計算され、それによって同じ特徴値を有するデータチャンクが存在するかどうかを見出す。同じ特徴値を有するデータチャンクが見出されたならば、重複データが存在するとみなされる。具体的には、コンテンツ定義されたチャンクに基づいて重複データを除去する技術において、ファイルの内容に基づいてチャンクの分割点を探索するためにスライディング・ウィンドウ技法（Sliding Window Technique）が適用され、すなわち、データストリーム分割点を判定するためにウィンドウ内のデータのRabinフィンガープリントが計算される。分割点はデータストリーム内で左から右へ探索されると仮定する。スライディング・ウィンドウ内のデータのフィンガープリントは毎回計算され、与えられた整数Kに基づいてフィンガープリント値についてモジュロ演算が行われた後、モジュロ演算の結果は与えられた剰余Rと比較される。モジュロ演算の結果が与えられた剰余Rに等しいならば、ウィンドウの右端がデータストリーム分割点である。そうでなければ、ウィンドウは１バイトだけ右の方へスライドされ続け、データストリームの端に到達するまで、計算および比較は順次的かつ周期的に行われる。コンテンツ定義されたデータチャンクに基づいて重複データを除去するプロセスにおいて、データストリーム分割点を探索するために大量の計算リソースが消費される必要があり、従って、これは重複データを除去する性能の向上においてボトルネックになる。
【発明の概要】
【課題を解決するための手段】
【０００４】
第１の態様によれば、本発明の実施例は、サーバに基づいてデータストリーム分割点を探索するための方法を提供し、ここで規則がサーバにおいて予め設定され、ここで規則は、潜在的な分割点kについて、M個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、方法は、
(a)規則に従って、現在の潜在的な分割点kiについて、点pizおよび点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【０００５】
【数１】
2017505927.tif 000003
【０００６】
より大きくない、ステップと、
(c)現在の潜在的な分割点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個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である。
【００１３】
第１の態様の第４の可能な実現形態を参照して、第７の可能な実現形態において、ランダム関数を使用することによって、ウィンドウ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バイトに対応するビットは
【００１４】
【数２】
2017505927.tif 000004
【００１５】
と表現されることが可能であり、ここで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は
【００１６】
【数３】
2017505927.tif 000005
【００１７】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【００１８】
【数４】
2017505927.tif 000006
【００１９】
と表現され、行列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を満たす。
【００２０】
第２の態様によれば、本発明の実施例は、サーバに基づいてデータストリーム分割点を探索するための方法を提供し、ここで規則がサーバにおいて予め設定され、ここで規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
方法は、
(a)規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【００２１】
【数５】
2017505927.tif 000007
【００２２】
より大きくない、ステップと、
(c)現在の潜在的な分割点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をさらに含む。
【００２６】
第２の態様、または第２の態様の第１から第３の可能な実現形態のいずれか１つを参照して、第４の可能な実現形態において、ウィンドウ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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである。
【００２９】
第２の態様の第４の可能な実現形態を参照して、第７の可能な実現形態において、ランダム関数を使用することによって、ウィンドウ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バイトに対応するビットは
【００３０】
【数６】
2017505927.tif 000008
【００３１】
と表現されることが可能であり、ここで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は
【００３２】
【数７】
2017505927.tif 000009
【００３３】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【００３４】
【数８】
2017505927.tif 000010
【００３５】
と表現され、行列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を満たす。
【００３６】
第３の態様によれば、本発明の実施例は、データストリーム分割点を探索するためのサーバを提供し、ここでサーバは中央処理ユニットおよび主メモリを含み、中央処理ユニットは主メモリと通信し、規則がサーバにおいて予め設定され、ここで規則は、潜在的な分割点kについて、M個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
主メモリは、実行可能な命令を記憶するように構成され、中央処理ユニットは実行可能な命令を実行して次のステップ、
(a)規則に従って、現在の潜在的な分割点kiについて、点pizおよび点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定するステップであって、ここでiおよびzは整数であり、1≦z≦Mである、ステップと、
(b)ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【００３７】
【数９】
2017505927.tif 000011
【００３８】
より大きくない、ステップと、
(c)現在の潜在的な分割点kiのM個のウィンドウのうちの各ウィンドウWix[pix-Ax, pix+Bx]内のデータの少なくとも一部が予め設定された条件Czを満たすとき、データストリーム分割点として現在の潜在的な分割点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を満たすかどうかを判定するように構成される。
【００４３】
第３の態様の第４の可能な実現形態を参照して、第５の可能な実現形態において、中央処理ユニットは、具体的には、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個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である。
【００４５】
第３の態様の第４の可能な実現形態を参照して、第７の可能な実現形態において、中央処理ユニットにより、ランダム関数を使用することによって、ウィンドウ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バイトに対応するビットは
【００４６】
【数１０】
2017505927.tif 000012
【００４７】
と表現されることが可能であり、ここで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は
【００４８】
【数１１】
2017505927.tif 000013
【００４９】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【００５０】
【数１２】
2017505927.tif 000014
【００５１】
と表現され、行列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を満たす。
【００５２】
第４の態様によれば、本発明の実施例は、データストリーム分割点を探索するためのサーバを提供し、ここでサーバは中央処理ユニットおよび主要メモリを含み、中央処理ユニットは主要メモリと通信し、規則がサーバにおいて予め設定され、ここで規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
主メモリは、実行可能な命令を記憶するように構成され、中央処理ユニットは実行可能な命令を実行して次のステップ、
(a)規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【００５３】
【数１３】
2017505927.tif 000015
【００５４】
より大きくない、ステップと、
(c)現在の潜在的な分割点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をさらに含む。
【００５８】
第４の態様、または第１から第３の可能な実現形態のいずれか１つを参照して、第４の可能な実現形態において、中央処理ユニットは、具体的には、
ランダム関数を使用することによって、ウィンドウ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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである。
【００６１】
第４の態様の第４の可能な実現形態を参照して、第７の可能な実現形態において、中央処理ユニットにより、ランダム関数を使用することによって、ウィンドウ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バイトに対応するビットは
【００６２】
【数１４】
2017505927.tif 000016
【００６３】
と表現されることが可能であり、ここで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は
【００６４】
【数１５】
2017505927.tif 000017
【００６５】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【００６６】
【数１６】
2017505927.tif 000018
【００６７】
と表現され、行列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を満たす。
【００６８】
第５の態様によれば、本発明の実施例は、データストリーム分割点を探索するためのサーバを提供し、ここで規則がサーバにおいて予め設定され、ここで規則は、潜在的な分割点kについて、M個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
サーバは、ステップ(a)、
(a)規則に従って、現在の潜在的な分割点kiについて、点pizおよび点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定するステップを行うように構成された処理ユニットであって、iおよびzは整数であり、1≦z≦Mである、処理ユニットと、
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得するように構成される判断および処理ユニットであって、N*Uは
【００６９】
【数１７】
2017505927.tif 000019
【００７０】
より大きくない、判断および処理ユニットと、を含み、ここで決定ユニットが新しい潜在的な分割点についてステップ(a)を行い、
判断および処理ユニットは、現在の潜在的な分割点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を満たすかどうかを判定する。
【００７５】
第５の態様の第４の可能な実現形態を参照して、第５の可能な実現形態において、判断および処理ユニットは、具体的には、hash関数を使用することによって、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するように構成される。
【００７６】
第５の態様、または第１から第５の可能な実現形態のいずれか１つを参照して、第６の可能な実現形態において、判断および処理ユニットは、ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得するように構成され、ここで決定ユニットは新しい潜在的な分割点についてステップ(a)を行い、規則に従って、新しい潜在的な分割点について決定された点picに対応するウィンドウWic[pic-Ac, pic+Bc]の左の境界はウィンドウWiz[piz-Az, piz+Bz]の右の境界と一致し、または新しい潜在的な分割点について決定されたウィンドウWic[pic-Ac, pic+Bc]の左の境界はウィンドウWiz[piz-Az, piz+Bz]の範囲内にあり、ここで新しい潜在的な分割点について決定されたウィンドウWic[pic-Ac, pic+Bc]は、規則に従って新しい潜在的な分割点について決定されたM個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である。
【００７７】
第５の態様の第４の可能な実現形態を参照して、第７の可能な実現形態において、判断処理ユニットが、具体的には、ランダム関数を使用することによって、ウィンドウ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バイトに対応するビットは
【００７８】
【数１８】
2017505927.tif 000020
【００７９】
と表現されることが可能であり、ここで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は
【００８０】
【数１９】
2017505927.tif 000021
【００８１】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【００８２】
【数２０】
2017505927.tif 000022
【００８３】
と表現され、行列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を満たす。
【００８４】
第６の態様によれば、本発明の実施例は、データストリーム分割点を探索するためのサーバを提供し、規則がサーバにおいて予め設定され、ここで規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
サーバは、ステップ(a)、
(a)規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップを行うように構成された決定ユニットであって、iおよびzは整数であり、1≦z≦Mである、決定ユニットと、
ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行い、
(c)現在の潜在的な分割点kiのM個のウィンドウのうちの各ウィンドウWix[ki-Ax, ki+Bx]内のデータの少なくとも一部が予め設定された条件Czを満たすとき、データストリーム分割点として現在の潜在的な分割点kiを選択するように構成される判断および処理ユニットであって、N*Uは
【００８５】
【数２１】
2017505927.tif 000023
【００８６】
より大きくない、判断および処理ユニットと、
を含む。
【００８７】
第６の態様を参照して、 第１の可能な実現形態において、規則は、少なくとも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をさらに含む。
【００９０】
第６の態様、または第１から第３の可能な実現形態のいずれか１つを参照して、第４の可能な実現形態において、 判断および処理ユニットは、具体的には、
ランダム関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するように構成される。
【００９１】
第６の態様の第４の可能な実現形態を参照して、第５の可能な実現形態において、判断および処理ユニットは、具体的には、hash関数を使用することによって、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定するように構成される。
【００９２】
第６の態様、または第１から第５の可能な実現形態のいずれか１つを参照して、第６の可能な実現形態において、判断および処理ユニットは、ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得するように構成され、決定ユニットは新しい潜在的な分割点についてステップ(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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである。
【００９３】
第６の態様の第４の可能な実現形態を参照して、第７の可能な実現形態において、判断および処理ユニットが、ランダム関数を使用することによって、ウィンドウ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バイトに対応するビットは
【００９４】
【数２２】
2017505927.tif 000024
【００９５】
と表現されることが可能であり、ここで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は
【００９６】
【数２３】
2017505927.tif 000025
【００９７】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【００９８】
【数２４】
2017505927.tif 000026
【００９９】
と表現され、行列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を満たす。
【０１００】
第７の態様によれば、本発明の実施例は、コンピュータ読み取り可能な記憶媒体を提供し、ここでコンピュータ読み取り可能な記憶媒体は、実行可能な命令を記憶するように構成され、サーバは実行可能な命令を実行してデータストリーム分割点を探索し、規則がサーバにおいて予め設定され、ここで規則は、潜在的な分割点kについて、M個の点px、点pxに対応するウィンドウWx[px-Ax, px+Bx]、およびウィンドウWx[px-Ax, px+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、
サーバは実行可能な命令を実行して次のステップ、
(a)規則に従って、現在の潜在的な分割点kiについて、規則に従って、現在の潜在的な分割点kiについて、点pizおよび点pizに対応するウィンドウWiz[piz-Az, piz+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[piz-Az, piz+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って点pizからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【０１０１】
【数２５】
2017505927.tif 000027
【０１０２】
より大きくない、ステップと、
(c)現在の潜在的な分割点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個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である。
【０１０９】
第７の態様の第４の可能な実現形態を参照して、第７の可能な実現形態において、ランダム関数を使用することによって、ウィンドウ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バイトに対応するビットは
【０１１０】
【数２６】
2017505927.tif 000028
【０１１１】
と表現されることが可能であり、ここで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は
【０１１２】
【数２７】
2017505927.tif 000029
【０１１３】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【０１１４】
【数２８】
2017505927.tif 000030
【０１１５】
と表現され、行列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を満たす。
【０１１６】
第８の態様によれば、本発明の実施例は、コンピュータ読み取り可能な記憶媒体を提供し、ここでコンピュータ読み取り可能な記憶媒体は、実行可能な命令を記憶するように構成され、サーバは実行可能な命令を実行してデータストリーム分割点を探索し、規則がサーバにおいて予め設定され、ここで規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数であり、サーバは実行可能な命令を実行して次のステップ、
(a)規則に従って、現在の潜在的な分割点kiについて、対応するウィンドウWiz[ki-Az, ki+Bz]を決定するステップであって、iおよびzは整数であり、1≦z≦Mである、ステップと、
(b)ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかを判定し、
ウィンドウWiz[ki-Az, ki+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないとき、データストリーム分割点を探索する方向に沿って現在の潜在的な分割点kiからデータストリーム分割点を探索するためのN個の最小単位Uをスキップし、それによって新しい潜在的な分割点を取得し、ステップ(a)を行うステップであって、N*Uは
【０１１７】
【数２９】
2017505927.tif 000031
【０１１８】
より大きくない、ステップと、
(c)現在の潜在的な分割点kiのM個のウィンドウのうちの各ウィンドウWix[ki-Ax, ki+Bx]内のデータの少なくとも一部が予め設定された条件Czを満たすとき、データストリーム分割点として現在の潜在的な分割点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をさらに含む。
【０１２２】
第８の態様、または第８の態様の第１から第３の可能な実現形態のいずれか１つを参照して、第４の可能な実現形態において、サーバにより、ウィンドウ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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである。
【０１２５】
第８の態様の第４の可能な実現形態を参照して、第７の可能な実現形態において、ランダム関数を使用することによって、ウィンドウ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バイトに対応するビットは
【０１２６】
【数３０】
2017505927.tif 000032
【０１２７】
と表現されることが可能であり、ここで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は
【０１２８】
【数３１】
2017505927.tif 000033
【０１２９】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【０１３０】
【数３２】
2017505927.tif 000034
【０１３１】
と表現され、行列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を満たす。
【０１３２】
本発明の実施例において、M個のウィンドウのうちのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定することによってデータストリーム分割点が探索され、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、N*Uの長さがスキップされ、それによって次の潜在的な分割点を取得し、それによりデータストリーム分割点を探索する効率を向上させる。
【図面の簡単な説明】
【０１３３】
【図１】本発明の実施例による適用シナリオの概略図である。
【図２】データストリーム分割点の概略図である。
【図３】データストリーム分割点を探索する概略図である。
【図４】本発明の実施例による方法の概略図である。
【図５】データストリーム分割点を探索する実現形態の概略図である。
【図６】データストリーム分割点を探索する実現形態の概略図である。
【図７】データストリーム分割点を探索する実現形態の概略図である。
【図８】データストリーム分割点を探索する実現形態の概略図である。
【図９】データストリーム分割点を探索する実現形態の概略図である。
【図１０】データストリーム分割点を探索する実現形態の概略図である。
【図１１】データストリーム分割点を探索する実現形態の概略図である。
【図１２】データストリーム分割点を探索する実現形態の概略図である。
【図１３】データストリーム分割点を探索する実現形態の概略図である。
【図１４】データストリーム分割点を探索する実現形態の概略図である。
【図１５】データストリーム分割点を探索する実現形態の概略図である。
【図１６】ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する概略図である。
【図１７】ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する概略図である。
【図１８】重複排除サーバの構成図である。
【図１９】重複排除サーバの構成図である。
【図２０】本発明の実施例による方法の概略図である。
【図２１】データストリーム分割点を探索する実現形態の概略図である。
【図２２】データストリーム分割点を探索する実現形態の概略図である。
【図２３】データストリーム分割点を探索する実現形態の概略図である。
【図２４】データストリーム分割点を探索する実現形態の概略図である。
【図２５】データストリーム分割点を探索する実現形態の概略図である。
【図２６】データストリーム分割点を探索する実現形態の概略図である。
【図２７】データストリーム分割点を探索する実現形態の概略図である。
【図２８】データストリーム分割点を探索する実現形態の概略図である。
【図２９】データストリーム分割点を探索する実現形態の概略図である。
【図３０】データストリーム分割点を探索する実現形態の概略図である。
【図３１】データストリーム分割点を探索する実現形態の概略図である。
【図３２】ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する概略図である。
【図３３】ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する概略図である。
【発明を実施するための形態】
【０１３４】
記憶技術の継続中の進展とともに、生成されるデータの量はますます増大し、大量のデータが、記憶容量のための最高の要件を上げた。IT設備の購入コストは記憶容量とともに増加する。データ量と記憶容量とIT設備のより低い購入コストの間の要求の対立を軽減するために、重複データを除去する技術がデータ記憶の分野に導入される。
【０１３５】
本発明の実施例の使用シナリオは、データバックアップシナリオである。データバックアップは、バックアップサーバを使用することによって、様々な理由によるデータ損失を防止するために他の記憶媒体にデータのバックアップを作成するプロセスである。図１は、データバックアップシステムのアーキテクチャを表わす。データバックアップシステムは、クライアント（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は、バックアップデータのデータストリームについて重複データを除去する動作を行い、ここで動作は一般に次のステップ、
（１）データストリーム分割点を探索すること：特定のアルゴリズムに従ってデータストリーム内のデータストリーム分割点を探索すること、
（２）見出されたデータストリーム分割点に従って分割を実行してデータチャンクを取得すること、
（３）各データチャンクの特徴値を計算すること：データチャンクを識別するための特徴としての役目をする、データチャンクの特徴値を計算し、計算によって取得された特徴値を、データストリームに対応するファイルのデータチャンク特徴リストに加えること、ここでデータチャンクの特徴値を計算するためにSHA-1またはMD5アルゴリズムが一般に使用され、
（４）同じデータチャンクを検出すること：計算によって取得されたデータチャンクの特徴値を、データチャンク特徴リスト内に既に存在する特徴値と比較して、同一のデータチャンクが存在するかどうかを判定すること、および、
（５）重複データブロックを除去すること：同じデータチャンクを検出することによって、データチャンクのそれと同じ特徴値がデータチャンク特徴リスト内に存在することが見出されたならば、データチャンクの記憶をスキップすること、またはバックアップポリシーに従って決定される重複データチャンクの記憶量に従ってデータチャンクを記憶するかどうかを判定すること、
を含む。
【０１３７】
重複排除サーバ103により、バックアップデータのデータストリームについて重複データを除去する動作を行うステップから、重複データを除去する動作における重要なステップとしての役目をする、データストリーム分割点の探索は、重複データ除去の性能を直接に決定することを知ることができる。
【０１３８】
本発明の実施例において、重複排除サーバ103は、バックアップサーバ102によって送信されたバックアップファイルを受信し、ファイルについて重複データを除去する処理を行う。処理されるべきバックアップファイルは、通常、重複排除サーバ103においてデータストリームの形式で提示される。重複排除サーバ103がデータストリーム内の分割点を探索するとき、データストリーム分割点を探索するための最小単位が、通常、決定される必要がある。具体的には、図２に表わされたように、例えば、データストリーム分割点を探索するための、その順序番号が1および2である2個の連続した最小単位の間に潜在的な分割点k1が位置する。潜在的な分割点は、それがデータストリーム分割点としての役目をすることができるかどうかが判定される必要がある点を指す。点k1がデータストリーム分割点であるとき、図２に矢印で表わされたデータストリーム分割点を探索する方向に、次の潜在的な分割点k7、すなわち、データストリーム分割点を探索するための、その順序番号が7および8である2個の連続した最小単位の間に位置する点が探索される。潜在的な分割点k7がデータストリーム分割点であるとき、2個の隣接するデータストリーム分割点k1とk7の間のデータは１個のデータチャンクである。データストリーム分割点を探索するための最小単位は、具体的には、実際の要件に従って決定することが可能であり、ここで1バイト（Byte）が例として使用され、すなわち、データストリーム分割点を探索するための、その順序番号が1、2、7、および8である全ての最小単位は1バイトのサイズを有する。図２に表わされたデータストリーム分割点を探索する方向は、通常、ファイルのヘッダからファイルのトレーラーへの探索方向またはファイルのトレーラーからファイルのヘッダへの方向を表現し、この実施例においてファイルのヘッダからファイルのトレーラーへの探索方向が例として使用される。
【０１３９】
重複データを除去するシナリオにおいて、より小さいデータチャンクは、重複データを除去する、より高いレート、および、重複データチャンクを見出す、より容易なやり方を一般に示すが、より大量のメタデータがそれから生成され、さらに、データチャンクがある程度に小さくなった後、重複データを除去するレートはもはや増加しないが、メタデータの量は急速に増加する。従って、データチャンクのサイズは制御され得る。実際の適用において、データチャンクの最小値、例えば4KB（4,096バイト）が、通常、設定され、重複データを除去するレートを同時に考慮して、データチャンクの最大値も設定され、すなわち、データチャンクのサイズは最大値、例えば12KB（12288バイト）を超えることができない。具体的な実現形態が図３に表わされている。重複排除サーバ103は、矢印によって表わされた方向に沿ってデータストリーム分割点を探索する。kaは現在見出されたデータストリーム分割点であり、kaから、データストリーム分割点を探索する方向に次の潜在的な分割点が探索される。最小データチャンクの要件を満たすために、通常、データストリーム分割点から開始し、データストリーム分割点を探索する方向に沿って最小データチャンクのサイズがスキップされ、探索が最小データチャンクの終了位置から開始し、すなわち、最小データチャンクの終了位置は、次の潜在的な分割点kiとしての役目をする。本発明のこの実施例において、データストリーム分割点を探索する方向に沿って点kaから4KB、すなわち、4*1024=4096バイトの最小データチャンクがまずスキップされ得る。データストリーム分割点を探索する方向に沿って点kaから4096バイトがスキップされ、潜在的な分割点としての役目をするために4096番目のバイトの終了位置で点kiが取得される。例えば、データストリーム分割点を探索するための、その順序番号が4096および4097である2個の連続した最小単位の間にkiが位置する。例として依然として図３を使用して、kaは現在見出されたデータストリーム分割点であり、図３に表わされた方向に沿って次のデータストリーム分割点が探索される。データチャンクの最大値を超えた後に次のデータストリーム分割点が見出されないならば、データストリーム分割点を探索する方向に点kaから開始し、データチャンクの最大値に到達した点kzは次のデータストリーム分割点としての役目をし、強制的な分割が行われる。
【０１４０】
本発明の実施例は、重複排除サーバに基づいてデータストリーム分割点を探索するための方法を提供し、これは図４に表わされたように、下記を含む。
【０１４１】
規則が重複排除サーバ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バイトである。図３に表わされた実現形態において、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バイトがスキップされ、ここで
【０１４２】
【数３３】
2017505927.tif 000035
【０１４３】
であり、ここで
【０１４４】
【数３４】
2017505927.tif 000036
【０１４５】
は、M個の点pxのうちのいずれかの点と潜在的な分割点kの間の間隔を表現し、
【０１４６】
【数３５】
2017505927.tif 000037
【０１４７】
は、M個の点pxのうちのいずれかの点と潜在的な分割点kの間の間隔の絶対値と、当該いずれかの点に対応するAxの絶対値の和の最大値を表現し、
【０１４８】
【数３６】
2017505927.tif 000038
【０１４９】
は、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は
【０１５３】
【数３７】
2017505927.tif 000039
【０１５４】
より大きくなく、それによって新しい潜在的な分割点を取得し、ステップ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個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である。
【０１６１】
本発明のこの実施例において、M個のウィンドウのうちのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定することによってデータストリーム分割点が探索され、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、N*Uの長さがスキップされ、ここでN*Uは
【０１６２】
【数３８】
2017505927.tif 000040
【０１６３】
より大きくなく、それによって次の潜在的な分割点を取得し、それによりデータストリーム分割点を探索する効率を向上させる。
【０１６４】
重複データを除去するプロセスにおいて、偶数サイズのデータチャンクを保証するために、平均データチャンク（平均チャンクとも呼ばれる）のサイズが考慮される。すなわち、最小データチャンクのサイズと最大データチャンクのサイズについての制限が満たされる間、偶数サイズの取得されたデータチャンクを保証するために平均データチャンクのサイズが決定される。データストリーム分割点を見出す確率（P(n)と表現される）は２つの要因、すなわち、点pxの数量Mおよび点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率に依存し、ここで前者はスキップする長さに影響し、後者はスキップする確率に影響し、２つはともに平均チャンクのサイズに影響する。一般に、平均チャンクのサイズが固定であるとき、点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)は、２つの要因、すなわち、点pxの数量Mおよび点pxに対応するウィンドウWx[px-Ax, px+Bx]内のデータの少なくとも一部が予め設定された条件Cxを満たす確率に依存し、P(n)は、データストリームの開始位置／前のデータストリーム分割点からの探索において、データストリーム分割点を探索するためのn個の最小単位の後にデータストリーム分割点が見出されない確率を表現する。２つの要因に依存するP(n)を計算するプロセスは、実際、nステップのFibonacci数列であり、これは下記で詳細に記載される。P(n)が取得された後、1-P(n)は、データストリーム分割点の分布関数であり、(1-P(n))-(1-P(n-1))=P(n-1)-P(n)は、データストリーム分割点がn番目の点で見出される確率、すなわち、データストリーム分割点の密度関数である。積分
【０１６５】
【数３９】
2017505927.tif 000041
【０１６６】
はデータストリーム分割点の密度関数に従って行われることが可能であり、それによってデータストリーム分割点の期待される長さ、すなわち平均チャンクのサイズを取得し、ここで4*1024（バイト）は最小データチャンクの長さを表現し、12*1024（バイト）は最大データチャンクの長さを表現する。
【０１６７】
図３に表わされたデータストリーム分割点の探索に基づいて、図５に表わされた実現形態において、規則が重複排除サーバ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はデータストリーム分割点であり、図５に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から11までの連続した自然数を示す。図５に表わされた実現形態において、潜在的な分割点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個���ウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が対応する予め設定された条件を満たさない、例えば、図６に表わされたように、Wi5[pi5-169, pi5]内のデータの少なくとも一部が対応する予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って点pi5からNバイトがスキップされ、ここでNバイトは
【０１６８】
【数４０】
2017505927.tif 000042
【０１６９】
より大きくない。図６に表わされた実現形態において、スキップされるNバイトは179バイトより大きくなく、この実施例において、N=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の間の間隔は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全ては、データストリーム分割点を探索する方向と反対の方向にある。図６に表わされた実現形態において、潜在的な分割点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個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である。従って、そのような制限内で、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿ってpi5からスキップする間隔は
【０１７０】
【数４１】
2017505927.tif 000043
【０１７１】
より大きくなく、ここでM=11であり、11*Uは
【０１７２】
【数４２】
2017505927.tif 000044
【０１７３】
より大きくなく、従って、データストリーム分割点を探索する方向に沿って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において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
【０１７４】
図５に表わされた実現形態において、重複排除サーバ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)は、２つの要因、すなわち、点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のケースがあり得る。
【０１７７】
【表１】
2017505927.tif 000045
【０１７８】
ケース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)は、２つの要因、すなわち、点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である平均チャンクの長さの効果を達成することが可能である。
【０１８４】
図３に表わされたデータストリーム分割点の探索に基づいて、図７に表わされた実現形態において、規則が重複排除サーバ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はデータストリーム分割点であり、図７に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から11までの連続した自然数を示す。図７に表わされた実現形態において、予め設定された規則に従って、潜在的な分割点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個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する��め設定された条件を満たさないとき、図８に表わされたように、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たさず、データストリーム分割点を探索する方向に沿って点pi3から11バイトがスキップされることは、記載のための例として使用される。図８に表わされたように、W3が予め設定された条件を満たさないと判定されたとき、開始点としての役目をするp3から、データストリーム分割点を探索する方向に沿ってNバイトがスキップされ、ここでNバイトは
【０１８５】
【数４３】
2017505927.tif 000046
【０１８６】
より大きくない。図６に表わされた実現形態において、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において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。もちろん、本方法の実現は、最大データチャンクの長さおよびデータストリームを形成するファイルのサイズによって制限され、これは再度ここに記載されない。
【０１８７】
図３に表わされたデータストリーム分割点の探索に基づいて、図９に表わされた実現形態において、規則が重複排除サーバ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はデータストリーム分割点であり、図９に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定され、この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から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の間の間隔は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個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件を満たさない、例えば、図１０に表されたように、Wi7[pi7-169, pi7]内のデータの少なくとも一部が、対応する予め設定された条件を満たさないとき、データストリーム分割点を探索する方向に沿って点pi7からNバイトがスキップされ、ここでNバイトは
【０１８８】
【数４４】
2017505927.tif 000047
【０１８９】
より大きくない。図１０に表わされた実現形態において、スキップされるNバイトは、具体的には、179バイトより大きくなく、この実施例において、具体的には、N=8であり、それによって新しい潜在的な分割点を取得する。潜在的な分割点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の間の間隔は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において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
【０１９０】
図３に表わされたデータストリーム分割点の探索に基づいて、図１１に表わされた実現形態において、規則が重複排除サーバ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はデータストリーム分割点であり、図１１に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から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のうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応する予め設定された条件、例えば、図１２に表わされたWi4[pi4-169, pi4]を満たさないとき、データストリーム分割点を探索する方向に沿って点pi4からNバイトがスキップされ、ここでNバイトは
【０１９１】
【数４５】
2017505927.tif 000048
【０１９２】
より大きくない。図１２に表わされた実現形態において、スキップされるNバイトは、具体的には、179より大きくなく、この実施例において、具体的には、N=9であり、それによって新しい潜在的な分割点を取得する。潜在的な分割点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[pj8-182, pj8]である。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内のデータの少なくとも一部が予め設定された条件C9を
満たし、ウィンドウWj10内のデータの少なくとも一部が予め設定された条件C10を満たし、かつウィンドウWj11内のデータの少なくとも一部が予め設定された条件C11を満たすと判定されたとき、現在の潜在的な分割点kjがデータストリーム分割点であり、kjとkaの間のデータは1個のデータチャンクを形成する。一方、次の潜在的な分割点を取得するために、kaのそれと同じ形態で4 KBの最小チャンクサイズがスキップされ、重複排除サーバ103において予め設定された規則に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。潜在的な分割点kjがデータストリーム分割点でないと判定されたとき、kiのそれと同じ形態で次の潜在的な分割点が取得され、重複排除サーバ103において予め設定された規則および上記の方法に従って、次の潜在的な分割点がデータストリーム分割点であるかどうかが判定される。設定された最大データチャンクを超えた後にデータストリーム分割点が見出されないとき、最大データチャンクの終了位置は強制的な分割点としての役目をする。
【０１９３】
図３に表わされたデータストリーム分割点の探索に基づいて、図１３に表わされた実現形態において、重複排除サーバ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はデータストリーム分割点であり、図１３に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は、次の潜在的な分割点kiとしての役目をし、潜在的な分割点kiについて点pixが決定される。この実施例において、重複排除サーバ103において予め設定された規則に従って、xは個々に1から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の間の間隔は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個のウィンドウのうちのいずれかのウィンドウ内のデータの少なくとも一部が、対応す��予め設定された条件を満たさない、例えば、図１４に表わされたように、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たさないとき、次の潜在的な分割点が選択される。潜在的な分割点kiからの区別のために、次の潜在的な分割点は、ここでkjと表現され、ここでkjはkiの右に位置し、kjとkiの間の間隔は1バイトである。図１４に表わされたように、重複排除サーバ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のうちのいずれかのウィンドウ内
のデータの少なくとも一部が予め設定された条件を満たさないと判定されたとき、例えば、図１５に表わされたように、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たさないとき、点pi4はデータストリーム分割点を探索する方向に関して点pj3の左に位置し、データストリーム分割点を探索する方向に沿って、点pi4から21バイトがスキップされ、それによって次の潜在的な分割点を取得する。潜在的な分割点kiおよびkjからの区別のために、次の潜在的な分割点は、klと表現される。図１３に表わされた実現形態において、重複排除サーバ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バイトである。図１３に表わされた実施例において、重複排除サーバ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を満たすかどうかが判定され、図５に表わされた実現形態が例として使用される。重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kiについて、点pi1および点pi1に対応するウィンドウWi1[pi1-169, pi1]が決定され、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図１６に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１６において、
【０１９５】
【数４６】
2017505927.tif 000049
【０１９６】
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはam,1、...、およびam,8と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
【０１９７】
【数４７】
2017505927.tif 000050
【０１９８】
と表現されることが可能であり、ここで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の間の変換関係に従って取得され、
【０１９９】
【数４８】
2017505927.tif 000051
【０２００】
と表現されることが可能である。大量の乱数が選択されて行列を形成し、一旦形成されると、乱数によって形成された行列は不変のままである。例えば、特定の分布（ここで例として正規分布が使用される）に従う乱数から255*8個の乱数が選択されて行列R
【０２０１】
【数４９】
2017505927.tif 000052
【０２０２】
を形成し、ここで行列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は二項分布
【０２０３】
【数５０】
2017505927.tif 000053
【０２０４】
を満たす。カウント結果に従って、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が偶数であることを指す。図５に表わされた実現形態において、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を満たすかどうかを判定する上記の記載を参照されたい。従って、図１６に表わされたように、
【０２０５】
【数５１】
2017505927.tif 000054
【０２０６】
は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはbm,1、...,およびbm,8と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
【０２０７】
【数５２】
2017505927.tif 000055
【０２０８】
と表現されることが可能であり、ここで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の間の変換関係に従って取得され、
【０２０９】
【数５３】
2017505927.tif 000056
【０２１０】
と表現されることが可能である。Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態と同じであり、従って、行列R
【０２１１】
【数５４】
2017505927.tif 000057
【０２１２】
が使用され、行列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は二項分布
【０２１３】
【数５５】
2017505927.tif 000058
【０２１４】
を満たす。カウント結果に従って、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が偶数であることを指す。図３に表わされた実現形態において、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たす。
【０２１５】
従って、図１６に表わされたように、
【０２１６】
【数５６】
2017505927.tif 000059
【０２１７】
は、ウィンドウWi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。そして、ウィンドウWi1[pi1-169, pi1]およびWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定するための方法は、Wi3[pi3-169, pi3]内の少なくともデータが予め設定された条件C3を満たすかどうかを判定するために使用される。図５に表わされた実現形態において、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件を満たす。図１６に表わされたように、
【０２１８】
【数５７】
2017505927.tif 000060
【０２１９】
は、ウィンドウ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を満たすかどうかを判定するために使用される。図５に表わされた実現形態において、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たす。図１６に表わされたように、
【０２２０】
【数５８】
2017505927.tif 000061
【０２２１】
は、ウィンドウ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を満たすかどうかを判定するために使用される。図５に表わされた実現形態において、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさない。
【０２２２】
Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において次の潜在的な分割点kjが取得される。図６に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、5バイトは、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために選択される。図１７において、
【０２２３】
【数５９】
2017505927.tif 000062
【０２２４】
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはam,1'、...、およびam,8'と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
【０２２５】
【数６０】
2017505927.tif 000063
【０２２６】
と表現されることが可能であり、ここで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'の間の変換関係に従って取得され、
【０２２７】
【数６１】
2017505927.tif 000064
【０２２８】
と表現されることが可能である。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定する形態と同じである。従って、行列R
【０２２９】
【数６２】
2017505927.tif 000065
【０２３０】
が使用され、行列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は二項分布
【０２３１】
【数６３】
2017505927.tif 000066
【０２３２】
を満たす。カウント結果に従って、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を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、
【０２３４】
【数６４】
2017505927.tif 000067
【０２３５】
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。データの選択された5バイトは繰り返し51回使用されて合計で255バイトを取得し、それによってランダム性を増加させる。その各バイトは8ビットで形成され、これらはbm,1'、...、およびbm,8'と示され、255バイト内のm番目のバイトの1番目のビットから8番目のビットを表現し、従って、255バイトに対応するビットは、
【０２３６】
【数６５】
2017505927.tif 000068
【０２３７】
と表現されることが可能であり、ここで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'の間の変換関係に従って取得され、
【０２３８】
【数６６】
2017505927.tif 000069
【０２３９】
と表現されることが可能である。ウィンドウW2[p2-169, p2]およびW2[q2-169, q2]内のデータの少なくとも一部が予め設定された条件を満たすかどうかの形態は同じであり、従って、行列R
【０２４０】
【数６７】
2017505927.tif 000070
【０２４１】
が依然として使用される。行列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は二項分布
【０２４２】
【数６８】
2017505927.tif 000071
【０２４３】
を満たす。カウント結果に従って、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を満たすかどうかが判定され、これらは再度ここに記載されない。
【０２４４】
例として図５に表わされた実現形態を依然として使用して、ウィンドウ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を満たすかどうかが判定される。図１６に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１６において、
【０２４５】
【数６９】
2017505927.tif 000072
【０２４６】
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
【０２４７】
【数７０】
2017505927.tif 000073
【０２４８】
の間に42バイトがある。一実現形態において、選択された5バイトを計算するためにhash関数が使用され、hash関数を使用することによって計算によって取得された値は、一定の一様分布をなす。hash関数を使用することによって計算によって取得された値が偶数であるならば、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定され、すなわち、C1は、hash関数を使用することによって、上記の形態に従って、計算によって取得された値が偶数であることを表現する。従って、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件を満たすかどうかの確率は1/2である。図５に表わされた実現形態において、hash関数を使用することによって、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうか、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうか、Wi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうか、かつWi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たすかどうかが判定される。具体的な実現について、図５に表わされた実現形態において、hash関数を使用することによって、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態の記載への参照が行われることが可能であり、これは再度ここに記載されない。
【０２４９】
Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさないとき、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図６に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１７において、
【０２５０】
【数７１】
2017505927.tif 000074
【０２５１】
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
【０２５２】
【数７２】
2017505927.tif 000075
【０２５３】
の間に42バイトがある。ウィンドウWj1[pj1-169, pj1]から選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たす。図１７において、Wi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態は、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、
【０２５４】
【数７３】
2017505927.tif 000076
【０２５５】
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
【０２５６】
【数７４】
2017505927.tif 000077
【０２５７】
の間に42バイトがある。選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たす。図１７において、Wi3[pi3-169, pi3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態は、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、
【０２５８】
【数７５】
2017505927.tif 000078
【０２５９】
は、ウィンドウWj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
【０２６０】
【数７６】
2017505927.tif 000079
【０２６１】
の間に42バイトがある。選択された5バイトはhash関数を使用することによって計算される。取得された値が偶数であるならば、Wj3[pj3-169, pj3]内のデータの少なくとも一部が予め設定された条件C3を満たす。図１７において、Wj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかを判定する形態およびウィンドウWi4[pi4-169, pi4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかを判定する形態。従って、図１７に表わされたように、
【０２６２】
【数７７】
2017505927.tif 000080
【０２６３】
は、ウィンドウWj4[pj4-169, pj4]内のデータの少なくとも一部が予め設定された条件C4を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイト
【０２６４】
【数７８】
2017505927.tif 000081
【０２６５】
の間に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を満たすかどうかが判定され、これらは再度ここに記載されない。
【０２６６】
例として図５に表わされた実現形態を使用して、ウィンドウ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を満たすかどうかが判定される。図１６に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１６において、その順序番号が169、127、85、43、および1であるバイト
【０２６７】
【数７９】
2017505927.tif 000082
【０２６８】
の各々は、1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
【０２６９】
【数８０】
2017505927.tif 000083
【０２７０】
はそれぞれa1、a2、a3、a4、およびa5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
【０２７１】
【数８１】
2017505927.tif 000084
【０２７２】
は値としての役目をし、a1、a2、a3、a4、およびa5のうちのいずれのarも0≦ar≦255を満たす。a1、a2、a3、a4、およびa5は1*5行列を形成する。二項分布に従う乱数から256*5個の乱数が選択されて
【０２７３】
【数８２】
2017505927.tif 000085
【０２７４】
と表現される行列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が偶数であることを表現する。図５に表わされた実施例において、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす。図１６に表わされたように、
【０２７６】
【数８３】
2017505927.tif 000086
【０２７７】
は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図１６において、バイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
【０２７８】
【数８４】
2017505927.tif 000087
【０２７９】
は、それぞれb1、b2、b3、b4、...、およびb5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
【０２８０】
【数８５】
2017505927.tif 000088
【０２８１】
は値としての役目をし、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である。図５に表わされた実施例において、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を満たすかどうかが判定される。図５に表わされた実現形態において、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図６に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図１７において、その順序番号が169、127、85、43、および1であるバイト
【０２８２】
【数８６】
2017505927.tif 000089
【０２８３】
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
【０２８４】
【数８７】
2017505927.tif 000090
【０２８５】
は、それぞれa1'、a2'、a3'、a4'、...、およびa5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
【０２８６】
【数８８】
2017505927.tif 000091
【０２８７】
は値としての役目をし、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が依然として使用され、
【０２８８】
【数８９】
2017505927.tif 000092
【０２８９】
と表現される。
【０２９０】
行列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を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、
【０２９２】
【数９０】
2017505927.tif 000093
【０２９３】
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
【０２９４】
【数９１】
2017505927.tif 000094
【０２９５】
は、それぞれb1'、b2'、b3'、b4'、...、およびb5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
【０２９６】
【数９２】
2017505927.tif 000095
【０２９７】
は値としての役目をし、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を満たすかどうかが判定され、これらは再度ここに記載されない。
【０２９９】
例として図５に表わされた実現形態を使用して、ウィンドウ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を満たすかどうかが判定される。図１６に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１６において、その順序番号が169、127、85、43、および1であるバイト
【０３００】
【数９３】
2017505927.tif 000096
【０３０１】
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
【０３０２】
【数９４】
2017505927.tif 000097
【０３０３】
は、それぞれa1、a2、a3、a4、...、およびa5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
【０３０４】
【数９５】
2017505927.tif 000098
【０３０５】
は値としての役目をし、a1、a2、a3、a4、...、およびa5のうちのいずれのasも0≦as≦255を満たす。a1、a2、a3、a4、...、およびa5は1*5行列を形成する。二項分布に従う乱数から256*5個の乱数が選択されて
【０３０６】
【数９６】
2017505927.tif 000099
【０３０７】
と表現される行列Rを形成する。二項分布に従う乱数から256*5個の乱数が選択されて
【０３０８】
【数９７】
2017505927.tif 000100
【０３０９】
と表現される行列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である。図５に表わされた実施例において、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす。図５に表わされた実現形態において、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を満たすかどうかを判定する上記の記載を参照されたい。従って、図１６に表わされたように、
【０３１１】
【数９８】
2017505927.tif 000101
【０３１２】
は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図１６において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
【０３１３】
【数９９】
2017505927.tif 000102
【０３１４】
は、それぞれb1、b2、b3、b4、...、およびb5と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
【０３１５】
【数１００】
2017505927.tif 000103
【０３１６】
は値としての役目をし、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である。図５に表わされた実施例において、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を満たすかどうかが判定される。図５に表わされた実現形態において、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図６に表わされたように、重複排除サーバ103において予��設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定される。図１７において、その順序番号が169、127、85、43、および1であるバイト
【０３１７】
【数１０１】
2017505927.tif 000104
【０３１８】
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
【０３１９】
【数１０２】
2017505927.tif 000105
【０３２０】
は、それぞれa1'、a2'、a3'、a4'、...、およびa5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
【０３２１】
【数１０３】
2017505927.tif 000106
【０３２２】
は値としての役目をし、a1'、a2'、a3'、a4'、...、およびa5'のうちのいずれのas'も0≦as'≦255を満たす。a1'、a2'、a3'、a4'、...、およびa5'は1*5行列を形成する。ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかが判定されるときに使用されたのと同じ行列RおよびGが使用され、それぞれ
【０３２３】
【数１０４】
2017505927.tif 000107
【０３２４】
および
【０３２５】
【数１０５】
2017505927.tif 000108
【０３２６】
と表現される。
【０３２７】
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を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、
【０３２９】
【数１０６】
2017505927.tif 000109
【０３３０】
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。図１７において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
【０３３１】
【数１０７】
2017505927.tif 000110
【０３３２】
は、それぞれb1'、b2'、b3'、b4'、...、およびb5'と表現される10進数の値に変換される。1バイトは8ビットで形成されるので、各バイト
【０３３３】
【数１０８】
2017505927.tif 000111
【０３３４】
は値としての役目をし、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を満たすかどうかが判定され、これらは再度ここに記載されない。
【０３３６】
例として図５に表わされた実現形態を使用して、ウィンドウ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を満たすかどうかが判定される。図１６に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１６において、その順序番号が169、127、85、43、および1であるバイト
【０３３７】
【数１０９】
2017505927.tif 000112
【０３３８】
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
【０３３９】
【数１１０】
2017505927.tif 000113
【０３４０】
は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である。図５に表わされた実施例において、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす。図１６に表わされたように、
【０３４１】
【数１１１】
2017505927.tif 000114
【０３４２】
は、ウィンドウWi2[pi2-169, pi2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに個々に選択された1バイトを表現する。図１６において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
【０３４３】
【数１１２】
2017505927.tif 000115
【０３４４】
は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である。図５に表わされた実施例において、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を満たすかどうかが判定される。図５に表わされた実現形態において、Wi5[pi5-169, pi5]内のデータの少なくとも一部が予め設定された条件C5を満たさず、データストリーム分割点を探索する方向に沿って点pi5から11バイトがスキップされ、11番目のバイトの終了位置において現在の潜在的な分割点kjが取得される。図６に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１７において、その順序番号が169、127、85、43、お��び1であるバイト
【０３４５】
【数１１３】
2017505927.tif 000116
【０３４６】
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
【０３４７】
【数１１４】
2017505927.tif 000117
【０３４８】
は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を満たすかどうかを判定する形態と同じである。従って、図１７に表わされたように、
【０３５０】
【数１１５】
2017505927.tif 000118
【０３５１】
は、ウィンドウWj2[pj2-169, pj2]内のデータの少なくとも一部が予め設定された条件C2を満たすかどうかが判定されるときに選択された1バイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。図１７において、選択されたバイトは個々に順序番号170、128、86、44、および2と表現され、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が170、128、86、44、および2であるバイト
【０３５２】
【数１１６】
2017505927.tif 000119
【０３５３】
は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を満たすかどうかが判定され、これらは再度ここに記載されない。
【０３５５】
例として図５に表わされた実現形態を依然として使用して、ウィンドウ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を満たすかどうかが判定される。図１６に表わされたように、Wi1はウィンドウWi1[pi1-169, pi1]を表現し、Wi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１６において、その順序番号が169、127、85、43、および1であるバイト
【０３５６】
【数１１７】
2017505927.tif 000120
【０３５７】
の各々は1個の選択されたバイトを表現し、2個の隣接する選択されたバイトの間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
【０３５８】
【数１１８】
2017505927.tif 000121
【０３５９】
の各々は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であるので、[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たす確率は1/2である。図５に表わされた実現形態において、同じ規則を使用することによって、個々に、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が取得される。図６に表わされたように、重複排除サーバ103において予め設定された規則に従って、潜在的な分割点kjについて、点pj1および点pj1に対応するウィンドウWj1[pj1-169, pj1]が決定される。ウィンドウWj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態は、ウィンドウWi1[pi1-169, pi1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定する形態と同じである。従って、0から(2^40-1)の中の各10進数と指定された値の間の同じ対応Rが使用される。図１７に表わされたように、Wj1はウィンドウWj1[pj1-169, pj1]を表現し、Wj1[pj1-169, pj1]内のデータの少なくとも一部が予め設定された条件C1を満たすかどうかを判定するために5バイトが選択される。図１７において、
【０３６１】
【数１１９】
2017505927.tif 000122
【０３６２】
は1個の選択されたバイトを表現し、2個の隣接する選択されたバイト
【０３６３】
【数１２０】
2017505927.tif 000123
【０３６４】
の間に42バイトがある。その順序番号が169、127、85、43、および1であるバイト
【０３６５】
【数１２１】
2017505927.tif 000124
【０３６６】
の各々は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を満たすかどうかが判定され、これらは再度ここに記載されない。
【０３６７】
図１に表わされた本発明の実施例における重複排除サーバ103は、本発明の実施例に記載された技術的解決策を実現することが可能である装置を指し、図１８に表わされたように、通常、中央処理ユニット、主要メモリ、および入力／出力インタフェースを含む。中央処理ユニット、主要メモリ、および入力／出力インタフェースは、互いに通信する。主メモリは実行可能な命令を記憶し、中央処理ユニットは、主要メモリに記憶された実行可能な命令を実行し、それによって、特定の機能、例えば、本発明の実施例における図４から図１７に記載されたデータストリーム分割点を探索することを遂行する。従って、図１９に表わされたように、図４から図１７に表わされた本発明の実施例によれば、重複排除サーバ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は
【０３６８】
【数１２２】
2017505927.tif 000125
【０３６９】
より大きくなく、ここで決定ユニットは新しい潜在的な分割点についてステップ(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バイトに対応するビットは
【０３７３】
【数１２３】
2017505927.tif 000126
【０３７４】
と表現されることが可能であり、ここで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は
【０３７５】
【数１２４】
2017505927.tif 000127
【０３７６】
と表現され、正規分布に従う乱数からF*H*8個の乱数が選択されて行列Rを形成し、行列Rは
【０３７７】
【数１２５】
2017505927.tif 000128
【０３７８】
と表現され、行列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]の範囲内にあり、ここで新しい潜在的な分割点について決定されたウィンドウWic[pic-Ac, pic+Bc]は、規則に従って新しい潜在的な分割点について決定されたM個の点の、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有する点である。
【０３８０】
図４から図１７に表わされた本発明の実施例におけるサーバに基づいてデータストリーム分割点を探索するための方法によれば、潜在的な分割点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を満たすことが判定される。この実施例における他のウィンドウは上記と同じ形態で判定され、これは再度記載されない。
【０３８１】
さらに、図４から図１７に表わされた本発明の実施例によれば、実際の適用において、規則が重複排除サーバ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も全て同じでなくてもよい。図５に表わされた実現形態において、ウィンドウ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を満たすかどうかを判定する上記の記載を参照されたい。しかし、図１１に表わされた実現形態において、ウィンドウ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を満たすかどうかを判定する形態と同じであり、これらは再度ここに記載されない。一方、図４から図１７に表わされた本発明の実施例によれば、M=11が例として使用されたが、Mの値は実際の要件に従って11に限定されず、この技術分野の当業者は、本発明の実施例における記載に従って、Mの値を決定する。
【０３８２】
図４から図１７に表わされた本発明の実施例によれば、規則が重複排除サーバ103において予め設定され、ka、ki、kj、kl、およびkmは、データストリーム分割点を探索する方向に沿って分割点の探索において取得された潜在的な分割点であり、ka、ki、kj、kl、およびkm全ては規則に従う。本発明のこの実施例におけるウィンドウWx[px-Ax, px+Bx]は特定の範囲を表現し、データが予め設定された条件Cxを満たすかどうかを判定するために、データが特定の範囲内で選択される。具体的には、データが予め設定された条件Cxを満たすかどうかを判定するために、特定の範囲内で、データの一部が選択されることが可能であり、または全てのデータが選択されることが可能である。本発明のこの実施例において具体的に使用されるウィンドウの概念について、ウィンドウWx[px-Ax, px+Bx]への参照が行われることが可能であり、これは再度ここに記載されない。
【０３８３】
図４から図１７に表わされた本発明の実施例によれば、ウィンドウ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に関してデータストリーム分割点を探索する方向にある境界を表現する。具体的には、本発明の実施例において、図３から図１５に表わされたデータストリーム分割点を探索する方向は左から右であり、従って、(px-Ax)は、ウィンドウWx[px-Ax, px+Bx]の、点pxに関してデータストリーム分割点を探索する方向と反対の方向にある境界（すなわち、左の境界）を表現し、(px+Bx)は、ウィンドウWx[px-Ax, px+Bx]の、点pxに関してデータストリーム分割点を探索する方向にある境界（すなわち、右の境界）を表現する。図３から図１５に表わされたデータストリーム分割点を探索する方向が右から左であるならば、(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個の点を使用することによって決定され得る。
【０３８６】
本発明の実施例は、重複排除サーバに基づいてデータストリーム分割点を探索するための方法を提供し、これは、図２０に表わされたように、下記を含む。
【０３８７】
規則が重複排除サーバ103において予め設定され、ここで規則は、潜在的な分割点kについて、M個のウィンドウWx[k-Ax, k+Bx]およびウィンドウWx[k-Ax, k+Bx]に対応する予め設定された条件Cxを決定することであり、ここでxは1からMまでの連続した自然数を示し、M≧2であり、AxおよびBxは整数である。図１３に表わされた実現形態において、Mの値について、一実現形態において、M*Uの値は、2個の隣接するデータストリーム分割点の間の予め設定された最大の間隔、すなわち、データチャンクの予め設定された最大の長さより大きくない。ウィンドウWz[k-Az, k+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たすかどうかが判定され、ここでzは整数であり、1≦z≦Mであり、(k-Az)および(k+Bz)は個々にウィンドウWzの２つの境界を表現する。いずれか1個のウィンドウWz[k-Az, k+Bz]内のデータの少なくとも一部が予め設定された条件Czを満たさないと判定されたとき、データストリーム分割点を探索する方向に沿って潜在的な分割点kからNバイトがスキップされ、ここで
【０３８８】
【数１２６】
2017505927.tif 000129
【０３８９】
である。
【０３９０】
【数１２７】
2017505927.tif 000130
【０３９１】
はWz[k-Az, k+Bz]内のBzの絶対値を表現し、
【０３９２】
【数１２８】
2017505927.tif 000131
【０３９３】
は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は
【０３９７】
【数１２９】
2017505927.tif 000132
【０３９８】
より大きくなく、それによって新しい潜在的な分割点を取得し、ステップ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個のウィンドウの、データストリーム探索方向に従って取得されたシーケンス内で１番目の順位を有するウィンドウである。
【０４０２】
本発明のこの実施例において、M個のウィンドウのうちのウィンドウ内のデータの少なくとも一部が予め設定された条件を満たすかどうかを判定することによって、データストリーム分割点が探索され、ウィンドウ内のデータの少なくとも一部が予め設定された条件を満たさないとき、N*Uの長さがスキップされ、ここでN*Uは
【０４０３】
【数１３０】
2017505927.tif 000133
【０４０４】
より大きくなく、それによって次の潜在的な分割点を取得し、それによりデータストリーム分割点を探索する効率を向上させる。
【０４０５】
重複データを除去するプロセスにおいて、偶数サイズのデータチャンクを保証するために、平均データチャンク（平均チャンクとも呼ばれる）のサイズが考慮される。すなわち、最小データチャンクのサイズと最大データチャンクのサイズにおける制限が満たされる一方、偶数サイズの取得されたデータチャンクを保証するために平均データチャンクのサイズが決定される。データストリーム分割点を見出す確率（P(n)と表現される）は２つの要因、すなわち、ウィンドウWx[k-Ax, k+Bx]の数量MおよびウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率に依存し、ここで前者はスキップする長さに影響し、後者はスキップする確率に影響し、２つはともに平均チャンクのサイズに影響する。一般に、平均チャンクのサイズが固定であるとき、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)は、２つの要因、すなわち、ウィンドウWx[k-Ax, k+Bx]の数量MおよびウィンドウWx[k-Ax, k+Bx]内のデータの少なくとも一部が予め設定された条件を満たす確率に依存し、P(n)は、データストリームの開始位置または前のデータストリーム分割点からの探索において、データストリーム分割点を探索するためのn個の最小単位の後にデータストリーム分割点が見出されない確率を表現する。２つの要因に依存するP(n)を計算するプロセスは、実際、nステップのFibonacci数列であり、これは下記で詳細に記載される。P(n)が取得された後、1-P(n)は、データストリーム分割点の分布関数であり、(1-P(n))-(1-P(n-1))=P(n-1)-P(n)は、データストリーム分割点を探索するためのn個の最小単位の間隔においてデータストリーム分割点が見出される確率、すなわち、データストリーム分割点の密度関数である。積分
【０４０６】
【数１３１】
2017505927.tif 000134
【０４０７】
はデータストリーム分割点の密度関数に従って行われることが可能であり、それによってデータストリーム分割点の期待される長さ、すなわち平均チャンクのサイズを取得し、ここで4*1024（バイト）は最小データチャンクの長さを表現し、12*1024（バイト）は最大データチャンクの長さを表現する。
【０４０８】
図３に表わされたデータストリーム分割点の探索に基づいて、図２１に表わされた実現形態において、規則が重複排除サーバ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はデータストリーム分割点であり、図２１に表わされたデータストリーム分割点を探索する方向は左から右である。データストリーム分割点kaから4 KBの最小データチャンクがスキップされた後、4 KBの最小データチャンクの終了位置は次の潜在的な分割点kiとしての役目をする。重複排除サーバ103について予め設定された規則に従って、潜在的な分割点kiについてウィンドウWix[ki-Ax, ki+Bx]が決定され、この実施例において、xは個々に1から11までの連続した自然数を示す。図２１に表わされた実現形態において、潜在的な分割点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を満たし、ウィンドウW