JP2008513891A6 - データを検索し記憶するシステム及び方法 - Google Patents

データを検索し記憶するシステム及び方法 Download PDF

Info

Publication number
JP2008513891A6
JP2008513891A6 JP2007532557A JP2007532557A JP2008513891A6 JP 2008513891 A6 JP2008513891 A6 JP 2008513891A6 JP 2007532557 A JP2007532557 A JP 2007532557A JP 2007532557 A JP2007532557 A JP 2007532557A JP 2008513891 A6 JP2008513891 A6 JP 2008513891A6
Authority
JP
Japan
Prior art keywords
data
repository
chunk
identifying
chunks
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007532557A
Other languages
English (en)
Other versions
JP2008513891A (ja
JP4939421B2 (ja
Inventor
マイケル ヒルッシュ,
ハイム ビットナー,
リオール アロノビッチ,
ロン アッシャー,
アイタン バックマット,
シュムエル, ティー. クライン,
Original Assignee
ディリジェント テクノロジーズ コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/941,632 external-priority patent/US7523098B2/en
Priority claimed from US11/194,086 external-priority patent/US8725705B2/en
Application filed by ディリジェント テクノロジーズ コーポレイション filed Critical ディリジェント テクノロジーズ コーポレイション
Publication of JP2008513891A publication Critical patent/JP2008513891A/ja
Publication of JP2008513891A6 publication Critical patent/JP2008513891A6/ja
Application granted granted Critical
Publication of JP4939421B2 publication Critical patent/JP4939421B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

入力データに類似するデータ位置に関するリポジトリの検索を可能にするシステム及び方法であって、リポジトリサイズとは無関係で入力データサイズとは線形の時間内での規定類似性測度とリポジトリサイズの小部分に比例する空間とを用いる。かく配置された類似データセグメントをさらに分析し、リポジトリ内の共通データ部分の順序や位置に関係なく、それらの共通(同一)データ部分を特定する。遠隔演算は、遠隔差分処理演算を実行することで著しく低減されたシステム帯域を用い達成される。

Description

本発明は、データを検索して既格納データを識別し、既格納データに基づき新たなデータを効率的に格納するシステムならびに方法に関する。これらのシステム及び方法は、一例としてバックアップ及び復元システム内に大規模データリポジトリを生成して保持するのに有用である。
時間と空間の両方の点での大量のデータの効率的な格納は、バックアップ及び復元システム、特に大量のデジタルデータを保存しなければならない設計における至上関心事である。例えば、ユーザやユーザ群は重要なデータの予想される破壊や変造や事故による欠損に対する予防措置としてその一(又は複数)のコンピュータに記憶させた全データをリポジトリへ定期的(例えば、毎日又は毎週)にバックアップすることを望むことがある。大半のデータが最後のバックアップから99%を超える回数で変化することはなく、かくして現データの大部分がごく僅かな変化しか伴なうことなくリポジトリ内に早くも検出できる。現バックアップデータに類似するリポジトリ内のこのデータが効率的に配置できるならば、そのときはデータを再度記憶する必要はなく、むしろ変化分だけを記録すればよい。共通データを1回しか格納させないこの処理は、データファクタリングとして公知である。
ファクタリングを実行する大規模バックアップ及び復元システムは、1ペタバイト(PB)以上をそのリポジトリに有するであろう。例えば、顧客が行った商取引を記録する銀行や複数ユーザ向けの電子メールを保管するインターネット・サービスプロバイダは通常、数百ギガバイトから数ペタバイトに及ぶリポジトリサイズを有する。1PB=1024TB(テラバイト),1TB=1024GB(ギガバイト),1GB=1024MB(メガバイト),1MB=1024KB(キロバイト),1KB=1024バイトであることが、思い起こされよう。換言すれば、ペタバイト(PB)は250バイト、すなわち約1015バイトである。
この種の大型システムでは、リポジトリへ付加する入力(バックアップ)データストリームは例えば最大100GB以上ある。この入力データはリポジトリ内の既存のデータと類似する可能性は極めて高いが、厳密に同じではない。さらに、バックアップデータストリームはリポジトリ内の既存データとは同一データ境界(例えば、ブロック整列配置)に配置されないであろう。続くファクタリングステップをより効率的なものとするには、バックアップと復元システムはリポジトリ内のデータと入力ストリーム内のデータのいかなる相対的配列にも頼ることなく入力ストリームに充分類似するリポジトリ内のデータの位置を効率的に検出できねばならない。バックアップ及び復元システムはまた入力ストリームを効率的にリポジトリへ追加し、削除或いは破棄した旧入力ストリームをリポジトリから取り除かねばならない。
一般に、データ変更は局所的であると仮定することができる。かくして、例えば1%のデータが変化した場合、そのときはこの種の変化は局所領域に集中し、これらの領域において恐らく主要変化が存在し、一方でデータ領域の膨大な大多数は同じままに留まる。通常(ただし、必ずしもそうとは限らないが)、例えば1%のデータが変化した場合、そのときはそのデータをバイトストリームとしてではなく512バイトブロックのストリームとして見れば、1%強のブロックが変化したことになる。しかしながら、入力ストリームとリポジトリ内にはデータの所定整列配置が皆無であるが故に、局所化データ変化を検出すことは重要な仕事となる。
類似データの検索はパターンマッチングの古典的問題の延長と考えられ、そこでは長さnのうちのテキストTを長さmのうちのストリングPの体裁について検索する。通常、テキスト長nは検索ストリング長mよりもずっと大である。多くの刊行物がこの問題を効率的に解決するよう試みる多くの検索方法を提示しており、それはテキストT内の各位置を試験してストリングPがそこに出現するかどうか特定する稚拙な手法よりも高速である。パターンを前処理することで、一部アルゴリズムはより良好な計算量を達成している。例えば、以下を参照されたい。
Knuth D.E.とMorris J.H.とPratt V.R.著、「Fast Pattern Matching In Strings(ストリングにおける高速パターンマッチング)」、SIAMコンピューティング技報、6巻、pp323−350、1977年、
Boyer R.S.とMoore J.S.著、「A Fast String Searching Algorithm(高速ストリング検索アルゴリズム)」、ACM通信、20巻、pp762−772、1977年、
Karp R.とRabin M.著、「Efficient Randomized Pattern Matching Algorithms(効率的に乱数化したパターンマッチングアルゴリズム)」、IBM研究開発技報31、pp249−260、1987年
これらのアルゴリズムは全てO(n+m)台の時間内で作動し、それは検索時間がテキストサイズと線形的に大きくなることを意味する。これらのアルゴリズムに付随する一つの問題は、それらが或る制約的限界を越えてスケーリングできない点にある。例えば、1GBテキスト(ジェームズ王聖書の約300部の複写サイズ)を1秒で行うことができるならば、1ペタバイトテキストの検索はCPU時間で12日を上回るものを必用とする筈である。そのリポジトリ内の1ペタバイト(PB)以上のバックアップ及び復元システムは、この種のアルゴリズムを使用できないものであった。上記アルゴリズムの別の欠点は、それらが厳密な一致だけを公表し、近似的一致を実行するよう簡単には拡張されない点にある。
パターンを前処理する代りに、テキスト自体を前処理し、添え字ツリーとして知られるデータ構造を構築することもできる。これは、下記の刊行物に記載されている。
Weiner P著、「Linear Pattern Matching Algorithm(線形パターンマッチングアルゴリズム)」、スイッチングとオートマタ理論に関する第14回IEEEシンポジウム講演録、pp1−11、1973年、
Ukkonen E.著、「On−Line Construction Of Suffix Trees(添え字ツリーのオンライン構成)」、アルゴリズミカ、14(3)、pp249−260、1995年
前処理をオフラインで行った場合、前処理時間は問題ではなかろう。その場合、添え字ツリーを用い、続く検索を時間O(m)内で(すなわち、テキストサイズではなくパターンサイズにのみ応じて)実行することができる。しかし、ここでも厳密な一致しか検出すことができず、さらに添え字ツリーのサイズは、テキストのサイズでは線形であるものの抑制的であり、何故ならそれは原テキストの最大6倍まで大きなものとなろうからである。
バックアップと復元用にハ、近似パターンマッチング用アルゴリズムを使用することが望ましく、何故ならリポジトリ内には入力データの厳密な複製ではなく、むしろ厳密に言って異なる複写で、それでも或る種の定義の類似性規範によれば非常に類似するものが検出し得ることは通常真実だからである。近似パターンマッチングは、以下に記載される如く広範囲に研究されてきた。
Fischer M.JとPaterson M.S著、「String Matching And Other Products, in Complexity of Computation(計算処理の計算量におけるストリングマッチングと他の製品)」、R.M. Karp(編集),SIAM−AMS講演録、7巻、pp113−125、1974年、
Landau G. M.とVishkin U.著、「Fast Parallel And Serial Approximate String Matching(高速の並列及び直列近似ストリングマッチング)}、アルゴリズム技法、10(2)、pp157−169、1989年、
Navarro G.著、「A Guided Tour To Approximate String Matching(近似ストリングマッチングへのガイド付きツアー)」、ACM計算処理調査、33(1)、pp31−88、2001年
近年の一つのアルゴリズムは時間O(n(klogk)1/2)内で作動し、ここでnはテキストの大きさであり、kはパターンとテキストとの間の許容不一致数である。例えば、以下を参照されたい。
Amir A.とLewenstein M.とPorat E.著、「Faster Algorithms For String Matching With K Mismatches(K個の不一致を用いたストリングマッチング用のより高速なアルゴリズム)」、アルゴリズム技法、50(2)、pp257−275、2004年
しかしながら、大規模データリポジトリについては、O(n(klogk)1/2)は受け入れがたい計算量である。バックアップと復元システムへの入力データストリームは、例えば100GB以上の長さまでとなることがある。この入力ストリームの大半の同一の複写がリポジトリ内に存在すると仮定した場合、1%のデータしか変化しない状態でも、依然として約1GBの差分が存在し、すなわちk=230バイトとなる。リポジトリ内で近似一致位置を検出するため、このアルゴリズムはテキストnのサイズの約180,000倍に比例する時間を費やすことになる。テキスト長nのみが大きくてテキストを一回しか走査しないアルゴリズムが余りに低速になりかねないとの前提では、これを受け入れることはできない。
別のアルゴリズム系は、ハッシュ処理関数に基づくものである。これらは、下記に記載されている如く、ストレージ産業ではCAS(コンテンツ・アドレスド・ストレージ)として公知である。
Moulton G.H.とWhitehill S.Bによる米国特許第6,704,730号、「Hash File System And Method For Use In A Commonality Factoring System(共通性ファクタリングシステムに用いるハッシュファイルシステム及び方法)」
汎用の理論的枠組みは、以下の通りである。すなわち、リポジトリデータをブロックに分け、指紋或いは署名とも呼ばれるハッシュ値を各ブロックごとに生成する。これら全てのハッシュ値をインデックス内に格納する。バージョンと呼ぶ或る種の所与のデータを配置すべく、所与の入力データはまたブロックに分け、同じハッシュ関数(リポジトリブロックに適用されたもの)を各バージョンブロックに適用する。バージョンブロックのハッシュ値がインデックス内に検出された場合、一致を公表する。
先の方法を上回るCASの利点は、類似データに対する検索をここでリポジトリテキスト自体に対してではなくインデックスに対し実行し、適当なデータ構造を用いてインデックスを格納する場合、検索時間を著しく低減することができる。例えば、インデックスを2値ツリー或いはより一般的なBツリーとして記憶させた場合、検索時間はたったのO(log(n/s))となり、ここでnはテキストサイズであり、sはブロックサイズである。インデックスを並べ替えリストに格納した場合、並べ替えリストの内挿検索はO(log(log(n/s)))なる予想時間を有する。インデックスをハッシュテーブルに格納した場合、予想時間はO(1)にまで低減し得、インデックスの検索が特にリポジトリテキストのサイズとは無関係な時間内に一定の予想時間でもって果たし得ることを意味する。
しかしながら、この方式には欠点がある。以前の如く、厳密な一致のみが検出され、すなわち入力データのブロックがリポジトリデータのブロックと同一でありさえすれば、一致が公表される。良質のハッシュ関数の要件の一つは、二つのブロックがごく僅かしか異ならないときでも対応ハッシュ値が全く異なるものになることであり、このことはハッシュ値の良好な分布を保証するのに必用とされる。しかし、バックアップ及び復元アプリケーションにおいて、このことは二つのブロックが近似的にのみ一致する場合に、ハッシュ処理方式がそれらの近似度を検出しないことを意味する。検出されたハッシュ値の近傍での検索が、近似的な一致を明らかにすることもない。さらに、公表された一致が必ずしも二つのブロック間の実際の一致に対応するとは限らない。ハッシュ関数hは一般に1対1ではなく、かくして通常ブロックXとYをX≠Yでh(X)=h(Y)の如く検出することがあり得る。
さらにまた、リポジトリ更新とネットワーク上でのデータ送信に必用な帯域要件もまた、改善を求める機会を提示している。
これらの問題は、ブロックのサイズsを如何に選択するかの難題を生み出す。大ブロックサイズを選択すれば、より小さなインデックスが得られ(何故なら、インデックスはn/s個の要素を記憶する必用があるから)、誤一致の可能性は減るが、同時に一致ブロックを検出する可能性は減り、そのことが結局は圧縮比を低減する(非一致ブロック及び一致したものへのポインタだけを格納するハッシュ関数を圧縮法に用いるものと仮定)。他方、小ブロックサイズを選択すれば、全体的な圧縮効率は増大するかもしれないが、誤一致の可能性もまた増え、数が増えたブロックがかくも大きなインデックスを必用とし、インデックス自体がストレージ問題となることがある。
要するに、これらの問題に対処する多くの手際の良い方法が示唆されてきたが、それらは全て結局は大型サイズのデータリポジトリ内のデータ量に対し妥当な時間と空間にてスケーリング不能となる欠点がある。
本発明は、効率的なデータ検索と記憶及び/又は低減のためのシステムならびに方法に関する。さらに、システム間で送信されるデータ量は、エラー耐性のある遠隔差分処理の実行により低減される。
本発明の一実施形態に整合するシステムと方法は、定義された類似性測度を用いて入力データに類似するデータ位置について2値非変換データのリポジトリを検索することができ、リポジトリのサイズとは無関係に入力データのサイズに線形の時間内にリポジトリサイズの小部分に比例する空間内で斯くすることができる。
本発明の他の実施形態に整合するシステムと方法はさらに、リポジトリの類似データセグメントと入力データを分析し、リポジトリ及び入力内の共通データの順序や位置に関係なくそれらの共通(同一)部分を効率的に特定し、セグメントサイズと線形な時間内にかつ一定の空間内で斯くすることができる。
幾つかの実施形態になるシステム及び方法は、データの記憶に使用するネットワーク帯域量の低減をもたらす。このシステム/方法は、送信先に既に存在するデータをネットワークを介して送信する必要性を取り除く。一実施形態では、データリポジトリは第1の位置に位置する。第2の位置は、それがリポジトリへの格納を望む新規データを有する。新規データと既にリポジトリにあるデータとの比較を、行う。都合よくは、新規データの全てを比較用にリポジトリへ送信せず、リポジトリに既に格納されたデータを送信することで恐らくは帯域を無駄にせずに、リポジトリデータと新規データとの比較は新規データ全体よりもずっと小さなサイズの新規データの表現を送信することで、ただしリポジトリデータに対する新規データの比較が類似性或いは差分を特定する上で基礎とすることのできる十分な情報を用いて達成される。
一実施形態では、一つの方法はリポジトリデータ内で入力データの識別を含み、リポジトリデータがリポジトリデータチャンクを含み、入力データが入力データチャンクを含み、各リポジトリデータチャンクは1以上のリポジトリデータチャンク識別特性(RCD)の対応集合を有しており、この方法は、各インプットデータチャンク毎に、1以上の入力データチャンク識別特性(IDC)集合を特定するステップと、被特定IDC集合を1以上のRDC集合と比較するステップと、1以上のRDC集合に対し被特定IDC集合を比較する関数として入力データチャンクに類似するリポジトリデータチャンクを識別するステップとを含む。
一実施形態では、入力データは第1の位置に位置し、リポジトリデータは遠隔位置に位置し、本方法はさらに、第1の位置のIDC集合を特定するステップと、被特定IDC集合を第1の位置から遠隔位置へ送信するステップと、被特定IDC集合を遠隔位置の1以上のRDC集合と比較するステップとを含む。
別の実施形態では、第1の位置は第1のコンピュータであり、遠隔位置は第1のコンピュータとは異なる遠隔コンピュータであり、第1のコンピュータと遠隔コンピュータは互いにネットワーク接続通信状態にあり、リポジトリデータは遠隔コンピュータを介してアクセスするデータリポジトリ内に格納される。
RDC集合に対するIDC集合の類似性の識別は類似性閾値の関数であり、類似性閾値はIDC集合内の所定数の識別特性がRDC集合内に検出されたときに合致する。
識別特性集合の特定は、個別データチャンク内で1以上のデータ部分を識別するステップと、個別データチャンクの1以上のデータ部分のそれぞれについて算術的ハッシュ値を算出するステップとを含む。
本発明の別の実施形態によれば、入力データに類似するデータについてリポジトリデータ内を検索する方法は、リポジトリデータを1以上のリポジトリチャンクへ分割するステップと、各リポジトリチャンクごとに、リポジトリ識別特性(RDC)の対応集合を算出するステップで、各RDC集合が少なくとも一つの識別特性を含む前記ステップと、各RDC集合と対応リポジトリチャンクに関連するインデックスを保持するステップと、入力データを1以上の入力チャンクに分割し、各入力チャンクごとに、入力識別特性(IDC)の対応集合を算出するステップで、IDC集合が少なくとも一つの識別特性を含む前記ステップと、IDC集合をインデックス内に格納された1以上のRDC集合と比較するステップと、IDC集合内の識別特性の類似性閾値jがインデックス内に保管されたRDC集合内に検出された場合、入力チャンクと対応リポジトリチャンクとの間に類似性が存在すると判定するステップとを含む。
RDC集合とIDC集合はそれぞれ、個別データチャンクを複数のシードに区画するステップで、各シードを個別データチャンクの小部分としてシード系列内に順列配置するステップと、各シードにハッシュ関数を適用して複数のハッシュ値を生成するステップで、各シードが一つのハッシュ値をもたらす前記ステップと、複数のハッシュ値の部分集合を選択するステップと、選択されたハッシュ値の部分集合に対応するシード系列内でシード位置を特定するステップと、被特定位置へ関数を適用し、シード系列内の対応する他の位置を特定するステップと、識別特性集合を特定された他の位置のシードのハッシュ値として規定するステップとにより得る。
別の実施形態は、リポジトリデータ内で入力データを識別するシステムで、リポジトリデータがリポジトリデータチャンクを含み、入力データが入力データチャンクを含み、各リポジトリデータチャンクが1以上のリポジトリデータチャンク識別特性(RDC)の対応集合を有するシステムであり、このシステムが、各入力データチャンクごとに1以上の入力データチャンク識別特性(IDC)集合を特定する手段と、各入力データチャンクごとに、被特定IDC集合を1以上のRDC集合と比較する手段と、各入力データチャンクごとに、1以上のRDC集合に対し被特定IDC集合を比較する関数として入力データチャンクに類似するリポジトリデータチャンクを識別する手段とを備える。
本システムは、一実施形態ではさらに、各入力データチャンクごとに、個別チャンクの全データを比較することで入力データチャンクと被特定類似リポジトリデータチャンクとの間の1以上の差分を特定する手段を含む。
識別特性集合の特定手段は、一実施形態では、個別データチャンク内で1以上のデータ部分を識別する手段と、個別データチャンクの1以上のデータ部分のそれぞれについて算術的ハッシュ値を算出する手段とを備える。
別の実施形態では、本システムはさらに、集合内でk個の最大算術的ハッシュ値を特定する手段で、kが所定数である前記手段と、k個の最大ハッシュ値のそれぞれについて個別データ部分を識別する手段と、識別特性集合をk個の最大算術的ハッシュ値のそれぞれに対応する各データ部分に対する次の系列データ部分の算術的ハッシュ値と特定する手段とを含む。
識別特性は、ハッシュ関数とローリングハッシュ関数のうちの一方により特定し、モジュラーハッシュ関数とRDC集合は2値ツリーとBツリーと並べ替えリストとハッシュテーブルのうちの少なくとも一つとしてインデックス内に格納する。
入力データに類似するデータについてリポジトリデータ内を検索するシステムで、このシステムが、リポジトリデータを1以上のリポジトリチャンクに分割する手段と、各リポジトリチャンクごとに、リポジトリ識別特性(RDC)の対応集合を算出する手段で、各RDC集合が少なくとも一つの識別特性を含む前記手段と、各RDC集合に関連するインデックスと対応するリポジトリチャンクとを保持する手段と、入力データを1以上の入力チャンクへ分割する手段で、各入力チャンクごとに、入力識別特性(IDC)の対応集合を算出し、IDC集合が少なくとも一つの識別特性を有し、IDC集合をインデックス内に保管された1以上のRDC集合と比較し、IDC集合内の識別特性の類似性閾値jがインデックス内に保管されたRDC集合内に検出された場合、入力チャンクと対応リポジトリチャンクとの間に類似性が存在すると特定する前記手段とを含む。
各RDC集合とIDC集合は、個別データチャンクを複数のシードに区画し、各シードを個別データチャンクの小部分としてシード系列内に順列配置し、各シードにハッシュ関数を適用して複数のハッシュ値を生成し、各シードが一つのハッシュ値をもたらし、複数のハッシュ値の部分集合を選択し、選択されたハッシュ値の部分集合に対応するシード系列内でシード位置を特定し、被特定位置へ関数を適用し、シード系列内の対応する他の位置を特定し、識別特性集合を被特定の他の位置のシードのハッシュ値として規定することにより得る。
ハッシュ値の部分集合は、k個の最大ハッシュ値を識別することで選択し、対応する他の位置の特定に適用する関数は、シード系列内の次のシードを識別するものである。
さらに別の実施形態では、リポジトリデータ内で入力データを識別する方法で、リポジトリデータがリポジトリデータチャンクを含み、入力データが入力データチャンクを含み、各リポジトリデータチャンクが対応する1以上のデータチャンク識別特性(RDC)集合を有する方法をコンピュータに実行させるコンピュータ実行可能命令でもってエンコードしたコンピュータ可読媒体であり、前記方法が、各入力データチャンクごとに、1以上の入力データチャンク識別特性(IDC)集合を特定するステップと、被特定IDC集合を1以上のRDC集合と比較するステップと、入力データチャンクに類似するリポジトリデータチャンクを被特定IDC集合を前記1以上のRDC集合と比較する関数として識別するステップとを含む。
さらに、コンピュータ可読媒体は、入力データに類似するデータをリポジトリデータ内で検索する方法をコンピュータに実行させるコンピュータ実行可能命令でもってエンコードし、前記方法が、前記リポジトリデータを1以上のリポジトリチャンクに分割するステップと、各リポジトリチャンクごとに、リポジトリ識別特性(RDC)の対応集合を算出するステップで、各RDC集合が少なくとも一つの識別特性を備える前記ステップと、RDCの各集合に関連するインデックスと前記対応リポジトリチャンクとを保持するステップと、前記入力データを1以上の入力チャンクに分割し、各入力チャンクごとに、入力識別特性(IDC)の対応集合を算出し、IDC集合が少なくとも一つの識別特性を含み、IDC集合をインデックス内に格納された1以上のRDC集合と比較し、IDC集合内の識別特性の類似性閾値jがインデックス内に格納されたRDC集合内に検出された場合、入力チャンクと対応リポジトリチャンクとの間に類似性が存在すると特定するステップとを含む。
さらにまた、コンピュータ可読媒体は、RDC集合とIDC集合のそれぞれを得るステップを下記により実行するコンピュータ実行可能命令をさらに含み、すなわち個別データチャンクを複数のシードへ区画し、各シードを個別データチャンクの小部分としてシード系列にて順列配置し、各シードにハッシュ関数を適用して複数のハッシュ値を生成し、各シードが一つのハッシュ値をもたらし、複数のハッシュ値の部分集合を選択し、ハッシュ値の選択された部分集合に対応するシード系列内でシード位置を特定し、被特定位置に関数を適用してシード系列内に対応する他の位置を特定し、識別特性集合を特定された他の位置のシードのハッシュ値として規定する。
ハッシュ値の部分集合は、k個の最大ハッシュ値を識別することで選択され、対応する他の位置を特定するのに適用する関数は、シード系列内で次のシードを特定するものである。
本明細書内に取り込んでその一部を構成する添付図面は、本発明の様々な実施形態と態様を示すものであり、説明と合わせ本発明の幾つかの原則を説明するのに役立つ。
以下の実施形態にて使用する如く、リポジトリはメモリ内に格納するデジタルデータの収集及び/又はコンピュータ参照用のストレージである。そのサイズに限界はなく、1PB以上のオーダーとし得る。特定用途にあっては、データは2値非変換データとして保管する。入力データはリポジトリデータと同種或いは異種とすることができる。入力データは、バージョンとも呼ばれる。特定用途にあっては、バージョンとリポジトリをそれぞれチャンクに分割する。チャンクサイズmは、例えば32MB等のパラメータである。用語シードは、バイト等の連続系列データ要素を指す。シードサイズsもまた、例えば512バイト或いは(他の非限定例では)4KBやさらに8KBものパラメータである。一般に、シードサイズsはチャンクサイズmよりもずっと小さい。
本発明の幾つかの実施形態によれば、ハッシュ関数が用いられる。ハッシュ関数は、或る種大空間の要素を第1の空間の要素にハッシュ値と呼ぶ数値を割り当てることで或る種の小空間の要素へ写像する。ハッシュ関数は通常、第1の空間の基本要素の或る種の数値変換を入力として使用する算術関数である。「良質な」ハッシュ関数は、ほぼ常時第1の空間の要素内の最も軽微な変化についてさえ統計的に関連のないハッシュ値を生成する。
以下の実施形態では、モジュラーハッシュ関数を使用する。しかしながら、この使用は非限定例である。公知の如く、モジュラーハッシュ関数は、或るストリーム内のs個の連続する基本要素のハッシュ値が既知である場合、一つの基本要素後に始まる(かくして基本要素の先の系列に重複する)ストリーム内のs個の基本要素のハッシュ値をO(1)演算により算出できる特性を有する。こうして、チャンク内の全てのシードの全ハッシュ値はO(m・s)ではなくO(m)演算により算出できる。この特性が故に、ハッシュ関数はローリングハッシュ関数と呼ばれる。本発明が特定のローリングハッシュ関数或いは一般のハッシュ関数の使用に拘束されないことに、留意されたい。
インデックスは、効率的な検索を容易にするデータ構造である。それは、空間効率が良くなければならない。一部用途(本実施形態等)では、内挿や消去等の効率的な動的演算をサポートしなければならない。一つのインデックスをハッシュテーブルにより実装し、かくして検索と内挿と消去をO(1)演算それぞれにサポートする。以下に説明する本発明の幾つかの実施形態によれば、インデックスは或るシードのハッシュ値であるキーにより索引付けされ、各キー値がそれが生成された一のシード(或いは複数のシード)を識別する。
図1中、本発明の一実施形態になる汎用ストレージシステム・アーキテクチャが図示してある。本発明は、無論、この特定のシステムアーキテクチャに拘束されない。図1中、ストレージ領域ネットワークSAN(12)が4個のバックアップサーバ(11)をサーバ(13)へ接続している。サーバ(13)は、仮想テープインタフェース(14)とRAMメモリ(15)とを含む。インデックスは、RAM(15)内に格納される。サーバ(13)は、1以上の(恐らくは外部)二次ストレージ装置に格納したリポジトリに接続してある。
本発明がストレージ領域ネットワーク(SAN)とその特定の技術的特徴、例えばファイバーチャンネルに限定されないことに、留意されたい。これに限定はされないがインターネットプロトコル(IP)とTCP/IPを含むサーバ間のネットワーク化通信を容易にするのに任意のネットワーク技術を使用できることは、当業者には理解されよう。図1に続く説明はSANを引用するものであるが、これは例示目的に合わせただけで、特許請求の範囲に明示的に記載していない限り本発明のどの実施形態も限定すべきではない。
図2中、フローチャート(20)は本発明の一実施形態になるシステム寿命サイクルのステップを示す。図示の如く、処理は空インデックス(21)から始まる。インデックスの内容と目的は、以下に詳述する。次に、システムはバージョン(22)を受信するまで待機状態に入り、その後にバージョンを以下にさらに詳しく説明する仕方で処理(23)する。バージョンを処理した後、システムは別のバージョンを受信するまで待機状態(22)へ復帰する。手順(22,23)は、より多くの入力バージョンが受信される限り続けられる。入力バージョンは、リポジトリ及び/又はインデックスを更新することもそうしないこともできる。ここに記載する一つのファクタリング応用例では、入力バージョンが新規(リポジトリ内のデータに充分には類似しない)と認識された場合、それはリポジトリ内にそのまま組み込まれる。他方、入力バージョンがリポジトリ内の既存のデータに十分類似すると認識された場合、それはリポジトリデータでもってファクタリング処理され、バージョンの不一致部分だけが格納される。前記から明らかな如く、システムが長く作動するほど、リポジトリのサイズも大きくなる。幾つかの用途にあっては、リポジトリサイズは数百ギガバイトから数ペタバイトに及ぶ。かくして、入力データに十分類似するリポジトリデータを効率的仕方で配置或いは識別する必用がある。さもなくば、処理時間は余りに長引き、システムは経済的にも商業的にも実施できなくなる。
類推するに、説明の代替方法として限定は意図しないが、互いに非常に異なる文書Aと文書Bの二つの文書についての筋書きを考える。初期化したシステム、すなわち空のリポジトリでは、本発明の一実施形態によれば、各文書AとBはチャンク或いはセクションに分割して格納する(チャンクは以下にさらに詳しく説明する)。この筋書きの説明を簡略化するため、チャンクは各文書A,Bが各半体ごとに2個のチャンクを有する4個のチャンク長となるサイズとする。そこで、8個のチャンクをリポジトリ内に格納する。本実施形態によれば、これらのチャンクはファイルネームに基づいて格納されないことに留意されたい。これらのチャンクは、リポジトリがチャンクから文書を再生できるようにして格納される。
次に、文書Aの最初の半分を切り貼りすることで新規文書Cを(文書Cへ)生成し、続いて他の追加データを追加することなく文書Bの残り半分を切り貼りすることで(文書Cへ)生成するものとする。その文書Cが文書Aと文書Bそれぞれに対し実質的類似性を有すると理解はできるものの、各文書から実質的差分もまた有することになる。
本実施形態は、文書Cをその4個のチャンクに分け、類似チャンクについてリポジトリを検索することにする。類似チャンクは、文書Cの最初の二つのチャンクと文書Aの最初の二つのチャンクの間と、文書Cの最後の二つのチャンクと文書Bの最後の二つのチャンクとの間とで識別するものとする。システムは類似チャンクを識別するだけで、厳密なチャンクは識別しないため、システムはそこで類似チャンク間のどんな差分(ファクタリング)も特定することになる。ここで、類似のチャンクは同一である。かくして、この筋書きでは、文書Cは事実上既に格納(A及びBチャンクとして)されており、それを格納する、すなわちそれを再生し検索できるのに必用な空間は文書C全体の格納よりはずっと少量となる。ファイルネーム準拠システムでは、文書Cの4個のチャンクが再度保管され(文書Cとして)、これらチャンクがシステム内に既に保管されているが故にそれは冗長となろう。
文書Cを再生するため、本実施形態になるシステムは文書Aの最初の半分について格納した二つのチャンクと文書Bの次の半分について記憶した二つのチャンクとを検索することになる。
別の筋書きでは、新規文書Dは文書Aの最初の半分を切り貼りすることで生成され(文書Dへ)、続いて文書Bの残りの半分を切り貼りすることで生成される(文書Dへ)。その結果、文書の表題は他の変更を一切伴なうことなく、「The Life of John Adams(ジョンアダムスの生涯)」から「The Loan to Jobs Apple(ジョブスアダムスへの借金)」に変更される。ここでも、文書AとDの間及び文書BとDの間に実質類似性が存在することを理解できるだけでなく、実質差分もまた理解することができる。
本システムは、文書Dを4個のチャンクへ分割し、続いて既に格納されている類似チャンクを検出する。この場合、システムは文書Aから最初の二つのチャンクを検出し、文書Bからの後の二つのチャンクは文書Dのチャンクに類似するとして検出する。次に、システムは文書Dの最初のチャンクとその個別類似チャンクとの間に差分が存在すると判定することになる。差分、すなわち表題における変更場所が特定されることになる。かくして、文書Dは文書Aからの最初の二つのチャンクと文書Bからの後の二つのチャンクとしてリポジトリ内で表わされることになるが、ただし識別、すなわち文書Dの最初のチャンクが被識別類似チャンク、すなわち本例の場合文書Aと関連する第1のチャンクとは異なる箇所のデルタすなわち差分とその内容とを伴なう。かくして文書Dの表現に必用な空間量は、そこでリポジトリ内に文書Dを全て保管するよりはずっと少量となる。
前記した単純な筋書きはファイルネーム、すなわち文書を引用して説明したが、本発明の様々な実施形態は任意のファイルシステムに対しガラス張りであり、何故なら比較はさらに詳しく後述するチャンクと特性の関数となるからである。本システムを用いることで、文書A,B,C,Dはファイル準拠或いはファイルネーム準拠システム内と同様、同一ユーザに関連付けられないが、類似性を特定し、効率的な保管を依然として達成することができる。バックアップシステム或いはファイルシステムに基づき類似性を検出する試みは、上記筋書きにおいて文書Aと文書Bと文書Cと文書Dの部分間での類似性を特定できない筈である。都合よくは、本発明は最も知られたファイルシステムに対しガラス張りとする。
図3は、本発明の一実施形態になるバージョン処理(図2におけるステップ23)の一方法を詳しく示すものである。バージョンを受信(31)すると、それはより小さなチャンク(32)、すなわちチャンクごとに32MBに分割される。第1の入力チャンクを選択(33)し、この入力チャンクを処理してリポジトリ内で実質類似するチャンクとその位置を検出(34)する。このステップ(34)を、図4を参照してより詳しく以下に説明する。類似リポジトリチャンクを検出したことで、バージョンチャンクをさらに処理(35)し、それは本実施形態によればリポジトリとバージョンチャンクのファクタリングを必然的に伴なう。この処理は、バージョン内にそれ以上のチャンクが存在せず、処理が終わる(38)まで、入力バージョンの追加のチャンクについて反復(34〜37)する。
本発明の異なる実施形態によれば、入力チャンクが所定のリポジトリデータに一致すると、続く入力チャンクを先ず試験して一致リポジトリチャンクに続くリポジトリデータとの一致が試験され、かくしてそのアプリケーション専用処理(35)へ直接進む。他方で、以下の入力チャンクがこの試験に失敗した場合、それを完全に処理してその類似リポジトリデータを検出(34,35)する。
同期アルゴリズムとファクタリング
図4は、本発明の一実施形態に従い、リポジトリ内で十分類似するチャンクの位置を効率的に検出するステップと続くファクタリングステップの一つの手順を示すものである。入力(バージョン)チャンクに対する類似リポジトリチャンクを検出すのに使用するアルゴリズムをここでは同期アルゴリズムと呼ぶが、それはその出力がリポジトリとバージョン内で共通点を含むからであり、このことはそれまで二つの不整列配置データセグメントであったものを効果的に(同一のデータ境界上に)整列配置する後処理に有用である。
入力チャンクサイズm、すなわち32MBは次の仕方で処理(41)する。先ず、バージョンチャンクのk個の識別特性集合(42)を算出し、ここでkは以下に説明するこのアルゴリズムのパラメータ(通常は数十台)であり、k≪m(チャンクサイズ)である。一実施形態によれば(特定の例についてさらに下記に説明する如く)、k個の識別特性集合を下記の如く算出する(図4には図示せず)。
(1)入力データチャンクの各シードについてハッシュデータを算出する。シードは、ストリング長mよりも実質小さな任意のサイズs、つまり4KBとすることができる。この非限定実施形態により、各シードごとのハッシュ値は各反復において1バイトだけ順方向へ動かすローリングハッシュ関数を用いて算出する。ハッシュ値は、この範囲内に収容された4KBのシードサイズについて各反復ごとに算出する。本例により、入力チャンクサイズがm=32MBであって、シードサイズがs=4KBである場合、各チャンクごとに33,550,337(32MB−4KB+1)個のハッシュ値が得られ、それぞれチャンク内でそれぞれ可能なバイトオフセットにある。ローリングハッシュ関数はsバイトのシードに対するハッシュ値が一旦既知となると、次のsバイトに関するハッシュ関数の計算(すなわち、先のsバイトに対し1バイトだけシフトさせ、かくしてs−1の重複バイトを有するsバイト)はO(s)ではなくO(1)演算によって行うことができる。本発明は、ハッシュ関数の使用にも、或いはローリング型のハッシュ関数にも拘束されない。
(2)次に、k個の最大ハッシュ値、すなわちk個の個別シードの降順の最大のハッシュ値を(33,550,337)の算出ハッシュ値の中から選択する。これらk個のシードが、k個の最大シードを構成する。その後、k個の最大シードに1バイトだけ続く(s−1バイトだけ重複する)k個の個別シードのk個のハッシュ値を、それぞれ選択する。これらk個のシードはk個の識別シードを構成し、それらの対応ハッシュ値がk個の入力識別特性を構成する。最大値がそれ自体不均一な確率分布を有することに、留意されたい。しかしながら、良質のハッシュ関数を使用した場合、続くk個の値の確率分布は非常に均一に近く、それ故に意図した用例にとって実質より良好なものとなる。均一分布とは、k個の識別特性が或る範囲の数の上で数としてほぼ均一に分布することを意味する。
本発明は上記した仕方で識別特性を算出することによって拘束されないことに、留意されたい。より広域に亙りエラー耐性があって良好に拡散した特性を生み出し、所与のチャンクに対し反復可能なあらゆる選択肢が、本発明の本実施形態に使用可能である。
定義
エラー耐性:チャンクに割り当てた特性が、チャンクが穏当な変化を受ける限り、かなり一定のままに留まる(例えば、そのシードの25%まで)。
良好に拡散:特性位置がチャンク全体(地勢的に拡散)に良好に拡散(ほぼ一様に)している。
反復可能:一定の形式のチャンクがほぼ常に同一の特性を割り当てられる。
この種の方法は、チャンクシードの部分集合だけを考慮することになろう。例えば、特性の選択はチャンクの間隔とすることができ、その距離はしかるべき実施形態に従って算術的或いは幾何学的に規定される。他方法は、前述の方法等の全てのチャンクシードに配慮するものである。
本実施形態によれば、特性間の最小の地理的(位置的)拡散を強要し、かくして適用範囲が改善される。一般に、算出されたシード値の算術特性に基づきあらゆる反復可能な選択肢が適用可能である。
例えば、k個の最小ハッシュ値、すなわち最小のハッシュ値、すなわちチャンク内で算出された全てのハッシュ値の中央値に最も近いk個のハッシュ値又は或る所定の定数に最も近いk個のハッシュ値さえ選択することができる。別の例はk個の特性を対の総和として選択し、かくして第1対が最小値と最大値を構成し、第2対が第2の最小値と第2の最大値を構成する等することができる。特定用途に応じて、他の変形例が適用可能である。
また、最小値に対応するシードの1バイトシフトを用いる代りに、位置及び/又は算出ハッシュ値に応じて、或る種の他の所定定数シフトや、或いはさらに異なるシフトを用いることもできる。最大のハッシュ値と1バイトシフトの使用例は、かくして唯一の可能な実施形態となる。
識別特性を算出するこの一つの手順の具体例を、以下に示す。
本実施形態では、リポジトリにはインデックスが関連付けてあり、このインデックスが各リポジトリチャンクごとに、n個、ただしn≦kの識別特性を格納している。n個の識別特性はそれぞれ1バイトが続く(s−1バイトが重複する)シードサイズsバイトのn個のハッシュ値であり、それぞれ、シードはリポジトリチャンク内のシードの中からn個の最大ハッシュ値を有する。k個の識別特性を各入力チャンクごとに算出するも、インデックスが各リポジトリチャンクごとにたったn個の識別特性しか含まない理由を、以下に説明する。インデックスはさらに、各識別特性のリポジトリ内に位置を格納する。本発明は、特定のインデックス構造と前述したコンテンツによって拘束されることはない。
インデックス構造をより良く理解するため、図5は本発明の一実施形態に従い、インデックス(44)と、入力チャンク(51)内の(例えば5個の)識別特性集合(55i〜59i)と実質類似するリポジトリチャンク(52)内の(5個の)対応識別特性集合(55r〜59r)との間の対応を図解して示すものである。リポジトリチャンク52はリポジトリ(53)の一部を形成しており、ここでは膨大な数のチャンク50が格納してある。識別特性は、前述の如く、入力チャンク(51)内の5個の三角形(55i)〜(59i)が示す良好に拡散されたシードから生成する選択されたハッシュ値集合である。同じ5個の識別特性(55r〜59r)が、実質類似のリポジトリチャンク(52)内に図示してある。このインデックス(44)は、リポジトリチャンク(チャンク(52)のうちの5個)と関連する位置データ(例えば、リポジトリ内のチャンク(52)の相対的位置)の識別特性を保持している。かくして、類似性検索期間中、リポジトリチャンク(52)の値が入力チャンク(51)のそれに一致すると検出されたときに、リポジトリ内の検出されたチャンク(52)の位置は関連位置データを抽出することで容易に知れることになる。インデックス(44)は、新規バージョンがリポジトリ内に導入され、各バージョンのチャンクに関連するハッシュ値(前記した仕方で算出)がインデックスへ追加されるにつれ、連続的に成長する。
図4を参照するに、インデックス(44)は最大n個の一致が検出されるまで識別特性のハッシュ値について検索する(ステップ43)。より具体的には、入力チャンク集合のk個の識別特性のそれぞれを一致を検出すべくインデックス内を検索し、最大n個の識別特性が一致するまでこれを継続する。ここで、j(j≦n)が一致した識別特性の数を指すものとする。明らかに、入力チャンクのk個の識別特性の全集合が検査される(すなわち、k個の値の中からi個だけを検査する)前にn個の一致が検出された場合、残り(すなわち、本例ではk−i)を検査する必用性は不要となる。
これらj個の一致を検出する計算処理の計算量は低く、何故なら最大でk回のインデックス(本例では、ハッシュ値)検索を必要とし、各回ともO(1)の計算量であるからである。
一実施形態では、j>2の一致識別特性を有するバージョンチャンクは1以上のリポジトリチャンクに一致すると見なされる。他方で、j<2の一致識別特性を有するバージョンチャンクはリポジトリチャンク内のいずれとも一致しないと見なされる。たった一つの一致(j=1)は統計的に有意味とは見なされず、何故ならその発生は非常に大きなリポジトリにとって稀な事象ではないだろうからである。
バージョンチャンクの識別特性がリポジトリチャンクの複数の識別特性に合致し得ることに、留意されたい。二つのバージョン識別特性が互いに良好に十分離れた二つのリポジトリ識別特性と一致し、二つの個別リポジトリチャンクに属する可能性もある。そこで、バージョンチャンクが複数のリポジトリチャンクと一致する可能性が前記のことから生ずる。この種の各リポジトリチャンクiについて、hiをこの種の一致識別特性の数とする。一実施形態では、リポジトリチャンクiとバージョンチャンクとの間の類似性レベルは、hiとnの間の比により計測され、ここでこの比が閾値を上回る場合、リポジトリチャンクはバージョンチャンクに実質類似すると考えることができる(図4のステップ45)。
例えば、リポジトリ内に保管された2値データの旧バージョンに比べ若干の変更を受けたバージョンについて考察する。通常、この種の変化は幾つかの局所的変化を受けるシードの僅かな百分率に反映される。この正味の影響は、所与のチャンクについてはその大半が無傷のまま残る点にある。チャンクの識別特性の位置は適切に拡散するよう選択(地勢的にはチャンク全体に)してあるため、局所的変化はあるにせよごく僅かしか識別特性に影響せず、その残りは変化しないことになる。換言すれば、この表現方法はエラー耐性があり、何故なら一(又は複数)の局所的変化の大部分でさえ多くの識別特性を手付かずのまま残すからである。統計的には、しかるべき実施形態では、検索によって少なくとも二つの一致を有するリポジトリチャンクを見出した場合(後者の例を意味、すなわちj≧2)、そのときはリポジトリとバージョンチャンクは十分に類似し、さらなる比較に値することになる。
選択実施形態では、バージョンチャンク(結局はリポジトリの一部ともなる)上の識別特性の均一な拡散を改善すべく、チャンクはさらにu個の下位チャンクに分割する。各下位チャンクごとにk/u個の識別特性を計算し、それらが合わせk個の識別特性を構成する。
選択実施形態では、識別特性の各一致の重要性を改善すべく、高度循環型識別特性リストを保持する。識別特性を或る閾値を超える一定数のバージョンチャンクについて算出すると、それはデータ内の一部系統的パターンに属すると見なされ、かくして低減された識別情報をもたらす。そこで、それを循環値リストに追加し、続くチャンクに対しそれが生ずる際にその使用を排除する。識別特性の算出時に、その値をリスト内の存在ごとに検査し、それが存在する場合は、それを廃棄して別の識別特性をその場で計算する。
説明した実施形態では、n個超からk個までの識別特性を恐らくはインデックス内で検索し、その間に各リポジトリチャンクに対しn個だけをインデックス内に格納する。この実施形態によれば、リポジトリに対しバージョンチャンクに対する変化により引き起こされる最大のハッシュ値に対する恐らく二つの影響が存在する。すなわち、1)その対応シードを構成するデータが修正されているが故に最大のハッシュ値が出現し得る。2)変更されたデータがより高次の最大値を導入し、依然存在する最大値を変位させ得る。第2の効果を含む事例では、より多くの識別特性の検索がより多くの安定性を提供し、何故なら先の最大値は消滅せず、それはただ置換されるだけだからである。これら二つの影響は、降順及び/又はk>n選択用に最大値を選択する理由となる。
図6は、データに対する変更にもかかわらず識別特性を実質保存する仕方の一例を示す。本例では、データはmp3データであり、リポジトリサイズは20GB、バージョンサイズは数万チャンク、チャンクサイズは32MB、各チャンクごとに算出される識別特性の数は8である。図示の検索結果の三次元表現では、水平軸(幅)は検出されたキー(識別特性)の数と検索した数を表わす。左方余白の軸(深さ)は、バージョン内で変化したデータシードの百分率を表わす。右方余白の軸(高さ)は、キーを検索して検出されたチャンク数を表わす。かくして、各行(深さにおける)は、変化したシードの或る百分率が与えられたときの幾つかの識別特性に対する影響を示すことになる。
例えば、第5行では、データの10%が変化しており、依然として約5,000個のチャンクの平均がそれらの8個の識別特性のうちの7個を手付かずのまま有し、これらチャンクの95%以上がそれら8個の識別特性のうち4以上を未だ現有している。第4行乃至第1行では、データの5%、3%、2%、1%がそれぞれ変化しており、識別特性の保存は次第に大きくなる。データ変化百分率が増大すると、より低い閾値(リポジトリと入力内の識別特性の最小一致数)の設定によりより多くの類似データの検出が可能になる。本例の場合、25%データ変化に関するピーク(第8行)は検出された約4個のキーに中心があり、閾値が4(k個の入力識別特性の中から)に設定されている場合、そのときは類似性検索は最大25%までのデータが変化するほぼ全てのリポジトリ位置へ復帰することになる。同じ25%のデータ変化について閾値がより高く、例えば6に設定されている場合、そのときは検索は類似リポジトリ位置のずっと低い百分率へ復帰することになる。かくして、図6等のグラフが特定の用例においてj,k,m,nに関する値のユーザによる選択を支援することができる。
ここで再度図4に戻るに、1以上の実質類似するリポジトリチャンクが検出された場合、各一致したリポジトリチャンクの位置をインデックスから抽出する(45,46)。リポジトリチャンクの位置データ(j個の検出されたハッシュ値に関連)の位置をインデックスから容易に検索できることを、思い起されたい。続くステップは1以上の一致したリポジトリチャンクを使用でき、それらの類似度によりリポジトリチャンクを等級付けすることができる。本実施形態では、バージョンチャンクとその一致リポジトリチャンクを含むファクタリングステップ(47)が続き、それがリポジトリ内へのバージョンチャンクの保管効率のよい取り込みに繋がる。この種のバックアップ及び復元システムでは、さらなるステップは、バージョンとリポジトリ内での共通(同一)データと非共通(非同一)データの識別と、バージョンの非共通データだけの格納(適当なポインタを用いてストリームに一貫性を保つ)、すなわち格納の節約を含む。例えば、典型的なバックアップ及び復元システムでは、データはバックアップ間で1%だけ変化することがある。そのデータの1%だけをリポジトリへ追加し、残りのデータが検出される箇所へポインタを維持し、必用な空間の99%を効果的に節約することで、第2のバックアップをリポジトリへ追加することができる。
本実施形態の次のステップ(48)では、リポジトリの一致部分の識別等級をインデックスから取り除く。本ステップはインデックスから新規入力チャンクのより更新されたバージョンでもって現在置換された「旧」部分へのあらゆる参照を取り除くべく実行する。次のステップ(49)において、新規チャンクのn個の最も重要な識別特性をインデックスへ追加する。本実施形態では、Aの最大シードのハッシュ値がBのそれを上回る場合、識別特性Aは別の識別特性Bよりも有意味である。これは、殆どコスト無しで行われ、何故ならnは小さく、n個の値のそれぞれのハッシュテーブル内への除去と挿入がO(1)演算によって行うことができるからである。バージョンチャンクの処理を、ここで行う(404)。
図4中、一致が見つからなかった場合(すなわち、或る一致閾値未満のj個が見つかった場合)(401,402)、新規バージョンチャンクを或る代替処理によって処理し、何故なら類似リポジトリデータが検出されなかったからである(403)。一例では、バージョンチャンクはファクタリングを用いずにリポジトリ内に保管することができる。本実施形態のインデックス更新策によれば、バージョンチャンクの識別特性がインデックスに追加される(49)。処理(404)はそこで(前述の一致成功或いは一致失敗の経路のいずれかにおいて)終了し、新規バージョンチャンクの処理に至る。
本発明が前述した例のインデックス更新策により拘束されないことに、留意されたい。他の用例では、バージョンチャンクとその全ての一致リポジトリ部分の両方の識別特性の全てを保管することが適切かも知れない。さもなくばバージョンチャンクの識別特性の追加を排除し、或いは恐らくバージョンとリポジトリチャンクの識別特性との或る種の混合でもってインデックスを更新する。
特に本実施形態では、バージョンチャンクの識別特性が一致リポジトリ部分の特徴の全てに置き換わる場合、逆インデックスと呼ぶ別のインデックスを用いて妥当リポジトリ部分に関連する全ての識別特性(一部は恐らくバージョンチャンク識別特性とは一致しない)を識別する。逆インデックスはリポジトリ内の位置によって打ち込まれ、これらの位置をそれらの関連する識別特性へ写像する。この逆インデックスはまた、リポジトリの一部の欠損事例において主インデックスの整合性の維持を容易にする。
また、本発明はインデックスが空から始まるこの実施形態に拘束されないことに留意されたい。他の用例にあっては、リポジトリをチャンクへ分割し、それらの識別特性を算出し、この情報に基づいてインデックスを構築する前述の処理を介してリポジトリデータの既存体に基づきインデックスをロードすることが適切かも知れない。この種の場合、インデックスは前述した種のある種更新策に従って入来バージョンチャンクによりさらに更新することも或いはそうしないこともできる。
バージョンデータに類似するデータについてリポジトリを検索する計算処理の計算量はバージョンサイズ、すなわちO(バージョン)に比例し、リポジトリサイズとは無関係に設計されることは、強調しておきたい。この検索は、上記の非限定実施形態に従って、バージョンチャンクごとにそれぞれせいぜいk個のO(1)のハッシュテープ検索を必用とする。k<m(mはバージョンチャンクのサイズである)であるため、特定の実施形態によりリポジトリ内で類似チャンクを検出する計算上の計算量がO(バージョン)、すなわち識別特性算出の計算量を超えないことが有り、このことはリポジトリサイズとは無関係に真実である。類似データに対する検索手順はかくして、非常に大きなリポジトリについてさえ非常に効率的なものとなる。
さらに、インデックスに必用とされる空間がリポジトリの各チャンクごとに格納された識別特性の数とチャンクサイズとの間の比、すなわちnとmの間の比に比例することは強調しておきたい。一実施形態では、nが8で、mが32MBである場合、各識別特性の格納に必用な空間は16バイトであり、全部で128バイトを32MBの各リポジトリとにインデックス内に格納し、250,000:1を上回る比となる。換言すれば、4GBの随時読み書き可能メモリ(RAM)はそのメモリ内に1PBリポジトリに必用なインデックスを保持でき、インデックスの迅速な検索を容易にし、かくして任意の入力チャンクに関する非常に大きなリポジトリでの同様のデータの迅速な検出を容易にする。
前述した仕方で一致識別特性の識別に基づき類似チャンクを検出すると、類似チャンク間の厳密な差分の特定が関心事となろうことに、留意されたい。この種の場合、より詳細な比較(或いは補充)アルゴリズムを適用し、個別チャンクの全データ(n個の識別特性だけではない)を比較することができる。一般に、ただし排他的ではないが、この種のアルゴリズムの例は2値差分とバイト単位ファクタリング種アルゴリズムである。選択実施形態に都合よく使用できる改善された2値差分アルゴリズムを、以下に説明する。
補充アルゴリズムは、直前に記載した同期(類似性検索)アルゴリズムに比し(計算上のリソースの点で)効率は落ちよう。劣化した効率は、補充アルゴリズム中の所与のリポジトリチャンクの全データを処理するも、類似性検索アルゴリズムではチャンクに関連する一部データ(すなわち、識別特性を含むデータ)だけを処理するという事実から派生することがある。しかしながら、補充アルゴリズムはサイズmのたった一つのリポジトリチャンクにだけ、或いは恐らくは入力チャンクに充分類似するとして既に検出された少数のこの種のリポジトリチャンクに適用するが故に、劣化性能は選択アプリケーション内では比較的無意味なものとなろう。このことは、特に1PB以上のリポジトリ全体についての補充アルゴリズムの代替実行例とは対照的に特に真実である。
類似性検索アルゴリズムの前述の実施形態は、入力バージョンチャンクに対し大半の類似リポジトリチャンクを探索する最近隣クエリ種を解くインデックスの使用を例示するものである。本実施形態は、決して発明を限定するものではない。インデックスを用い、範囲クエリ等の他種のクエリを解くことができる。特定種のクエリは、特定用途によって決まる。
前述の類似検索のより良好な理解に向け、本発明の幾つかの実施形態を例示する説明を以下に続ける。本発明は、本例に拘束はされない。説明の便宜上、リポジトリは単一のチャンクを含み、本例は入力チャンクをリポジトリチャンクに十分類似するとして分類する仕方を例示することになる。
例1
ステップ1:リポジトリごとにインデックスを構築する。
本例は、以下のリポジトリストリングを使用する。すなわち、「Begin−at−the−beginning−and−go−on−till−you−come−to−the−end;−then−stop.」である。本ステップは、先のアルゴリズムの反復の副産物である。本例が理解しやすいよう、それはここに明示的に包含してある。
ステップ1a:ハッシュを算出する。
本例はローリングハッシュ関数を用いて各バイトオフセットごとにハッシュ値を算出する。それはモジュラーハッシュ関数を用い、これは例示目的に素数8388593を使用する。使用するハッシュ関数は、h(X)=Xmod8388593である。本例では、シードサイズは8バイトである。
入力ストリング:「Begin−at−the−beginning−and−go−on−till−you−come−to−the−end;−then−stop.」
算出ハッシュ値
ステップ1b:最大値を算出する。
最大ハッシュ値を有するn個のテキスト位置を、検出する。本例では、n=4について、これらは下記の如くなる。
ステップ1c:右方へ1文字移動させる。
先に記載したように、最大ハッシュ値自体は十分均一な確率分布を持たない。かくして、最大ハッシュ値の一つに対応する各シードごとに、ここでは続く1文字を有するシードのハッシュ値を使用する。本例の目的に合わせこれらのハッシュ値を識別特性として使用し、これらの部分と合わせそれらは本例のインデックスを構成する。
ステップ2:バージョンの一致をとる。
リポジトリは、「Start−at−the−beginning−and−continue−to−the−end;−then−cease.」と修正された。この修正されたリポジトリは、バージョンと見なす(一つしかチャンクを持たない本例により)。
ステップ2a:ハッシュを算出する。
入力ストリング:「Start−at−the−beginning−and−continue−to−the−end;−then−cease.」
算出ハッシュ値:
ステップ2b:最大値を算出する。
最大ハッシュ値を有するk個のテキスト位置を、検出する。本例では、k=8について、これらは下表の通りとなる。
ステップ2c:右方へ一文字移動させる。
先に記載した如く、最大ハッシュ値自体は十分均一な確率分布を持たない。かくして、ここでは続く1文字を有するシードのハッシュ値を用いることにする。これらの位置を識別位置として使用し、これらの8個のハッシュ値をインデックスの検索に用いる。
ステップ2d:一致をとる。
バージョンハッシュ値5615355(バージョン位置18)と6310941(バージョン位置35)と614663(バージョン位置6)とが、インデックス内で検出された。それらは、それぞれリポジトリ18,46,6内の位置に対応する。一つの一致が宣言され、すなわちアルゴリズムが、「start−at−the−beginning−and−continue−to−the−end;−then−cease.」を、「Begin−at−the−beginning−and−go−on−till−you−come−to−the−end;−then−stop.」に類似するデータであると識別し、対応位置を検出した旨である。
本例により、類似性閾値(識別特性の最小一致数)はj≧2であることに、留意されたい。この閾値を4に設定したとするならば、チャンクは十分類似すると見なされず、何故ならたった3個の一致しか検出されないからである。本例ではnを4に設定し、リポジトリチャンクの識別特性の数が4であることを意味し、kを8に設定し、バージョンチャンクにつき算出された識別特性の数が8であることを意味することにも、留意されたい。k>nに設定することで、検索は数7735648のリポジトリ位置に戻るが、これはリポジトリ内の第4の最大値から入力内の第5の最大値へ移動していて、かくしてkが4に設定(k=n)されたならば検出されることはなかった筈である。
本例は、たった一つのチャンクを保持するリポジトリの縮退事例における類似チャンクの検出法を例示するものである。しかしながら、多数のチャンクの識別特性を記憶するインデックスについてさえ、検索処理は依然として非常に効率的であり、何故ならインデックス(例えば、ここではハッシュテーブルとして格納)内の検索が大きなインデックスについてさえ非常に効率的な仕方で行われるからである。また、各インデックス入力について格納するデータは小さく(本例の場合、ハッシュ値と位置)、従って多くのアプリケーションでは、インデックスはコンピュータの内部高速メモリ(RAM)内に収容し、緩速入/出力演算を実行する必用性を取り除き、それによってインデックス内での検索を促すことができる。
(同期アルゴリズムの)計算量
バージョンチャンクのシードのハッシュを算出するのに必用な時間はチャンクサイズに線形であり、何故ならローリングハッシュを用いているからである。k個の最大値の算出に必用な時間はO(m・log(k))であり、これはkが小さいが故に妥当である。インデックスが2値ツリーである場合、k個の識別特性についてインデックスを検索するのに必用な時間はO(k・log(r))であり、ここでr=(R・k)/mはインデックス内の入力数であり、ここでRはリポジトリサイズ(最大約250)であり、kは小さく(通常23)であり、mはチャンクサイズ(通常225)であり、かくしてrは通常228であり、log(r)=28である。kは小さいため、インデックス全体の検索時間は容認し得る。インデックスがハッシュテーブルで表わされる場合、k個の識別特性についてインデックスを検索するのに必用な時間はk・O(1)となる。それ故、チャンク検索時間はそれが算出に必用とする時間と最大値の次数、すなわちO(m・log(k))により決まり、かくして少数のバージョンチャンクの線形走査と等価となる。kは小さいため、全体的な検索時間は容認し得る。この結果は総当たり攻撃アルゴリズムの計算量の一部をなし、O(R・m)すなわちリポジトリサイズRとチャンクサイズmの積となることに、留意されたい。
インデックス内へバージョンチャンクを挿入するのに必用な時間の計算量は、インデックスの検索に必用なものと同じである。n個の識別特性の算出に余計な時間は一切不要であり、何故ならこれらは既に算出してあるからである。
このアルゴリズムに関する空間要件は、インデックスが必要とするものである。各入力は所与の例ごとに16バイトのパラメータを有しており、それがキー(識別特性)と位置データとを含み、1PB内にはそれらの228(上記算出したrの値)が存在し、かくして1PBのリポジトリデータの管理に4GBのインデックスが必要となる。
本実施形態になるシステムは、適当にプログラムしたコンピュータにて実行することができる。同様に、本発明は本発明方法を実行するコンピュータにより可読のコンピュータプログラムを熟慮するものである。本発明はさらに、本発明方法を実行するマシンが実行可能な命令からなるプログラムを有形物として実施するマシン可読メモリを熟慮するものである。
2値差分アルゴリズム
二つのデータ間隔の共通部分を効率的に計算する新規の2値差分アルゴリズムを、ここで説明する。説明する実施形態では、アルゴリズムは先に説明した類似検索(同期)アルゴリズムの出力を用い、これが所与のバージョンチャンクについてバージョンとリポジトリデータ内の数対の一致する識別特性の位置を特定する。一対の一致する識別特性位置(一つはリポジトリ内にあり、一つはバージョン内にある)を、ここではアンカーと記述する。アンカーは整列配置とバージョン内に一致を含みそうもないさらなる処理リポジトリ間隔からの剪定に用いられ、かくしてバージョンチャンクに最も類似するリポジトリ間隔が絞り込まれる。このことで、アルゴリズムの処理時間が減る。
アンカーに基づき、対応間隔は十中八九は一致部分(同一データ)を含むバージョンとリポジトリ間隔対として規定される。2値差分処理を、これらの間隔対のそれぞれに使用する。リポジトリとバージョン窓を一致オフセット内に配置する代りに、スライド窓との類似物を用いることで、ここではそれらをアンカーに従って配置する(恐らくは、非一致オフセットにて)。
本アルゴリズムの一つの利点は、間隔対の一つの間隔に対するシード刻みサイズの使用である。既知の2値差分或いはデルタアルゴリズムは両間隔に対しバイト刻みで動かすが、本アルゴリズムは例えば一つの間隔(バージョン間隔)についてバイト刻みのみで動かし、他の間隔(リポジトリ間隔)についてはシードサイズ(例えば、複数バイト)刻みで動かす。この技法が、一致処理レートを減らすことなく処理速度を上げて空間要件を低減する(何故なら、逆方向と順方向の両方に一致処理が拡張されるからである)。本アルゴリズムの別の利点は、既知の2値デルタアルゴリズムが追加と複写の両指令を生成する一方で、本アルゴリズムを用いて並べ替え順で複写指令だけを生成できる点にある。追加指令は、そこで必用に応じて複写指令から暗黙のうちに導出し、かくしてアルゴリズムの出力に必用なストレージを低減することができる。
以下の表は、本実施形態に使用するシンボルを規定するものであり、図7と図8は要素を図解的に説明するものである。
図9は、アンカー集合上で作動する2値差分処理の一実施形態のステップを示す高レベル(概観)フローチャートである。図10は、アンカー集合内で作動するアルゴリズムを示すより詳細なフローチャートである。図11乃至図14は、本実施形態になるバージョン間隔とリポジトリ間隔の演算例を示す。
説明した実施形態内の入力は、バージョンチャンクと、バージョンチャンクに関連するバイトオフセットのハッシュ値列と、バージョンチャンクとリポジトリデータとを連結するアンカー集合である。後者の二つの入力は、同期(類似性検索)アルゴリズムにより生成される。2値差分アルゴリズムの出力は、バージョンチャンクとリポジトリデータ内の一致(すなわち、同一)間隔対集合となる。一対の一致間隔は、複写間隔として表記される。各複写間隔は、バージョンとリポジトリ内の関連間隔の開始オフセットと間隔サイズとを含む複写指令としてコード化することができる。この複写命令は個別(非重複)バージョン間隔を指し、降順バージョンオフセット順序にて並べ替えしたアルゴリズムにより生成される。
図9中、フローチャート(80)は2値差分アルゴリズムの一実施形態を実行するステップを示す。図示の如く、処理は類似性検索からのアンカーとバイトオフセットのバージョンチャンクのハッシュ値を入力として受信する(81)ことで開始される。次に、アンカー集合を算出(82)する。これは、以下のステップ1において説明した如く達成することができる。そこで、第1のアンカー集合(83)を用い、別のアンカー集合上で2値差分アルゴリズムを実行する。これは、図10について記載する如く達成することができる。本処理は、バージョン内にもはやアンカー集合が存在せず、処理が達成(87)されるまで、追加のアンカー集合(84〜86)について反復する。
より詳細な説明を、ここで図10〜図14について述べることにする。図10中、フローチャート(90)はアンカー集合に対し施す2値差分アルゴリズム演算(図9のステップ84)の一実施形態を示す。図11〜図14は、バージョンチャンク120と対応リポジトリデータ118の一間隔に対する演算手順を示す。この間隔は現アンカー集合122として表記され、バージョンチャンク120の識別特性124の複数位置を含み、その一部がリポジトリデータ118内に一致識別特性125を有する。
ステップ1−アンカー集合(図9の82)を計算する。アンカーをそれらのバージョンオフセットの昇順に並べ替える。順列配置したアンカーを横断し、それらに以下の如くアンカー集合を関連付ける。一対の連続するアンカーAiとAi+1は、それらが同じリポジトリオフセット推定子を有する場合、同一アンカー集合内にあり、ここでは例えば
|[O(Ai+1V)−O(AiV)]−[O(Ai+1R)−O(AiR)]|≦C
により与えられ、ここでCは所望の挙動特性(計算量に関連して以下にさらに説明)に合わせ選択した定数である。連続するアンカー対が同じ集合に所属する限り、それを現集合へ追加する。連続対が同一集合に所属しないときは、現集合を閉じ、新集合を開き、最新のアンカーを新集合内に追加する。このステップの出力を{ASj}1mで記述し、ここでmは被識別非接合アンカーの数である。図7は、バージョン120とリポジトリ118とを連結する二つのアンカーAiとAi+1を含むアンカー集合ASjを示す。図11乃至図14は、バージョン120とリポジトリ118内の現アンカー集合122を示す。{ASj}1m内の各アンカー集合ごとに、以下に説明するステップ2〜6(図9のステップ84)を実行する。ASjは現アンカー集合であるとする(図10のステップ91)。
ステップ2−バージョン間隔を計算する(図10の92)。バージョン間隔IjVは、現アンカー集合ASj(図7参照)に関連する。間隔IjVは先のバージョン間隔Ij−1V上の2値差分処理の実行により生成される最新の複写指令の右方オフセットの1バイト後か、又はチャンクの始端(先のアンカー集合ASj−1が全く存在しない場合)で始まり、ASj+1内の最左方のアンカーよりも1バイト前か、又はチャンクの終端(ASj+1が全く存在しない場合)で終る。
ステップ3−リポジトリ間隔を算出する(図10のステップ93)。リポジトリ間隔IjRは、現アンカー集合ASjに関連付けられる。AlR(図11中、lは124bである)を最左方のアンカーASjとし、ArR(図11中、rは124gである)を最右方のアンカーASjとする。そこで、IjR=[O(AlR)−(O(AlV)−LO(IjV)),O(ArR)+(RO(IjV)−O(ArV))]となる。ここで、間隔対IjV,IjRを、対応間隔と呼ぶ。図8は、それぞれが個別アンカー集合A〜Dに関連する4対の対応間隔(バージョン120とリポジトリ118との間に破線で接続してある)を示す。各対の対応間隔と本ステップ内で算出されたIjV,IjRについて、以下に詳述する2値差分処理(ステップ4,5,6)を施す。
本アルゴリズムはファクタリングアプリケーションの一部であり、対応するリポジトリ間隔IjRがリポジトリからメモリ内に読み込まれ(図10のステップ94)、IjV内のデータとIjR内のデータとの比較が可能になる。
ステップ4(図12参照)−一致アンカーを拡張する(図10のステップ95)。一致処理を、現アンカー集合ASjのアンカー周りに順方向と逆方向に拡張し、これらの一致を複写指令としてコード化する。バージョン120内の領域128及びリポジトリ118内の領域129により図12に示したこれらの一致を、一致アンカーと呼ぶ。これらの複写指令は、一時指令バッファ内に格納する。本ステップの出力を集合{CiR}1n,{CiV}1nで表わし、ここでnはアンカー集合内のアンカー数である。
ステップ5(図13参照)−リポジトリ間隔ハッシュ値をハッシュテーブルにロードする(図10のステップ96)。IjR内にあるリポジトリアンカー(129)の拡張を除き、IjR内の全ての連続する非重複シードのハッシュ値(図13の領域130)を算出し、それらをRHashTと呼ぶハッシュテーブル内に保管する。
ステップ6(図14参照)−一致を検索する(図10内のステップ97〜105)。Ij+1V内の各連続する(バイトオフセットでもって)シードごとに、IjR内に在るアンカーの拡張(図14の領域128)を排除する。そのハッシュ値を検索(これらのハッシュ値が同期アルゴリズムの製品からの入力として受信されたことを念頭に置かれたい)し、RHashT内でそれを検索する(図10のステップ98)。一致が検出された場合、バージョン内で先の複写指令又は次の一致アンカー或いはIjVの始端及び終端と重複しない最大の拡張(図14の領域134と136)へそれを順方向と逆方向に拡張(図10のステップ99)し、それを複写指令としてコード化し、それを出力する(図10のステップ100)。バージョン内で一致アンカーに到達した場合(図10のステップ101)、一時的指令バッファ内に格納されたその対応複写指令を出力し(図10のステップ102)、処理対象である次のシード(図10のステップ104)をそのバージョン内での一致アンカーの後に配置する第1のシードとする。一致アンカーに全く到達せず、IjVの終端にも到達しない場合(図10内のステップ103)、そのときはIjV内の処理対象(図10のステップ104)である次のシードが以下に規定する次の未一致シードとなる。現シードが一致しなかった場合、そのときは次の未一致シードは現シードの第1バイトの1バイト後に始まる。他方で、現シードが一致し拡張された場合、そのときは次の未一致シードは前記拡張内に含まれる最終シードの最終バイトの1バイト後に始まるものとなる。IjVの終端に達した場合(図10のステップ103)、そこでこのアンカー集合ASjと関連する対応間隔の処理を行う(図10のステップ105)。次のアンカー集合が全く存在しない場合(図9のステップ85)、バージョンチャンクの2値差分処理は完了する(図9のステップ87)。さもなくば、処理は前記に詳述したステップ2から次のアンカー集合ASj+1(図9のステップ86)へ続く。
計算量(2値差分)
ストレージ:本願明細書に記載した2値差分アルゴリズムの実施形態は固定サイズハッシュテーブル(RHashT)を使用しており、そのサイズはシードサイズにより分割されたチャンクサイズに比例し、何故ならチャンクサイズはリポジトリ間隔サイズの上限であるからである。かくして、テーブルサイズはチャンクサイズに準線形となる。加えて、一致アンカーを示す複写指令の一時的記憶が必要である。これは、チャンク内のアンカー数、すなわちその識別特性の数に比例し、それは少ない。それ故、アルゴリズムの総記憶要件はチャンクの長さに準線形となる。
時間:一致アンカー(ステップ95)の拡張とRHashTへのリポジトリハッシュ値のローディング(ステップ96)の位相は、対応間隔上で一つの線形パスを要する。RHashT内でのバージョンハッシュ値の検索位相(ステップ98)とそれらの検出一致の拡張位相(ステップ99)は、その最悪の場合の時間が対応間隔長の二次式である貪欲算法アルゴリズムに類似する。しかしながら、ハッシュテーブルチェーンの長さを固定サイズに制限することで、この位相の所要平均時間は対応間隔上で1乃至ハッシュチェーン線形パス長の間とされる。稼動時間がバージョンとリポジトリ間隔との間の類似(同一データ)度の関数でもあることに、留意されたい(類似性があるほど、所要時間は少なくなる)。連続する対応間隔の重複の処理にかかる余分な時間が、存在する。これに続き、所要平均総時間は対応間隔上の2回の線形パスとなる。
本願明細書に開示したこのシステムと方法は、例えばコンピュータ等のデータプロセッサを含む様々な形態にて実施することができる。さらに、本発明の上記特徴と他の態様と原理は、様々な環境にて実装することができる。この種の環境と関連アプリケーションは本発明になる様々な処理や演算を遂行するよう特別に構成でき、或いはそれらに必用な機能性を提供するコードにより選択的に起動或いは再構成する汎用コンピュータや計算プラットホームを含めることができる。本願明細書に開示した処理は何らかの特定のコンピュータや他の装置に元々関連するのではなく、ハードウェアとソフトウェア及び/又はファームウエアの適切な組み合わせにより実行することができる。例えば、様々な汎用マシンに本発明教示に従って書き込むプログラムと共に使用できるようにしたり、或いは特化した装置或いはシステムを構成して要求された方法や技法を遂行させる上でより便宜を図ることもできる。
本発明に整合するシステムならびに方法には、本発明の方法ならびに処理に基づき様々なコンピュータ実行可能処理を実行するプログラム命令或いはコードを含むコンピュータ可読媒体を含めることもできる。媒体とプログラム命令は本発明の目的に合わせ特別に設計し構成したものとするか、或いはコンピュータソフトウェア技術の当業者によく知られ利用可能な種とすることができる。さらに、コンピュータ可読媒体は搬送波上の信号の形をとらせるか、或いはディスク等の記憶媒体の形をとらせることができる。プログラム命令の例には、コンパイラが生成する等の例えばマシンコードや変換器を用いてコンピュータが実行できる高レベルコードを含むファイルが含まれる。
図15に示す如く、データプロセッサ300は入力305を受け取り、中央処理装置320と記憶モジュール350及び/又は入/出力(I/O)モジュール330とを含めることができる。入/出力モジュール330には、ディスプレイ335とキーボードとマウスと入力記憶デバイスとプリンタ336とネットワークインタフェース338とを含む1以上の入/出力デバイスを含めることができる。ネットワークインタフェースにより、データプロセッサを通信チャンネル等のネットワークを介して通信させることができる。中央処理装置は、例えば以下のうちの1以上を含めることができる。すなわち、中央処理装置とコプロセッサとメモリとレジスタと適当な他の処理デバイスやシステムである。
記憶装置は、例えばハードドライブや光学ドライブや汎用記憶デバイスや挿脱式記憶デバイス及び/又はメモリを含むストレージを提供することのできる様々な構成要素或いは下位システムで実施することができる。
本願明細書に記載した本発明方法及びシステムの各種実施形態は、リポジトリ内に既に存在する入力ストリーム内のデータ識別に有用である。この種のシステムと方法を用いる製品には、先刻バックアップしたが故に変化していないバックアップデータを繰り返し記憶させないことでディスク記憶空間を節約する対ディスクバックアップ製品が含まれる。これにより、同じリポジトリに複数のバックアップを保管するときに末端ユーザディスク空間が節約される。
本発明の本システムならびに方法は、ストレージ機器や人工知能付き交換機やサーバやソフトウェアアプリケーションに含めることができる。この方法とシステムは、他の構成要素を含む派生製品と抱き合わせることができる。サービスプロバイダは、このシステムと方法を利用し、説明した能力をサービスとして提供することができる。このシステムと方法は、データ保護マーケットにおいて、例えばバックアップや復元や複製や跳躍や媒体管理に特に有用となろう。他の実装には、主ストレージにおける使用を含めることができる。
本願明細書に記載するシステムと方法は、管理されたストレージ媒体と管理されたリポジトリ内のデータ表現とに関するものである。これには、ディスクやテープや時間経過しても市場で生き残れる他の形式の記憶媒体が含まれる。本発明は、ディスクや固定媒体に限定されず、挿脱式媒体にも適用可能である。例えば、挿脱式ディスクはターゲット出力デバイスとして使用することができる。それは同様にテープに対しても管理でき、両者は挿脱式媒体となる。
テープ等の挿脱式媒体を含むシステムの設計に対する一つの手法は、ディスクを最大の基準とするチャンクや要素に対する保管場所として動作させ、最小基準とするチャンクをテープ媒体上へ移動させることである。これは、全てのチャンクの新しさを考慮する管理システムによりバランスさせ得る。また、このシステムは一集合として書庫から保管し再生する集合全体として関連リポジトリチャンクをテープへ移動させることができる。このことで、本発明の利点は倍加する筈である。例えば、本発明を用いずに100片の媒体の使用が要求されたとするならば、そのときは本発明の使用後に例えば10片の媒体しか必用ない。この媒体は、それ自体がリポジトリとして記述される仮想媒体から構成することができる。
本願明細書に記載した同期アルゴリズムと2値差分処理アルゴリズムの様々な実施形態は、バージョンサイズについて線形の実行時間と一定(チャンクとアンカー集合のサイズに依存)の空間とを有する。アルゴリズム間の算出値の再利用が、計算時間を節約する。
説明した実施形態はまた、二つのメモリ階層構造の使用を示している。同期アルゴリズムは入力データに関する一集合の代表(例えば、ハッシュ)値を計算して一時記憶し、そこから一集合の識別特性を導出してリポジトリ内の類似データ領域を識別し、一旦入力データをリポジトリ内に保管したならばこの識別特性をインデックス内に格納する。一時的ストレージ内の入力データの表現値は、そこでリポジトリデータに一致する厳密なデータを識別する2値差分処理アルゴリズムに使用することができる。2値差分アルゴリズムはリポジトリ内で問題のデータ領域に関する一集合の代表(例えば、ハッシュ)値を計算し、入力データの代表値との比較用にこの種の値をメモリ内に一時保管する。リポジトリデータと入力データの対応間隔を処理することで、代表値の保管に比較的少量のメモリを使用することができる。また、一致したデータセグメントは入力データの位置順序にて生成され、このことで並べ替え時間と記憶要件が節約される。
さらに、同期アルゴリズムと2値差分アルゴリズムからなる本願明細書に記載した実施形態は、ペタバイトサイズリポジトリへスケーリングする。様々な実施形態において、インデックスサイズに対するリポジトリサイズの比は最大で250,000対1であり、4GBインデックスを1PBリポジトリを表わすようにでき、このインデックスを市販商品種のコンピュータのメモリ内へ適合させることができる。ハッシュテーブルをインデックスとして使用した場合、インデックスの検索は一定時間及び一定空間O(1)演算であり、探索処理は最大1PBまでのリポジトリについてリポジトリサイズとは独立したものとなる。リポジトリが1PBに限定されない場合、そのときは2値ツリー或いはBツリーをそのインデックス用に用いることができる。インデックスのサイズは、依然としてリポジトリより250,000対1ほど小さなものであり、インデックス検索はO(log(m/250,000))を用いる演算であり、ここでmはリポジトリサイズである。1PBのリポジトリでは、mは250であり、かくしてlog(m/250,000)は32となる。
本願明細書に記載したシステムならびに方法は、入力データをリポジトリ内にある部分とそうでない部分とに区画することでリポジトリについて入力データの大規模な損失のないデータ低減を実行するデータ記憶システムを提供することができる。区画処理は、2段階の処理によって行われる。すなわち、
(1)入力データの各チャンクについて、それに類似するデータを含むリポジトリ内の全領域を検出し、
ここで、この検出処理はまた大雑把な類似性推定をもたらし、類似性レベルの等級化能力を提供する。
たとえリポジトリが非常に大きくとも、インデックスとメモリを使用して検出処理が行え、
インデックスサイズに対するリポジトリサイズの比は最大250:000:1であり、
各領域内で検出した場合、検索は対応する1以上の実際の場所を検出し、
(2)検出された全領域について、リポジトリ内で最も類似する領域と2値差分とを、
リポジトリのその部分をメモリ内に読み込み、入力チャンクをリポジトリ内の一部と比較して厳密な変化を検出し、その一方で実際の対応場所を案内として使用し、
その出力を前記被識別区画とすることで選択する。リポジトリ内で検出された入力データ内のデータは、再度格納する必要はない。入力データの特性は、インデックスに付加することができる。
本願明細書に記載した2値差分処理アルゴリズムの各実施形態は、幾つかの利点を有する。一致識別特性は、2値差分処理工程用の基準フレームから、このフレーム内の論理的区画(例えば、アンカー)からと同様(インデックスの)類似性検索によりもたらされる。2値差分処理アルゴリズムはハッシュテーブルをたった一つしか必用とせず、このハッシュテーブルは小さく、何故ならそれは問題のリポジトリデータセグメントの各シードごとにたった一つの値しか格納しないからである。各下位シードステップ(例えば、バイト)での入力データの表現値は既知であり、何故ならそれらはインデックス検索期間中に算出されているからである。2値差分処理工程のコスト増分は小さく、それは入力データのサイズにおいて線形である。リポジトリハッシュテーブルが各下位シード間隔(例えば、バイト)にて検索するため、2値差分処理が不整列配置データを検出する。
様々な実施形態中、入力データと、類似する被識別リポジトリの領域とを比較する線形時間と定数空間O(1)処理との実行に2値差分処理法を用いることができる。本処理は先に算出された類似性検索の結果と、シードサイズの係数だけリポジトリ内の被識別領域よりも小型であるたった一つのリポジトリハッシュテーブルを用いる。2値差分処理は、それがたとえ交換され或いは不整列であったとしても、同一データを検出する。それは少なくともシードサイズの長さである全ての同一データを検出し、ここではハッシュテーブルは十分大である。本処理は、入力データ内のそれらの出現順に検出された入力データ内の下位領域のリストを導出する。
本発明の別の実施形態では、バージョンデータすなわち新規データは一つのシステム又はコンピュータ上に配置できるが、リポジトリは第1のシステムとは異なる別のシステム又はコンピュータ上に配置することができる。この種の筋書きでは、デルタ情報は第1のシステムと第2のすなわち遠隔システムとの間の通信を介して特定しなければならない。前記した如く、大量のデータを管理し、かくしてシステムに使用する帯域は可能な限り最小化しなければならない。本発明の一態様によれば、最低量の帯域を用いて新規データ或いはバージョンデータから遠隔位置に位置するリポジトリの更新を達成する。
図16に示す如く、図1に示したものに類似のシステム(1600)はネットワーク(1601)を含み、これが前記した如くSAN或いはTCP/IP準拠ネットワークとし、サーバA(1602)とサーバB(1604)とサーバC(1606)とサーバD(1608)との間の通信を提供することができる。例示目的にだけ、サーバB(1604)はそれにリポジトリB(17)を結合してあり、その一方でサーバD(1608)はそれにリポジトリD(17)を結合してある。リポジトリD(17)はリポジトリB(17)の鏡像やバックアップや複製複写の全て或いは一部とすることができ、かくしてその上に同じ情報を保管する。サーバA(1602)とサーバC(1606)は、個別リポジトリを持たない。
一つの例示筋書きでは、サーバA(1602)は新規データとバージョンデータを有し、リポジトリB(17)は前記した如くそこに保管したリポジトリデータとリポジトリチャンクとを有する。
例示文脈では、サーバA(1602)はリポジトリB(17)に保管する必要のある新規データを有する。前述の説明から、新規データの差別特性或いは識別特性集合を算出し、インデックス検索に使用して新規データすなわちバージョンデータに類似のリポジトリデータの位置を検出するようサーバB(1604)へ転送し、リポジトリB(17)から旧データすなわち類似データを検索し、新規データと旧データを比較してデルタすなわち差分を特定することを、理解されたい。
サーバA(1602)は新規データを含むため、デルタを特定するために、リポジトリB(17)からの類似データをサーバA(1602)を介して送信すべきことをここで決定し得る。しかしながら、この送信はネットワーク(1601)の帯域の大半を占め得る。一旦サーバA(1602)がデルタを特定すると、リポジトリB(17)を更新すべく、サーバA(1602)からネットワーク(1601)を介してサーバB(1604)へデルタ情報を送信してリポジトリB(17)の更新に使用するようにしなければならない。
本発明の一実施形態の一態様によれば、リポジトリB(17)の更新に必要な帯域は低減される。都合よくは、リポジトリB(17)からの類似データはデルタ情報を特定すべくサーバA(1602)に送信することはない。
本発明の一実施形態に従い最小帯域使用でもってリポジトリB(17)を更新する処理方法を、図17に示した方法(1700)についてここで説明することにする。ステップ(1702)において、バージョンすなわちサーバA(1602)上の新規データに関する特性集合をサーバA(1602)にて局所的に算出する。サーバA(1602)は、ステップ(1704)において特性算出集合をサーバB(1604)へ送信する。遠隔サーバ、この場合サーバB(1604)は、受信した特性との一致を検索し、ステップ(1706)においてリポジトリB(17)が保持する1以上の類似データチャンクを識別する。ステップ(1708)において一致が検出された場合、制御はステップ(1710)へ進み、そこでサーバB(1604)はリポジトリB(17)から類似データチャンクを検索する。
リポジトリB(17)内で検出される新規データと識別類似遠隔データとの間の差分を特定すべく、ステップ(1712)では、低通信コストの遠隔差分処理の修正バージョン、例えばrsyncユーティリティを用いる。rsync等の修正された既存の遠隔差分処理を用いることで、デルタ情報の識別に使用するネットワーク帯域の量は著しく減ることになる。
修正された遠隔差分処理は、全ての新規データと全ての被識別類似データを同じシステム上に持たねばならないことはなく、新規データと被識別類似遠隔データとの間の差分を特定する。修正された処理の結果、ネットワーク上で送信しなければならないデータ量が低減される。作動時、幾つかの異なる遠隔差分処理のいずれか一つをこのアプリケーション用に修正することができる。
かくして、修正された遠隔差分化工程の一実施形態では、新規データと被識別類似遠隔データのハッシュを、ローカルシステムとサーバA(1602)と遠隔システム(17)とサーバBとがそれぞれ同じアルゴリズムを用いて算出する。これらのハッシュをそこで比較し、異なるハッシュが異なる個別データの代表的部分を表わす。異なる部分に関するデータを、そこでサーバAからサーバBへ搬送してリポジトリBに保管する。ハッシュの生成と比較が、データ内の差分特定に必要なデータ帯域の量を低減する。
ステップ(1712)に続き、デルタデータを識別し、ステップ(1714)にてそのリポジトリB(17)を更新すべきと特定された場合、制御はステップ(1716)へ進み、そこで遠隔リポジトリB(17)が前述した説明に従って更新される。
ステップ(1708)へ戻るに、一致が検出されない場合、制御はステップ(1714)へ進み、そこでリポジトリB(17)を更新する決定がなされ、更新を一切行わない場合、そのときは制御はステップ(1718)へ進む。
別の動作筋書きでは、サーバA(1602)がサーバC(1602)へ搬送する必要のある新規データすなわちバージョンデータを有する状況があり得る。システム(1600)に示す如く、サーバA(1602)もサーバC(1606)もリポジトリを含まない。新規データの量が非常に大量である場合、本発明の一実施形態では、サーバA(1602)からサーバC(1606)へ新規データを搬送するのに必要なデータ帯域量を最小化する。
ネットワーク(1601)の最低量の帯域を用いてサーバA(1602)からサーバC(1606)へ新たなデータを送信する方法(1800)を、図18を参照して説明することにする。ステップ(1702〜1712)は、図17に関して既に前記したものと同じである。ステップ(1712)に続き、ステップ(1802)において、サーバA(1602)は第2のシステムすなわちサーバC(1606)へデルタ情報と類似データの識別子情報とを送信する。類似データの識別子情報には、リポジトリデータが配置されたリポジトリの位置、この場合リポジトリB(17)に関する情報と、サーバB(1604)のIPアドレスであるリポジトリB(17)のアドレスと、類似するとして識別された特定リポジトリの一つのチャンク或いは複数のチャンクに関する情報、例えば基準レベルと、ステップ(1712)にて差分すなわちデルタ情報が生成されたリポジトリB(17)の状態に同期するタイムスタンプ識別子とが含まれよう。このタイムスタンプ情報は、サーバC(1606)による後続の動作がステップ(1712)にて差分を特定する同一状態を有するリポジトリB(17)についてなされることを保証するのに必要とされよう。
ステップ(1804)において、第2のシステムすなわちサーバC(1606)がサーバA(1602)から受信した情報を用い、リポジトリB(17)から被識別類似データチャンクを検索することになる。一実施形態では、サーバC(1606)は被識別リポジトリチャンク全体を要求し、サーバA(1602)から受信したデルタ情報でもって変化部分を置換することができ、或いはサーバC(1606)は変化しなかったリポジトリデータの一部だけをリポジトリB(17)から要求し、そこでサーバA(1602)からのデルタ情報を合成してサーバA(1602)の新規データに達することができる。
都合よくは、サーバA(1602)は、リポジトリB(17)に格納された類似データに関する識別子情報と共にデルタ情報を送信するだけで最小量の帯域を用いて新規データをサーバC(1606)へ搬送することができる。
本方法1600の代替実施形態について、図18を参照しながら、ここで説明する。この代替筋書きでは、受信サーバC(1606)はサーバA(1602)から送信されるデータを再生すべく、ステップ(1804)において、リポジトリB(17)にアクセスする代りにリポジトリD(17)へアクセスする。サーバC(1606)はリポジトリD(17)がリポジトリB(17)と同じデータを有することを知っており、幾つかの理由からリポジトリD(17)から類似データを得ることがより良い選択肢であると判定する。これらの理由には、システム負荷特性やシステムの利用可能性やシステム応答時間やシステム品質サービスレベル契約のうちの1以上が含まれよう。サーバC(1606)とシステムD(1608)とリポジトリD(17)との間の調整は、前記したサーバC(1606)とサーバB(1604)とリポジトリB(17)との間の調整と同じ筈である。一旦サーバC(1606)がリポジトリD(17)から情報を検索すると、リポジトリD(17)を更新し、サーバC(1606)を介してサーバA(1602)から受信した現在のデータを反映させることができる。
さらに別の実施形態では、一旦サーバB(1604)とリポジトリB(17)がサーバA(1602)からの差分データでもって更新されると、リポジトリD(17)はサーバB(1604)とリポジトリB(17)とのトランザクションにより更新することができる。
無論、サーバC(1606)とサーバD(1608)がシステムの簡略化と効率の理由から同じコンピュータで構成できることを、当業者は理解しよう。
本発明の他の実施形態は、本願明細書に開示した本発明の明細書と実例を検討することから当業者には明らかとなろう。本発明範囲は添付特許請求の範囲により指示され、明細書と実施例は例示としてのみ考慮されることを意図するものである。
本発明の幾つかの記載実施形態に有用である例示バックアップ及び復元システムの一般的システムアーキテクチャを示す図である。 本発明の一実施形態になる入力バージョンデータストリームを処理する例示ステップを示すフローチャートである。 一実施形態により入力バージョンデータのデータチャンクを処理するより詳細な手順ステップを示す図である。 一実施形態によりリポジトリ内でバージョンチャンクの位置を検出するより詳細な手順ステップを示す図である。 一実施形態によりバージョンチャンク内のシードとリポジトリチャンク内のシードとの間の対応性を概略示す図である。 識別特性がデータ変化にも拘わらずほぼ維持できる仕方を示す特定例の類似性検索の結果を示す三次元グラフを表わす図である。 2値差分アルゴリズムの一実施形態に使用するシンボルを規定するバージョン及びリポジトリ内の対応間隔を表わす概略図である。 アンカー集合を示すバージョンとリポジトリの対応間隔を表わす概略図である。 本発明の一実施形態によりアンカー集合を算出し、各アンカー集合に対し2値差分化処理を施す例示ステップを示すフローチャートである。 一実施形態になるアンカー集合を処理するステップのより詳細な手順を示す図である。 本発明の一実施形態になるアンカー集合内のアンカーを示すバージョン及びリポジトリを表わす概略図である。 アンカー周りでの一致の拡張ステップを示す図11の同一のバージョン及びリポジトリを表わす概略図である。 リポジトリ内の拡張されたあんかー間のハッシュ値の算出ステップを示す図11の同一のバージョン及びリポジトリを表わす概略図である。 バージョンとリポジトリ内での一致と対応する一致とを拡張するステップを示す図11の同一のバージョン及びリポジトリの概略図である。 例示システム環境を示す図である。 代替汎用システムアーキテクチャを示す図である。 最小帯域を用いて遠隔リポジトリを更新する例示ステップを示すフローチャートである。 一つのシステムから別のシステムへのバージョンデータの例示転送ステップを示すフローチャートである。
符号の説明
17 データリポジトリ
44 インデックス
50 リポジトリチャンク
51 入力データチャンク
52 リポジトリデータチャンク
53 リポジトリ
55i〜59i,55r〜59r 識別特性
1602 第1の位置(サーバA)
1604 遠隔位置(サーバB)

Claims (78)

  1. リポジトリデータ内で入力データを識別する方法で、前記リポジトリデータがリポジトリデータチャンクを含み、前記入力データが入力データチャンクを含み、前記各リポジトリデータチャンクが対応する1以上のリポジトリデータチャンク識別特性(RDC)集合を有する前記方法であって、前記各入力データチャンクごとに、
    1以上の入力データチャンク識別特性(IDC)集合を特定するステップと、
    被特定IDC集合を1以上のRDC集合と比較するステップと、
    前記1以上のRDC集合に対する前記被識別IDC集合を比較する関数として前記入力データチャンクに類似するリポジトリデータチャンクを識別するステップとを含む、ことを特徴とする方法。
  2. 個別チャンクの全データを比較することで前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を特定するステップをさらに含む、請求項1記載の方法。
  3. 前記入力データは第1の位置に配置してあり、前記リポジトリデータは遠隔位置に配置してあり、前記方法はさらに、
    前記第1の位置のIDC集合を特定するステップと、
    前記被特定IDC集合を前記第1の位置から前記遠隔位置へ送信するステップと、
    前記被特定IDC集合を前記遠隔位置の前記1以上のRDC集合と比較するステップとを含む、請求項1記載の方法。
  4. 前記第1のデータチャンクを全て前記遠隔位置へ送信することなく、かつ前記被識別類似リポジトリデータチャンクを全て前記第1の位置へ送信することなく、前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの1以上の差分を特定するステップをさらに含む、請求項3記載の方法。
  5. 1以上の被特定差分でもって前記遠隔位置を更新するステップをさらに含む、請求項4記載の方法。
  6. 前記第1の位置は第1のコンピュータであり、前記遠隔位置は前記第1のコンピュータとは異なる遠隔コンピュータであり、前記第1のコンピュータと前記遠隔コンピュータは互いにネットワーク接続通信状態にあり、
    前記リポジトリデータを、前記遠隔コンピュータを介してアクセスするデータリポジトリ内に格納する、請求項5記載の方法。
  7. RDC集合に対するIDCの集合の類似性識別は類似性閾値の関数である、請求項1記載の方法。
  8. 前記IDC集合内の所定数の前記識別特性がRDC集合内で検出されたときに前記類似性閾値に合致する、請求項7記載の方法。
  9. 識別特性集合の特定ステップは、
    個別データチャンク内で1以上のデータ部分を識別するステップと、
    個別データチャンクの1以上のデータ部分のそれぞれについて算術的ハッシュ値を算出するステップとを含む、請求項8記載の方法。
  10. 集合内でk個の最大算術ハッシュ値を特定するステップで、kが所定数である前記ステップと、
    前記k個の最大ハッシュ値のそれぞれについて個別データ部分を識別するステップと、
    識別特性集合を前記k個の最大算術的ハッシュ値のそれぞれに対応する前記各データ部分に対する次の連続するデータ部分の算術的ハッシュ値と特定するステップとをさらに含む、請求項9記載の方法。
  11. 前記被特定差分をリポジトリ内に格納するステップをさらに含む、請求項2記載の方法。
  12. 1以上の差分を特定するステップが2値差分の特定とバイト単位でのファクタリングとのうちの少なくとも一方を含む、請求項11記載の方法。
  13. 前記識別特性はハッシュ関数とローリングハッシュ関数とモジュラーハッシュ関数のうちの一つにより特定する、請求項1記載の方法。
  14. 前記RDC集合はインデックス内に2値ツリーとBツリーと並べ替えリストとハッシュテーブルのうちの少なくとも一つとして格納する、請求項1記載の方法。
  15. 前記リポジトリデータチャンクと前記入力データチャンクは複数のシードを備え、該各シードが基本要素の連続系列であって同じシードサイズsを有しており、前記識別特性が前記個別チャンクのシードの選択された部分集合のハッシュ値である、請求項1記載の方法。
  16. 前記シードが重複シードを含む、請求項15記載の方法。
  17. 前記方法は、データファクタリングとデータバックアップとの少なくとも一方に使用する、請求項1記載の方法。
  18. 前記類似リポジトリチャンク特定ステップは前記リポジトリの大きさとは無関係でかつ前記入力データの大きさとは線形の時間内に実行する、請求項1記載の方法。
  19. 入力データに類似するデータについてリポジトリデータ内で検索する方法であって、
    前記リポジトリデータを1以上のリポジトリチャンクに分割するステップと、
    前記各リポジトリチャンクごとに、リポジトリ識別特性(RDC)の対応集合を算出するステップで、該各RDC集合が少なくとも一つの識別特性を有する前記ステップと、
    前記各RDC集合に関連するインデックスと対応するリポジトリチャンクとを保持するステップと、
    前記入力データを1以上の入力チャンクに分割し、該各入力チャンクごとに、
    入力識別特性(IDC)の対応集合を算出するステップで、該IDC集合が少なくとも一つの識別特性を含む前記ステップと、
    前記IDC集合を前記インデックス内に格納した1以上のRDC集合と比較するステップと、
    前記IDC集合内の識別特性の類似性閾値jが前記インデックス内に格納されたRDC集合内に検出された場合、前記入力チャンクと前記対応するリポジトリチャンクとの間に類似性が存在すると特定するステップとを含む、ことを特徴とする方法。
  20. 前記RDC集合と前記IDC集合のそれぞれは、
    前記個別データチャンクを複数のシードへ区画するステップで、該各シードを前記個別データチャンクの小部分としてシード系列にて順列配置する前記ステップと、
    前記各シードに対しハッシュ関数を適用して複数のハッシュ値を生成するステップで、前記各シードが一つのハッシュ値を生み出す前記ステップと、
    前記複数のハッシュ値の部分集合を選択するステップと、
    前記選択されたハッシュ値の部分集合に対応して前記シード系列内の前記シードの位置を特定するステップと、
    前記被特定位置に対し関数を適用して前記シード系列内の対応する他の位置を特定するステップと、
    前記識別特性集合を前記被特定の他の位置における前記シードのハッシュ値として規定するステップとにより得る、請求項19記載の方法。
  21. 前記ハッシュ値の部分集合はk個の最大ハッシュ値の識別により選択し、
    前記対応する他の位置の特定に適用する関数は前記シード系列内で次のシードを識別する、請求項20記載の方法。
  22. 前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を前記個別データチャンクの全データを比較することで特定するステップをさらに含む、請求項19記載の方法。
  23. 前記被特定差分を前記リポジトリデータを格納した同じリポジトリ内に保管するステップをさらに含む、請求項22記載の方法。
  24. 前記入力データは第1の位置に配置し、前記リポジトリデータと前記インデックスは遠隔位置に配置し、前記方法はさらに
    前記第1の位置のIDC集合を特定するステップと、
    前記被特定IDC集合を前記第1の位置から前記遠隔位置へ送信するステップと、
    前記被特定IDC集合を前記遠隔位置の1以上のRDC集合と比較するステップと、
    前記入力データチャンクを全て前記遠隔位置へ送信することなく、かつ前記被識別類似リポジトリデータチャンクを全て前記第1の位置へ送信することなく、前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を規定するステップとを含む、請求項19記載の方法。
  25. 被特定差分を遠隔位置に格納するステップをさらに含む、請求項24記載の方法。
  26. 前記方法は、データファクタリングとデータバックアップの少なくとも一方に使用する、請求項19記載の方法。
  27. リポジトリデータ内で入力データを識別するシステムで、前記リポジトリデータがリポジトリデータチャンクを含み、前記入力データが入力データチャンクを含み、該各リポジトリデータチャンクが対応する1以上のリポジトリデータチャンク識別特性(RDC)集合を有する前記システムであって、
    前記各入力データチャンクごとに1以上の入力データチャンク識別特性(IDC)集合を特定する手段と、
    前記被特定IDC集合を1以上のRDC集合と比較する手段と、
    前記1以上のRDC集合に対する前記被特定IDC集合を比較する関数として前記入力データチャンクに類似するリポジトリデータチャンクを該各入力データチャンクごとに識別する手段とを含む、ことを特徴とする装置。
  28. 前記各入力データチャンクごとに、該入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を前記個別チャンクの全データを比較することで特定する手段をさらに含む、請求項27記載のシステム。
  29. 前記入力データは第1の位置に位置し、前記リポジトリデータは遠隔位置に位置し、前記システムはさらに、
    前記第1の位置の前記IDC集合を特定する手段と、
    前記被特定IDC集合を前記第1の位置から前記遠隔位置へ送信する手段と、
    前記被特定IDC集合と前記遠隔位置の1以上のRDC集合との比較とをさらに備える、請求項27記載のシステム。
  30. 前記第1のデータチャンクを全て前記遠隔位置へ送信することなく、かつ前記被識別類似リポジトリデータチャンクを全て前記第1の位置へ送信することなく、前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を特定する手段をさらに備える、請求項29記載のシステム。
  31. 前記1以上の被特定差分でもって前記遠隔位置を更新する手段をさらに備える、請求項30記載のシステム。
  32. 前記第1の位置は第1のコンピュータであり、前記遠隔位置は前記第1コンピュータとは異なる遠隔コンピュータであり、前記第1と前記遠隔コンピュータは相互にネットワーク接続通信状態にあり、
    前記リポジトリデータは、前記遠隔コンピュータを介してアクセスするデータリポジトリ内に保管する、請求項31記載のシステム。
  33. RDC集合に対するIDC集合の類似性の識別は類似性閾値の関数である、請求項27記載のシステム。
  34. 前記類似性閾値はRDC集合内にIDC集合内の所定数の識別特性が検出されたときに合致する、請求項33記載のシステム。
  35. 識別特性集合の特定手段は、
    個別データチャンク内で1以上のデータ位置を識別する手段と、
    個別データチャンクの1以上のデータ部分それぞれについて算術的ハッシュ値を算出する手段とを備える、請求項34記載のシステム。
  36. 集合内のk個の最大算術的ハッシュ値の特定手段で、kが所定数である前記手段と、
    k個の最大ハッシュ値のそれぞれについて個別データ部分を識別する手段と、
    識別特性集合をk個の最大算術的ハッシュ値のそれぞれに対応する前記各データ部分に対し次の系列データ部分の算術的ハッシュ値と特定する手段とをさらに備える、請求項35記載のシステム。
  37. 前記被特定差分をリポジトリに格納する手段をさらに備える、請求項28記載のシステム。
  38. 1以上の差分を特定する手段は、
    2値差分を特定する手段と、
    バイト単位ファクタリング手段と
    のうちの少なくとも一方を備える、請求項37記載のシステム。
  39. 前記識別特性はハッシュ関数とローリングハッシュ関数とモジュラーハッシュ関数のうちの一つにより特定する、請求項27記載のシステム。
  40. 前記RDC集合は2値ツリーとBツリーと並べ替えリストとハッシュテーブルの少なくとも一つとしてインデックス内に格納する、請求項27記載のシステム。
  41. 前記リポジトリデータチャンクと前記入力データチャンクのそれぞれは複数のシードを備え、該各シードは基本要素の連続系列であり、同一のシードサイズsを有し、前記識別特性は前記個別チャンクのシードの選択された部分集合のハッシュ値である、請求項27記載のシステム。
  42. 前記シードは重複シードを含む、請求項41記載のシステム。
  43. 前記システムはデータファクタリングとデータバックアップのうちの少なくとも一方に使用する、請求項27記載のシステム。
  44. 類似リポジトリチャンクの特定はリポジトリのサイズとは無関係で前記入力データのサイズとは線形の時間内に実行する、請求項27記載のシステム。
  45. 入力データに類似するデータについてリポジトリデータを検索するシステムであって、
    前記リポジトリデータを1以上のリポジトリチャンクに分割する手段と、
    前記各リポジトリチャンクごとにリポジトリ識別特性(RDC)の対応集合を算出する手段で、該各RDC集合が少なくとも一つの識別特性を含む前記手段と、
    前記各RDC集合に関連するインデックスと対応するリポジトリチャンクとを保持する手段と、
    前記入力データを1以上の入力チャンクへ分割する手段と、該各入力チャンクごとに、
    入力識別特性(IDC)の対応集合を算出し、該IDC集合が少なくとも一つの識別特性を含み、
    前記IDC集合を前記インデックス内に格納された1以上のRDC集合と比較し、
    前記IDC集合内の前記識別特性の類似性閾値jが前記インデックス内に格納されたRDC集合内に検出された場合、前記入力チャンクと前記対応リポジトリチャンクとの間に類似性が存在すると特定する手段とを備える、ことを特徴とするシステム。
  46. 前記RDC集合と前記IDC集合のそれぞれを、
    前記個別データチャンクを複数のシードへ区画し、該各シードを前記個別データチャンクの小部分としてシード系列にて順列配列し、
    該各シードにハッシュ関数を適用して複数のハッシュ値を生成し、該各シードがハッシュ値をもたらし、
    前記複数のハッシュ値の部分集合を選択し、
    前記ハッシュ値の選択された部分集合に対応するシード系列内のシード位置を特定し、
    被特定位置に関数を適用し、前記シード系列内の対応する他の位置を特定し、
    前記被特定の他の位置の前記シードのハッシュ値として前記識別特性集合を規定することにより得る、請求項45記載のシステム。
  47. 前記ハッシュ値の部分集合は前記k個の最大ハッシュ値を識別することで選択され、
    前記対応する他の位置の特定用に適用する関数が前記シード系列内の次のシードを識別する、請求項46記載のシステム。
  48. 前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を前記個別データチャンクの全データを比較することで特定する手段をさらに備える、請求項45記載のシステム。
  49. 前記被特定差分を前記リポジトリデータを格納した同じリポジトリに格納する手段をさらに備える、請求項48記載のシステム。
  50. 前記入力データは第1の位置に位置し、前記リポジトリデータと前記インデックスは遠隔位置に位置し、前記システムはさらに
    前記第1の位置の前記IDC集合を特定する手段と、
    前記被特定IDC集合を前記第1の位置から前記遠隔位置へ送信する手段と、
    前記被特定IDC集合を前記遠隔位置の前記1以上のRDC集合と比較する手段と、
    前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を、前記入力データチャンクを全て前記遠隔位置へ送信することなく、かつ前記被識別類似リポジトリデータチャンクを全て前記第1の位置へ送信することなく特定する手段とを備える、請求項45記載のシステム。
  51. 前記被特定差分を遠隔位置に格納する手段をさらに備える、請求項50記載のシステム。
  52. データファクタリングとデータバックアップのうちの少なくとも一つに使用する、請求項45記載のシステム。
  53. リポジトリデータ内で入力データを識別する方法で、前記リポジトリデータがリポジトリデータチャンクを含み、前記入力データが入力データチャンクを含み、該各リポジトリデータチャンクが対応する1以上のリポジトリデータチャンク識別特性(RDC)集合を有する前記方法を、コンピュータに実行させるコンピュータ実行可能命令でもってエンコードするコンピュータ可読媒体であって、前記方法が、前記各入力データチャンクごとに、
    1以上の入力データチャンク識別特性(IDC)集合を特定するステップと、
    前記被特定IDC集合を1以上のRDC集合と比較するステップと、
    前記入力データチャンクに類似するリポジトリデータチャンクを前記被特定IDC集合を前記1以上のRDC集合と比較する関数として識別するステップとを含む、ことを特徴とするコンピュータ可読媒体。
  54. 前記入力データチャンクと前記被識別類似リポジトリデータとの間の1以上の差分を前記個別チャンクの全データを比較することで特定するステップを実行するコンピュータ実行可能命令をさらに含む、請求項53記載のコンピュータ可読媒体。
  55. 前記入力データは第1の位置に位置し、前記リポジトリデータは遠隔位置に位置しており、
    前記第1の位置の前記IDC集合を特定するステップと、
    前記第1の位置から前記遠隔位置へ前記被特定IDC集合を送信するステップと、
    前記被特定IDC集合を前記遠隔位置の1以上のRDC集合と比較するステップと
    を実行するコンピュータ実行可能命令をさらに備える、請求項53記載のコンピュータ可読媒体。
  56. 前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を、前記第1のデータチャンクを全て前記遠隔位置へ送信することなく、かつ前記被識別類似リポジトリデータチャンクを全て前記第1の位置へ送信することなく特定するステップを実行するコンピュータ実行可能命令をさらに含む、請求項55記載のコンピュータ可読媒体。
  57. 前記遠隔位置を前記1以上の被特定差分でもって更新するステップを実行するコンピュータ実行可能命令をさらに含む、請求項56記載のコンピュータ可読媒体。
  58. 前記第1の位置は第1のコンピュータであり、前記遠隔位置は前記第1のコンピュータとは異なる遠隔コンピュータであり、前記第1のコンピュータと前記遠隔コンピュータが互いにネットワーク接続通信状態にあり、
    前記リポジトリデータを前記遠隔コンピュータを介してアクセスするデータリポジトリ内に保管する、請求項57記載のコンピュータ可読媒体。
  59. 前記RDC集合に対する前記IDC集合の類似性の識別は類似性閾値の関数である、請求項53記載のコンピュータ可読媒体。
  60. 前記類似性閾値は、前記IDC集合内の所定数の識別特性がRDC集合内で検出されたときに合致する、請求項59記載のコンピュータ可読媒体。
  61. 前記識別特性集合の特定は、
    個別データチャンク内で1以上のデータ部分を特定するステップと、
    個別データチャンクの1以上のデータ部分のそれぞれについて算術的ハッシュ値を算出するステップとを含む、請求項60記載のコンピュータ可読媒体。
  62. 集合内でk個の最大算術的ハッシュ値を特定するステップで、kが所定数である前記ステップと、
    前記k個の最大ハッシュ値のそれぞれについて個別データ部分を特定するステップと、
    識別特性集合をk個の最大算術的ハッシュ値のそれぞれに対応する前記各データ部分に対し次の連続するデータ部分の算術的ハッシュ値と特定するステップと
    を実行するコンピュータ実行可能命令をさらに含む、請求項61記載のコンピュータ可読媒体。
  63. 前記被特定差分をリポジトリ内に格納するステップを実行するコンピュータ実行可能命令をさらに含む、請求項53記載のコンピュータ可読媒体。
  64. 前記1以上の差分の特定は2値差分の特定とバイト単位ファクタリングのうちの少なくとも一方を含む、請求項63記載のコンピュータ可読媒体。
  65. 前記識別特性はハッシュ関数とローリングハッシュ関数とモジュラーハッシュ関数のうちの一つにより特定する、請求項53記載のコンピュータ可読媒体。
  66. 前記RDC集合はインデックス内に2値ツリーとBツリーと並べ替えリストとハッシュテーブルのうちの少なくとも一つとして格納する、請求項53記載のコンピュータ可読媒体。
  67. 前記リポジトリデータチャンクと前記入力データチャンクのそれぞれは複数のシードを備え、該各シードが基本素子の連続系列をなし、同じシードサイズsを有し、前記識別特性が前記個別チャンクの前記シードの選択された部分集合のハッシュ値である、請求項53記載のコンピュータ可読媒体。
  68. 前記シードが重複シードを含む、請求項67記載のコンピュータ可読媒体。
  69. 前記方法は、データファクタリングとデータバックアップのうちの少なくとも一方に使用する、請求項53記載のコンピュータ可読媒体。
  70. 前記類似リポジトリチャンク特定ステップは前記リポジトリのサイズとは無関係でかつ前記入力データのサイズとは線形の時間内に実行する請求項53記載のコンピュータ可読媒体。
  71. 入力データに類似するデータをリポジトリデータ内で検索する方法をコンピュータに実行させるコンピュータ実行可能命令にてエンコードするコンピュータ可読媒体であって、前記方法が、
    前記リポジトリデータを1以上のリポジトリチャンクに分割するステップと、
    前記各リポジトリチャンクごとに、リポジトリ識別特性(RDC)の対応集合を算出するステップで、該各RDC集合が少なくとも一つの識別特性を備える前記ステップと、
    前記各RDC集合に関連するインデックスと前記対応リポジトリチャンクとを保持するステップと、
    前記入力データを1以上の入力チャンクに分割し、該各入力チャンクごとに、
    入力識別特性(IDC)の対応集合を算出し、該IDC集合が少なくとも一つの識別特性を含み、
    前記IDC集合を前記インデックス内に格納した1以上のRDC集合と比較し、
    前記IDC集合内の前記識別特性の類似性閾値jが前記インデックス内に保管されたRDC集合内に検出された場合、前記入力チャンクと前記対応リポジトリチャンクとの間に類似性が存在すると特定するステップとを含む、コンピュータ可読媒体。
  72. 前記RDC集合と前記IDC集合のそれぞれを、
    前記個別データチャンクを複数のシードへ区画し、該各シードを前記個別データチャンクの小部分としてシード系列にて順列配置し、
    前記各シードにハッシュ関数を適用して複数のハッシュ値を生成し、該各シードが一つのハッシュ値をもたらし、
    前記複数のハッシュ値の部分集合を選択し、
    前記選択されたハッシュ値の部分集合に対応して前記シード系列内の前記シードの位置を特定し、
    前記被特定位置に対し関数を適用し、前記シード系列内の対応する他の位置を特定し、
    前記識別特性集合を前記被特定の他の位置の前記シードのハッシュ値として規定する
    ことにより得るステップを実行するコンピュータ実行可能命令をさらに含む、請求項71記載のコンピュータ可読媒体。
  73. 前記ハッシュ値の部分集合は前記k個の最大ハッシュ値を識別することで選択し、
    前記対応する他の位置を特定するよう適用する前記関数が前記シード系列内の次のシードを識別する、請求項72記載のコンピュータ可読媒体。
  74. 前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を前記個別データチャンクの全データを比較することで特定するステップを実行するコンピュータ実行可能命令をさらに含む、請求項71記載のコンピュータ可読媒体。
  75. 前記リポジトリデータを保管する同じリポジトリに前記被特定差分を格納するステップを実行するコンピュータ実行可能命令をさらに含む、請求項74記載のコンピュータ可読媒体。
  76. 前記入力データは第1の位置に位置し、前記リポジトリデータと前記インデックスは遠隔位置に位置し、
    前記第1の位置の前記IDC集合を特定するステップと、
    前記被特定IDC集合を前記第1の位置から前記遠隔位置へ送信するステップと、
    前記被特定IDC集合を前記遠隔位置の1以上のRDC集合と比較するステップと、
    前記入力データチャンクと前記被識別類似リポジトリデータチャンクとの間の1以上の差分を、前記入力データチャンクを全て前記遠隔位置へ送信することなく、かつ前記被識別類似リポジトリデータチャンクを全て前記第1の位置へ送信することなく特定するステップと
    を実行するコンピュータ実行可能命令をさらに含む、請求項71記載のコンピュータ可読媒体。
  77. 前記被特定差分を前記遠隔位置に格納するステップを実行するコンピュータ実行可能命令をさらに含む、請求項76記載のコンピュータ可読媒体。
  78. 前記方法は、データファクタリングとデータバックアップのうちの少なくとも一方に用いる、請求項71記載のコンピュータ可読媒体。
JP2007532557A 2004-09-15 2005-09-15 データを検索し記憶するシステム及び方法 Active JP4939421B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10/941,632 2004-09-15
US10/941,632 US7523098B2 (en) 2004-09-15 2004-09-15 Systems and methods for efficient data searching, storage and reduction
US11/194,086 2005-07-29
US11/194,086 US8725705B2 (en) 2004-09-15 2005-07-29 Systems and methods for searching of storage data with reduced bandwidth requirements
PCT/US2005/033363 WO2006032049A1 (en) 2004-09-15 2005-09-15 Systems and methods for searching and storage of data

Publications (3)

Publication Number Publication Date
JP2008513891A JP2008513891A (ja) 2008-05-01
JP2008513891A6 true JP2008513891A6 (ja) 2008-10-23
JP4939421B2 JP4939421B2 (ja) 2012-05-23

Family

ID=35431554

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007532557A Active JP4939421B2 (ja) 2004-09-15 2005-09-15 データを検索し記憶するシステム及び方法

Country Status (7)

Country Link
US (1) US8725705B2 (ja)
EP (2) EP1805664A1 (ja)
JP (1) JP4939421B2 (ja)
AU (1) AU2005284737B2 (ja)
BR (1) BRPI0515335A (ja)
CA (1) CA2581065C (ja)
WO (1) WO2006032049A1 (ja)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8938595B2 (en) * 2003-08-05 2015-01-20 Sepaton, Inc. Emulated storage system
US7523098B2 (en) * 2004-09-15 2009-04-21 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US8725705B2 (en) * 2004-09-15 2014-05-13 International Business Machines Corporation Systems and methods for searching of storage data with reduced bandwidth requirements
US7831787B1 (en) 2006-03-20 2010-11-09 Emc Corporation High efficiency portable archive with virtualization
US7747831B2 (en) * 2006-03-20 2010-06-29 Emc Corporation High efficiency portable archive and data protection using a virtualization layer
CA2648428C (en) * 2006-04-07 2017-11-21 Data Storage Group Data compression and storage techniques
US9235477B1 (en) * 2006-04-24 2016-01-12 Emc Corporation Virtualized backup solution
US9317222B1 (en) * 2006-04-24 2016-04-19 Emc Corporation Centralized content addressed storage
US8543782B2 (en) * 2006-04-25 2013-09-24 Hewlett-Packard Development Company, L.P. Content-based, compression-enhancing routing in distributed, differential electronic-data storage systems
US8190742B2 (en) * 2006-04-25 2012-05-29 Hewlett-Packard Development Company, L.P. Distributed differential store with non-distributed objects and compression-enhancing data-object routing
WO2007131190A2 (en) * 2006-05-05 2007-11-15 Hybir Inc. Group based complete and incremental computer file backup system, process and apparatus
US8065273B2 (en) * 2006-05-10 2011-11-22 Emc Corporation Automated priority restores
US9684739B1 (en) 2006-05-11 2017-06-20 EMC IP Holding Company LLC View generator for managing data storage
US20080104145A1 (en) * 2006-06-23 2008-05-01 Derrell Lipman Method and appartus for backup of networked computers
US7962499B2 (en) * 2006-08-18 2011-06-14 Falconstor, Inc. System and method for identifying and mitigating redundancies in stored data
US7739410B2 (en) * 2007-01-07 2010-06-15 Apple Inc. Synchronization methods and systems
US7805403B2 (en) * 2007-01-07 2010-09-28 Apple Inc. Synchronization methods and systems
US20080163743A1 (en) * 2007-01-07 2008-07-10 Freedman Gordon J Synchronization methods and systems
US8239504B2 (en) * 2007-01-07 2012-08-07 Apple Inc. Synchronization methods and systems
US7761414B2 (en) * 2007-01-07 2010-07-20 Apple Inc. Asynchronous data synchronization amongst devices
US7660831B2 (en) * 2007-01-07 2010-02-09 Apple Inc. Synchronization methods and systems
US7778971B2 (en) * 2007-01-07 2010-08-17 Apple Inc. Synchronization methods and systems
US8209540B2 (en) 2007-06-28 2012-06-26 Apple Inc. Incremental secure backup and restore of user settings and data
US8046509B2 (en) 2007-07-06 2011-10-25 Prostor Systems, Inc. Commonality factoring for removable media
US8819205B2 (en) 2007-10-19 2014-08-26 Hitachi, Ltd. Content transfer system, content transfer method and home server
DE112007003678B4 (de) * 2007-10-25 2016-02-25 Hewlett-Packard Development Company, L.P. Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8782368B2 (en) 2007-10-25 2014-07-15 Hewlett-Packard Development Company, L.P. Storing chunks in containers
WO2009054827A1 (en) * 2007-10-25 2009-04-30 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
DE112007003645B4 (de) * 2007-10-25 2011-06-16 Hewlett-Packard Development Co., L.P., Houston Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8140637B2 (en) 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
US8099573B2 (en) * 2007-10-25 2012-01-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8150851B2 (en) * 2007-10-25 2012-04-03 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8332404B2 (en) * 2007-10-25 2012-12-11 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US7870105B2 (en) 2007-11-20 2011-01-11 Hitachi, Ltd. Methods and apparatus for deduplication in storage system
US8775441B2 (en) 2008-01-16 2014-07-08 Ab Initio Technology Llc Managing an archive for approximate string matching
US20090204636A1 (en) * 2008-02-11 2009-08-13 Microsoft Corporation Multimodal object de-duplication
JP5084551B2 (ja) * 2008-02-26 2012-11-28 Kddi株式会社 重複排除技術を用いたデータバックアップ方法、記憶制御通信装置及びプログラム
US9690668B2 (en) 2008-03-05 2017-06-27 Ca, Inc. Data boundary identification
US8959089B2 (en) * 2008-04-25 2015-02-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8832034B1 (en) 2008-07-03 2014-09-09 Riverbed Technology, Inc. Space-efficient, revision-tolerant data de-duplication
US8370309B1 (en) 2008-07-03 2013-02-05 Infineta Systems, Inc. Revision-tolerant data de-duplication
US8078593B1 (en) 2008-08-28 2011-12-13 Infineta Systems, Inc. Dictionary architecture and methodology for revision-tolerant data de-duplication
US7992037B2 (en) * 2008-09-11 2011-08-02 Nec Laboratories America, Inc. Scalable secondary storage systems and methods
EP2342684B1 (en) 2008-10-23 2024-05-29 Ab Initio Technology LLC Fuzzy data operations
US8117343B2 (en) * 2008-10-28 2012-02-14 Hewlett-Packard Development Company, L.P. Landmark chunking of landmarkless regions
US8712964B2 (en) * 2008-12-02 2014-04-29 United States Postal Services Systems and methods for updating a data store using a transaction store
US8375182B2 (en) * 2009-02-10 2013-02-12 Hewlett-Packard Development Company, L.P. System and method for segmenting a data stream
US8001273B2 (en) * 2009-03-16 2011-08-16 Hewlett-Packard Development Company, L.P. Parallel processing of input data to locate landmarks for chunks
US8140491B2 (en) * 2009-03-26 2012-03-20 International Business Machines Corporation Storage management through adaptive deduplication
US7979491B2 (en) * 2009-03-27 2011-07-12 Hewlett-Packard Development Company, L.P. Producing chunks from input data using a plurality of processing elements
US20100281077A1 (en) * 2009-04-30 2010-11-04 Mark David Lillibridge Batching requests for accessing differential data stores
US9141621B2 (en) * 2009-04-30 2015-09-22 Hewlett-Packard Development Company, L.P. Copying a differential data store into temporary storage media in response to a request
US8620939B2 (en) * 2010-01-25 2013-12-31 Sepaton, Inc. System and method for summarizing data
WO2011091354A2 (en) 2010-01-25 2011-07-28 Sepaton, Inc. System and method for data storage
US8407193B2 (en) * 2010-01-27 2013-03-26 International Business Machines Corporation Data deduplication for streaming sequential data storage applications
US8660994B2 (en) * 2010-01-28 2014-02-25 Hewlett-Packard Development Company, L.P. Selective data deduplication
US20110214115A1 (en) * 2010-02-26 2011-09-01 Nokia Corporation Method and appartus for providing a high level mobile virtual machine
US10558705B2 (en) * 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8682873B2 (en) 2010-12-01 2014-03-25 International Business Machines Corporation Efficient construction of synthetic backups within deduplication storage system
US8458145B2 (en) 2011-01-20 2013-06-04 Infinidat Ltd. System and method of storage optimization
US8688651B2 (en) 2011-01-25 2014-04-01 Sepaton, Inc. Dynamic deduplication
US8904128B2 (en) 2011-06-08 2014-12-02 Hewlett-Packard Development Company, L.P. Processing a request to restore deduplicated data
US8620886B1 (en) * 2011-09-20 2013-12-31 Netapp Inc. Host side deduplication
AU2012340429B2 (en) * 2011-11-15 2016-12-01 Ab Initio Technology Llc Data clustering based on candidate queries
WO2013108746A1 (ja) * 2012-01-16 2013-07-25 日本電気株式会社 検索システム、その制御方法、及びプログラム
WO2013108745A1 (ja) * 2012-01-16 2013-07-25 日本電気株式会社 ストレージ装置、その制御方法、及びプログラム
JP2013190891A (ja) * 2012-03-13 2013-09-26 Hitachi Ltd データ転送システム
US9634522B2 (en) 2012-09-19 2017-04-25 International Business Machines Corporation Power grid data monitoring and control
US9678975B2 (en) * 2013-03-15 2017-06-13 International Business Machines Corporation Reducing digest storage consumption in a data deduplication system
US9116941B2 (en) 2013-03-15 2015-08-25 International Business Machines Corporation Reducing digest storage consumption by tracking similarity elements in a data deduplication system
US9244937B2 (en) 2013-03-15 2016-01-26 International Business Machines Corporation Efficient calculation of similarity search values and digest block boundaries for data deduplication
US9547662B2 (en) 2013-03-15 2017-01-17 International Business Machines Corporation Digest retrieval based on similarity search in data deduplication
US9766832B2 (en) 2013-03-15 2017-09-19 Hitachi Data Systems Corporation Systems and methods of locating redundant data using patterns of matching fingerprints
US10366072B2 (en) * 2013-04-05 2019-07-30 Catalogic Software, Inc. De-duplication data bank
WO2014184857A1 (ja) * 2013-05-13 2014-11-20 株式会社日立製作所 重複排除システム及びその方法
US9646067B2 (en) 2013-05-14 2017-05-09 Actifio, Inc. Garbage collection predictions
US9256611B2 (en) 2013-06-06 2016-02-09 Sepaton, Inc. System and method for multi-scale navigation of data
US10133502B2 (en) 2013-07-15 2018-11-20 International Business Machines Corporation Compatibility and inclusion of similarity element resolutions
US10229132B2 (en) 2013-07-15 2019-03-12 International Business Machines Corporation Optimizing digest based data matching in similarity based deduplication
US10296598B2 (en) * 2013-07-15 2019-05-21 International Business Machines Corporation Digest based data matching in similarity based deduplication
US10339109B2 (en) 2013-07-15 2019-07-02 International Business Machines Corporation Optimizing hash table structure for digest matching in a data deduplication system
US9836474B2 (en) 2013-07-15 2017-12-05 International Business Machines Corporation Data structures for digests matching in a data deduplication system
US10789213B2 (en) 2013-07-15 2020-09-29 International Business Machines Corporation Calculation of digest segmentations for input data using similar data in a data deduplication system
US9594766B2 (en) 2013-07-15 2017-03-14 International Business Machines Corporation Reducing activation of similarity search in a data deduplication system
US10073853B2 (en) * 2013-07-17 2018-09-11 International Business Machines Corporation Adaptive similarity search resolution in a data deduplication system
US9678973B2 (en) 2013-10-15 2017-06-13 Hitachi Data Systems Corporation Multi-node hybrid deduplication
US10394481B2 (en) 2013-11-21 2019-08-27 International Business Machines Corporation Reducing application input/output operations from a server having data stored on de-duped storage
WO2016044403A1 (en) 2014-09-16 2016-03-24 Mutalik, Madhav Copy data techniques
US10379963B2 (en) 2014-09-16 2019-08-13 Actifio, Inc. Methods and apparatus for managing a large-scale environment of copy data management appliances
US20170038978A1 (en) * 2015-08-05 2017-02-09 HGST Netherlands B.V. Delta Compression Engine for Similarity Based Data Deduplication
US10545832B2 (en) * 2016-03-01 2020-01-28 International Business Machines Corporation Similarity based deduplication for secondary storage
US10437684B2 (en) * 2016-03-29 2019-10-08 International Business Machines Corporation Similarity based deduplication for secondary storage
US10824644B2 (en) * 2017-03-07 2020-11-03 Mcafee, Llc Aggregate, index based, synchronization of node contents
US10282127B2 (en) 2017-04-20 2019-05-07 Western Digital Technologies, Inc. Managing data in a storage system
US10963483B2 (en) * 2017-04-26 2021-03-30 Oracle International Corporation Sequential storage volume replication based on comparison of write session identifiers
US10809928B2 (en) 2017-06-02 2020-10-20 Western Digital Technologies, Inc. Efficient data deduplication leveraging sequential chunks or auxiliary databases
US10503608B2 (en) 2017-07-24 2019-12-10 Western Digital Technologies, Inc. Efficient management of reference blocks used in data deduplication
KR102388458B1 (ko) * 2019-10-31 2022-04-21 울산과학기술원 데이터 키 값 변환 방법 및 장치
WO2024030041A1 (en) * 2022-08-02 2024-02-08 Huawei Technologies Co., Ltd. Method for data compression and electronic device
US11797508B1 (en) * 2023-06-02 2023-10-24 Black Cape Inc. Systems and methods for geospatial correlation

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4686620A (en) * 1984-07-26 1987-08-11 American Telephone And Telegraph Company, At&T Bell Laboratories Database backup method
US5202982A (en) 1990-03-27 1993-04-13 Sun Microsystems, Inc. Method and apparatus for the naming of database component files to avoid duplication of files
US5479654A (en) * 1990-04-26 1995-12-26 Squibb Data Systems, Inc. Apparatus and method for reconstructing a file from a difference signature and an original file
EP0541281B1 (en) * 1991-11-04 1998-04-29 Commvault Systems, Inc. Incremental-computer-file backup using signatures
JPH06103127A (ja) 1992-09-22 1994-04-15 Kanebo Ltd ハッシュファイルデータ管理装置およびハッシュファイルデータ管理方法
US5446888A (en) * 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
US5574906A (en) * 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
WO1996025801A1 (en) * 1995-02-17 1996-08-22 Trustus Pty. Ltd. Method for partitioning a block of data into subblocks and for storing and communicating such subblocks
US5727197A (en) * 1995-11-01 1998-03-10 Filetek, Inc. Method and apparatus for segmenting a database
US5850565A (en) * 1996-08-26 1998-12-15 Novell, Inc. Data compression method and apparatus
US6038665A (en) * 1996-12-03 2000-03-14 Fairbanks Systems Group System and method for backing up computer files over a wide area computer network
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
US6101507A (en) * 1997-02-11 2000-08-08 Connected Corporation File comparison for data backup and file synchronization
US6119124A (en) * 1998-03-26 2000-09-12 Digital Equipment Corporation Method for clustering closely resembling data objects
US6263348B1 (en) * 1998-07-01 2001-07-17 Serena Software International, Inc. Method and apparatus for identifying the existence of differences between two files
US6604236B1 (en) * 1998-06-30 2003-08-05 Iora, Ltd. System and method for generating file updates for files stored on read-only media
US6366986B1 (en) * 1998-06-30 2002-04-02 Emc Corporation Method and apparatus for differential backup in a computer storage system
US6233589B1 (en) * 1998-07-31 2001-05-15 Novell, Inc. Method and system for reflecting differences between two files
US6487561B1 (en) * 1998-12-31 2002-11-26 Emc Corporation Apparatus and methods for copying, backing up, and restoring data using a backup segment size larger than the storage block size
US6920537B2 (en) * 1998-12-31 2005-07-19 Emc Corporation Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel
US6397308B1 (en) * 1998-12-31 2002-05-28 Emc Corporation Apparatus and method for differential backup and restoration of data in a computer storage system
US6385706B1 (en) * 1998-12-31 2002-05-07 Emx Corporation Apparatus and methods for copying a logical object to a primary storage device using a map of storage locations
US6560620B1 (en) * 1999-08-03 2003-05-06 Aplix Research, Inc. Hierarchical document comparison system and method
EP1247215A4 (en) * 2000-01-10 2009-04-29 Iron Mountain Inc LAYER ARCHITECTURE AS AN INTERFACE BETWEEN APPLIANCES AND APPLICATIONS
WO2001061563A1 (en) 2000-02-18 2001-08-23 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US6704730B2 (en) * 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US7080257B1 (en) * 2000-03-27 2006-07-18 Microsoft Corporation Protecting digital goods using oblivious checking
US6675177B1 (en) * 2000-06-21 2004-01-06 Teradactyl, Llc Method and system for backing up digital data
US6470329B1 (en) * 2000-07-11 2002-10-22 Sun Microsystems, Inc. One-way hash functions for distributed data synchronization
US6757675B2 (en) * 2000-07-24 2004-06-29 The Regents Of The University Of California Method and apparatus for indexing document content and content comparison with World Wide Web search service
US7660819B1 (en) * 2000-07-31 2010-02-09 Alion Science And Technology Corporation System for similar document detection
WO2002013049A1 (en) * 2000-08-04 2002-02-14 Infoglide Corporation System and method for comparing heterogeneous data sources
US6694337B1 (en) * 2000-10-26 2004-02-17 Intel Corporation Synchronizing databases
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US6658423B1 (en) * 2001-01-24 2003-12-02 Google, Inc. Detecting duplicate and near-duplicate files
US6738779B1 (en) * 2001-02-21 2004-05-18 Telecom Italia S.P.A. Apparatus for and method of multiple parallel string searching
US7139756B2 (en) * 2002-01-22 2006-11-21 International Business Machines Corporation System and method for detecting duplicate and similar documents
CA2374298A1 (en) * 2002-03-01 2003-09-01 Ibm Canada Limited-Ibm Canada Limitee Computation of frequent data values
JP3673234B2 (ja) * 2002-03-20 2005-07-20 株式会社東芝 暗号処理を行う情報記録再生装置と情報記録再生方法
US6983020B2 (en) * 2002-03-25 2006-01-03 Citrix Online Llc Method and apparatus for fast block motion detection
US7092972B2 (en) * 2002-05-09 2006-08-15 Sun Microsystems, Inc. Delta transfers in distributed file systems
JP4035600B2 (ja) * 2002-05-22 2008-01-23 国立大学法人 東京大学 イマチニブに対する感受性の判定方法
CA2390350A1 (en) * 2002-06-10 2003-12-10 Ibm Canada Limited-Ibm Canada Limitee Incremental cardinality estimation for a set of data values
US6928526B1 (en) * 2002-12-20 2005-08-09 Datadomain, Inc. Efficient data storage system
US7065619B1 (en) * 2002-12-20 2006-06-20 Data Domain, Inc. Efficient data storage system
US7055008B2 (en) * 2003-01-22 2006-05-30 Falconstor Software, Inc. System and method for backing up data
US6947933B2 (en) * 2003-01-23 2005-09-20 Verdasys, Inc. Identifying similarities within large collections of unstructured data
US6839724B2 (en) * 2003-04-17 2005-01-04 Oracle International Corporation Metamodel-based metadata change management
US7299221B2 (en) * 2003-05-08 2007-11-20 Oracle International Corporation Progressive relaxation of search criteria
US20050132197A1 (en) * 2003-05-15 2005-06-16 Art Medlar Method and apparatus for a character-based comparison of documents
US20050004954A1 (en) * 2003-07-01 2005-01-06 Hand Held Products, Inc. Systems and methods for expedited data transfer in a communication system using hash segmentation
US7447917B2 (en) * 2003-11-12 2008-11-04 Microsoft Corporation Obfuscated state store for rights management system and the like
US7440982B2 (en) * 2003-11-13 2008-10-21 Commvault Systems, Inc. System and method for stored data archive verification
US7475061B2 (en) * 2004-01-15 2009-01-06 Microsoft Corporation Image-based document indexing and retrieval
US7392262B1 (en) * 2004-02-11 2008-06-24 Aol Llc Reliability of duplicate document detection algorithms
US20050262167A1 (en) * 2004-05-13 2005-11-24 Microsoft Corporation Efficient algorithm and protocol for remote differential compression on a local device
US7814056B2 (en) * 2004-05-21 2010-10-12 Computer Associates Think, Inc. Method and apparatus for data backup using data blocks
US8725705B2 (en) * 2004-09-15 2014-05-13 International Business Machines Corporation Systems and methods for searching of storage data with reduced bandwidth requirements
US7523098B2 (en) * 2004-09-15 2009-04-21 International Business Machines Corporation Systems and methods for efficient data searching, storage and reduction
US20070214198A1 (en) * 2006-03-10 2007-09-13 Nathan Fontenot Allowing state restoration using differential backing objects
JP2011513432A (ja) * 2008-03-06 2011-04-28 ジェネンテック, インコーポレイテッド c−met及びHERアンタゴニストの併用療法

Similar Documents

Publication Publication Date Title
JP4939421B2 (ja) データを検索し記憶するシステム及び方法
JP2008513891A6 (ja) データを検索し記憶するシステム及び方法
US10282257B2 (en) Systems and methods for efficient data searching, storage and reduction
US7478113B1 (en) Boundaries
US8402063B2 (en) Restoring data backed up in a content addressed storage (CAS) system
US8370305B2 (en) Method of minimizing the amount of network bandwidth needed to copy data between data deduplication storage systems
US20070043705A1 (en) Searchable backups
JP7122325B2 (ja) 基本データシーブの使用によるデータの無損失削減、ならびに基本データシーブを使用して無損失削減されたデータに対する多次元検索およびコンテンツ連想的な取出しの実行
JP6726690B2 (ja) 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行
KR101299555B1 (ko) 해시 함수 기반의 인덱스를 이용한 텍스트 검색 장치 및 방법
KR100319761B1 (ko) 시그니처 파일을 이용한 데이터베이스 검색시스템에서의프레임 분할 병렬 처리 방법