JP4939421B2 - System and method for retrieving and storing data - Google Patents

System and method for retrieving and storing data Download PDF

Info

Publication number
JP4939421B2
JP4939421B2 JP2007532557A JP2007532557A JP4939421B2 JP 4939421 B2 JP4939421 B2 JP 4939421B2 JP 2007532557 A JP2007532557 A JP 2007532557A JP 2007532557 A JP2007532557 A JP 2007532557A JP 4939421 B2 JP4939421 B2 JP 4939421B2
Authority
JP
Japan
Prior art keywords
repository
data
chunk
input
seed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2007532557A
Other languages
Japanese (ja)
Other versions
JP2008513891A (en
JP2008513891A6 (en
Inventor
マイケル ヒルッシュ,
ハイム ビットナー,
リオール アロノビッチ,
ロン アッシャー,
アイタン バックマット,
シュムエル, ティー. クライン,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/941,632 external-priority patent/US7523098B2/en
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2008513891A publication Critical patent/JP2008513891A/en
Publication of JP2008513891A6 publication Critical patent/JP2008513891A6/en
Application granted granted Critical
Publication of JP4939421B2 publication Critical patent/JP4939421B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1464Management of the backup or restore process for networked environments
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1453Management of the data involved in backup or backup restore using de-duplication of the data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

A method comprising identifying input data in repository data wherein the repository data comprises repository data chunks and the input data comprise input data chunks and wherein each repository data chunk has a corresponding set of repository data chunk distinguishing characteristics, each distinguishing characteristic being stored with an RDC characteristic location, the method including the steps of, for each input data chunk: determining a set of input data chunk distinguishing characteristics, each distinguishing characteristic having an IDC characteristic location; then comparing the determined set of IDCs to one or more sets of RDCs; identifying a repository data chunk that is similar to the input data chunk as a function of the comparing of the determined set of IDCs to the one or more sets of RDCs, wherein a repository data chunk is identified as similar when a predetermined number of the distinguishing characteristics in the set of IDCs is found to match in a set of RDCs; outputting the IDC and RDC locations of at least one pair of matching IDC and RDC; and computing at least one common section of the input data chunk and the identified similar repository data chunk using the at least one pair of matching IDC and RDC as an anchor to define corresponding intervals in the input data chunk and the identified similar repository data chunk.

Description

本発明は、データを検索して既格納データを識別し、既格納データに基づき新たなデータを効率的に格納するシステムならびに方法に関する。これらのシステム及び方法は、一例としてバックアップ及び復元システム内に大規模データリポジトリを生成して保持するのに有用である。   The present invention relates to a system and method for searching for data to identify stored data and efficiently storing new data based on the stored data. These systems and methods are useful for creating and maintaining large data repositories in backup and restore systems as an example.

時間と空間の両方の点での大量のデータの効率的な格納は、バックアップ及び復元システム、特に大量のデジタルデータを保存しなければならない設計における至上関心事である。例えば、ユーザやユーザ群は重要なデータの予想される破壊や変造や事故による欠損に対する予防措置としてその一(又は複数)のコンピュータに記憶させた全データをリポジトリへ定期的(例えば、毎日又は毎週)にバックアップすることを望むことがある。大半のデータが最後のバックアップから99%を超える回数で変化することはなく、かくして現データの大部分がごく僅かな変化しか伴なうことなくリポジトリ内に早くも検出できる。現バックアップデータに類似するリポジトリ内のこのデータが効率的に配置できるならば、そのときはデータを再度記憶する必要はなく、むしろ変化分だけを記録すればよい。共通データを1回しか格納させないこの処理は、データファクタリングとして公知である。   Efficient storage of large amounts of data, both in terms of time and space, is of primary concern in backup and restore systems, especially designs that must store large amounts of digital data. For example, a user or group of users periodically (eg, daily or weekly) store all data stored in one (or more) computers as a precaution against possible destruction, alteration or accidental loss of important data. ) May want to back up. Most data does not change more than 99% since the last backup, and thus most of the current data can be detected in the repository as soon as possible with very little change. If this data in the repository, similar to the current backup data, can be located efficiently, then it is not necessary to store the data again, but rather only record the changes. This process of storing common data only once is known as data factoring.

ファクタリングを実行する大規模バックアップ及び復元システムは、1ペタバイト(PB)以上をそのリポジトリに有するであろう。例えば、顧客が行った商取引を記録する銀行や複数ユーザ向けの電子メールを保管するインターネット・サービスプロバイダは通常、数百ギガバイトから数ペタバイトに及ぶリポジトリサイズを有する。1PB=1024TB(テラバイト),1TB=1024GB(ギガバイト),1GB=1024MB(メガバイト),1MB=1024KB(キロバイト),1KB=1024バイトであることが、思い起こされよう。換言すれば、ペタバイト(PB)は250バイト、すなわち約1015バイトである。   A large backup and restore system that performs factoring will have more than 1 petabyte (PB) in its repository. For example, banks that record business transactions performed by customers and Internet service providers that store multi-user e-mail typically have repository sizes ranging from hundreds of gigabytes to petabytes. Recall that 1PB = 1024TB (terabyte), 1TB = 1024GB (gigabyte), 1GB = 1024MB (megabyte), 1MB = 1024KB (kilobyte), 1KB = 1024 bytes. In other words, a petabyte (PB) is 250 bytes, or about 1015 bytes.

この種の大型システムでは、リポジトリへ付加する入力(バックアップ)データストリームは例えば最大100GB以上ある。この入力データはリポジトリ内の既存のデータと類似する可能性は極めて高いが、厳密に同じではない。さらに、バックアップデータストリームはリポジトリ内の既存データとは同一データ境界(例えば、ブロック整列配置)に配置されないであろう。続くファクタリングステップをより効率的なものとするには、バックアップと復元システムはリポジトリ内のデータと入力ストリーム内のデータのいかなる相対的配列にも頼ることなく入力ストリームに充分類似するリポジトリ内のデータの位置を効率的に検出できねばならない。バックアップ及び復元システムはまた入力ストリームを効率的にリポジトリへ追加し、削除或いは破棄した旧入力ストリームをリポジトリから取り除かねばならない。   In this type of large system, the input (backup) data stream added to the repository is, for example, 100 GB or more at the maximum. This input data is very likely to be similar to existing data in the repository, but is not exactly the same. Furthermore, the backup data stream will not be placed on the same data boundary (eg, block alignment) as the existing data in the repository. In order to make the subsequent factoring step more efficient, the backup and restore system can reconstruct data in the repository that is sufficiently similar to the input stream without resorting to any relative arrangement of the data in the repository and the data in the input stream. It must be possible to detect the position efficiently. The backup and restore system must also efficiently add input streams to the repository and remove deleted or destroyed old input streams from the repository.

一般に、データ変更は局所的であると仮定することができる。かくして、例えば1%のデータが変化した場合、そのときはこの種の変化は局所領域に集中し、これらの領域において恐らく主要変化が存在し、一方でデータ領域の膨大な大多数は同じままに留まる。通常(ただし、必ずしもそうとは限らないが)、例えば1%のデータが変化した場合、そのときはそのデータをバイトストリームとしてではなく512バイトブロックのストリームとして見れば、1%強のブロックが変化したことになる。しかしながら、入力ストリームとリポジトリ内にはデータの所定整列配置が皆無であるが故に、局所化データ変化を検出すことは重要な仕事となる。   In general, data changes can be assumed to be local. Thus, for example, if 1% of the data changes, then this type of change is concentrated in local areas, and there are probably major changes in these areas, while the vast majority of the data areas remain the same. stay. Normally (but not necessarily), for example, if 1% of the data changes, then if the data is viewed as a 512-byte block stream instead of a byte stream, a little over 1% of the block changes It will be done. However, because there is no predetermined alignment of data in the input stream and the repository, detecting localized data changes is an important task.

類似データの検索はパターンマッチングの古典的問題の延長と考えられ、そこでは長さ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年
Searching for similar data is considered an extension of the classical problem of pattern matching, where text T of length n is searched for the appearance of string P of length m. Usually, the text length n is much larger than the search string length m. Many publications have presented a number of search methods that attempt to solve this problem efficiently, testing each position in the text T to determine if the string P appears there. Faster than. By preprocessing the pattern, some algorithms achieve better computational complexity. For example, see below.
Knud D.M. E. And Morris J. et al. H. And Pratt V. R. "Fast Pattern Matching In Strings", SIAM Computing Technical Report, Vol. 6, pp 323-350, 1977,
Boyer R. S. And Moore J. et al. S. "A Fast String Searching Algorithm", ACM Communication, 20, pp 762-772, 1977,
Karp R.D. And Rabin M. et al. Author, “Efficient Randomized Pattern Matching Algorithms” (IBM, R & D Technical Report 31, pp 249-260, 1987)

これらのアルゴリズムは全てO(n+m)台の時間内で作動し、それは検索時間がテキストサイズと線形的に大きくなることを意味する。これらのアルゴリズムに付随する一つの問題は、それらが或る制約的限界を越えてスケーリングできない点にある。例えば、1GBテキスト(ジェームズ王聖書の約300部の複写サイズ)を1秒で行うことができるならば、1ペタバイトテキストの検索はCPU時間で12日を上回るものを必用とする筈である。そのリポジトリ内の1ペタバイト(PB)以上のバックアップ及び復元システムは、この種のアルゴリズムを使用できないものであった。上記アルゴリズムの別の欠点は、それらが厳密な一致だけを公表し、近似的一致を実行するよう簡単には拡張されない点にある。   All of these algorithms operate within O (n + m) times, which means that the search time increases linearly with the text size. One problem with these algorithms is that they cannot scale beyond certain constraint limits. For example, if 1 GB text (a copy size of about 300 copies of King James Bible) can be performed in 1 second, a search for 1 petabyte text should require more than 12 days in CPU time. Backup and restore systems of 1 petabyte (PB) or more in the repository cannot use this kind of algorithm. Another drawback of the above algorithms is that they publish only exact matches and are not easily extended to perform approximate matches.

パターンを前処理する代りに、テキスト自体を前処理し、添え字ツリーとして知られるデータ構造を構築することもできる。これは、下記の刊行物に記載されている。
Weiner P著、「Linear Pattern Matching Algorithm(線形パターンマッチングアルゴリズム)」、スイッチングとオートマタ理論に関する第14回IEEEシンポジウム講演録、pp1−11、1973年、
Ukkonen E.著、「On−Line Construction Of Suffix Trees(添え字ツリーのオンライン構成)」、アルゴリズミカ、14(3)、pp249−260、1995年
Instead of preprocessing patterns, the text itself can be preprocessed to build a data structure known as a subscript tree. This is described in the following publications:
By Weiner P, “Linear Pattern Matching Algorithm”, Proceedings of the 14th IEEE Symposium on Switching and Automata Theory, pp 1-11, 1973,
Ukkonen E.M. “On-Line Construction Of Suffix Trees”, Algorithmic, 14 (3), pp 249-260, 1995.

前処理をオフラインで行った場合、前処理時間は問題ではなかろう。その場合、添え字ツリーを用い、続く検索を時間O(m)内で(すなわち、テキストサイズではなくパターンサイズにのみ応じて)実行することができる。しかし、ここでも厳密な一致しか検出すことができず、さらに添え字ツリーのサイズは、テキストのサイズでは線形であるものの抑制的であり、何故ならそれは原テキストの最大6倍まで大きなものとなろうからである。   If the preprocessing is done offline, the preprocessing time will not be a problem. In that case, a subscript tree can be used to perform subsequent searches within time O (m) (ie, only according to pattern size, not text size). However, only exact matches can be detected here, and the size of the subscript tree is constrained, albeit linear with the size of the text, because it is up to six times larger than the original text. Because it's waxy.

バックアップと復元用にハ、近似パターンマッチング用アルゴリズムを使用することが望ましく、何故ならリポジトリ内には入力データの厳密な複製ではなく、むしろ厳密に言って異なる複写で、それでも或る種の定義の類似性規範によれば非常に類似するものが検出し得ることは通常真実だからである。近似パターンマッチングは、以下に記載される如く広範囲に研究されてきた。
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年
It is desirable to use an approximate pattern matching algorithm for backup and restore, because it is not an exact duplicate of the input data in the repository, but rather a strictly different copy, but still with some kind of definition. This is because it is usually true that very similar things can be detected according to the similarity criterion. Approximate pattern matching has been extensively studied as described below.
Fischer M.M. J and Paterson M.M. S., "String Matching And Other Products, in Complexity of Computation" (string matching and other products in computational complexity) M.M. Karp (edit), SIAM-AMS Lecture, Volume 7, pp113-125, 1974,
Landau G. M.M. And Vishkin U. Author, “Fast Parallel And Serial Appropriate String Matching}, Algorithm Technique, 10 (2), pp157-169, 1989,
Navarro G. Author, “A Guided Tour To Approximate String Matching”, ACM Computation Survey, 33 (1), pp 31-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年
One recent algorithm works in time O (n (klogk) 1/2), where n is the size of the text and k is the number of allowed mismatches between the pattern and the text. For example, see below.
Amir A. And Lewstein M.M. And Porat E. “Faster Algorithms For String Matching With K Mismatches”, Algorithm Technique, 50 (2), pp 257-275, 2004.

しかしながら、大規模データリポジトリについては、O(n(klogk)1/2)は受け入れがたい計算量である。バックアップと復元システムへの入力データストリームは、例えば100GB以上の長さまでとなることがある。この入力ストリームの大半の同一の複写がリポジトリ内に存在すると仮定した場合、1%のデータしか変化しない状態でも、依然として約1GBの差分が存在し、すなわちk=230バイトとなる。リポジトリ内で近似一致位置を検出するため、このアルゴリズムはテキストnのサイズの約180,000倍に比例する時間を費やすことになる。テキスト長nのみが大きくてテキストを一回しか走査しないアルゴリズムが余りに低速になりかねないとの前提では、これを受け入れることはできない。   However, for large data repositories, O (n (klogk) 1/2) is an unacceptable amount of computation. The input data stream to the backup and restore system can be up to 100 GB or longer, for example. Assuming that most identical copies of this input stream exist in the repository, even if only 1% of the data changes, there will still be about 1 GB of difference, ie k = 230 bytes. This algorithm will spend time proportional to approximately 180,000 times the size of text n to find the approximate match location in the repository. This is unacceptable on the assumption that an algorithm that only has a large text length n and scans the text only once can be too slow.

別のアルゴリズム系は、ハッシュ処理関数に基づくものである。これらは、下記に記載されている如く、ストレージ産業ではCAS(コンテンツ・アドレスド・ストレージ)として公知である。
Moulton G.H.とWhitehill S.Bによる米国特許第6,704,730号、「Hash File System And Method For Use In A Commonality Factoring System(共通性ファクタリングシステムに用いるハッシュファイルシステム及び方法)」
Another algorithm system is based on a hash function. These are known as CAS (Content Addressed Storage) in the storage industry, as described below.
Multon G. H. And Whitehill S. US Pat. No. 6,704,730 by B, “Hash File System And Method For Use In A Commonality Factoring System (Hash File System and Method Used in Commonality Factoring System)”

汎用の理論的枠組みは、以下の通りである。すなわち、リポジトリデータをブロックに分け、指紋或いは署名とも呼ばれるハッシュ値を各ブロックごとに生成する。これら全てのハッシュ値をインデックス内に格納する。バージョンと呼ぶ或る種の所与のデータを配置すべく、所与の入力データはまたブロックに分け、同じハッシュ関数(リポジトリブロックに適用されたもの)を各バージョンブロックに適用する。バージョンブロックのハッシュ値がインデックス内に検出された場合、一致を公表する。   The general theoretical framework is as follows. That is, repository data is divided into blocks, and a hash value called a fingerprint or signature is generated for each block. All these hash values are stored in the index. To place some kind of given data called a version, the given input data is also divided into blocks and the same hash function (applied to the repository block) is applied to each version block. If the hash value of the version block is found in the index, a match is published.

先の方法を上回るCASの利点は、類似データに対する検索をここでリポジトリテキスト自体に対してではなくインデックスに対し実行し、適当なデータ構造を用いてインデックスを格納する場合、検索時間を著しく低減することができる。例えば、インデックスを2値ツリー或いはより一般的なBツリーとして記憶させた場合、検索時間はたったのO(log(n/s))となり、ここでnはテキストサイズであり、sはブロックサイズである。インデックスを並べ替えリストに格納した場合、並べ替えリストの内挿検索はO(log(log(n/s)))なる予想時間を有する。インデックスをハッシュテーブルに格納した場合、予想時間はO(1)にまで低減し得、インデックスの検索が特にリポジトリテキストのサイズとは無関係な時間内に一定の予想時間でもって果たし得ることを意味する。   The advantage of CAS over the previous method is that if the search for similar data is now performed on the index rather than on the repository text itself and the index is stored using the appropriate data structure, the search time is significantly reduced. be able to. For example, if the index is stored as a binary tree or a more general B-tree, the search time is only O (log (n / s)), where n is the text size and s is the block size. is there. When the index is stored in the rearrangement list, the interpolated search of the rearrangement list has an expected time of O (log (log (n / s))). If the index is stored in a hash table, the expected time can be reduced to O (1), meaning that the search for the index can be accomplished with a certain expected time, especially within the time independent of the size of the repository text. .

しかしながら、この方式には欠点がある。以前の如く、厳密な一致のみが検出され、すなわち入力データのブロックがリポジトリデータのブロックと同一でありさえすれば、一致が公表される。良質のハッシュ関数の要件の一つは、二つのブロックがごく僅かしか異ならないときでも対応ハッシュ値が全く異なるものになることであり、このことはハッシュ値の良好な分布を保証するのに必用とされる。しかし、バックアップ及び復元アプリケーションにおいて、このことは二つのブロックが近似的にのみ一致する場合に、ハッシュ処理方式がそれらの近似度を検出しないことを意味する。検出されたハッシュ値の近傍での検索が、近似的な一致を明らかにすることもない。さらに、公表された一致が必ずしも二つのブロック間の実際の一致に対応するとは限らない。ハッシュ関数hは一般に1対1ではなく、かくして通常ブロックXとYをX≠Yでh(X)=h(Y)の如く検出することがあり得る。   However, this method has drawbacks. As before, only exact matches are detected, i.e., as long as the block of input data is identical to the block of repository data, a match is published. One of the requirements for a good hash function is that the corresponding hash values will be quite different even if the two blocks differ only slightly, which is necessary to guarantee a good distribution of hash values. It is said. However, in backup and restore applications, this means that if two blocks only approximately match, the hashing scheme will not detect their degree of approximation. A search in the vicinity of the detected hash value does not reveal an approximate match. Furthermore, a published match does not necessarily correspond to an actual match between two blocks. In general, the hash function h is not one-to-one, and thus the normal blocks X and Y may be detected as X ≠ Y and h (X) = h (Y).

さらにまた、リポジトリ更新とネットワーク上でのデータ送信に必用な帯域要件もまた、改善を求める機会を提示している。   Furthermore, the bandwidth requirements necessary for repository updates and data transmission over the network also present opportunities for improvement.

これらの問題は、ブロックのサイズsを如何に選択するかの難題を生み出す。大ブロックサイズを選択すれば、より小さなインデックスが得られ(何故なら、インデックスはn/s個の要素を記憶する必用があるから)、誤一致の可能性は減るが、同時に一致ブロックを検出する可能性は減り、そのことが結局は圧縮比を低減する(非一致ブロック及び一致したものへのポインタだけを格納するハッシュ関数を圧縮法に用いるものと仮定)。他方、小ブロックサイズを選択すれば、全体的な圧縮効率は増大するかもしれないが、誤一致の可能性もまた増え、数が増えたブロックがかくも大きなインデックスを必用とし、インデックス自体がストレージ問題となることがある。   These problems create the challenge of how to select the block size s. Choosing a large block size gives a smaller index (because the index needs to store n / s elements), reducing the possibility of mismatches, but detecting matching blocks at the same time The possibility is reduced, which ultimately reduces the compression ratio (assuming that the compression method uses a hash function that stores only non-matching blocks and pointers to matching ones). On the other hand, choosing a small block size may increase overall compression efficiency, but it also increases the possibility of mismatches, requiring a larger index for the larger number of blocks, and the index itself is storage. May be a problem.

要するに、これらの問題に対処する多くの手際の良い方法が示唆されてきたが、それらは全て結局は大型サイズのデータリポジトリ内のデータ量に対し妥当な時間と空間にてスケーリング不能となる欠点がある。   In short, many clever methods have been suggested to deal with these problems, but they all have the disadvantage of not being able to scale in a reasonable amount of time and space for the amount of data in a large data repository. is there.

本発明は、効率的なデータ検索と記憶及び/又は低減のためのシステムならびに方法に関する。さらに、システム間で送信されるデータ量は、エラー耐性のある遠隔差分処理の実行により低減される。   The present invention relates to systems and methods for efficient data retrieval and storage and / or reduction. Furthermore, the amount of data transmitted between systems is reduced by performing error-resistant remote differential processing.

本発明の一実施形態に整合するシステムと方法は、定義された類似性測度を用いて入力データに類似するデータ位置について2値非変換データのリポジトリを検索することができ、リポジトリのサイズとは無関係に入力データのサイズに線形の時間内にリポジトリサイズの小部分に比例する空間内で斯くすることができる。   A system and method consistent with an embodiment of the present invention can search a repository of binary untransformed data for data locations similar to input data using a defined similarity measure, and what is the size of the repository? Irrespective of the size of the input data, this can be done in a space that is proportional to a small fraction of the repository size within a linear time.

本発明の他の実施形態に整合するシステムと方法はさらに、リポジトリの類似データセグメントと入力データを分析し、リポジトリ及び入力内の共通データの順序や位置に関係なくそれらの共通(同一)部分を効率的に特定し、セグメントサイズと線形な時間内にかつ一定の空間内で斯くすることができる。   The system and method consistent with other embodiments of the present invention further analyzes similar data segments and input data of the repository and determines their common (identical) portions regardless of the order or position of the common data in the repository and input. Efficiently identify and do so in a time that is linear with the segment size and in a constant space.

幾つかの実施形態になるシステム及び方法は、データの記憶に使用するネットワーク帯域量の低減をもたらす。このシステム/方法は、送信先に既に存在するデータをネットワークを介して送信する必要性を取り除く。一実施形態では、データリポジトリは第1の位置に位置する。第2の位置は、それがリポジトリへの格納を望む新規データを有する。新規データと既にリポジトリにあるデータとの比較を、行う。都合よくは、新規データの全てを比較用にリポジトリへ送信せず、リポジトリに既に格納されたデータを送信することで恐らくは帯域を無駄にせずに、リポジトリデータと新規データとの比較は新規データ全体よりもずっと小さなサイズの新規データの表現を送信することで、ただしリポジトリデータに対する新規データの比較が類似性或いは差分を特定する上で基礎とすることのできる十分な情報を用いて達成される。   The systems and methods according to some embodiments result in a reduction in the amount of network bandwidth used to store data. This system / method eliminates the need to transmit data that already exists at the destination over the network. In one embodiment, the data repository is located at the first location. The second location has new data that it wishes to store in the repository. Compare new data with data already in the repository. Conveniently, not all new data is sent to the repository for comparison, and the data already stored in the repository is sent, possibly without wasting bandwidth, and comparing the repository data with the new data is the entire new data By sending a representation of new data that is much smaller in size, a comparison of the new data to the repository data is achieved with sufficient information that can be used as a basis for identifying similarities or differences.

一実施形態では、一つの方法はリポジトリデータ内で入力データの識別を含み、リポジトリデータがリポジトリデータチャンクを含み、入力データが入力データチャンクを含み、各リポジトリデータチャンクは1以上のリポジトリデータチャンク識別特性(RCD)の対応集合を有しており、この方法は、各インプットデータチャンク毎に、1以上の入力データチャンク識別特性(IDC)集合を特定するステップと、被特定IDC集合を1以上のRDC集合と比較するステップと、1以上のRDC集合に対し被特定IDC集合を比較する関数として入力データチャンクに類似するリポジトリデータチャンクを識別するステップとを含む。   In one embodiment, one method includes identification of input data within the repository data, the repository data includes repository data chunks, the input data includes input data chunks, and each repository data chunk identifies one or more repository data chunks. Having a corresponding set of characteristics (RCD), the method specifying, for each input data chunk, one or more input data chunk identification characteristic (IDC) sets; and specifying one or more specified IDC sets Comparing to the RDC set and identifying a repository data chunk similar to the input data chunk as a function of comparing the specified IDC set to one or more RDC sets.

一実施形態では、入力データは第1の位置に位置し、リポジトリデータは遠隔位置に位置し、本方法はさらに、第1の位置のIDC集合を特定するステップと、被特定IDC集合を第1の位置から遠隔位置へ送信するステップと、被特定IDC集合を遠隔位置の1以上のRDC集合と比較するステップとを含む。   In one embodiment, the input data is located at a first location, the repository data is located at a remote location, and the method further includes identifying an IDC set for the first location, and identifying the identified IDC set to the first location. Transmitting from one location to a remote location and comparing the identified IDC set with one or more RDC sets at the remote location.

別の実施形態では、第1の位置は第1のコンピュータであり、遠隔位置は第1のコンピュータとは異なる遠隔コンピュータであり、第1のコンピュータと遠隔コンピュータは互いにネットワーク接続通信状態にあり、リポジトリデータは遠隔コンピュータを介してアクセスするデータリポジトリ内に格納される。   In another embodiment, the first location is a first computer, the remote location is a remote computer different from the first computer, the first computer and the remote computer are in networked communication with each other, and the repository The data is stored in a data repository that is accessed via a remote computer.

RDC集合に対するIDC集合の類似性の識別は類似性閾値の関数であり、類似性閾値はIDC集合内の所定数の識別特性がRDC集合内に検出されたときに合致する。   Identification of the IDC set's similarity to the RDC set is a function of the similarity threshold, which matches when a predetermined number of identification characteristics in the IDC set are detected in the RDC set.

識別特性集合の特定は、個別データチャンク内で1以上のデータ部分を識別するステップと、個別データチャンクの1以上のデータ部分のそれぞれについて算術的ハッシュ値を算出するステップとを含む。   The identification characteristic set identification includes identifying one or more data portions within the individual data chunk and calculating an arithmetic hash value for each of the one or more data portions of the individual data chunk.

本発明の別の実施形態によれば、入力データに類似するデータについてリポジトリデータ内を検索する方法は、リポジトリデータを1以上のリポジトリチャンクへ分割するステップと、各リポジトリチャンクごとに、リポジトリ識別特性(RDC)の対応集合を算出するステップで、各RDC集合が少なくとも一つの識別特性を含む前記ステップと、各RDC集合と対応リポジトリチャンクに関連するインデックスを保持するステップと、入力データを1以上の入力チャンクに分割し、各入力チャンクごとに、入力識別特性(IDC)の対応集合を算出するステップで、IDC集合が少なくとも一つの識別特性を含む前記ステップと、IDC集合をインデックス内に格納された1以上のRDC集合と比較するステップと、IDC集合内の識別特性の類似性閾値jがインデックス内に保管されたRDC集合内に検出された場合、入力チャンクと対応リポジトリチャンクとの間に類似性が存在すると判定するステップとを含む。   According to another embodiment of the present invention, a method for searching in repository data for data similar to input data includes splitting repository data into one or more repository chunks and, for each repository chunk, a repository identification characteristic. Calculating a corresponding set of (RDC), wherein each RDC set includes at least one identification characteristic, holding an index associated with each RDC set and a corresponding repository chunk, Dividing the input chunks and calculating a corresponding set of input identification characteristics (IDC) for each input chunk, wherein the IDC set includes at least one identification characteristic, and the IDC set is stored in the index Comparing with one or more RDC sets and identification within the IDC set If sexual similarity threshold j is detected in the RDC set stored in the index, including determining that the similarity exists between the input chunk and the corresponding repository chunk.

RDC集合とIDC集合はそれぞれ、個別データチャンクを複数のシードに区画するステップで、各シードを個別データチャンクの小部分としてシード系列内に順列配置するステップと、各シードにハッシュ関数を適用して複数のハッシュ値を生成するステップで、各シードが一つのハッシュ値をもたらす前記ステップと、複数のハッシュ値の部分集合を選択するステップと、選択されたハッシュ値の部分集合に対応するシード系列内でシード位置を特定するステップと、被特定位置へ関数を適用し、シード系列内の対応する他の位置を特定するステップと、識別特性集合を特定された他の位置のシードのハッシュ値として規定するステップとにより得る。   Each of the RDC set and the IDC set is a step of dividing an individual data chunk into a plurality of seeds, a step of arranging each seed in a seed sequence as a small part of the individual data chunk, and applying a hash function to each seed. Generating a plurality of hash values, wherein each seed yields a hash value, selecting a subset of the plurality of hash values, and in a seed sequence corresponding to the selected subset of hash values Specifying the seed position in step, applying the function to the specified position, specifying the corresponding other position in the seed sequence, and defining the identification characteristic set as a hash value of the seed of the specified other position And obtaining a step.

別の実施形態は、リポジトリデータ内で入力データを識別するシステムで、リポジトリデータがリポジトリデータチャンクを含み、入力データが入力データチャンクを含み、各リポジトリデータチャンクが1以上のリポジトリデータチャンク識別特性(RDC)の対応集合を有するシステムであり、このシステムが、各入力データチャンクごとに1以上の入力データチャンク識別特性(IDC)集合を特定する手段と、各入力データチャンクごとに、被特定IDC集合を1以上のRDC集合と比較する手段と、各入力データチャンクごとに、1以上のRDC集合に対し被特定IDC集合を比較する関数として入力データチャンクに類似するリポジトリデータチャンクを識別する手段とを備える。   Another embodiment is a system for identifying input data within repository data, where the repository data includes a repository data chunk, the input data includes an input data chunk, and each repository data chunk has one or more repository data chunk identification characteristics ( RDC) corresponding set, the system specifying one or more input data chunk identification characteristic (IDC) sets for each input data chunk, and a specific IDC set for each input data chunk For each input data chunk, and for each input data chunk, means for identifying a repository data chunk that is similar to the input data chunk as a function that compares the specified IDC set against one or more RDC sets. Prepare.

本システムは、一実施形態ではさらに、各入力データチャンクごとに、個別チャンクの全データを比較することで入力データチャンクと被特定類似リポジトリデータチャンクとの間の1以上の差分を特定する手段を含む。   In one embodiment, the system further includes means for identifying one or more differences between the input data chunk and the identified similar repository data chunk by comparing all data of the individual chunks for each input data chunk. Including.

識別特性集合の特定手段は、一実施形態では、個別データチャンク内で1以上のデータ部分を識別する手段と、個別データチャンクの1以上のデータ部分のそれぞれについて算術的ハッシュ値を算出する手段とを備える。   In one embodiment, the identification characteristic set identifying means includes means for identifying one or more data portions in the individual data chunk, and means for calculating an arithmetic hash value for each of the one or more data portions of the individual data chunk. Is provided.

別の実施形態では、本システムはさらに、集合内でk個の最大算術的ハッシュ値を特定する手段で、kが所定数である前記手段と、k個の最大ハッシュ値のそれぞれについて個別データ部分を識別する手段と、識別特性集合をk個の最大算術的ハッシュ値のそれぞれに対応する各データ部分に対する次の系列データ部分の算術的ハッシュ値と特定する手段とを含む。   In another embodiment, the system further comprises means for identifying k maximum arithmetic hash values in the set, said means wherein k is a predetermined number, and a separate data portion for each of the k maximum hash values. And means for identifying an identification characteristic set as an arithmetic hash value of the next sequence data portion for each data portion corresponding to each of the k maximum arithmetic hash values.

識別特性は、ハッシュ関数とローリングハッシュ関数のうちの一方により特定し、モジュラーハッシュ関数とRDC集合は2値ツリーとBツリーと並べ替えリストとハッシュテーブルのうちの少なくとも一つとしてインデックス内に格納する。   The identification characteristic is specified by one of a hash function and a rolling hash function, and the modular hash function and the RDC set are stored in the index as at least one of a binary tree, a B-tree, a sorted list, and a hash table. .

入力データに類似するデータについてリポジトリデータ内を検索するシステムで、このシステムが、リポジトリデータを1以上のリポジトリチャンクに分割する手段と、各リポジトリチャンクごとに、リポジトリ識別特性(RDC)の対応集合を算出する手段で、各RDC集合が少なくとも一つの識別特性を含む前記手段と、各RDC集合に関連するインデックスと対応するリポジトリチャンクとを保持する手段と、入力データを1以上の入力チャンクへ分割する手段で、各入力チャンクごとに、入力識別特性(IDC)の対応集合を算出し、IDC集合が少なくとも一つの識別特性を有し、IDC集合をインデックス内に保管された1以上のRDC集合と比較し、IDC集合内の識別特性の類似性閾値jがインデックス内に保管されたRDC集合内に検出された場合、入力チャンクと対応リポジトリチャンクとの間に類似性が存在すると特定する前記手段とを含む。   A system for searching repository data for data similar to input data, the system having means for dividing the repository data into one or more repository chunks and a corresponding set of repository identification characteristics (RDC) for each repository chunk. Means for calculating said means wherein each RDC set includes at least one identification characteristic; means for holding an index associated with each RDC set and a corresponding repository chunk; and dividing input data into one or more input chunks Means for each input chunk to calculate a corresponding set of input identification characteristics (IDC), the IDC set has at least one identification characteristic, and the IDC set is compared with one or more RDC sets stored in an index RD in which the similarity threshold j of the identification characteristic in the IDC set is stored in the index If it is detected in the set, and a said means for identifying a similarity exists between the input chunk and the corresponding repository chunk.

各RDC集合とIDC集合は、個別データチャンクを複数のシードに区画し、各シードを個別データチャンクの小部分としてシード系列内に順列配置し、各シードにハッシュ関数を適用して複数のハッシュ値を生成し、各シードが一つのハッシュ値をもたらし、複数のハッシュ値の部分集合を選択し、選択されたハッシュ値の部分集合に対応するシード系列内でシード位置を特定し、被特定位置へ関数を適用し、シード系列内の対応する他の位置を特定し、識別特性集合を被特定の他の位置のシードのハッシュ値として規定することにより得る。   Each RDC set and IDC set partition an individual data chunk into a plurality of seeds, arrange each seed as a small part of the individual data chunk in a permutation sequence, and apply a hash function to each seed to generate a plurality of hash values. Each seed yields a hash value, selects a subset of hash values, identifies a seed position within the seed sequence corresponding to the selected subset of hash values, and moves to the specified position. The function is applied to identify the corresponding other position in the seed sequence, and the discriminant characteristic set is obtained by defining the hash value of the seed at the other specified position.

ハッシュ値の部分集合は、k個の最大ハッシュ値を識別することで選択し、対応する他の位置の特定に適用する関数は、シード系列内の次のシードを識別するものである。   A subset of hash values is selected by identifying the k largest hash values, and the function applied to locate the corresponding other position is to identify the next seed in the seed sequence.

さらに別の実施形態では、リポジトリデータ内で入力データを識別する方法で、リポジトリデータがリポジトリデータチャンクを含み、入力データが入力データチャンクを含み、各リポジトリデータチャンクが対応する1以上のデータチャンク識別特性(RDC)集合を有する方法をコンピュータに実行させるコンピュータ実行可能命令でもってエンコードしたコンピュータ可読媒体であり、前記方法が、各入力データチャンクごとに、1以上の入力データチャンク識別特性(IDC)集合を特定するステップと、被特定IDC集合を1以上のRDC集合と比較するステップと、入力データチャンクに類似するリポジトリデータチャンクを被特定IDC集合を前記1以上のRDC集合と比較する関数として識別するステップとを含む。   In yet another embodiment, a method for identifying input data within repository data, wherein the repository data includes a repository data chunk, the input data includes an input data chunk, and each repository data chunk corresponds to one or more data chunk identifications. A computer-readable medium encoded with computer-executable instructions for causing a computer to execute a method having a characteristic (RDC) set, the method comprising, for each input data chunk, one or more input data chunk identification characteristic (IDC) sets Identifying a specified IDC set with one or more RDC sets, and identifying a repository data chunk similar to the input data chunk as a function that compares the specified IDC set with the one or more RDC sets. Steps.

さらに、コンピュータ可読媒体は、入力データに類似するデータをリポジトリデータ内で検索する方法をコンピュータに実行させるコンピュータ実行可能命令でもってエンコードし、前記方法が、前記リポジトリデータを1以上のリポジトリチャンクに分割するステップと、各リポジトリチャンクごとに、リポジトリ識別特性(RDC)の対応集合を算出するステップで、各RDC集合が少なくとも一つの識別特性を備える前記ステップと、RDCの各集合に関連するインデックスと前記対応リポジトリチャンクとを保持するステップと、前記入力データを1以上の入力チャンクに分割し、各入力チャンクごとに、入力識別特性(IDC)の対応集合を算出し、IDC集合が少なくとも一つの識別特性を含み、IDC集合をインデックス内に格納された1以上のRDC集合と比較し、IDC集合内の識別特性の類似性閾値jがインデックス内に格納されたRDC集合内に検出された場合、入力チャンクと対応リポジトリチャンクとの間に類似性が存在すると特定するステップとを含む。   In addition, the computer-readable medium encodes with computer-executable instructions that cause the computer to perform a method for retrieving data similar to the input data in the repository data, the method dividing the repository data into one or more repository chunks. Calculating a corresponding set of repository identification characteristics (RDC) for each repository chunk, wherein each RDC set comprises at least one identification characteristic, an index associated with each set of RDCs, and Holding a corresponding repository chunk, dividing the input data into one or more input chunks, calculating a corresponding set of input identification characteristics (IDC) for each input chunk, wherein the IDC set has at least one identification characteristic IDC set in the index Similarity between the input chunk and the corresponding repository chunk if the similarity threshold j of the identification characteristic in the IDC set is detected in the RDC set stored in the index compared to one or more stored RDC sets Identifying that sex is present.

さらにまた、コンピュータ可読媒体は、RDC集合とIDC集合のそれぞれを得るステップを下記により実行するコンピュータ実行可能命令をさらに含み、すなわち個別データチャンクを複数のシードへ区画し、各シードを個別データチャンクの小部分としてシード系列にて順列配置し、各シードにハッシュ関数を適用して複数のハッシュ値を生成し、各シードが一つのハッシュ値をもたらし、複数のハッシュ値の部分集合を選択し、ハッシュ値の選択された部分集合に対応するシード系列内でシード位置を特定し、被特定位置に関数を適用してシード系列内に対応する他の位置を特定し、識別特性集合を特定された他の位置のシードのハッシュ値として規定する。   Furthermore, the computer-readable medium further includes computer-executable instructions for performing the steps of obtaining each of the RDC set and the IDC set according to the following, i.e. partitioning the individual data chunks into a plurality of seeds, each seed of the individual data chunks. Permutation is arranged as a small part in a seed sequence, a hash function is applied to each seed to generate multiple hash values, each seed yields a single hash value, a subset of multiple hash values is selected, and a hash Identifies the seed position in the seed sequence corresponding to the selected subset of values, applies the function to the specified position to identify other positions corresponding to the seed sequence, and identifies the identification characteristic set It is specified as the hash value of the seed at the position of.

ハッシュ値の部分集合は、k個の最大ハッシュ値を識別することで選択され、対応する他の位置を特定するのに適用する関数は、シード系列内で次のシードを特定するものである。   A subset of hash values is selected by identifying the k largest hash values, and the function applied to identify the corresponding other position is to identify the next seed in the seed sequence.

本明細書内に取り込んでその一部を構成する添付図面は、本発明の様々な実施形態と態様を示すものであり、説明と合わせ本発明の幾つかの原則を説明するのに役立つ。   The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate various embodiments and aspects of the invention and, together with the description, serve to explain some principles of the invention.

以下の実施形態にて使用する如く、リポジトリはメモリ内に格納するデジタルデータの収集及び/又はコンピュータ参照用のストレージである。そのサイズに限界はなく、1PB以上のオーダーとし得る。特定用途にあっては、データは2値非変換データとして保管する。入力データはリポジトリデータと同種或いは異種とすることができる。入力データは、バージョンとも呼ばれる。特定用途にあっては、バージョンとリポジトリをそれぞれチャンクに分割する。チャンクサイズmは、例えば32MB等のパラメータである。用語シードは、バイト等の連続系列データ要素を指す。シードサイズsもまた、例えば512バイト或いは(他の非限定例では)4KBやさらに8KBものパラメータである。一般に、シードサイズsはチャンクサイズmよりもずっと小さい。   As used in the following embodiments, a repository is a collection of digital data stored in memory and / or storage for computer reference. The size is not limited and can be on the order of 1 PB or more. For specific applications, the data is stored as binary non-converted data. The input data can be the same or different from the repository data. Input data is also called a version. For specific uses, split the version and repository into chunks. The chunk size m is a parameter such as 32 MB, for example. The term seed refers to a continuous data element such as a byte. The seed size s is also a parameter of eg 512 bytes or (in other non-limiting examples) 4 KB or even 8 KB. In general, the seed size s is much smaller than the chunk size m.

本発明の幾つかの実施形態によれば、ハッシュ関数が用いられる。ハッシュ関数は、或る種大空間の要素を第1の空間の要素にハッシュ値と呼ぶ数値を割り当てることで或る種の小空間の要素へ写像する。ハッシュ関数は通常、第1の空間の基本要素の或る種の数値変換を入力として使用する算術関数である。「良質な」ハッシュ関数は、ほぼ常時第1の空間の要素内の最も軽微な変化についてさえ統計的に関連のないハッシュ値を生成する。   According to some embodiments of the invention, a hash function is used. The hash function maps a certain kind of large space element to a certain kind of small space element by assigning a numerical value called a hash value to the first space element. A hash function is typically an arithmetic function that uses as input a certain numerical transformation of the basic elements of the first space. A “good” hash function produces a hash value that is almost always statistically unrelated to even the slightest change in the elements of the first space.

以下の実施形態では、モジュラーハッシュ関数を使用する。しかしながら、この使用は非限定例である。公知の如く、モジュラーハッシュ関数は、或るストリーム内のs個の連続する基本要素のハッシュ値が既知である場合、一つの基本要素後に始まる(かくして基本要素の先の系列に重複する)ストリーム内のs個の基本要素のハッシュ値をO(1)演算により算出できる特性を有する。こうして、チャンク内の全てのシードの全ハッシュ値はO(m・s)ではなくO(m)演算により算出できる。この特性が故に、ハッシュ関数はローリングハッシュ関数と呼ばれる。本発明が特定のローリングハッシュ関数或いは一般のハッシュ関数の使用に拘束されないことに、留意されたい。   In the following embodiment, a modular hash function is used. However, this use is a non-limiting example. As is well known, a modular hash function is used in a stream that starts after one basic element (and thus overlaps the previous sequence of basic elements) if the hash value of s consecutive basic elements in a stream is known. The hash value of the s basic elements is calculated by O (1) calculation. Thus, all hash values of all seeds in the chunk can be calculated by O (m) calculation instead of O (m · s). Because of this property, the hash function is called a rolling hash function. It should be noted that the present invention is not bound to the use of a specific rolling hash function or a general hash function.

インデックスは、効率的な検索を容易にするデータ構造である。それは、空間効率が良くなければならない。一部用途(本実施形態等)では、内挿や消去等の効率的な動的演算をサポートしなければならない。一つのインデックスをハッシュテーブルにより実装し、かくして検索と内挿と消去をO(1)演算それぞれにサポートする。以下に説明する本発明の幾つかの実施形態によれば、インデックスは或るシードのハッシュ値であるキーにより索引付けされ、各キー値がそれが生成された一のシード(或いは複数のシード)を識別する。   An index is a data structure that facilitates efficient searching. It must be space efficient. In some applications (such as this embodiment), efficient dynamic operations such as interpolation and erasure must be supported. One index is implemented with a hash table, thus supporting search, interpolation and erasure for each O (1) operation. According to some embodiments of the invention described below, the index is indexed by a key that is a hash value of a seed, and each key value is the seed (or seeds) from which it was generated. Identify

図1中、本発明の一実施形態になる汎用ストレージシステム・アーキテクチャが図示してある。本発明は、無論、この特定のシステムアーキテクチャに拘束されない。図1中、ストレージ領域ネットワークSAN(12)が4個のバックアップサーバ(11)をサーバ(13)へ接続している。サーバ(13)は、仮想テープインタフェース(14)とRAMメモリ(15)とを含む。インデックスは、RAM(15)内に格納される。サーバ(13)は、1以上の(恐らくは外部)二次ストレージ装置に格納したリポジトリに接続してある。   In FIG. 1, a general purpose storage system architecture according to an embodiment of the present invention is illustrated. Of course, the present invention is not bound to this particular system architecture. In FIG. 1, a storage area network SAN (12) connects four backup servers (11) to a server (13). The server (13) includes a virtual tape interface (14) and a RAM memory (15). The index is stored in the RAM (15). The server (13) is connected to a repository stored in one or more (possibly external) secondary storage devices.

本発明がストレージ領域ネットワーク(SAN)とその特定の技術的特徴、例えばファイバーチャンネルに限定されないことに、留意されたい。これに限定はされないがインターネットプロトコル(IP)とTCP/IPを含むサーバ間のネットワーク化通信を容易にするのに任意のネットワーク技術を使用できることは、当業者には理解されよう。図1に続く説明はSANを引用するものであるが、これは例示目的に合わせただけで、特許請求の範囲に明示的に記載していない限り本発明のどの実施形態も限定すべきではない。   It should be noted that the present invention is not limited to a storage area network (SAN) and its specific technical features such as Fiber Channel. Those skilled in the art will appreciate that any network technology can be used to facilitate networked communication between servers, including but not limited to Internet Protocol (IP) and TCP / IP. The description following FIG. 1 refers to a SAN, but this is for illustrative purposes only and should not limit any embodiment of the present invention unless explicitly stated in the claims. .

図2中、フローチャート(20)は本発明の一実施形態になるシステム寿命サイクルのステップを示す。図示の如く、処理は空インデックス(21)から始まる。インデックスの内容と目的は、以下に詳述する。次に、システムはバージョン(22)を受信するまで待機状態に入り、その後にバージョンを以下にさらに詳しく説明する仕方で処理(23)する。バージョンを処理した後、システムは別のバージョンを受信するまで待機状態(22)へ復帰する。手順(22,23)は、より多くの入力バージョンが受信される限り続けられる。入力バージョンは、リポジトリ及び/又はインデックスを更新することもそうしないこともできる。ここに記載する一つのファクタリング応用例では、入力バージョンが新規(リポジトリ内のデータに充分には類似しない)と認識された場合、それはリポジトリ内にそのまま組み込まれる。他方、入力バージョンがリポジトリ内の既存のデータに十分類似すると認識された場合、それはリポジトリデータでもってファクタリング処理され、バージョンの不一致部分だけが格納される。前記から明らかな如く、システムが長く作動するほど、リポジトリのサイズも大きくなる。幾つかの用途にあっては、リポジトリサイズは数百ギガバイトから数ペタバイトに及ぶ。かくして、入力データに十分類似するリポジトリデータを効率的仕方で配置或いは識別する必用がある。さもなくば、処理時間は余りに長引き、システムは経済的にも商業的にも実施できなくなる。   In FIG. 2, flowchart (20) illustrates the steps of the system life cycle according to one embodiment of the present invention. As shown, processing begins with an empty index (21). The contents and purpose of the index are detailed below. The system then enters a wait state until it receives the version (22), after which it processes (23) the version in the manner described in more detail below. After processing the version, the system returns to the wait state (22) until another version is received. Procedure (22, 23) continues as long as more input versions are received. The input version may or may not update the repository and / or index. In one factoring application described here, if an input version is recognized as new (not sufficiently similar to the data in the repository), it is incorporated directly into the repository. On the other hand, if it is recognized that the input version is sufficiently similar to existing data in the repository, it is factored with the repository data and only the mismatched versions are stored. As is apparent from the above, the longer the system operates, the larger the repository size. For some applications, repository sizes range from hundreds of gigabytes to several petabytes. Thus, there is a need to locate or identify repository data that is sufficiently similar to the input data in an efficient manner. Otherwise, the processing time is too long and the system cannot be implemented economically or commercially.

類推するに、説明の代替方法として限定は意図しないが、互いに非常に異なる文書Aと文書Bの二つの文書についての筋書きを考える。初期化したシステム、すなわち空のリポジトリでは、本発明の一実施形態によれば、各文書AとBはチャンク或いはセクションに分割して格納する(チャンクは以下にさらに詳しく説明する)。この筋書きの説明を簡略化するため、チャンクは各文書A,Bが各半体ごとに2個のチャンクを有する4個のチャンク長となるサイズとする。そこで、8個のチャンクをリポジトリ内に格納する。本実施形態によれば、これらのチャンクはファイルネームに基づいて格納されないことに留意されたい。これらのチャンクは、リポジトリがチャンクから文書を再生できるようにして格納される。   By analogy, although not intended to be limited as an alternative method of explanation, consider a scenario for two documents A and B that are very different from each other. In an initialized system, ie, an empty repository, according to one embodiment of the invention, each document A and B is stored in chunks or sections (chunks are described in more detail below). In order to simplify the description of the scenario, the chunks are sized so that each document A and B has a length of four chunks having two chunks for each half. Therefore, 8 chunks are stored in the repository. Note that according to this embodiment, these chunks are not stored based on file names. These chunks are stored so that the repository can replay documents from the chunks.

次に、文書Aの最初の半分を切り貼りすることで新規文書Cを(文書Cへ)生成し、続いて他の追加データを追加することなく文書Bの残り半分を切り貼りすることで(文書Cへ)生成するものとする。その文書Cが文書Aと文書Bそれぞれに対し実質的類似性を有すると理解はできるものの、各文書から実質的差分もまた有することになる。   Next, a new document C is generated (to document C) by cutting and pasting the first half of document A, and then the remaining half of document B is cut and pasted without adding other additional data (document C). F) shall be generated. Although it can be understood that the document C has a substantial similarity to each of the document A and the document B, the document C also has a substantial difference from each document.

本実施形態は、文書Cをその4個のチャンクに分け、類似チャンクについてリポジトリを検索することにする。類似チャンクは、文書Cの最初の二つのチャンクと文書Aの最初の二つのチャンクの間と、文書Cの最後の二つのチャンクと文書Bの最後の二つのチャンクとの間とで識別するものとする。システムは類似チャンクを識別するだけで、厳密なチャンクは識別しないため、システムはそこで類似チャンク間のどんな差分(ファクタリング)も特定することになる。ここで、類似のチャンクは同一である。かくして、この筋書きでは、文書Cは事実上既に格納(A及びBチャンクとして)されており、それを格納する、すなわちそれを再生し検索できるのに必用な空間は文書C全体の格納よりはずっと少量となる。ファイルネーム準拠システムでは、文書Cの4個のチャンクが再度保管され(文書Cとして)、これらチャンクがシステム内に既に保管されているが故にそれは冗長となろう。   In this embodiment, the document C is divided into the four chunks, and the repository is searched for similar chunks. Similar chunks are identified between the first two chunks of document C and the first two chunks of document A, and between the last two chunks of document C and the last two chunks of document B And Since the system only identifies similar chunks and not exact chunks, the system will then specify any differences between similar chunks. Here, similar chunks are the same. Thus, in this scenario, document C is already already stored (as A and B chunks), and the space needed to store it, i.e. to play and retrieve it, is much more than storing the entire document C. A small amount. In a file name compliant system, four chunks of document C will be stored again (as document C) and it will be redundant because these chunks are already stored in the system.

文書Cを再生するため、本実施形態になるシステムは文書Aの最初の半分について格納した二つのチャンクと文書Bの次の半分について記憶した二つのチャンクとを検索することになる。   In order to reproduce the document C, the system according to the present embodiment searches the two chunks stored for the first half of the document A and the two chunks stored for the next half of the document B.

別の筋書きでは、新規文書Dは文書Aの最初の半分を切り貼りすることで生成され(文書Dへ)、続いて文書Bの残りの半分を切り貼りすることで生成される(文書Dへ)。その結果、文書の表題は他の変更を一切伴なうことなく、「The Life of John Adams(ジョンアダムスの生涯)」から「The Loan to Jobs Apple(ジョブスアダムスへの借金)」に変更される。ここでも、文書AとDの間及び文書BとDの間に実質類似性が存在することを理解できるだけでなく、実質差分もまた理解することができる。   In another scenario, a new document D is generated by cutting and pasting the first half of document A (to document D) and subsequently generated by cutting and pasting the other half of document B (to document D). As a result, the title of the document is changed from "The Life of John Adams" to "The Loan to Jobs Apple" without any other changes. . Again, not only can there be substantial similarity between documents A and D and between documents B and D, but also substantial differences can be understood.

本システムは、文書Dを4個のチャンクへ分割し、続いて既に格納されている類似チャンクを検出する。この場合、システムは文書Aから最初の二つのチャンクを検出し、文書Bからの後の二つのチャンクは文書Dのチャンクに類似するとして検出する。次に、システムは文書Dの最初のチャンクとその個別類似チャンクとの間に差分が存在すると判定することになる。差分、すなわち表題における変更場所が特定されることになる。かくして、文書Dは文書Aからの最初の二つのチャンクと文書Bからの後の二つのチャンクとしてリポジトリ内で表わされることになるが、ただし識別、すなわち文書Dの最初のチャンクが被識別類似チャンク、すなわち本例の場合文書Aと関連する第1のチャンクとは異なる箇所のデルタすなわち差分とその内容とを伴なう。かくして文書Dの表現に必用な空間量は、そこでリポジトリ内に文書Dを全て保管するよりはずっと少量となる。   The system divides document D into four chunks and then detects similar chunks that are already stored. In this case, the system detects the first two chunks from document A, and detects the latter two chunks from document B as being similar to the chunk of document D. The system will then determine that there is a difference between the first chunk of document D and its individual similar chunk. The difference, i.e. the change location in the title, will be identified. Thus, document D will be represented in the repository as the first two chunks from document A and the second two chunks from document B, except that the first chunk of document D is identified as an identified similar chunk. That is, in the case of this example, the delta, that is, the difference between the first chunk associated with the document A and the contents thereof are accompanied. Thus, the amount of space required to represent document D is much smaller than storing all documents D in the repository there.

前記した単純な筋書きはファイルネーム、すなわち文書を引用して説明したが、本発明の様々な実施形態は任意のファイルシステムに対しガラス張りであり、何故なら比較はさらに詳しく後述するチャンクと特性の関数となるからである。本システムを用いることで、文書A,B,C,Dはファイル準拠或いはファイルネーム準拠システム内と同様、同一ユーザに関連付けられないが、類似性を特定し、効率的な保管を依然として達成することができる。バックアップシステム或いはファイルシステムに基づき類似性を検出する試みは、上記筋書きにおいて文書Aと文書Bと文書Cと文書Dの部分間での類似性を特定できない筈である。都合よくは、本発明は最も知られたファイルシステムに対しガラス張りとする。   Although the simple scenario described above has been described with reference to file names, ie documents, the various embodiments of the present invention are glazed for any file system, since the comparison is a function of chunks and properties described in more detail below. Because it becomes. By using this system, documents A, B, C, and D are not associated with the same user as in a file-compliant or file-name compliant system, but identify similarities and still achieve efficient storage. Can do. Attempts to detect similarities based on a backup system or file system should not be able to identify similarities between parts of Document A, Document B, Document C, and Document D in the scenario. Conveniently, the present invention is glazed for the best known file systems.

図3は、本発明の一実施形態になるバージョン処理(図2におけるステップ23)の一方法を詳しく示すものである。バージョンを受信(31)すると、それはより小さなチャンク(32)、すなわちチャンクごとに32MBに分割される。第1の入力チャンクを選択(33)し、この入力チャンクを処理してリポジトリ内で実質類似するチャンクとその位置を検出(34)する。このステップ(34)を、図4を参照してより詳しく以下に説明する。類似リポジトリチャンクを検出したことで、バージョンチャンクをさらに処理(35)し、それは本実施形態によればリポジトリとバージョンチャンクのファクタリングを必然的に伴なう。この処理は、バージョン内にそれ以上のチャンクが存在せず、処理が終わる(38)まで、入力バージョンの追加のチャンクについて反復(34〜37)する。   FIG. 3 shows in detail one method of version processing (step 23 in FIG. 2) according to an embodiment of the present invention. When a version is received (31), it is divided into smaller chunks (32), ie 32MB per chunk. A first input chunk is selected (33) and the input chunk is processed to find (34) a substantially similar chunk and its position in the repository. This step (34) is described in more detail below with reference to FIG. By detecting similar repository chunks, the version chunks are further processed (35), which inevitably involves factoring the repository and version chunks according to this embodiment. This process repeats (34-37) for additional chunks of the input version until there are no more chunks in the version and the process ends (38).

本発明の異なる実施形態によれば、入力チャンクが所定のリポジトリデータに一致すると、続く入力チャンクを先ず試験して一致リポジトリチャンクに続くリポジトリデータとの一致が試験され、かくしてそのアプリケーション専用処理(35)へ直接進む。他方で、以下の入力チャンクがこの試験に失敗した場合、それを完全に処理してその類似リポジトリデータを検出(34,35)する。
同期アルゴリズムとファクタリング
According to different embodiments of the present invention, when an input chunk matches a given repository data, the subsequent input chunk is first tested for matches with the repository data following the matching repository chunk, and thus its application specific processing (35 Go directly to). On the other hand, if the following input chunk fails this test, it is fully processed to detect (34,35) its similar repository data.
Synchronization algorithms and factoring

図4は、本発明の一実施形態に従い、リポジトリ内で十分類似するチャンクの位置を効率的に検出するステップと続くファクタリングステップの一つの手順を示すものである。入力(バージョン)チャンクに対する類似リポジトリチャンクを検出すのに使用するアルゴリズムをここでは同期アルゴリズムと呼ぶが、それはその出力がリポジトリとバージョン内で共通点を含むからであり、このことはそれまで二つの不整列配置データセグメントであったものを効果的に(同一のデータ境界上に)整列配置する後処理に有用である。   FIG. 4 shows one procedure of efficiently detecting the location of sufficiently similar chunks in the repository and the subsequent factoring step according to one embodiment of the present invention. The algorithm used to detect similar repository chunks for input (version) chunks is referred to herein as a synchronization algorithm, because its output contains something in common with the repository and version, which has so far This is useful for post-processing that effectively aligns (on the same data boundary) what was an unaligned data segment.

入力チャンクサイズ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個の識別特性が或る範囲の数の上で数としてほぼ均一に分布することを意味する。
The input chunk size m, ie 32 MB, is processed (41) in the following manner. First, k identification characteristic sets (42) of version chunks are calculated, where k is a parameter (usually several tens) of this algorithm described below, and k << m (chunk size). According to one embodiment (as described further below for a particular example), k distinctive feature sets are calculated as follows (not shown in FIG. 4).
(1) Hash data is calculated for each seed of the input data chunk. The seed can be any size s substantially smaller than the string length m, ie 4 KB. According to this non-limiting embodiment, the hash value for each seed is calculated using a rolling hash function that moves forward by 1 byte in each iteration. A hash value is calculated for each iteration for a 4 KB seed size contained within this range. According to this example, when the input chunk size is m = 32 MB and the seed size is s = 4 KB, 33,550,337 (32 MB-4 KB + 1) hash values are obtained for each chunk, At each possible byte offset. Once the hash value for a seed of s bytes is known, the rolling hash function calculates the hash function for the next s bytes (ie, shifts 1 byte relative to the previous s bytes, thus having s-1 duplicate bytes. s bytes) can be performed by O (1) operation instead of O (s). The present invention is not constrained to the use of a hash function or to a rolling hash function.
(2) Next, the k maximum hash values, that is, the maximum hash values in the descending order of the k individual seeds are selected from the calculated hash values of (33, 550, 337). These k seeds constitute k maximum seeds. Thereafter, k hash values of k individual seeds, which are followed by 1 byte (overlapping by s-1 bytes) after the k maximum seeds, are respectively selected. These k seeds constitute k identification seeds, and their corresponding hash values constitute k input identification characteristics. Note that the maximum value itself has a non-uniform probability distribution. However, when a good hash function is used, the probability distribution of the following k values is very uniform and is therefore substantially better for the intended use. The uniform distribution means that k identification characteristics are distributed almost uniformly as numbers over a certain range of numbers.

本発明は上記した仕方で識別特性を算出することによって拘束されないことに、留意されたい。より広域に亙りエラー耐性があって良好に拡散した特性を生み出し、所与のチャンクに対し反復可能なあらゆる選択肢が、本発明の本実施形態に使用可能である。   It should be noted that the present invention is not constrained by calculating the identification characteristics in the manner described above. Any option that is repeatable for a given chunk that produces error tolerance over a wider area and is well spread can be used in this embodiment of the invention.

定義   Definition

エラー耐性:チャンクに割り当てた特性が、チャンクが穏当な変化を受ける限り、かなり一定のままに留まる(例えば、そのシードの25%まで)。   Error resilience: The characteristics assigned to a chunk remain fairly constant (eg, up to 25% of its seed) as long as the chunk undergoes a modest change.

良好に拡散:特性位置がチャンク全体(地勢的に拡散)に良好に拡散(ほぼ一様に)している。   Good diffusion: The characteristic position is well spread (almost uniformly) throughout the chunk (topographically spread).

反復可能:一定の形式のチャンクがほぼ常に同一の特性を割り当てられる。   Repeatable: A certain type of chunk is almost always assigned the same characteristics.

この種の方法は、チャンクシードの部分集合だけを考慮することになろう。例えば、特性の選択はチャンクの間隔とすることができ、その距離はしかるべき実施形態に従って算術的或いは幾何学的に規定される。他方法は、前述の方法等の全てのチャンクシードに配慮するものである。   This type of method would only consider a subset of chunk seeds. For example, the property selection can be chunk spacing, the distance being defined arithmetically or geometrically according to the appropriate embodiment. The other method considers all chunk seeds such as those described above.

本実施形態によれば、特性間の最小の地理的(位置的)拡散を強要し、かくして適用範囲が改善される。一般に、算出されたシード値の算術特性に基づきあらゆる反復可能な選択肢が適用可能である。   According to this embodiment, a minimum geographical (positional) spread between characteristics is enforced, thus improving the coverage. In general, any repeatable option is applicable based on the arithmetic characteristics of the calculated seed value.

例えば、k個の最小ハッシュ値、すなわち最小のハッシュ値、すなわちチャンク内で算出された全てのハッシュ値の中央値に最も近いk個のハッシュ値又は或る所定の定数に最も近いk個のハッシュ値さえ選択することができる。別の例はk個の特性を対の総和として選択し、かくして第1対が最小値と最大値を構成し、第2対が第2の最小値と第2の最大値を構成する等することができる。特定用途に応じて、他の変形例が適用可能である。   For example, the k minimum hash values, i.e., the minimum hash value, i.e., the k hash values closest to the median value of all hash values calculated in the chunk, or the k hash values closest to a given constant You can even choose a value. Another example is to select k characteristics as the sum of pairs, so that the first pair constitutes the minimum and maximum values, the second pair constitutes the second minimum and second maximum values, etc. be able to. Other variations are applicable depending on the specific application.

また、最小値に対応するシードの1バイトシフトを用いる代りに、位置及び/又は算出ハッシュ値に応じて、或る種の他の所定定数シフトや、或いはさらに異なるシフトを用いることもできる。最大のハッシュ値と1バイトシフトの使用例は、かくして唯一の可能な実施形態となる。   Also, instead of using a 1-byte shift of the seed corresponding to the minimum value, some other predetermined constant shift or even a different shift can be used depending on the position and / or the calculated hash value. The use of the maximum hash value and 1 byte shift is thus the only possible embodiment.

識別特性を算出するこの一つの手順の具体例を、以下に示す。   A specific example of this one procedure for calculating the identification characteristic is shown below.

本実施形態では、リポジトリにはインデックスが関連付けてあり、このインデックスが各リポジトリチャンクごとに、n個、ただしn≦kの識別特性を格納している。n個の識別特性はそれぞれ1バイトが続く(s−1バイトが重複する)シードサイズsバイトのn個のハッシュ値であり、それぞれ、シードはリポジトリチャンク内のシードの中からn個の最大ハッシュ値を有する。k個の識別特性を各入力チャンクごとに算出するも、インデックスが各リポジトリチャンクごとにたったn個の識別特性しか含まない理由を、以下に説明する。インデックスはさらに、各識別特性のリポジトリ内に位置を格納する。本発明は、特定のインデックス構造と前述したコンテンツによって拘束されることはない。   In this embodiment, an index is associated with the repository, and this index stores n, but n ≦ k, identification characteristics for each repository chunk. The n identification characteristics are n hash values of seed size s bytes each followed by 1 byte (overlapping s-1 bytes), each of which is the n largest hash among the seeds in the repository chunk. Has a value. The reason why the k identification characteristics are calculated for each input chunk but the index contains only n identification characteristics for each repository chunk will be described below. The index further stores the location in the repository for each identifying characteristic. The present invention is not bound by any particular index structure and content described above.

インデックス構造をより良く理解するため、図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)は、新規バージョンがリポジトリ内に導入され、各バージョンのチャンクに関連するハッシュ値(前記した仕方で算出)がインデックスへ追加されるにつれ、連続的に成長する。   To better understand the index structure, FIG. 5 is substantially similar to the index (44) and the set of discriminating features (55i-59i) in the input chunk (51), according to one embodiment of the present invention. FIG. 6 illustrates the correspondence between the (5) corresponding identification characteristic sets (55r to 59r) in the repository chunk (52) to be displayed. The repository chunk 52 forms a part of the repository (53), and a huge number of chunks 50 are stored here. The discriminating characteristic is a set of selected hash values generated from the well spread seeds indicated by the five triangles (55i) to (59i) in the input chunk (51) as described above. The same five identification characteristics (55r-59r) are illustrated in a substantially similar repository chunk (52). This index (44) holds the identification characteristics of the location data (eg, the relative location of the chunk (52) in the repository) associated with the repository chunk (5 of the chunks (52)). Thus, during the similarity search period, when the value of the repository chunk (52) is detected to match that of the input chunk (51), the location of the detected chunk (52) in the repository extracts the relevant location data. It will be easily known. The index (44) grows continuously as new versions are introduced into the repository and hash values (calculated in the manner described above) associated with each version of the chunk are added to the index.

図4を参照するに、インデックス(44)は最大n個の一致が検出されるまで識別特性のハッシュ値について検索する(ステップ43)。より具体的には、入力チャンク集合のk個の識別特性のそれぞれを一致を検出すべくインデックス内を検索し、最大n個の識別特性が一致するまでこれを継続する。ここで、j(j≦n)が一致した識別特性の数を指すものとする。明らかに、入力チャンクのk個の識別特性の全集合が検査される(すなわち、k個の値の中からi個だけを検査する)前にn個の一致が検出された場合、残り(すなわち、本例ではk−i)を検査する必用性は不要となる。   Referring to FIG. 4, the index (44) searches for hash values of identification characteristics until a maximum of n matches are detected (step 43). More specifically, the index search is performed to detect matching of each of the k identification characteristics of the input chunk set, and this is continued until a maximum of n identification characteristics match. Here, j (j ≦ n) indicates the number of identification characteristics that match. Obviously, if n matches are detected before the entire set of k discriminating characteristics of the input chunk is examined (ie, only i of the k values are examined), the rest (ie In this example, the necessity to inspect k-i) is not necessary.

これらj個の一致を検出する計算処理の計算量は低く、何故なら最大でk回のインデックス(本例では、ハッシュ値)検索を必要とし、各回ともO(1)の計算量であるからである。   The calculation amount of the calculation process for detecting these j matches is low because it requires a maximum of k index (hash value in this example) search, and each time the calculation amount is O (1). is there.

一実施形態では、j>2の一致識別特性を有するバージョンチャンクは1以上のリポジトリチャンクに一致すると見なされる。他方で、j<2の一致識別特性を有するバージョンチャンクはリポジトリチャンク内のいずれとも一致しないと見なされる。たった一つの一致(j=1)は統計的に有意味とは見なされず、何故ならその発生は非常に大きなリポジトリにとって稀な事象ではないだろうからである。   In one embodiment, a version chunk with a match identification characteristic of j> 2 is considered to match one or more repository chunks. On the other hand, a version chunk with a match identification characteristic of j <2 is considered not to match any in the repository chunk. A single match (j = 1) is not considered statistically meaningful because its occurrence will not be a rare event for very large repositories.

バージョンチャンクの識別特性がリポジトリチャンクの複数の識別特性に合致し得ることに、留意されたい。二つのバージョン識別特性が互いに良好に十分離れた二つのリポジトリ識別特性と一致し、二つの個別リポジトリチャンクに属する可能性もある。そこで、バージョンチャンクが複数のリポジトリチャンクと一致する可能性が前記のことから生ずる。この種の各リポジトリチャンクiについて、hiをこの種の一致識別特性の数とする。一実施形態では、リポジトリチャンクiとバージョンチャンクとの間の類似性レベルは、hiとnの間の比により計測され、ここでこの比が閾値を上回る場合、リポジトリチャンクはバージョンチャンクに実質類似すると考えることができる(図4のステップ45)。   Note that the identification characteristics of the version chunk can match multiple identification characteristics of the repository chunk. It is possible that two version identification characteristics coincide with two repository identification characteristics that are well separated from each other and belong to two separate repository chunks. Thus, the possibility arises that a version chunk matches a plurality of repository chunks. For each repository chunk i of this kind, let hi be the number of coincidence identification characteristics of this kind. In one embodiment, the similarity level between repository chunk i and version chunk is measured by the ratio between hi and n, where if this ratio is above a threshold, the repository chunk is substantially similar to the version chunk. Can be considered (step 45 in FIG. 4).

例えば、リポジトリ内に保管された2値データの旧バージョンに比べ若干の変更を受けたバージョンについて考察する。通常、この種の変化は幾つかの局所的変化を受けるシードの僅かな百分率に反映される。この正味の影響は、所与のチャンクについてはその大半が無傷のまま残る点にある。チャンクの識別特性の位置は適切に拡散するよう選択(地勢的にはチャンク全体に)してあるため、局所的変化はあるにせよごく僅かしか識別特性に影響せず、その残りは変化しないことになる。換言すれば、この表現方法はエラー耐性があり、何故なら一(又は複数)の局所的変化の大部分でさえ多くの識別特性を手付かずのまま残すからである。統計的には、しかるべき実施形態では、検索によって少なくとも二つの一致を有するリポジトリチャンクを見出した場合(後者の例を意味、すなわちj≧2)、そのときはリポジトリとバージョンチャンクは十分に類似し、さらなる比較に値することになる。   For example, consider a version that has undergone some changes compared to the previous version of binary data stored in the repository. Typically, this type of change is reflected in a small percentage of the seed that undergoes some local changes. The net effect is that most of a given chunk remains intact. Chunk discriminant locations are chosen to spread properly (topically across the chunks), so that local changes have little or no effect on discriminating features and the rest remain unchanged become. In other words, this representation method is error tolerant because it leaves many discriminating features untouched even for the majority of one (or more) local changes. Statistically, in an appropriate embodiment, if the search finds a repository chunk that has at least two matches (meaning the latter example, ie j ≧ 2), then the repository and version chunk are sufficiently similar Would deserve further comparison.

選択実施形態では、バージョンチャンク(結局はリポジトリの一部ともなる)上の識別特性の均一な拡散を改善すべく、チャンクはさらにu個の下位チャンクに分割する。各下位チャンクごとにk/u個の識別特性を計算し、それらが合わせk個の識別特性を構成する。   In selected embodiments, the chunk is further divided into u sub-chunks to improve the uniform spread of discriminating characteristics on the version chunk (which eventually becomes part of the repository). For each sub-chunk, k / u identification characteristics are calculated, which together form k identification characteristics.

選択実施形態では、識別特性の各一致の重要性を改善すべく、高度循環型識別特性リストを保持する。識別特性を或る閾値を超える一定数のバージョンチャンクについて算出すると、それはデータ内の一部系統的パターンに属すると見なされ、かくして低減された識別情報をもたらす。そこで、それを循環値リストに追加し、続くチャンクに対しそれが生ずる際にその使用を排除する。識別特性の算出時に、その値をリスト内の存在ごとに検査し、それが存在する場合は、それを廃棄して別の識別特性をその場で計算する。   In selected embodiments, a highly circular discriminant list is maintained to improve the importance of each match of discriminant features. When the identification characteristic is calculated for a certain number of version chunks that exceed a certain threshold, it is considered to belong to some systematic pattern in the data, thus resulting in reduced identification information. So add it to the circular list and eliminate its use when it occurs for the following chunks. When calculating an identification characteristic, its value is checked for each occurrence in the list, and if it exists, it is discarded and another identification characteristic is calculated on the spot.

説明した実施形態では、n個超からk個までの識別特性を恐らくはインデックス内で検索し、その間に各リポジトリチャンクに対しn個だけをインデックス内に格納する。この実施形態によれば、リポジトリに対しバージョンチャンクに対する変化により引き起こされる最大のハッシュ値に対する恐らく二つの影響が存在する。すなわち、1)その対応シードを構成するデータが修正されているが故に最大のハッシュ値が出現し得る。2)変更されたデータがより高次の最大値を導入し、依然存在する最大値を変位させ得る。第2の効果を含む事例では、より多くの識別特性の検索がより多くの安定性を提供し、何故なら先の最大値は消滅せず、それはただ置換されるだけだからである。これら二つの影響は、降順及び/又はk>n選択用に最大値を選択する理由となる。   In the described embodiment, perhaps more than n to k identification characteristics are searched in the index, during which only n are stored in the index for each repository chunk. According to this embodiment, there are probably two effects on the maximum hash value caused by changes to the version chunk on the repository. That is, 1) Since the data constituting the corresponding seed is modified, the maximum hash value can appear. 2) The modified data can introduce higher order maxima and displace the maxima still present. In the case involving the second effect, the search for more discriminating characteristics provides more stability because the previous maximum does not disappear, it is only replaced. These two effects are the reason for choosing the maximum value for descending order and / or for k> n selection.

図6は、データに対する変更にもかかわらず識別特性を実質保存する仕方の一例を示す。本例では、データはmp3データであり、リポジトリサイズは20GB、バージョンサイズは数万チャンク、チャンクサイズは32MB、各チャンクごとに算出される識別特性の数は8である。図示の検索結果の三次元表現では、水平軸(幅)は検出されたキー(識別特性)の数と検索した数を表わす。左方余白の軸(深さ)は、バージョン内で変化したデータシードの百分率を表わす。右方余白の軸(高さ)は、キーを検索して検出されたチャンク数を表わす。かくして、各行(深さにおける)は、変化したシードの或る百分率が与えられたときの幾つかの識別特性に対する影響を示すことになる。   FIG. 6 shows an example of how to substantially preserve the identification characteristics despite changes to the data. In this example, the data is mp3 data, the repository size is 20 GB, the version size is tens of thousands of chunks, the chunk size is 32 MB, and the number of identification characteristics calculated for each chunk is eight. In the illustrated three-dimensional representation of the search result, the horizontal axis (width) represents the number of detected keys (identification characteristics) and the number searched. The left margin axis (depth) represents the percentage of the data seed that changed within the version. The axis (height) of the right margin represents the number of chunks detected by searching for the key. Thus, each row (in depth) will show an effect on some discriminating characteristics when given a percentage of the changed seed.

例えば、第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に関する値のユーザによる選択を支援することができる。   For example, in line 5, 10% of the data has changed, and the average of about 5,000 chunks still has 7 of their 8 discriminating characteristics untouched, More than 95% still have 4 or more of these 8 distinguishing characteristics. In the fourth row to the first row, 5%, 3%, 2%, and 1% of the data change, respectively, and the storage of the identification characteristics gradually increases. As the percentage of data change increases, more similar data can be detected by setting a lower threshold (the minimum number of matches of discriminating characteristics in the repository and input). In the case of this example, the peak relating to 25% data change (line 8) is centered on about 4 detected keys, and the threshold is set to 4 (out of k input identification characteristics). At that time, the similarity search will return to almost all repository locations where the data changes up to 25%. If the threshold is higher for the same 25% data change, eg, set to 6, then the search will return to a much lower percentage of similar repository locations. Thus, the graph of FIG. 6 etc. can assist the user in selecting values for j, k, m, n in a particular example.

ここで再度図4に戻るに、1以上の実質類似するリポジトリチャンクが検出された場合、各一致したリポジトリチャンクの位置をインデックスから抽出する(45,46)。リポジトリチャンクの位置データ(j個の検出されたハッシュ値に関連)の位置をインデックスから容易に検索できることを、思い起されたい。続くステップは1以上の一致したリポジトリチャンクを使用でき、それらの類似度によりリポジトリチャンクを等級付けすることができる。本実施形態では、バージョンチャンクとその一致リポジトリチャンクを含むファクタリングステップ(47)が続き、それがリポジトリ内へのバージョンチャンクの保管効率のよい取り込みに繋がる。この種のバックアップ及び復元システムでは、さらなるステップは、バージョンとリポジトリ内での共通(同一)データと非共通(非同一)データの識別と、バージョンの非共通データだけの格納(適当なポインタを用いてストリームに一貫性を保つ)、すなわち格納の節約を含む。例えば、典型的なバックアップ及び復元システムでは、データはバックアップ間で1%だけ変化することがある。そのデータの1%だけをリポジトリへ追加し、残りのデータが検出される箇所へポインタを維持し、必用な空間の99%を効果的に節約することで、第2のバックアップをリポジトリへ追加することができる。   Returning again to FIG. 4, if one or more substantially similar repository chunks are detected, the location of each matching repository chunk is extracted from the index (45, 46). Recall that the location of repository chunk location data (related to j detected hash values) can be easily retrieved from the index. Subsequent steps can use one or more matched repository chunks, and rank the repository chunks according to their similarity. In this embodiment, a factoring step (47) involving the version chunk and its matching repository chunk follows, which leads to efficient storage of the version chunk in the repository. In this type of backup and restore system, further steps are to identify common (identical) and non-common (non-identical) data in the version and repository, and store only the non-common data of the version (using appropriate pointers). To keep the stream consistent), including storage savings. For example, in a typical backup and restore system, data may change by 1% between backups. Add a second backup to the repository by adding only 1% of that data to the repository, maintaining a pointer to where the remaining data is found, and effectively saving 99% of the required space be able to.

本実施形態の次のステップ(48)では、リポジトリの一致部分の識別等級をインデックスから取り除く。本ステップはインデックスから新規入力チャンクのより更新されたバージョンでもって現在置換された「旧」部分へのあらゆる参照を取り除くべく実行する。次のステップ(49)において、新規チャンクのn個の最も重要な識別特性をインデックスへ追加する。本実施形態では、Aの最大シードのハッシュ値がBのそれを上回る場合、識別特性Aは別の識別特性Bよりも有意味である。これは、殆どコスト無しで行われ、何故ならnは小さく、n個の値のそれぞれのハッシュテーブル内への除去と挿入がO(1)演算によって行うことができるからである。バージョンチャンクの処理を、ここで行う(404)。   In the next step (48) of this embodiment, the identification grade of the matching part of the repository is removed from the index. This step is performed to remove any reference from the index to the "old" part that is currently replaced with a more updated version of the new input chunk. In the next step (49), the n most important identification characteristics of the new chunk are added to the index. In the present embodiment, when the hash value of A's maximum seed exceeds that of B, the identification characteristic A is more meaningful than another identification characteristic B. This is done at almost no cost, because n is small and removal and insertion of n values into each hash table can be done by O (1) operations. Version chunk processing is performed here (404).

図4中、一致が見つからなかった場合(すなわち、或る一致閾値未満のj個が見つかった場合)(401,402)、新規バージョンチャンクを或る代替処理によって処理し、何故なら類似リポジトリデータが検出されなかったからである(403)。一例では、バージョンチャンクはファクタリングを用いずにリポジトリ内に保管することができる。本実施形態のインデックス更新策によれば、バージョンチャンクの識別特性がインデックスに追加される(49)。処理(404)はそこで(前述の一致成功或いは一致失敗の経路のいずれかにおいて)終了し、新規バージョンチャンクの処理に至る。   In FIG. 4, if no match is found (ie, j less than a match threshold is found) (401, 402), the new version chunk is processed by some alternative process, because similar repository data is This is because it was not detected (403). In one example, version chunks can be stored in a repository without factoring. According to the index update strategy of the present embodiment, version chunk identification characteristics are added to the index (49). Processing (404) ends there (in either the above-mentioned matching success or matching failure path) and leads to processing of a new version chunk.

本発明が前述した例のインデックス更新策により拘束されないことに、留意されたい。他の用例では、バージョンチャンクとその全ての一致リポジトリ部分の両方の識別特性の全てを保管することが適切かも知れない。さもなくばバージョンチャンクの識別特性の追加を排除し、或いは恐らくバージョンとリポジトリチャンクの識別特性との或る種の混合でもってインデックスを更新する。   It should be noted that the present invention is not bound by the example index update strategy described above. In other applications, it may be appropriate to store all of the identifying characteristics of both a version chunk and all its matching repository parts. Otherwise, it eliminates the addition of version chunk identification characteristics, or perhaps updates the index with some sort of version and repository chunk identification characteristics.

特に本実施形態では、バージョンチャンクの識別特性が一致リポジトリ部分の特徴の全てに置き換わる場合、逆インデックスと呼ぶ別のインデックスを用いて妥当リポジトリ部分に関連する全ての識別特性(一部は恐らくバージョンチャンク識別特性とは一致しない)を識別する。逆インデックスはリポジトリ内の位置によって打ち込まれ、これらの位置をそれらの関連する識別特性へ写像する。この逆インデックスはまた、リポジトリの一部の欠損事例において主インデックスの整合性の維持を容易にする。   In particular, in this embodiment, if the identification characteristics of a version chunk replace all of the features of the matching repository part, all the identification characteristics associated with the valid repository part (possibly partly version chunks) using another index called the reverse index. Discriminating characteristics). Inverse indexes are typed by locations in the repository and map these locations to their associated distinguishing characteristics. This reverse index also facilitates maintaining the integrity of the primary index in some missing cases of the repository.

また、本発明はインデックスが空から始まるこの実施形態に拘束されないことに留意されたい。他の用例にあっては、リポジトリをチャンクへ分割し、それらの識別特性を算出し、この情報に基づいてインデックスを構築する前述の処理を介してリポジトリデータの既存体に基づきインデックスをロードすることが適切かも知れない。この種の場合、インデックスは前述した種のある種更新策に従って入来バージョンチャンクによりさらに更新することも或いはそうしないこともできる。   It should also be noted that the present invention is not bound to this embodiment where the index starts from empty. In other examples, splitting the repository into chunks, calculating their identifying characteristics, and building the index based on this information, loading the index based on the existing body of repository data May be appropriate. In this kind of case, the index may or may not be further updated with incoming version chunks according to some kind of update strategy of the kind described above.

バージョンデータに類似するデータについてリポジトリを検索する計算処理の計算量はバージョンサイズ、すなわちO(バージョン)に比例し、リポジトリサイズとは無関係に設計されることは、強調しておきたい。この検索は、上記の非限定実施形態に従って、バージョンチャンクごとにそれぞれせいぜいk個のO(1)のハッシュテープ検索を必用とする。k<m(mはバージョンチャンクのサイズである)であるため、特定の実施形態によりリポジトリ内で類似チャンクを検出する計算上の計算量がO(バージョン)、すなわち識別特性算出の計算量を超えないことが有り、このことはリポジトリサイズとは無関係に真実である。類似データに対する検索手順はかくして、非常に大きなリポジトリについてさえ非常に効率的なものとなる。   It should be emphasized that the calculation amount of the calculation process for searching the repository for data similar to the version data is proportional to the version size, that is, O (version), and is designed regardless of the repository size. This search requires at most k O (1) hash tape searches for each version chunk, according to the non-limiting embodiment described above. Since k <m (where m is the size of the version chunk), the computational complexity of detecting similar chunks in the repository according to a particular embodiment exceeds O (version), ie, the computational complexity of identifying characteristics There may not be, and this is true regardless of the repository size. The search procedure for similar data is thus very efficient even for very large repositories.

さらに、インデックスに必用とされる空間がリポジトリの各チャンクごとに格納された識別特性の数とチャンクサイズとの間の比、すなわちnとmの間の比に比例することは強調しておきたい。一実施形態では、nが8で、mが32MBである場合、各識別特性の格納に必用な空間は16バイトであり、全部で128バイトを32MBの各リポジトリとにインデックス内に格納し、250,000:1を上回る比となる。換言すれば、4GBの随時読み書き可能メモリ(RAM)はそのメモリ内に1PBリポジトリに必用なインデックスを保持でき、インデックスの迅速な検索を容易にし、かくして任意の入力チャンクに関する非常に大きなリポジトリでの同様のデータの迅速な検出を容易にする。   Furthermore, it should be emphasized that the space required for the index is proportional to the ratio between the number of identification characteristics stored for each chunk of the repository and the chunk size, ie the ratio between n and m. . In one embodiment, if n is 8 and m is 32 MB, the space required to store each identification characteristic is 16 bytes, for a total of 128 bytes stored in each 32 MB repository in the index, 250 , A ratio exceeding 1,000: 1. In other words, a 4GB ad hoc read / write memory (RAM) can hold the index needed for a 1PB repository in that memory, facilitating quick search of the index, and thus similar in a very large repository for any input chunk Facilitates the rapid detection of data.

前述した仕方で一致識別特性の識別に基づき類似チャンクを検出すると、類似チャンク間の厳密な差分の特定が関心事となろうことに、留意されたい。この種の場合、より詳細な比較(或いは補充)アルゴリズムを適用し、個別チャンクの全データ(n個の識別特性だけではない)を比較することができる。一般に、ただし排他的ではないが、この種のアルゴリズムの例は2値差分とバイト単位ファクタリング種アルゴリズムである。選択実施形態に都合よく使用できる改善された2値差分アルゴリズムを、以下に説明する。   It should be noted that if similar chunks are detected based on the identity of the matching identification characteristic in the manner described above, it will be of interest to identify exact differences between similar chunks. In this type of case, a more detailed comparison (or supplement) algorithm can be applied to compare all the individual chunk data (not just n identification characteristics). In general, but not exclusively, examples of this type of algorithm are binary difference and byte-wise factoring type algorithms. An improved binary difference algorithm that can be conveniently used in selected embodiments is described below.

補充アルゴリズムは、直前に記載した同期(類似性検索)アルゴリズムに比し(計算上のリソースの点で)効率は落ちよう。劣化した効率は、補充アルゴリズム中の所与のリポジトリチャンクの全データを処理するも、類似性検索アルゴリズムではチャンクに関連する一部データ(すなわち、識別特性を含むデータ)だけを処理するという事実から派生することがある。しかしながら、補充アルゴリズムはサイズmのたった一つのリポジトリチャンクにだけ、或いは恐らくは入力チャンクに充分類似するとして既に検出された少数のこの種のリポジトリチャンクに適用するが故に、劣化性能は選択アプリケーション内では比較的無意味なものとなろう。このことは、特に1PB以上のリポジトリ全体についての補充アルゴリズムの代替実行例とは対照的に特に真実である。   The replenishment algorithm will be less efficient (in terms of computational resources) than the synchronization (similarity search) algorithm just described. The degraded efficiency is due to the fact that all data for a given repository chunk in the replenishment algorithm is processed, but the similarity search algorithm only processes some data related to the chunk (ie, data that contains discriminating characteristics). May be derived. However, the replenishment algorithm applies only to a single repository chunk of size m, or perhaps to a small number of such repository chunks that have already been detected as sufficiently similar to the input chunk, so the degradation performance is comparable within the selected application. It will be meaningless. This is particularly true in contrast to alternative implementations of the replenishment algorithm, especially for entire repositories of 1 PB or more.

類似性検索アルゴリズムの前述の実施形態は、入力バージョンチャンクに対し大半の類似リポジトリチャンクを探索する最近隣クエリ種を解くインデックスの使用を例示するものである。本実施形態は、決して発明を限定するものではない。インデックスを用い、範囲クエリ等の他種のクエリを解くことができる。特定種のクエリは、特定用途によって決まる。   The foregoing embodiment of the similarity search algorithm illustrates the use of an index that solves the nearest neighbor query type that searches the majority of similar repository chunks against the input version chunk. This embodiment does not limit the invention in any way. The index can be used to solve other types of queries such as range queries. The specific type of query depends on the specific application.

前述の類似検索のより良好な理解に向け、本発明の幾つかの実施形態を例示する説明を以下に続ける。本発明は、本例に拘束はされない。説明の便宜上、リポジトリは単一のチャンクを含み、本例は入力チャンクをリポジトリチャンクに十分類似するとして分類する仕方を例示することになる。
例1
ステップ1:リポジトリごとにインデックスを構築する。
To better understand the similarity search described above, the description that illustrates several embodiments of the present invention continues below. The present invention is not limited to this example. For convenience of explanation, the repository includes a single chunk, and this example will illustrate how to classify an input chunk as sufficiently similar to the repository chunk.
Example 1
Step 1: Build an index for each repository.

本例は、以下のリポジトリストリングを使用する。すなわち、「Begin−at−the−beginning−and−go−on−till−you−come−to−the−end;−then−stop.」である。本ステップは、先のアルゴリズムの反復の副産物である。本例が理解しやすいよう、それはここに明示的に包含してある。
ステップ1a:ハッシュを算出する。
This example uses the following repository string: That is, “Begin-at-the-beginning-and-go-on-till-you-come-to-the-end; -then-stop.”. This step is a byproduct of the previous algorithm iteration. It is explicitly included here for ease of understanding of this example.
Step 1a: A hash is calculated.

本例はローリングハッシュ関数を用いて各バイトオフセットごとにハッシュ値を算出する。それはモジュラーハッシュ関数を用い、これは例示目的に素数8388593を使用する。使用するハッシュ関数は、h(X)=Xmod8388593である。本例では、シードサイズは8バイトである。
入力ストリング:「Begin−at−the−beginning−and−go−on−till−you−come−to−the−end;−then−stop.」
算出ハッシュ値
In this example, a hash value is calculated for each byte offset using a rolling hash function. It uses a modular hash function, which uses the prime number 8388593 for illustration purposes. The hash function used is h (X) = Xmod8388593. In this example, the seed size is 8 bytes.
Input string: “Begin-at-the-beginning-and-go-on-till-you-come-to-the-end; -then-stop.”
Calculated hash value

ステップ1b:最大値を算出する。 Step 1b: The maximum value is calculated.

最大ハッシュ値を有するn個のテキスト位置を、検出する。本例では、n=4について、これらは下記の如くなる。   Find n text positions with maximum hash value. In this example, for n = 4, these are as follows:

ステップ1c:右方へ1文字移動させる。 Step 1c: Move one character to the right.

先に記載したように、最大ハッシュ値自体は十分均一な確率分布を持たない。かくして、最大ハッシュ値の一つに対応する各シードごとに、ここでは続く1文字を有するシードのハッシュ値を使用する。本例の目的に合わせこれらのハッシュ値を識別特性として使用し、これらの部分と合わせそれらは本例のインデックスを構成する。   As described above, the maximum hash value itself does not have a sufficiently uniform probability distribution. Thus, for each seed corresponding to one of the maximum hash values, here the hash value of the seed having one character is used. These hash values are used as identification characteristics for the purpose of this example, and together with these parts they constitute the index of this example.

ステップ2:バージョンの一致をとる。
リポジトリは、「Start−at−the−beginning−and−continue−to−the−end;−then−cease.」と修正された。この修正されたリポジトリは、バージョンと見なす(一つしかチャンクを持たない本例により)。
ステップ2a:ハッシュを算出する。
Step 2: Match version.
The repository has been modified as "Start-at-the-beginning-and-continue-to-the-end;-then-cease." This modified repository is considered a version (according to this example with only one chunk).
Step 2a: A hash is calculated.

入力ストリング:「Start−at−the−beginning−and−continue−to−the−end;−then−cease.」
算出ハッシュ値:
Input string: “Start-at-the-beginning-and-continue-to-the-end; -then-cease.”
Calculated hash value:

ステップ2b:最大値を算出する。
最大ハッシュ値を有するk個のテキスト位置を、検出する。本例では、k=8について、これらは下表の通りとなる。
Step 2b: The maximum value is calculated.
Find k text positions with maximum hash value. In this example, for k = 8, these are as shown in the table below.

ステップ2c:右方へ一文字移動させる。
先に記載した如く、最大ハッシュ値自体は十分均一な確率分布を持たない。かくして、ここでは続く1文字を有するシードのハッシュ値を用いることにする。これらの位置を識別位置として使用し、これらの8個のハッシュ値をインデックスの検索に用いる。
Step 2c: Move one character to the right.
As described above, the maximum hash value itself does not have a sufficiently uniform probability distribution. Thus, here, a hash value of a seed having one character that follows is used. These positions are used as identification positions, and these eight hash values are used for index search.

ステップ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.」に類似するデータであると識別し、対応位置を検出した旨である。
Step 2d: Take a match.
Version hash values 5615355 (version position 18), 6310941 (version position 35), and 614663 (version position 6) were detected in the index. They correspond to positions in the repositories 18, 46, 6 respectively. One match is declared, i.e. the algorithm reads "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. ", The corresponding position is detected.

本例により、類似性閾値(識別特性の最小一致数)はj≧2であることに、留意されたい。この閾値を4に設定したとするならば、チャンクは十分類似すると見なされず、何故ならたった3個の一致しか検出されないからである。本例ではnを4に設定し、リポジトリチャンクの識別特性の数が4であることを意味し、kを8に設定し、バージョンチャンクにつき算出された識別特性の数が8であることを意味することにも、留意されたい。k>nに設定することで、検索は数7735648のリポジトリ位置に戻るが、これはリポジトリ内の第4の最大値から入力内の第5の最大値へ移動していて、かくしてkが4に設定(k=n)されたならば検出されることはなかった筈である。   It should be noted that according to this example, the similarity threshold (the minimum number of coincidence of identification characteristics) is j ≧ 2. If this threshold is set to 4, the chunks are not considered sufficiently similar because only three matches are detected. In this example, n is set to 4, meaning that the number of identification characteristics of the repository chunk is 4, k is set to 8, and the number of identification characteristics calculated for the version chunk is 8 Also note that By setting k> n, the search returns to the repository location of number 77335648, which has moved from the fourth maximum value in the repository to the fifth maximum value in the input, thus k is set to 4. If set (k = n), it should not have been detected.

本例は、たった一つのチャンクを保持するリポジトリの縮退事例における類似チャンクの検出法を例示するものである。しかしながら、多数のチャンクの識別特性を記憶するインデックスについてさえ、検索処理は依然として非常に効率的であり、何故ならインデックス(例えば、ここではハッシュテーブルとして格納)内の検索が大きなインデックスについてさえ非常に効率的な仕方で行われるからである。また、各インデックス入力について格納するデータは小さく(本例の場合、ハッシュ値と位置)、従って多くのアプリケーションでは、インデックスはコンピュータの内部高速メモリ(RAM)内に収容し、緩速入/出力演算を実行する必用性を取り除き、それによってインデックス内での検索を促すことができる。
(同期アルゴリズムの)計算量
This example illustrates a method for detecting similar chunks in a degenerate case of a repository that holds only one chunk. However, even for an index that stores the identification characteristics of a large number of chunks, the search process is still very efficient because the search in the index (eg, stored here as a hash table) is very efficient even for large indexes. Because it is done in a natural way. Also, the data stored for each index input is small (in this case, hash value and position), so in many applications the index is stored in the computer's internal high-speed memory (RAM) for slow input / output operations Can be eliminated, thereby prompting a search in the index.
Computational complexity (of the synchronization algorithm)

バージョンチャンクのシードのハッシュを算出するのに必用な時間はチャンクサイズに線形であり、何故ならローリングハッシュを用いているからである。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の積となることに、留意されたい。   The time required to calculate the version chunk seed hash is linear in chunk size, because a rolling hash is used. The time required to calculate the k maximum values is O (m · log (k)), which is reasonable because k is small. If the index is a binary tree, the time required to search the index for k identification characteristics is O (k · log (r)), where r = (R · k) / m is the index Where R is the repository size (up to about 250), k is small (usually 23), m is the chunk size (usually 225), and thus r is usually 228, log (r) = 28. Since k is small, the search time for the entire index is acceptable. If the index is represented by a hash table, the time required to search the index for k identification characteristics is k · O (1). Therefore, the chunk search time is determined by the time it takes to calculate and the order of the maximum value, ie O (m · log (k)), thus equivalent to a linear scan of a small number of version chunks. Since k is small, the overall search time is acceptable. Note that this result forms part of the computational effort of the brute force attack algorithm and is O (R · m), the product of repository size R and chunk size m.

インデックス内へバージョンチャンクを挿入するのに必用な時間の計算量は、インデックスの検索に必用なものと同じである。n個の識別特性の算出に余計な時間は一切不要であり、何故ならこれらは既に算出してあるからである。   The amount of time required to insert a version chunk into the index is the same as that required to search the index. No extra time is required to calculate the n identification characteristics because they have already been calculated.

このアルゴリズムに関する空間要件は、インデックスが必要とするものである。各入力は所与の例ごとに16バイトのパラメータを有しており、それがキー(識別特性)と位置データとを含み、1PB内にはそれらの228(上記算出したrの値)が存在し、かくして1PBのリポジトリデータの管理に4GBのインデックスが必要となる。   The spatial requirements for this algorithm are what the index needs. Each input has a 16-byte parameter for each given example, which includes the key (identification characteristics) and position data, and there are those 228 (the value of r calculated above) in 1PB Thus, a 4 GB index is required for managing 1 PB of repository data.

本実施形態になるシステムは、適当にプログラムしたコンピュータにて実行することができる。同様に、本発明は本発明方法を実行するコンピュータにより可読のコンピュータプログラムを熟慮するものである。本発明はさらに、本発明方法を実行するマシンが実行可能な命令からなるプログラムを有形物として実施するマシン可読メモリを熟慮するものである。
2値差分アルゴリズム
The system according to this embodiment can be executed by an appropriately programmed computer. Similarly, the present invention contemplates a computer program readable by a computer executing the method of the present invention. The present invention further contemplates a machine readable memory that implements as a tangible program a program of instructions executable by a machine executing the method of the present invention.
Binary difference algorithm

二つのデータ間隔の共通部分を効率的に計算する新規の2値差分アルゴリズムを、ここで説明する。説明する実施形態では、アルゴリズムは先に説明した類似検索(同期)アルゴリズムの出力を用い、これが所与のバージョンチャンクについてバージョンとリポジトリデータ内の数対の一致する識別特性の位置を特定する。一対の一致する識別特性位置(一つはリポジトリ内にあり、一つはバージョン内にある)を、ここではアンカーと記述する。アンカーは整列配置とバージョン内に一致を含みそうもないさらなる処理リポジトリ間隔からの剪定に用いられ、かくしてバージョンチャンクに最も類似するリポジトリ間隔が絞り込まれる。このことで、アルゴリズムの処理時間が減る。   A novel binary difference algorithm that efficiently calculates the intersection of two data intervals will now be described. In the described embodiment, the algorithm uses the output of the similarity search (synchronization) algorithm described above, which locates several pairs of matching identification characteristics in the version and repository data for a given version chunk. A pair of matching identification characteristic locations (one in the repository and one in the version) are described here as anchors. Anchors are used for pruning from alignments and further processing repository intervals that are unlikely to contain a match in the version, thus narrowing down the repository interval that is most similar to the version chunk. This reduces the algorithm processing time.

アンカーに基づき、対応間隔は十中八九は一致部分(同一データ)を含むバージョンとリポジトリ間隔対として規定される。2値差分処理を、これらの間隔対のそれぞれに使用する。リポジトリとバージョン窓を一致オフセット内に配置する代りに、スライド窓との類似物を用いることで、ここではそれらをアンカーに従って配置する(恐らくは、非一致オフセットにて)。   Based on the anchor, the corresponding interval is defined as a version and repository interval pair that includes the matching part (same data). A binary difference process is used for each of these interval pairs. Instead of placing the repository and version windows within matching offsets, they are now placed according to anchors (perhaps at non-matching offsets) by using analogs with sliding windows.

本アルゴリズムの一つの利点は、間隔対の一つの間隔に対するシード刻みサイズの使用である。既知の2値差分或いはデルタアルゴリズムは両間隔に対しバイト刻みで動かすが、本アルゴリズムは例えば一つの間隔(バージョン間隔)についてバイト刻みのみで動かし、他の間隔(リポジトリ間隔)についてはシードサイズ(例えば、複数バイト)刻みで動かす。この技法が、一致処理レートを減らすことなく処理速度を上げて空間要件を低減する(何故なら、逆方向と順方向の両方に一致処理が拡張されるからである)。本アルゴリズムの別の利点は、既知の2値デルタアルゴリズムが追加と複写の両指令を生成する一方で、本アルゴリズムを用いて並べ替え順で複写指令だけを生成できる点にある。追加指令は、そこで必用に応じて複写指令から暗黙のうちに導出し、かくしてアルゴリズムの出力に必用なストレージを低減することができる。   One advantage of the present algorithm is the use of a seed step size for one interval of the interval pair. The known binary difference or delta algorithm moves in increments of bytes for both intervals, but the algorithm moves only in increments of bytes for one interval (version interval), for example, and the seed size (for example, the repository interval) , Multiple bytes) move in increments. This technique increases processing speed and reduces spatial requirements without reducing the match processing rate (because match processing is extended in both the reverse and forward directions). Another advantage of the present algorithm is that the known binary delta algorithm can generate both add and copy commands, while using this algorithm can generate only copy commands in a sort order. The additional directives can then be implicitly derived from the copy directives as needed, thus reducing the storage required for the algorithm output.

以下の表は、本実施形態に使用するシンボルを規定するものであり、図7と図8は要素を図解的に説明するものである。   The following table defines the symbols used in this embodiment, and FIGS. 7 and 8 illustrate the elements graphically.

図9は、アンカー集合上で作動する2値差分処理の一実施形態のステップを示す高レベル(概観)フローチャートである。図10は、アンカー集合内で作動するアルゴリズムを示すより詳細なフローチャートである。図11乃至図14は、本実施形態になるバージョン間隔とリポジトリ間隔の演算例を示す。 FIG. 9 is a high-level (overview) flowchart illustrating the steps of one embodiment of binary difference processing that operates on an anchor set. FIG. 10 is a more detailed flowchart illustrating an algorithm that operates within an anchor set. 11 to 14 show calculation examples of the version interval and the repository interval according to this embodiment.

説明した実施形態内の入力は、バージョンチャンクと、バージョンチャンクに関連するバイトオフセットのハッシュ値列と、バージョンチャンクとリポジトリデータとを連結するアンカー集合である。後者の二つの入力は、同期(類似性検索)アルゴリズムにより生成される。2値差分アルゴリズムの出力は、バージョンチャンクとリポジトリデータ内の一致(すなわち、同一)間隔対集合となる。一対の一致間隔は、複写間隔として表記される。各複写間隔は、バージョンとリポジトリ内の関連間隔の開始オフセットと間隔サイズとを含む複写指令としてコード化することができる。この複写命令は個別(非重複)バージョン間隔を指し、降順バージョンオフセット順序にて並べ替えしたアルゴリズムにより生成される。   The inputs in the described embodiment are a set of anchors linking the version chunk, a hash value sequence of byte offsets associated with the version chunk, and the version chunk and repository data. The latter two inputs are generated by a synchronization (similarity search) algorithm. The output of the binary difference algorithm is a matched (ie, identical) interval pair set in the version chunk and repository data. A pair of coincidence intervals is expressed as a copy interval. Each copy interval can be encoded as a copy directive that includes the version, the starting offset of the associated interval in the repository, and the interval size. This copy instruction indicates an individual (non-overlapping) version interval and is generated by an algorithm rearranged in descending version offset order.

図9中、フローチャート(80)は2値差分アルゴリズムの一実施形態を実行するステップを示す。図示の如く、処理は類似性検索からのアンカーとバイトオフセットのバージョンチャンクのハッシュ値を入力として受信する(81)ことで開始される。次に、アンカー集合を算出(82)する。これは、以下のステップ1において説明した如く達成することができる。そこで、第1のアンカー集合(83)を用い、別のアンカー集合上で2値差分アルゴリズムを実行する。これは、図10について記載する如く達成することができる。本処理は、バージョン内にもはやアンカー集合が存在せず、処理が達成(87)されるまで、追加のアンカー集合(84〜86)について反復する。   In FIG. 9, a flowchart (80) illustrates the steps of performing one embodiment of a binary difference algorithm. As shown in the figure, the process starts by receiving (81) the hash value of the version chunk of the anchor and byte offset from the similarity search as input. Next, an anchor set is calculated (82). This can be accomplished as described in step 1 below. Therefore, the binary difference algorithm is executed on another anchor set using the first anchor set (83). This can be accomplished as described for FIG. The process repeats for additional anchor sets (84-86) until the anchor set no longer exists in the version and processing is achieved (87).

より詳細な説明を、ここで図10〜図14について述べることにする。図10中、フローチャート(90)はアンカー集合に対し施す2値差分アルゴリズム演算(図9のステップ84)の一実施形態を示す。図11〜図14は、バージョンチャンク120と対応リポジトリデータ118の一間隔に対する演算手順を示す。この間隔は現アンカー集合122として表記され、バージョンチャンク120の識別特性124の複数位置を含み、その一部がリポジトリデータ118内に一致識別特性125を有する。   A more detailed description will now be described with respect to FIGS. In FIG. 10, a flowchart (90) shows an embodiment of a binary difference algorithm operation (step 84 in FIG. 9) performed on an anchor set. FIGS. 11 to 14 show calculation procedures for one interval between the version chunk 120 and the corresponding repository data 118. This interval is denoted as the current anchor set 122 and includes multiple locations of the identification characteristics 124 of the version chunk 120, some of which have a matching identification characteristic 125 in the repository data 118.

ステップ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)。
Step 1-Calculate the anchor set (82 in FIG. 9). Sort anchors in ascending order of their version offsets. The permuted anchors are traversed and associated with them as follows. A pair of consecutive anchors Ai and Ai + 1 are in the same anchor set if they have the same repository offset estimator, for example | [O (Ai + 1V) -O (AiV)]-[O (Ai + 1R)- O (AiR)] | ≦ C
Where C is a constant selected to meet the desired behavioral characteristics (further described below in relation to computational complexity). As long as consecutive anchor pairs belong to the same set, they are added to the current set. If consecutive pairs do not belong to the same set, close the current set, open a new set, and add the latest anchor in the new set. The output of this step is described as {ASj} 1m, where m is the number of identified unjoined anchors. FIG. 7 shows an anchor set ASj including two anchors Ai and Ai + 1 connecting the version 120 and the repository 118. FIGS. 11-14 show the version 120 and the current anchor set 122 in the repository 118. Steps 2 to 6 (step 84 in FIG. 9) described below are executed for each anchor set in {ASj} 1m. Assume that ASj is the current anchor set (step 91 in FIG. 10).

ステップ2−バージョン間隔を計算する(図10の92)。バージョン間隔IjVは、現アンカー集合ASj(図7参照)に関連する。間隔IjVは先のバージョン間隔Ij−1V上の2値差分処理の実行により生成される最新の複写指令の右方オフセットの1バイト後か、又はチャンクの始端(先のアンカー集合ASj−1が全く存在しない場合)で始まり、ASj+1内の最左方のアンカーよりも1バイト前か、又はチャンクの終端(ASj+1が全く存在しない場合)で終る。   Step 2-Calculate the version interval (92 in FIG. 10). The version interval IjV is related to the current anchor set ASj (see FIG. 7). The interval IjV is one byte after the right offset of the latest copy command generated by execution of the binary difference process on the previous version interval Ij-1V, or the beginning of the chunk (the previous anchor set ASj-1 is completely Starts if not present) and ends one byte before the leftmost anchor in ASj + 1, or ends at the end of the chunk (if ASj + 1 is not present at all).

ステップ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)を施す。   Step 3—Repository interval is calculated (step 93 in FIG. 10). The repository interval IjR is associated with the current anchor set ASj. AlR (l is 124b in FIG. 11) is the leftmost anchor ASj, and ArR (r is 124g in FIG. 11) is the rightmost anchor ASj. Therefore, IjR = [O (AlR) − (O (AlV) −LO (IjV)), O (ArR) + (RO (IjV) −O (ArV))]. Here, the interval pair IjV, IjR is called a corresponding interval. FIG. 8 shows four pairs of corresponding intervals (connected by dashed lines between version 120 and repository 118), each associated with an individual anchor set AD. A binary difference process (steps 4, 5, and 6), which will be described in detail below, is performed on the corresponding interval of each pair and IjV and IjR calculated in this step.

本アルゴリズムはファクタリングアプリケーションの一部であり、対応するリポジトリ間隔IjRがリポジトリからメモリ内に読み込まれ(図10のステップ94)、IjV内のデータとIjR内のデータとの比較が可能になる。   This algorithm is part of the factoring application, and the corresponding repository interval IjR is read from the repository into memory (step 94 in FIG. 10), allowing the data in IjV to be compared with the data in IjR.

ステップ4(図12参照)−一致アンカーを拡張する(図10のステップ95)。一致処理を、現アンカー集合ASjのアンカー周りに順方向と逆方向に拡張し、これらの一致を複写指令としてコード化する。バージョン120内の領域128及びリポジトリ118内の領域129により図12に示したこれらの一致を、一致アンカーと呼ぶ。これらの複写指令は、一時指令バッファ内に格納する。本ステップの出力を集合{CiR}1n,{CiV}1nで表わし、ここでnはアンカー集合内のアンカー数である。   Step 4 (see FIG. 12) —Expand the matching anchor (step 95 in FIG. 10). The matching process is expanded around the anchors of the current anchor set ASj in the forward and reverse directions, and these matches are coded as a copy command. These matches shown in FIG. 12 by region 128 in version 120 and region 129 in repository 118 are called match anchors. These copy commands are stored in a temporary command buffer. The output of this step is represented by a set {CiR} 1n, {CiV} 1n, where n is the number of anchors in the anchor set.

ステップ5(図13参照)−リポジトリ間隔ハッシュ値をハッシュテーブルにロードする(図10のステップ96)。IjR内にあるリポジトリアンカー(129)の拡張を除き、IjR内の全ての連続する非重複シードのハッシュ値(図13の領域130)を算出し、それらをRHashTと呼ぶハッシュテーブル内に保管する。   Step 5 (see FIG. 13) —Load repository interval hash value into hash table (step 96 in FIG. 10). Except for the repository anchor (129) extension in IjR, the hash values of all consecutive non-redundant seeds in IjR (area 130 in FIG. 13) are calculated and stored in a hash table called 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値差分)
Step 6 (see FIG. 14) —Search for a match (steps 97-105 in FIG. 10). For each successive seed (with byte offset) in Ij + 1V, the extension of the anchor present in IjR (region 128 in FIG. 14) is eliminated. Search for that hash value (remember that these hash values were received as input from the product of the synchronization algorithm) and search for it in RHashT (step 98 of FIG. 10). If a match is detected, expand it forward and backward to the largest extension (regions 134 and 136 in FIG. 14) that does not overlap the previous copy command or the next match anchor or IjV start and end in the version. (Step 99 in FIG. 10), and encodes it as a copy command and outputs it (Step 100 in FIG. 10). When the matching anchor is reached within the version (step 101 in FIG. 10), the corresponding copy command stored in the temporary command buffer is output (step 102 in FIG. 10), and the next seed to be processed (FIG. 10). 10 step 104) is the first seed to be placed after the matching anchor in that version. If the coincidence anchor is not reached at all and the end of IjV is not reached (step 103 in FIG. 10), then the next seed that is the processing target in IjV (step 104 in FIG. 10) is defined below. Next unmatched seed. If the current seed does not match, then the next unmatched seed begins one byte after the first byte of the current seed. On the other hand, if the current seed matches and is expanded, then the next unmatched seed will start one byte after the last byte of the last seed contained in the extension. When the end of IjV is reached (step 103 in FIG. 10), the corresponding interval associated with this anchor set ASj is processed (step 105 in FIG. 10). If there is no next anchor set (step 85 in FIG. 9), the binary difference processing of the version chunk is completed (step 87 in FIG. 9). Otherwise, processing continues from step 2 detailed above to the next anchor set ASj + 1 (step 86 in FIG. 9).
Calculation amount (binary difference)

ストレージ:本願明細書に記載した2値差分アルゴリズムの実施形態は固定サイズハッシュテーブル(RHashT)を使用しており、そのサイズはシードサイズにより分割されたチャンクサイズに比例し、何故ならチャンクサイズはリポジトリ間隔サイズの上限であるからである。かくして、テーブルサイズはチャンクサイズに準線形となる。加えて、一致アンカーを示す複写指令の一時的記憶が必要である。これは、チャンク内のアンカー数、すなわちその識別特性の数に比例し、それは少ない。それ故、アルゴリズムの総記憶要件はチャンクの長さに準線形となる。   Storage: The binary difference algorithm embodiment described herein uses a fixed size hash table (RHashT), the size of which is proportional to the chunk size divided by the seed size, because the chunk size is a repository. This is because it is the upper limit of the interval size. Thus, the table size is quasi-linear to the chunk size. In addition, it is necessary to temporarily store a copy command indicating a matching anchor. This is proportional to the number of anchors in the chunk, i.e. the number of its distinguishing characteristics, which is small. Therefore, the total storage requirement of the algorithm is quasi-linear with the length of the chunk.

時間:一致アンカー(ステップ95)の拡張とRHashTへのリポジトリハッシュ値のローディング(ステップ96)の位相は、対応間隔上で一つの線形パスを要する。RHashT内でのバージョンハッシュ値の検索位相(ステップ98)とそれらの検出一致の拡張位相(ステップ99)は、その最悪の場合の時間が対応間隔長の二次式である貪欲算法アルゴリズムに類似する。しかしながら、ハッシュテーブルチェーンの長さを固定サイズに制限することで、この位相の所要平均時間は対応間隔上で1乃至ハッシュチェーン線形パス長の間とされる。稼動時間がバージョンとリポジトリ間隔との間の類似(同一データ)度の関数でもあることに、留意されたい(類似性があるほど、所要時間は少なくなる)。連続する対応間隔の重複の処理にかかる余分な時間が、存在する。これに続き、所要平均総時間は対応間隔上の2回の線形パスとなる。   Time: The phase of the extension of the match anchor (step 95) and the loading of the repository hash value into the RHashT (step 96) requires one linear path over the corresponding interval. The search phase of version hash values in RHashT (step 98) and the extended phase of their detection match (step 99) are similar to the Greedy algorithm, whose worst case time is a quadratic expression of the corresponding interval length. . However, by limiting the length of the hash table chain to a fixed size, the required average time for this phase is between 1 and the hash chain linear path length on the corresponding interval. Note that uptime is also a function of the degree of similarity (identical data) between version and repository interval (the more similar, the less time it takes). There is extra time taken to process the overlap of consecutive corresponding intervals. Following this, the required average total time is two linear passes over the corresponding interval.

本願明細書に開示したこのシステムと方法は、例えばコンピュータ等のデータプロセッサを含む様々な形態にて実施することができる。さらに、本発明の上記特徴と他の態様と原理は、様々な環境にて実装することができる。この種の環境と関連アプリケーションは本発明になる様々な処理や演算を遂行するよう特別に構成でき、或いはそれらに必用な機能性を提供するコードにより選択的に起動或いは再構成する汎用コンピュータや計算プラットホームを含めることができる。本願明細書に開示した処理は何らかの特定のコンピュータや他の装置に元々関連するのではなく、ハードウェアとソフトウェア及び/又はファームウエアの適切な組み合わせにより実行することができる。例えば、様々な汎用マシンに本発明教示に従って書き込むプログラムと共に使用できるようにしたり、或いは特化した装置或いはシステムを構成して要求された方法や技法を遂行させる上でより便宜を図ることもできる。   The systems and methods disclosed herein can be implemented in a variety of forms including, for example, a data processor such as a computer. Furthermore, the above features and other aspects and principles of the present invention can be implemented in a variety of environments. This kind of environment and related applications can be specially configured to perform the various processes and operations according to the present invention, or general purpose computers and computations that are selectively activated or reconfigured by code that provides the necessary functionality for them. A platform can be included. The processing disclosed herein is not inherently related to any particular computer or other device, but can be performed by an appropriate combination of hardware and software and / or firmware. For example, it can be used with various general purpose machines with programs written in accordance with the teachings of the present invention, or it can be more convenient in configuring specialized devices or systems to perform the required methods and techniques.

本発明に整合するシステムならびに方法には、本発明の方法ならびに処理に基づき様々なコンピュータ実行可能処理を実行するプログラム命令或いはコードを含むコンピュータ可読媒体を含めることもできる。媒体とプログラム命令は本発明の目的に合わせ特別に設計し構成したものとするか、或いはコンピュータソフトウェア技術の当業者によく知られ利用可能な種とすることができる。さらに、コンピュータ可読媒体は搬送波上の信号の形をとらせるか、或いはディスク等の記憶媒体の形をとらせることができる。プログラム命令の例には、コンパイラが生成する等の例えばマシンコードや変換器を用いてコンピュータが実行できる高レベルコードを含むファイルが含まれる。   Systems and methods consistent with the present invention can also include computer-readable media containing program instructions or code for performing various computer-executable processes based on the methods and processes of the present invention. The media and program instructions may be specially designed and constructed for the purposes of the present invention, or may be of a type well known and available to those skilled in the computer software art. Further, the computer readable medium may take the form of a signal on a carrier wave or may take the form of a storage medium such as a disk. Examples of program instructions include files containing high-level code that can be executed by a computer using, for example, machine code or a converter, such as generated by a compiler.

図15に示す如く、データプロセッサ300は入力305を受け取り、中央処理装置320と記憶モジュール350及び/又は入/出力(I/O)モジュール330とを含めることができる。入/出力モジュール330には、ディスプレイ335とキーボードとマウスと入力記憶デバイスとプリンタ336とネットワークインタフェース338とを含む1以上の入/出力デバイスを含めることができる。ネットワークインタフェースにより、データプロセッサを通信チャンネル等のネットワークを介して通信させることができる。中央処理装置は、例えば以下のうちの1以上を含めることができる。すなわち、中央処理装置とコプロセッサとメモリとレジスタと適当な他の処理デバイスやシステムである。   As shown in FIG. 15, data processor 300 receives input 305 and may include a central processing unit 320 and a storage module 350 and / or an input / output (I / O) module 330. Input / output module 330 may include one or more input / output devices including display 335, keyboard, mouse, input storage device, printer 336, and network interface 338. The network interface allows the data processor to communicate over a network such as a communication channel. The central processing unit can include, for example, one or more of the following. A central processing unit, a coprocessor, a memory, a register, and other suitable processing devices and systems.

記憶装置は、例えばハードドライブや光学ドライブや汎用記憶デバイスや挿脱式記憶デバイス及び/又はメモリを含むストレージを提供することのできる様々な構成要素或いは下位システムで実施することができる。   The storage device can be implemented with various components or sub-systems that can provide storage including, for example, hard drives, optical drives, general purpose storage devices, removable storage devices and / or memory.

本願明細書に記載した本発明方法及びシステムの各種実施形態は、リポジトリ内に既に存在する入力ストリーム内のデータ識別に有用である。この種のシステムと方法を用いる製品には、先刻バックアップしたが故に変化していないバックアップデータを繰り返し記憶させないことでディスク記憶空間を節約する対ディスクバックアップ製品が含まれる。これにより、同じリポジトリに複数のバックアップを保管するときに末端ユーザディスク空間が節約される。   The various embodiments of the method and system of the present invention described herein are useful for identifying data in an input stream that already exists in the repository. Products that use this type of system and method include anti-disk backup products that save disk storage space by not repeatedly storing backup data that has not changed since the previous backup. This saves end user disk space when storing multiple backups in the same repository.

本発明の本システムならびに方法は、ストレージ機器や人工知能付き交換機やサーバやソフトウェアアプリケーションに含めることができる。この方法とシステムは、他の構成要素を含む派生製品と抱き合わせることができる。サービスプロバイダは、このシステムと方法を利用し、説明した能力をサービスとして提供することができる。このシステムと方法は、データ保護マーケットにおいて、例えばバックアップや復元や複製や跳躍や媒体管理に特に有用となろう。他の実装には、主ストレージにおける使用を含めることができる。   The system and method of the present invention can be included in storage devices, switches with artificial intelligence, servers and software applications. The method and system can be combined with derivative products that include other components. Service providers can use the system and method to provide the described capabilities as a service. This system and method would be particularly useful in the data protection market, for example for backup, restoration, replication, jumping and media management. Other implementations can include use in main storage.

本願明細書に記載するシステムと方法は、管理されたストレージ媒体と管理されたリポジトリ内のデータ表現とに関するものである。これには、ディスクやテープや時間経過しても市場で生き残れる他の形式の記憶媒体が含まれる。本発明は、ディスクや固定媒体に限定されず、挿脱式媒体にも適用可能である。例えば、挿脱式ディスクはターゲット出力デバイスとして使用することができる。それは同様にテープに対しても管理でき、両者は挿脱式媒体となる。   The systems and methods described herein relate to managed storage media and data representations in managed repositories. This includes disks, tapes and other types of storage media that can survive in the market over time. The present invention is not limited to a disk or a fixed medium, but can also be applied to a removable medium. For example, a removable disk can be used as a target output device. It can be managed for the tape as well, and both become removable media.

テープ等の挿脱式媒体を含むシステムの設計に対する一つの手法は、ディスクを最大の基準とするチャンクや要素に対する保管場所として動作させ、最小基準とするチャンクをテープ媒体上へ移動させることである。これは、全てのチャンクの新しさを考慮する管理システムによりバランスさせ得る。また、このシステムは一集合として書庫から保管し再生する集合全体として関連リポジトリチャンクをテープへ移動させることができる。このことで、本発明の利点は倍加する筈である。例えば、本発明を用いずに100片の媒体の使用が要求されたとするならば、そのときは本発明の使用後に例えば10片の媒体しか必用ない。この媒体は、それ自体がリポジトリとして記述される仮想媒体から構成することができる。   One approach to the design of systems that include removable media such as tape is to operate the disk as a storage location for the largest reference chunk or element and move the smallest reference chunk onto the tape medium. . This can be balanced by a management system that takes into account the freshness of all chunks. The system can also move related repository chunks to tape as a whole set that is stored and reclaimed from the archive as a set. This should double the advantages of the present invention. For example, if the use of 100 pieces of media is required without using the present invention, then for example, only 10 pieces of media are required after use of the present invention. This medium can consist of a virtual medium that is itself described as a repository.

本願明細書に記載した同期アルゴリズムと2値差分処理アルゴリズムの様々な実施形態は、バージョンサイズについて線形の実行時間と一定(チャンクとアンカー集合のサイズに依存)の空間とを有する。アルゴリズム間の算出値の再利用が、計算時間を節約する。   Various embodiments of the synchronization algorithm and binary difference processing algorithm described herein have a linear execution time and a fixed space (depending on the size of the chunk and anchor set) for the version size. Reusing calculated values between algorithms saves computation time.

説明した実施形態はまた、二つのメモリ階層構造の使用を示している。同期アルゴリズムは入力データに関する一集合の代表(例えば、ハッシュ)値を計算して一時記憶し、そこから一集合の識別特性を導出してリポジトリ内の類似データ領域を識別し、一旦入力データをリポジトリ内に保管したならばこの識別特性をインデックス内に格納する。一時的ストレージ内の入力データの表現値は、そこでリポジトリデータに一致する厳密なデータを識別する2値差分処理アルゴリズムに使用することができる。2値差分アルゴリズムはリポジトリ内で問題のデータ領域に関する一集合の代表(例えば、ハッシュ)値を計算し、入力データの代表値との比較用にこの種の値をメモリ内に一時保管する。リポジトリデータと入力データの対応間隔を処理することで、代表値の保管に比較的少量のメモリを使用することができる。また、一致したデータセグメントは入力データの位置順序にて生成され、このことで並べ替え時間と記憶要件が節約される。   The described embodiment also illustrates the use of two memory hierarchies. The synchronization algorithm computes and temporarily stores a set of representative (eg, hash) values for the input data, derives a set of identifying characteristics from it to identify similar data regions in the repository, and temporarily stores the input data in the repository This identification characteristic is stored in the index if stored in the index. The representation value of the input data in temporary storage can then be used in a binary difference processing algorithm that identifies the exact data that matches the repository data. The binary difference algorithm calculates a set of representative (eg, hash) values for the data area in question in the repository and temporarily stores this type of value in memory for comparison with the representative value of the input data. By processing the corresponding interval between repository data and input data, a relatively small amount of memory can be used to store representative values. Also, the matched data segments are generated in the input data position order, which saves reordering time and storage requirements.

さらに、同期アルゴリズムと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となる。   Furthermore, the embodiments described herein consisting of a synchronization algorithm and a binary difference algorithm scale to a petabyte size repository. In various embodiments, the ratio of repository size to index size is up to 250,000 to 1, and a 4 GB index can be represented to represent a 1 PB repository, and this index fits into the memory of a commercial product type computer. Can do. When the hash table is used as an index, the index search is a fixed time and constant space O (1) operation, and the search process is independent of the repository size for repositories up to 1 PB. If the repository is not limited to 1 PB, then a binary tree or B-tree can be used for the index. The size of the index is still 250,000 to 1 smaller than the repository, and the index search is an operation using O (log (m / 250,000)), where m is the repository size. In a 1 PB repository, m is 250, thus log (m / 250,000) is 32.

本願明細書に記載したシステムならびに方法は、入力データをリポジトリ内にある部分とそうでない部分とに区画することでリポジトリについて入力データの大規模な損失のないデータ低減を実行するデータ記憶システムを提供することができる。区画処理は、2段階の処理によって行われる。すなわち、
(1)入力データの各チャンクについて、それに類似するデータを含むリポジトリ内の全領域を検出し、
ここで、この検出処理はまた大雑把な類似性推定をもたらし、類似性レベルの等級化能力を提供する。
たとえリポジトリが非常に大きくとも、インデックスとメモリを使用して検出処理が行え、
インデックスサイズに対するリポジトリサイズの比は最大250:000:1であり、
各領域内で検出した場合、検索は対応する1以上の実際の場所を検出し、
(2)検出された全領域について、リポジトリ内で最も類似する領域と2値差分とを、
リポジトリのその部分をメモリ内に読み込み、入力チャンクをリポジトリ内の一部と比較して厳密な変化を検出し、その一方で実際の対応場所を案内として使用し、
その出力を前記被識別区画とすることで選択する。リポジトリ内で検出された入力データ内のデータは、再度格納する必要はない。入力データの特性は、インデックスに付加することができる。
The systems and methods described herein provide a data storage system that performs data reduction without large-scale loss of input data for the repository by partitioning the input data into portions that are in the repository and those that are not. can do. The partition process is performed by a two-stage process. That is,
(1) For each chunk of input data, detect all areas in the repository that contain similar data,
Here, this detection process also results in a rough similarity estimate and provides a similarity level grading capability.
Even if the repository is very large, you can use the index and memory to perform the discovery process,
The ratio of repository size to index size is up to 250,000: 1,
If detected within each region, the search detects one or more corresponding actual locations,
(2) For all detected areas, the most similar area in the repository and the binary difference are
Read that part of the repository into memory, compare the input chunk with the part in the repository to detect strict changes, while using the actual corresponding location as a guide,
The output is selected by setting it as the identified section. Data in the input data detected in the repository need not be stored again. The characteristics of the input data can be added to the index.

本願明細書に記載した2値差分処理アルゴリズムの各実施形態は、幾つかの利点を有する。一致識別特性は、2値差分処理工程用の基準フレームから、このフレーム内の論理的区画(例えば、アンカー)からと同様(インデックスの)類似性検索によりもたらされる。2値差分処理アルゴリズムはハッシュテーブルをたった一つしか必用とせず、このハッシュテーブルは小さく、何故ならそれは問題のリポジトリデータセグメントの各シードごとにたった一つの値しか格納しないからである。各下位シードステップ(例えば、バイト)での入力データの表現値は既知であり、何故ならそれらはインデックス検索期間中に算出されているからである。2値差分処理工程のコスト増分は小さく、それは入力データのサイズにおいて線形である。リポジトリハッシュテーブルが各下位シード間隔(例えば、バイト)にて検索するため、2値差分処理が不整列配置データを検出する。   Each embodiment of the binary difference processing algorithm described herein has several advantages. Match identification characteristics are derived from a reference frame for a binary difference processing step, as well as (index) similarity searches as well as from logical partitions (eg, anchors) within this frame. The binary difference processing algorithm requires only one hash table, which is small because it stores only one value for each seed of the repository data segment in question. The representation value of the input data at each subseed step (eg, byte) is known because they are calculated during the index search period. The cost increment of the binary difference processing step is small, which is linear in the size of the input data. Since the repository hash table is searched at each lower seed interval (eg, byte), binary difference processing detects misaligned arrangement data.

様々な実施形態中、入力データと、類似する被識別リポジトリの領域とを比較する線形時間と定数空間O(1)処理との実行に2値差分処理法を用いることができる。本処理は先に算出された類似性検索の結果と、シードサイズの係数だけリポジトリ内の被識別領域よりも小型であるたった一つのリポジトリハッシュテーブルを用いる。2値差分処理は、それがたとえ交換され或いは不整列であったとしても、同一データを検出する。それは少なくともシードサイズの長さである全ての同一データを検出し、ここではハッシュテーブルは十分大である。本処理は、入力データ内のそれらの出現順に検出された入力データ内の下位領域のリストを導出する。   In various embodiments, a binary difference processing method can be used to perform linear time and constant space O (1) processing that compares input data with similar identified repository regions. This processing uses the result of the similarity search previously calculated and only one repository hash table that is smaller than the identified area in the repository by the seed size coefficient. The binary difference process detects the same data even if it is exchanged or misaligned. It detects all the same data that is at least the length of the seed size, where the hash table is large enough. This process derives a list of subregions in the input data detected in the order of their appearance in the input data.

本発明の別の実施形態では、バージョンデータすなわち新規データは一つのシステム又はコンピュータ上に配置できるが、リポジトリは第1のシステムとは異なる別のシステム又はコンピュータ上に配置することができる。この種の筋書きでは、デルタ情報は第1のシステムと第2のすなわち遠隔システムとの間の通信を介して特定しなければならない。前記した如く、大量のデータを管理し、かくしてシステムに使用する帯域は可能な限り最小化しなければならない。本発明の一態様によれば、最低量の帯域を用いて新規データ或いはバージョンデータから遠隔位置に位置するリポジトリの更新を達成する。   In another embodiment of the present invention, version data or new data can be located on one system or computer, while the repository can be located on a different system or computer than the first system. In this type of scenario, delta information must be identified via communication between the first system and the second or remote system. As mentioned above, a large amount of data must be managed and thus the bandwidth used for the system should be minimized as much as possible. According to one aspect of the present invention, updating a repository located remotely from new or version data is accomplished using a minimum amount of bandwidth.

図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)は、個別リポジトリを持たない。   As shown in FIG. 16, a system (1600) similar to that shown in FIG. 1 includes a network (1601), which is a SAN or TCP / IP compliant network as described above, and server A (1602) and server B (1604). ), Server C (1606), and server D (1608). For illustrative purposes only, server B (1604) has repository B (17) coupled to it, while server D (1608) has repository D (17) coupled to it. Repository D (17) can be all or part of the mirror image, backup or copy of repository B (17), thus storing the same information on it. Server A (1602) and server C (1606) do not have individual repositories.

一つの例示筋書きでは、サーバA(1602)は新規データとバージョンデータを有し、リポジトリB(17)は前記した如くそこに保管したリポジトリデータとリポジトリチャンクとを有する。   In one example scenario, server A (1602) has new data and version data, and repository B (17) has repository data and repository chunks stored therein as described above.

例示文脈では、サーバA(1602)はリポジトリB(17)に保管する必要のある新規データを有する。前述の説明から、新規データの差別特性或いは識別特性集合を算出し、インデックス検索に使用して新規データすなわちバージョンデータに類似のリポジトリデータの位置を検出するようサーバB(1604)へ転送し、リポジトリB(17)から旧データすなわち類似データを検索し、新規データと旧データを比較してデルタすなわち差分を特定することを、理解されたい。   In the illustrated context, server A (1602) has new data that needs to be stored in repository B (17). From the above description, the discriminant characteristic or identification characteristic set of the new data is calculated and transferred to the server B (1604) so as to detect the position of the repository data similar to the new data, that is, the version data, used for index search. It should be understood that old data or similar data is retrieved from B (17) and the new data and old data are compared to identify the delta or difference.

サーバA(1602)は新規データを含むため、デルタを特定するために、リポジトリB(17)からの類似データをサーバA(1602)を介して送信すべきことをここで決定し得る。しかしながら、この送信はネットワーク(1601)の帯域の大半を占め得る。一旦サーバA(1602)がデルタを特定すると、リポジトリB(17)を更新すべく、サーバA(1602)からネットワーク(1601)を介してサーバB(1604)へデルタ情報を送信してリポジトリB(17)の更新に使用するようにしなければならない。   Since server A (1602) contains new data, it may now be determined that similar data from repository B (17) should be sent via server A (1602) to identify the delta. However, this transmission can occupy most of the bandwidth of the network (1601). Once server A (1602) identifies the delta, in order to update repository B (17), delta information is sent from server A (1602) to server B (1604) via network (1601) to provide repository B ( 17) must be used for the update.

本発明の一実施形態の一態様によれば、リポジトリB(17)の更新に必要な帯域は低減される。都合よくは、リポジトリB(17)からの類似データはデルタ情報を特定すべくサーバA(1602)に送信することはない。   According to one aspect of one embodiment of the present invention, the bandwidth required to update repository B (17) is reduced. Conveniently, similar data from repository B (17) is not sent to server A (1602) to identify delta information.

本発明の一実施形態に従い最小帯域使用でもってリポジトリ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)から類似データチャンクを検索する。   The processing method for updating repository B (17) with minimum bandwidth usage in accordance with one embodiment of the present invention will now be described for method (1700) shown in FIG. In step (1702), a characteristic set relating to the version, that is, new data on server A (1602) is locally calculated by server A (1602). Server A (1602) transmits the characteristic calculation set to server B (1604) in step (1704). The remote server, in this case server B (1604), searches for a match with the received characteristics and identifies one or more similar data chunks held by repository B (17) in step (1706). If a match is detected in step (1708), control proceeds to step (1710) where server B (1604) retrieves a similar data chunk from repository B (17).

リポジトリB(17)内で検出される新規データと識別類似遠隔データとの間の差分を特定すべく、ステップ(1712)では、低通信コストの遠隔差分処理の修正バージョン、例えばrsyncユーティリティを用いる。rsync等の修正された既存の遠隔差分処理を用いることで、デルタ情報の識別に使用するネットワーク帯域の量は著しく減ることになる。   In order to identify the difference between the new data detected in repository B (17) and the discriminatively similar remote data, step (1712) uses a modified version of the low communication cost remote difference process, for example the rsync utility. By using a modified existing remote difference process such as rsync, the amount of network bandwidth used to identify delta information is significantly reduced.

修正された遠隔差分処理は、全ての新規データと全ての被識別類似データを同じシステム上に持たねばならないことはなく、新規データと被識別類似遠隔データとの間の差分を特定する。修正された処理の結果、ネットワーク上で送信しなければならないデータ量が低減される。作動時、幾つかの異なる遠隔差分処理のいずれか一つをこのアプリケーション用に修正することができる。   The modified remote difference process does not have to have all new data and all identified similar data on the same system, but identifies the differences between the new data and the identified similar remote data. As a result of the modified processing, the amount of data that must be transmitted over the network is reduced. In operation, any one of several different remote difference processes can be modified for this application.

かくして、修正された遠隔差分化工程の一実施形態では、新規データと被識別類似遠隔データのハッシュを、ローカルシステムとサーバA(1602)と遠隔システム(17)とサーバBとがそれぞれ同じアルゴリズムを用いて算出する。これらのハッシュをそこで比較し、異なるハッシュが異なる個別データの代表的部分を表わす。異なる部分に関するデータを、そこでサーバAからサーバBへ搬送してリポジトリBに保管する。ハッシュの生成と比較が、データ内の差分特定に必要なデータ帯域の量を低減する。   Thus, in one embodiment of the modified remote differencing process, the hash of new data and identified similar remote data is determined by the local system, server A (1602), remote system (17), and server B using the same algorithm. Use to calculate. These hashes are compared there and different hashes represent representative portions of different individual data. Data relating to the different parts is then transported from server A to server B and stored in repository B. Hash generation and comparison reduces the amount of data bandwidth required to identify differences in the data.

ステップ(1712)に続き、デルタデータを識別し、ステップ(1714)にてそのリポジトリB(17)を更新すべきと特定された場合、制御はステップ(1716)へ進み、そこで遠隔リポジトリB(17)が前述した説明に従って更新される。   Following step (1712), if delta data is identified and step (1714) specifies that its repository B (17) should be updated, control proceeds to step (1716) where remote repository B (17 ) Is updated according to the above description.

ステップ(1708)へ戻るに、一致が検出されない場合、制御はステップ(1714)へ進み、そこでリポジトリB(17)を更新する決定がなされ、更新を一切行わない場合、そのときは制御はステップ(1718)へ進む。   Returning to step (1708), if no match is detected, control proceeds to step (1714) where a decision is made to update repository B (17), and if no update is made, then control passes to step (1). Go to 1718).

別の動作筋書きでは、サーバA(1602)がサーバC(1602)へ搬送する必要のある新規データすなわちバージョンデータを有する状況があり得る。システム(1600)に示す如く、サーバA(1602)もサーバC(1606)もリポジトリを含まない。新規データの量が非常に大量である場合、本発明の一実施形態では、サーバA(1602)からサーバC(1606)へ新規データを搬送するのに必要なデータ帯域量を最小化する。   In another scenario, there may be situations where server A (1602) has new data or version data that needs to be conveyed to server C (1602). As shown in the system (1600), neither server A (1602) nor server C (1606) includes a repository. If the amount of new data is very large, one embodiment of the present invention minimizes the amount of data bandwidth required to carry new data from server A (1602) to server 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)についてなされることを保証するのに必要とされよう。   A method (1800) of transmitting new data from the server A (1602) to the server C (1606) using the minimum amount of bandwidth of the network (1601) will be described with reference to FIG. Steps (1702 to 1712) are the same as already described above with respect to FIG. Subsequent to step (1712), in step (1802), server A (1602) transmits delta information and identifier information of similar data to the second system, that is, server C (1606). The identifier information of the similar data is similar to the location of the repository where the repository data is arranged, in this case, information about the repository B (17) and the address of the repository B (17) that is the IP address of the server B (1604). Information related to one or more chunks of a particular repository identified as, for example, a reference level, and a time stamp identifier that is synchronized to the state of repository B (17) from which the difference or delta information was generated in step (1712) Will be included. This timestamp information will be needed to ensure that subsequent operations by server C (1606) are done for repository B (17) with the same state identifying the difference in step (1712).

ステップ(1804)において、第2のシステムすなわちサーバC(1606)がサーバA(1602)から受信した情報を用い、リポジトリB(17)から被識別類似データチャンクを検索することになる。一実施形態では、サーバC(1606)は被識別リポジトリチャンク全体を要求し、サーバA(1602)から受信したデルタ情報でもって変化部分を置換することができ、或いはサーバC(1606)は変化しなかったリポジトリデータの一部だけをリポジトリB(17)から要求し、そこでサーバA(1602)からのデルタ情報を合成してサーバA(1602)の新規データに達することができる。   In step (1804), the second system, that is, server C (1606) retrieves the identified similar data chunk from repository B (17) using the information received from server A (1602). In one embodiment, server C (1606) can request the entire identified repository chunk and replace the change with the delta information received from server A (1602), or server C (1606) can change. Only a part of the repository data that has not been requested can be requested from the repository B (17), and the delta information from the server A (1602) can be combined to arrive at new data of the server A (1602).

都合よくは、サーバA(1602)は、リポジトリB(17)に格納された類似データに関する識別子情報と共にデルタ情報を送信するだけで最小量の帯域を用いて新規データをサーバC(1606)へ搬送することができる。   Conveniently, server A (1602) conveys new data to server C (1606) using a minimum amount of bandwidth by simply transmitting delta information along with identifier information relating to similar data stored in repository B (17). can do.

本方法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)から受信した現在のデータを反映させることができる。   An alternative embodiment of the method 1600 will now be described with reference to FIG. In this alternative scenario, receiving server C (1606) accesses repository D (17) instead of accessing repository B (17) in step (1804) to reproduce the data transmitted from server A (1602). To do. Server C (1606) knows that Repository D (17) has the same data as Repository B (17), and obtaining similar data from Repository D (17) is a better option for several reasons. Is determined. These reasons may include one or more of system load characteristics, system availability, system response time, and system quality service level agreements. The adjustment between the server C (1606), the system D (1608), and the repository D (17) is the same as the adjustment between the server C (1606), the server B (1604), and the repository B (17). It is a spear. Once server C (1606) retrieves information from repository D (17), repository D (17) is updated to reflect the current data received from server A (1602) via server C (1606). Can do.

さらに別の実施形態では、一旦サーバB(1604)とリポジトリB(17)がサーバA(1602)からの差分データでもって更新されると、リポジトリD(17)はサーバB(1604)とリポジトリB(17)とのトランザクションにより更新することができる。   In yet another embodiment, once server B (1604) and repository B (17) are updated with the difference data from server A (1602), repository D (17) is server B (1604) and repository B. It can be updated by a transaction with (17).

無論、サーバC(1606)とサーバD(1608)がシステムの簡略化と効率の理由から同じコンピュータで構成できることを、当業者は理解しよう。   Of course, those skilled in the art will appreciate that server C (1606) and server D (1608) can be configured on the same computer for reasons of system simplicity and efficiency.

本発明の他の実施形態は、本願明細書に開示した本発明の明細書と実例を検討することから当業者には明らかとなろう。本発明範囲は添付特許請求の範囲により指示され、明細書と実施例は例示としてのみ考慮されることを意図するものである。   Other embodiments of the invention will be apparent to those skilled in the art from consideration of the specification and illustrations of the invention disclosed herein. The scope of the invention is indicated by the appended claims, and the specification and examples are intended to be considered exemplary only.

本発明の幾つかの記載実施形態に有用である例示バックアップ及び復元システムの一般的システムアーキテクチャを示す図である。FIG. 2 illustrates a general system architecture of an exemplary backup and restore system useful for some described embodiments of the present invention. 本発明の一実施形態になる入力バージョンデータストリームを処理する例示ステップを示すフローチャートである。6 is a flowchart illustrating exemplary steps for processing an input version data stream according to an embodiment of the present invention. 一実施形態により入力バージョンデータのデータチャンクを処理するより詳細な手順ステップを示す図である。FIG. 6 illustrates more detailed procedural steps for processing a data chunk of input version data according to one embodiment. 一実施形態によりリポジトリ内でバージョンチャンクの位置を検出するより詳細な手順ステップを示す図である。FIG. 4 illustrates more detailed procedural steps for detecting the location of a version chunk in a repository according to one embodiment. 一実施形態によりバージョンチャンク内のシードとリポジトリチャンク内のシードとの間の対応性を概略示す図である。FIG. 6 schematically illustrates the correspondence between seeds in version chunks and seeds in repository chunks according to one embodiment. 識別特性がデータ変化にも拘わらずほぼ維持できる仕方を示す特定例の類似性検索の結果を示す三次元グラフを表わす図である。It is a figure showing the three-dimensional graph which shows the result of the similarity search of the specific example which shows how the identification characteristic can be substantially maintained despite the data change. 2値差分アルゴリズムの一実施形態に使用するシンボルを規定するバージョン及びリポジトリ内の対応間隔を表わす概略図である。FIG. 6 is a schematic diagram representing versions that define symbols used in one embodiment of a binary difference algorithm and corresponding intervals in the repository. アンカー集合を示すバージョンとリポジトリの対応間隔を表わす概略図である。It is the schematic showing the correspondence interval of the version which shows an anchor set, and a repository. 本発明の一実施形態によりアンカー集合を算出し、各アンカー集合に対し2値差分化処理を施す例示ステップを示すフローチャートである。It is a flowchart which shows the example step which calculates an anchor set by one Embodiment of this invention, and performs a binary difference process with respect to each anchor set. 一実施形態になるアンカー集合を処理するステップのより詳細な手順を示す図である。It is a figure which shows the more detailed procedure of the step which processes the anchor set which becomes one Embodiment. 本発明の一実施形態になるアンカー集合内のアンカーを示すバージョン及びリポジトリを表わす概略図である。FIG. 2 is a schematic diagram representing a version and repository showing anchors in an anchor set according to an embodiment of the present invention. アンカー周りでの一致の拡張ステップを示す図11の同一のバージョン及びリポジトリを表わす概略図である。FIG. 12 is a schematic diagram representing the same version and repository of FIG. 11 showing the expansion step of matching around the anchor. リポジトリ内の拡張されたあんかー間のハッシュ値の算出ステップを示す図11の同一のバージョン及びリポジトリを表わす概略図である。FIG. 12 is a schematic diagram representing the same version and repository of FIG. 11 showing the steps of calculating the hash value between the expanded anchors in the repository. バージョンとリポジトリ内での一致と対応する一致とを拡張するステップを示す図11の同一のバージョン及びリポジトリの概略図である。FIG. 12 is a schematic diagram of the same version and repository of FIG. 11 showing the steps for extending the version and the corresponding and corresponding matches in the repository. 例示システム環境を示す図である。FIG. 2 illustrates an example system environment. 代替汎用システムアーキテクチャを示す図である。FIG. 2 illustrates an alternative general purpose system architecture. 最小帯域を用いて遠隔リポジトリを更新する例示ステップを示すフローチャートである。FIG. 6 is a flowchart illustrating exemplary steps for updating a remote repository using a minimum bandwidth. 一つのシステムから別のシステムへのバージョンデータの例示転送ステップを示すフローチャートである。6 is a flowchart illustrating exemplary transfer steps of version data from one system to another.

符号の説明Explanation of symbols

17 データリポジトリ
44 インデックス
50 リポジトリチャンク
51 入力データチャンク
52 リポジトリデータチャンク
53 リポジトリ
55i〜59i,55r〜59r 識別特性
1602 第1の位置(サーバA)
1604 遠隔位置(サーバB)
17 Data Repository 44 Index 50 Repository Chunk 51 Input Data Chunk 52 Repository Data Chunk 53 Repository 55i-59i, 55r-59r Identification Characteristic 1602 First Location (Server A)
1604 Remote location (Server B)

Claims (27)

入力データをリポジトリ(53)へ供給し該入力データに類似するデータについて前記リポジトリ内のリポジトリデータを検索し、前記入力データを1以上の入力チャンク(51)に分割するシステムで、
各入力チャンクごとに、入力識別特性(IDC)の対応集合を算出する手段で、該各IDC集合が複数の識別特性(55i〜59i)を含み、該手段が前記各入力チャンクを複数のシード(s)に区画するようにしてあり、該各シードを前記各入力チャンクの小部分としてシード系列に順列配置し、該各シードにハッシュ関数を適用して複数のハッシュ値を生成し、該各シードが一つのハッシュ値をもたらす前記手段を備える前記システムであって、
前記算出する手段が、前記複数のハッシュ値の部分集合を選択するよう作動し、
前記選択されたハッシュ値の部分集合に対応して前記シード系列内での前記シードの位置を特定し、
特定された前記位置に関数を適用して前記シード系列内の対応する他の位置を特定し、
前記IDC集合を前記特定された他の位置の前記シードのハッシュ値として規定する、ことを特徴とするシステム。
In the system of dividing the input data supplied to the repository (53) searches the repository data in the repository for similar data to the input data, the input data to one or more input chunks (51),
Means for calculating a corresponding set of input identification characteristics (IDC) for each input chunk, each IDC set including a plurality of identification characteristics (55i-59i), wherein the means assigns each input chunk to a plurality of seeds ( s), arranging each seed as a small part of each input chunk in a seed sequence, applying a hash function to each seed to generate a plurality of hash values, Said system comprising said means for providing a hash value,
It said means for calculating is operative to select a subset of the plurality of hash values,
Identifying the position of the seed in the seed sequence corresponding to the selected subset of hash values;
By applying a function to the identified said position to identify the corresponding other positions within the seed sequence,
The system defining the IDC set as a hash value of the seed at the specified other position.
前記算出する手段が算出した前記IDC集合を前記リポジトリが位置する遠隔位置へ送信する手段を備える、請求項1記載のシステム。The system according to claim 1, comprising means for transmitting the IDC set calculated by the calculating means to a remote location where the repository is located. 入力データに類似するデータについてリポジトリデータを検索し、該リポジトリデータを1以上のリポジトリチャンク(50)に分割するシステムで、
前記各リポジトリチャンクごとにリポジトリ識別特性(RDC)の対応集合を算出する手段で、該各RDC集合が複数の識別特性(55r〜59r)を含み、該手段が前記リポジトリチャンクを複数のシード(s)に区画するようにしてあり、該各シードを前記各リポジトリチャンクの小部分としてシード系列に順列配置し、該各シードにハッシュ関数を適用して複数のハッシュ値を生成し、該各シードが一つのハッシュ値をもたらす前記手段を備え、
前記各RDC集合と前記対応するリポジトリチャンクとに関連するインデックス(44)を保持する手段と、
前記入力データの入力チャンク(51)の入力識別特性(55i〜59i)集合を前記インデックス内に格納された1以上のRDC集合と比較し、前記入力チャンクと前記対応するリポジトリチャンクとの間に類似性が存在するか判定する手段とを備える前記システムであって、
前記判定する手段が前記入力識別特性集合の類似性閾値jが前記インデックス内に格納されたRDC集合内で検出された場合に類似性が存在すると判定するよう作動し、
前記算出する手段が前記複数のハッシュ値の部分集合(k)を選択するよう作動し、
前記ハッシュ値の選択された部分集合に対応する前記シード系列内で前記シードの位置を特定し、
前記特定された位置に関数を適用し、前記シード系列内の対応する他の位置を特定し、
前記RDC集合を前記特定された他の位置の前記シードのハッシュ値として規定する、ことを特徴とするシステム。
A system that searches repository data for data similar to input data and divides the repository data into one or more repository chunks (50),
Means for calculating a corresponding set of repository identification characteristics (RDC) for each repository chunk, each RDC set including a plurality of identification characteristics (55r-59r), wherein the means assigns each repository chunk to a plurality of seeds ( s), arranging each seed as a small part of each repository chunk in a seed sequence, applying a hash function to each seed to generate a plurality of hash values, Comprises the means for providing a hash value;
Means for maintaining an index (44) associated with each RDC set and the corresponding repository chunk;
Comparing the set of input identification characteristics (55i-59i) of the input chunk (51) of the input data with one or more RDC sets stored in the index, and similar between the input chunk and the corresponding repository chunk Means for determining whether a sex exists,
The means for determining operates to determine that similarity exists if the similarity threshold j of the input discriminant feature set is detected in the RDC set stored in the index;
Operated such that the means for calculating to select a subset (k) of the plurality of hash values,
Locating the seed within the seed sequence corresponding to the selected subset of the hash values;
Applying a function to the identified position to identify a corresponding other position in the seed sequence;
Defining the RDC set as a hash value of the seed at the identified other location.
前記ハッシュ値集合(k)はk個の最大ハッシュ値を識別することで選択し、
前記対応する他の位置を特定するのに適用する関数が前記シード(s)系列内の次のシードを識別する、請求項1乃至3のいずれか1項に記載のシステム。
The hash value set (k) is selected by identifying k maximum hash values;
4. A system according to any one of the preceding claims, wherein a function applied to determine the corresponding other position identifies the next seed in the seed (s) sequence.
前記入力チャンク(51)と類似性が存在すると判定された前記リポジトリチャンク(52)との間の1以上の差分を前記入力チャンクの全データを比較することで特定する手段をさらに備える、請求項3記載のシステム。The means further comprising: determining means for comparing one or more differences between the input chunk (51) and the repository chunk (52) determined to be similar by comparing all data of the input chunk. 3. The system according to 3. 特定された前記差分を前記リポジトリデータを格納した同じリポジトリ(53)内に格納する手段をさらに備える、請求項5記載のシステム。The system of claim 5, further comprising means for storing the identified differences in the same repository (53) that stores the repository data. データファクタリングとデータバックアップの少なくとも一方に用いる、請求項3記載
のシステム。
The system according to claim 3, wherein the system is used for at least one of data factoring and data backup.
ネットワーク接続コンピュータシステムであって、第1の位置の第1のコンピュータで請求項1記載のシステムを提供する前記第1のコンピュータと、遠隔位置の第2のコンピュータで請求項3記載のシステムを提供する前記第2のコンピュータとを備え、前記第1と第2のコンピュータが互いにネットワーク通信状態にあり、前記リポジトリデータを前記第2のコンピュータを介してアクセスするデータリポジトリ(17)内に格納する、ことを特徴とするネットワーク接続コンピュータシステム。  A network-connected computer system, wherein the first computer providing the system of claim 1 at a first computer at a first location and the system of claim 3 at a second computer at a remote location And storing the repository data in a data repository (17) accessed via the second computer, wherein the first and second computers are in network communication with each other. A network-connected computer system characterized by the above. 前記入力チャンクを全て前記遠隔位置へ送信することなく、かつ前記類似性が存在すると判定されたリポジトリチャンクを全て前記第1の位置へ送信することなく、前記入力チャンクと前記類似性が存在すると判定されたリポジトリチャンクとの間の1以上の差分を特定する手段を備え、前記特定する手段が、前記入力データと前記リポジトリデータの少なくとも1つの共通データ・セクションまたは非共通データ・セクションを識別する際に使用するための該入力データと該リポジトリデータ内の対応する間隔を定義する、前記入力チャンクと前記類似性が存在すると判定されたリポジトリチャンクの識別特性が一致する一対の識別特性位置をアンカーとして用いて、少なくとも1つの前記共通データ・セクションと前記非共通データ・セクションを計算する、請求項8記載のネットワーク接続コンピュータシステム。 Determines that the entire input chunk without transmitting to the remote location and without transmitting the determined repository chunk and the similarity is present to all the first position, said similarity exists between the input chunk Means for identifying one or more differences between the selected repository chunks , wherein the means for identifying identifies the input data and at least one common data section or non-common data section of the repository data. A pair of identification characteristic positions that define the corresponding intervals in the repository data and the input data that are determined to be similar to the input chunk are defined as anchors. Using at least one of the common data section and the non-common data section. Deployment calculate the network connection computer system of claim 8. 入力データに類似するデータについてリポジトリデータを検索し、該リポジトリデータを1以上のリポジトリチャンク(50)に分割する方法をコンピュータに実行させるプログラムが記録された記録媒体であって前記プログラムが、
各リポジトリチャンクごとに、リポジトリ識別特性(RDC)(55r〜59r)の対応集合を算出するステップで、前記RDC集合が複数(n)の識別特性(55r〜59r)を含む前記ステップと、
各RDC群と前記対応するリポジトリチャンクに関連するインデックス(44)を保持するステップと、
前記入力データの入力チャンク(51)について入力識別特性(55i〜59i)(IDC)を算出するステップと、
前記IDC(55i〜59i)を前記インデックス(44)内に格納された1以上のRDC集合(55r〜59r)と比較し、前記入力チャンクと前記対応するリポジトリチャンクとの間に類似性が存在するか判定するステップで、前記RDCと前記IDCを、
前記入力チャンク(51)と前記リポジトリチャンク(52)をそれぞれ、複数のシード(s)に区画し、該各シードを前記入力チャンクと前記リポジトリチャンクの小部分としてシード系列内に順列配置し、
前記各シードにハッシュ関数を適用して複数のハッシュ値を生成し、各シードが一つのハッシュ値をもたらすことにより取得する前記ステップとを実行させるものであって、
IDC集合を各入力チャンクごとに算出し、該IDC集合が複数(k)の識別特性からなり、前記IDC集合を前記RDC集合と比較し、
前記IDC集合の前記識別特性の類似性閾値(j)が前記インデックス内に格納されたRDC集合内で検出された場合、類似性が存在すると判定し、
前記RDC集合と前記IDC集合をそれぞれさらなるステップ群、すなわち前記複数のハッシュ値の部分集合(k)を選択するステップと、
前記選択されたハッシュ値の部分集合に対応する前記シード系列内でシード位置を特定するステップと、
特定された前記シード位置に関数を適用して前記シード系列内での対応する他の位置を特定するステップと、
前記特定された他の位置の前記シードのハッシュ値として前記IDC集合と前記RDC集合を規定するステップとを実行させることにより取得する、ことを特徴とする記録媒体
A recording medium storing a program for causing a computer to execute a method of searching repository data for data similar to input data and dividing the repository data into one or more repository chunks (50) ,
Calculating a corresponding set of repository identification characteristics (RDC) (55r-59r) for each repository chunk, wherein the RDC set includes a plurality (n) of identification characteristics (55r-59r);
Maintaining an index (44) associated with each RDC group and the corresponding repository chunk;
Calculating an input identification characteristic (55i-59i) (IDC) for an input chunk (51) of the input data;
The comparison with the IDC 1 or more RDC set the (55I~59i) stored in said index (44) (55R~59r), similarity exists between the input chunk and the corresponding repository chunk In the step of determining whether the RDC and the IDC are
Partitioning each of the input chunk (51) and the repository chunk ( 52 ) into a plurality of seeds (s), and arranging each seed in a seed sequence as a small part of the input chunk and the repository chunk;
Applying a hash function to each seed to generate a plurality of hash values, and causing each seed to obtain a hash value by performing the steps of:
Calculating an IDC set for each input chunk, the IDC set comprising a plurality (k) of identification characteristics, and comparing the IDC set with the RDC set;
If a similarity threshold (j) of the identification characteristic of the IDC set is detected in the RDC set stored in the index, determine that there is similarity;
Selecting each of the RDC set and the IDC set as further steps, i.e. selecting a subset (k) of the plurality of hash values;
Identifying a seed position in the seed sequence corresponding to the selected subset of hash values;
Applying a function to the identified seed locations to identify other corresponding locations in the seed sequence;
A recording medium obtained by executing the step of defining the IDC set and the RDC set as a hash value of the seed at the other specified position.
前記ハッシュ値の部分集合をk個の最大ハッシュ値を識別することで選択し、
前記対応する他の位置を特定するために適用する前記関数が前記シード系列内で次のシードを識別する、請求項10記載の記録媒体
Selecting a subset of the hash values by identifying k largest hash values;
The recording medium of claim 10, wherein the function applied to identify the corresponding other location identifies a next seed in the seed sequence.
前記プログラムは、前記入力チャンクと類似性が存在すると判定された前記リポジトリチャンクとの間の1以上の差分を前記入力チャンクの全データを比較することで特定するステップをさらに実行させる、請求項10記載の記録媒体 The program further to execute a step of specifying by comparing all data of the input chunk 1 or more the difference between the repository chunk is determined that the input chunk and similarity exists, it claims 10 The recording medium described. 前記リポジトリデータを格納した同じリポジトリ(53)内に特定された前記差分を格納するステップをさらに実行させる、請求項12記載の記録媒体The repository data further to execute a step of storing the difference that has been identified in the same repository (53) in which to store the claim 12 recording medium according. 前記入力データは第1の位置に位置し、前記リポジトリデータ及び前記インデックスは遠隔位置に位置し、前記プログラムはさらに、
前記第1の位置(1602)の前記IDC集合(55i〜59i)を特定するステップと、
算出された前記IDC集合を前記第1の位置から前記遠隔位置(1604)へ送信するステップと、
前記特定されたIDC集合を前記遠隔位置の1以上のRDC集合と比較するステップと、
前記入力チャンクを全て前記遠隔位置へ送信することなく、かつ前記類似性が存在すると判定されたリポジトリチャンクを全て前記第1の位置へ送信することなく、前記入力チャンクと前記類似性が存在すると判定されたリポジトリチャンクとの間の1以上の差分を特定するステップであって、前記入力データと前記リポジトリデータの少なくとも1つの共通データ・セクションまたは非共通データ・セクションを識別する際に使用するための該入力データと該リポジトリデータ内の対応する間隔を定義する、前記入力チャンクと前記類似性が存在すると判定されたリポジトリチャンクの識別特性が一致する一対の識別特性位置をアンカーとして用いて、少なくとも1つの前記共通データ・セクションと前記非共通データ・セクションを計算するステップとを実行させる、ことを特徴とする請求項13記載の記録媒体
The input data is located at a first location, the repository data and the index are located at a remote location, and the program further comprises:
Identifying the IDC set (55i-59i) at the first location (1602);
Transmitting the calculated IDC set from the first location to the remote location (1604);
Comparing the identified IDC set to one or more RDC sets at the remote location;
Determines that the entire input chunk without transmitting to the remote location and without transmitting the determined repository chunk and the similarity is present to all the first position, said similarity exists between the input chunk comprising the steps of: identifying one or more differences between the repository chunks, the input data and the repository data for at least one common data section or non-common data section for use in identifying Defining a corresponding interval in the input data and the repository data, using as a anchor a pair of discriminating characteristic positions where the discriminating characteristics of the repository chunks determined to be similar to the input chunk are used as anchors; Calculate the two common data sections and the non-common data sections That to execute the steps, the recording medium according to claim 13, wherein a.
前記プログラムは、前記遠隔位置(1604)に特定された前記差分を格納するステップをさらに実行させる、請求項14記載の記録媒体 15. The recording medium according to claim 14 , wherein the program further executes a step of storing the difference specified in the remote location (1604). 前記プログラムは、データファクタリングとデータバックアップとの少なくとも一方に使用される、請求項10乃至15のいずれか1項に記載の記録媒体The program, Ru is used in at least one of the data factoring and data backup, recording medium according to any one of claims 10 to 15. 前記類似性閾値はRDC集合内に前記IDC集合内の所定数の識別特性が検出されたときに合致する、請求項10乃至16のいずれか1項に記載の記録媒体The recording medium according to any one of claims 10 to 16, wherein the similarity threshold matches when a predetermined number of identification characteristics in the IDC set are detected in the RDC set. 前記複数のハッシュ値の部分集合(k)は集合内のk個の最大算術的ハッシュ値であり、前記特定されたシード位置に適用する前記関数が前記k個の最大算術的ハッシュ値のそれぞれに対応する各シードに対し次の系列的シードを採用する、請求項10乃至17のいずれか1項に記載の記録媒体The subset (k) of the plurality of hash values is k maximum arithmetic hash values in the set, and the function applied to the identified seed position is applied to each of the k maximum arithmetic hash values. The recording medium according to claim 10, wherein the following sequential seed is adopted for each corresponding seed. 前記ハッシュ関数はローリングハッシュ関数とモジュラーハッシュ関数から選択する、請求項10乃至18のいずれか1項に記載の記録媒体The recording medium according to claim 10, wherein the hash function is selected from a rolling hash function and a modular hash function. 前記RDC集合は2値ツリーとBツリーと並べ替えリストとハッシュテーブルの少なくとも一つとしてインデックス内に格納する、請求項10乃至19のいずれか1項に記載の記録媒体The recording medium according to claim 10, wherein the RDC set is stored in the index as at least one of a binary tree, a B-tree, a rearrangement list, and a hash table. 前記各シードは基本要素の連続系列であって同じシードサイズsを有する、請求項10乃至20のいずれか1項に記載の記録媒体The recording medium according to claim 10, wherein each seed is a continuous series of basic elements and has the same seed size s. 前記シードは重複シードを含む、請求項21記載の記録媒体The recording medium according to claim 21, wherein the seed includes an overlapping seed. 前記IDCを1以上のRDC集合と比較して類似性が存在するかどうか判定するステップは、前記リポジトリのサイズとは無関係に前記入力データのサイズに比例した該入力データについての実行時間内に実行される、請求項10乃至22のいずれか1項に記載の記録媒体Whether determining whether the similarity in comparison with one or more RDC set the IDC is present, run in the running time for the input data which is proportional to the size of independent the input data of the size of the repository is the recording medium according to any one of claims 10 to 22. 入力データに類似するデータについてリポジトリデータを検索する方法で、前記リポジトリデータを1以上のリポジトリチャンク(52)に分割する前記方法をコンピュータに実行させるプログラムが記録された記録媒体であって前記プログラムが、
各リポジトリチャンク(52)ごとに、リポジトリ識別特性の対応集合を算出するステップで、該各RDC集合が複数の識別特性(55r〜59r)を含み、前記各リポジトリチャンクを複数のシード(s)に区画することで取得し、該各シードを前記各リポジトリチャンクの小部分としてシード系列内に順列配置し、前記各シードにハッシュ関数を適用して複数のハッシュ値を生成し、該各シードが一つのハッシュ値をもたらす前記ステップと、
各RDC集合と前記対応するリポジトリチャンクに関連するインデックス(44)を保持するステップと、
前記入力データの入力チャンクの入力識別特性(55i〜59i)集合を前記インデックス内に格納された1以上のRDC集合と比較し、前記入力チャンクと前記対応するリポジトリチャンクとの間に類似性が存在するかどうか判定するステップとを実行させるものであって、
前記入力識別特性集合内の識別特性の類似性閾値(j)が前記インデックス内に格納されたRDC集合内に検出された場合に、前記入力チャンクと前記対応するリポジトリチャンクとの間に類似性が存在すると判定し、
前記RDC集合を、
前記複数のハッシュ値の部分集合(k)を選択し、
前記ハッシュ値の選択された部分集合に対応して前記シード系列内でシード位置を特定し、
特定された前記シード位置に関数を適用して前記シード系列内で対応する他の位置を特定し、
前記特定された他の位置の前記シードのハッシュ値として前記IDC集合を規定することで取得する前記ステップを前記コンピュータに実行させる、記録媒体
In a way to find repository data for data similar to the input data, a recording medium storing therein a program for executing the method on a computer for dividing the repository data into one or more repository chunks (52), said program But,
Calculating a corresponding set of repository identification characteristics for each repository chunk (52), wherein each RDC set includes a plurality of identification characteristics (55r-59r), and each repository chunk is divided into a plurality of seeds (s); Each seed is permuted in a seed sequence as a small part of each repository chunk, and a hash function is applied to each seed to generate a plurality of hash values. Said step yielding two hash values;
A step of holding the index (44) associated with the corresponding repository chunk with each RDC set,
Wherein comparing an input signature (55i~59i) set of input chunks of the input data with one or more RDC set stored within the index, there is a similarity between the corresponding repository chunk to the input chunk A step of determining whether or not to perform ,
If the similarity threshold signature of said input distinguishing characteristics in the set (j) is detected in the RDC set stored in the index, the similarity between the repository chunks said corresponding with the input chunk Determine that it exists,
The RDC set is
Selecting a subset (k) of the plurality of hash values;
Identifying a seed position within the seed sequence corresponding to the selected subset of the hash values;
Applying a function to the identified seed locations to identify other corresponding locations in the seed sequence;
A recording medium that causes the computer to execute the step of acquiring the IDC set as a hash value of the seed at the other specified position.
入力データをリポジトリ(53)に供給し、前記入力データに類似するデータについて前記リポジトリ内のリポジトリデータを検索する方法をコンピュータに実行させるプログラムが記録された記録媒体であって前記プログラムが、
前記入力データを1以上の入力チャンク(51)に分割するステップと、
前記入力チャンクごとに入力識別特性(IDC)集合を算出するステップで、該入力識別特性集合が複数の特性(55i〜59i)を含み、かつ該集合を、
前記各入力チャンクを複数のシード(s)に区画し、各シードを前記各入力チャンクの小部分をなしてシード系列にて順列配置し、
前記各シードにハッシュ関数を適用して複数のハッシュ値を生成し、各シードが一つの
ハッシュ値をもたらし、
前記複数のハッシュ値の部分集合(k)を選択し、
前記選択されたハッシュ値の部分集合に対応して前記シード系列内でシード位置を特定し、
特定された前記シード位置に関数を適用して前記シード系列内の対応する他の位置を特定し、
前記IDC集合を前記特定された他の位置の前記シードのハッシュ値として規定することにより取得する前記ステップを前記コンピュータに実行させる記録媒体
A recording medium storing a program for supplying input data to a repository (53) and causing a computer to execute a method for searching repository data in the repository for data similar to the input data, the program comprising:
Dividing the input data into one or more input chunks (51);
Calculating an input identification characteristic (IDC) set for each of the input chunks, the input identification characteristic set including a plurality of characteristics (55i-59i); and
Partitioning each input chunk into a plurality of seeds (s), and arranging each seed in a permutation in a seed sequence forming a small portion of each input chunk;
Applying a hash function to each seed to generate a plurality of hash values, each seed yielding a hash value;
Selecting a subset (k) of the plurality of hash values;
Identifying a seed position in the seed sequence corresponding to the selected subset of hash values;
Applying a function to the identified seed location to identify a corresponding other location in the seed sequence;
A recording medium that causes the computer to execute the step of acquiring the IDC set by defining the IDC set as a hash value of the seed at the other specified position.
リポジトリデータ内で入力データを識別する方法で、前記リポジトリデータがリポジトリデータチャンク(50)を含み、前記入力データが入力データチャンク(51)を含み、該各リポジトリデータチャンクがリポジトリデータチャンク識別特性(RDC)の対応集合を有し、該各識別特性(55r〜59r)を特性位置と共に格納し、前記特性位置が前記チャンク全体に拡散する前記方法をコンピュータに実行させるプログラムが記録された記録媒体であって、前記プログラムが、該各入力データチャンクごとに、
入力データチャンク識別特性(IDC)集合を特定するステップで、該各識別特性(55i〜59i)が特性位置を有し、該特性位置が前記チャンク全体に拡散する前記ステップと、
特定された前記IDC集合内の前記IDCを1以上のRDC集合と比較するステップと、
前記入力データに類似するリポジトリチャンクを1以上のRDC集合に対し前記特定されたIDC集合を比較する関数として識別するステップとを前記コンピュータに実行させる記録媒体
In a method for identifying input data within repository data, the repository data includes a repository data chunk (50), the input data includes an input data chunk (51), and each repository data chunk has a repository data chunk identification characteristic ( RDC) is a recording medium having a corresponding set, storing each identification characteristic (55r to 59r) together with a characteristic position , and a program for causing a computer to execute the method of spreading the characteristic position over the entire chunk. The program for each input data chunk,
Identifying a set of input data chunk identification characteristics (IDC), wherein each of the identification characteristics (55i-59i) has a characteristic position, and the characteristic position is spread throughout the chunk;
Comparing the IDC in the identified IDC set to one or more RDC sets;
To execute and identifying as a function of comparing the identified IDC set repository chunk that is similar to one or more of RDC set to the input data to the computer, a recording medium.
リポジトリデータ内での入力データの識別を含む方法で、前記リポジトリデータがリポジトリデータチャンクを含み、前記入力データが入力データチャンクを含み、各リポジトリデータチャンクがリポジトリデータチャンク識別特性の対応集合を有しており、該各識別特性をRDC特性位置と共に格納する前記方法をコンピュータに実行させるプログラムが記録された記録媒体であって、前記プログラムが、該各入力データチャンクごとに、
入力データチャンク識別特性(IDC)集合を特定するステップで、該各識別特性がIDC特性位置を有する前記ステップと、
続いて特定された前記IDC集合を1以上のRDC集合と比較するステップと、
前記入力データに類似するリポジトリチャンクを前記1以上のRDC集合に対し前記特定されたIDC集合を比較する関数として識別するステップで、前記IDC集合内の所定数の識別特性がRDC集合内で一致すると検出されたときにリポジトリチャンクが類似すると識別する前記ステップと、
少なくとも一対の一致するIDCとRDCの前記IDC及びRDC位置を出力するステップとを前記コンピュータに実行させる記録媒体
In a method that includes identification of input data within repository data, the repository data includes repository data chunks, the input data includes input data chunks, and each repository data chunk has a corresponding set of repository data chunk identification characteristics. A recording medium storing a program for causing a computer to execute the method of storing each identification characteristic together with an RDC characteristic position, wherein the program is, for each input data chunk,
Identifying an input data chunk identification characteristic (IDC) set, wherein each identification characteristic has an IDC characteristic position;
Subsequently comparing the identified IDC set to one or more RDC sets;
Identifying a repository chunk similar to the input data as a function of comparing the identified IDC set against the one or more RDC sets, wherein a predetermined number of identification characteristics in the IDC set match in the RDC set Identifying the repository chunks as similar when detected; and
A recording medium that causes the computer to execute at least a pair of matching IDCs and outputting the IDC and RDC positions of an RDC.
JP2007532557A 2004-09-15 2005-09-15 System and method for retrieving and storing data Active JP4939421B2 (en)

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 (en) 2008-05-01
JP2008513891A6 JP2008513891A6 (en) 2008-10-23
JP4939421B2 true JP4939421B2 (en) 2012-05-23

Family

ID=35431554

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007532557A Active JP4939421B2 (en) 2004-09-15 2005-09-15 System and method for retrieving and storing data

Country Status (7)

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

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
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
US7747831B2 (en) * 2006-03-20 2010-06-29 Emc Corporation High efficiency portable archive and data protection using a virtualization layer
US7831787B1 (en) 2006-03-20 2010-11-09 Emc Corporation High efficiency portable archive with virtualization
CA2648428C (en) * 2006-04-07 2017-11-21 Data Storage Group Data compression and storage techniques
US9317222B1 (en) * 2006-04-24 2016-04-19 Emc Corporation Centralized content addressed storage
US9235477B1 (en) * 2006-04-24 2016-01-12 Emc Corporation Virtualized backup solution
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
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
CA2651323C (en) * 2006-05-05 2016-02-16 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
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
US7778971B2 (en) * 2007-01-07 2010-08-17 Apple Inc. Synchronization methods and systems
US20080163743A1 (en) * 2007-01-07 2008-07-10 Freedman Gordon J Synchronization methods and systems
US7739410B2 (en) * 2007-01-07 2010-06-15 Apple Inc. Synchronization methods and systems
US7660831B2 (en) * 2007-01-07 2010-02-09 Apple Inc. Synchronization methods and systems
US7805403B2 (en) * 2007-01-07 2010-09-28 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
US8140637B2 (en) * 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
US8782368B2 (en) 2007-10-25 2014-07-15 Hewlett-Packard Development Company, L.P. Storing chunks in containers
US8150851B2 (en) * 2007-10-25 2012-04-03 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
GB2466579B (en) * 2007-10-25 2012-12-26 Hewlett Packard Development Co Data processing apparatus and method of deduplicating data
US8332404B2 (en) * 2007-10-25 2012-12-11 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8099573B2 (en) * 2007-10-25 2012-01-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8838541B2 (en) * 2007-10-25 2014-09-16 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
DE112007003678B4 (en) * 2007-10-25 2016-02-25 Hewlett-Packard Development Company, L.P. Data processing device and method for data processing
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 (en) * 2008-02-26 2012-11-28 Kddi株式会社 Data backup method, storage control communication device and program using deduplication technology
US8174412B2 (en) 2008-03-05 2012-05-08 Ca, Inc. Combined hash for variable data chunks
WO2009131585A1 (en) * 2008-04-25 2009-10-29 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
CA2738961A1 (en) 2008-10-23 2010-04-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
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
US20100281077A1 (en) * 2009-04-30 2010-11-04 Mark David Lillibridge Batching requests for accessing differential data stores
WO2011091354A2 (en) 2010-01-25 2011-07-28 Sepaton, Inc. System and method for data storage
US8447741B2 (en) * 2010-01-25 2013-05-21 Sepaton, Inc. System and method for providing data driven de-duplication services
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
US9122639B2 (en) 2011-01-25 2015-09-01 Sepaton, Inc. Detection and deduplication of backup sets exhibiting poor locality
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 (en) * 2012-01-16 2013-07-25 日本電気株式会社 Search system, control method for same, and program
JPWO2013108745A1 (en) * 2012-01-16 2015-05-11 日本電気株式会社 Storage device, control method thereof, and program
JP2013190891A (en) * 2012-03-13 2013-09-26 Hitachi Ltd Data transfer system
US9634522B2 (en) 2012-09-19 2017-04-25 International Business Machines Corporation Power grid data monitoring and control
US9766832B2 (en) 2013-03-15 2017-09-19 Hitachi Data Systems Corporation Systems and methods of locating redundant data using patterns of matching fingerprints
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
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
US9678975B2 (en) * 2013-03-15 2017-06-13 International Business Machines Corporation Reducing digest storage consumption in a data deduplication system
US9547662B2 (en) 2013-03-15 2017-01-17 International Business Machines Corporation Digest retrieval based on similarity search in data deduplication
US10366072B2 (en) * 2013-04-05 2019-07-30 Catalogic Software, Inc. De-duplication data bank
WO2014184857A1 (en) * 2013-05-13 2014-11-20 株式会社日立製作所 Duplication elimination system and method therefor
EP2997501A2 (en) 2013-05-14 2016-03-23 Actifio Inc. Efficient data replication and garbage collection predictions
US9256611B2 (en) 2013-06-06 2016-02-09 Sepaton, Inc. System and method for multi-scale navigation of data
US9594766B2 (en) 2013-07-15 2017-03-14 International Business Machines Corporation Reducing activation of similarity search in a data deduplication system
US10133502B2 (en) 2013-07-15 2018-11-20 International Business Machines Corporation Compatibility and inclusion of similarity element resolutions
US10296598B2 (en) * 2013-07-15 2019-05-21 International Business Machines Corporation Digest based data matching in similarity based deduplication
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
US9836474B2 (en) 2013-07-15 2017-12-05 International Business Machines Corporation Data structures for digests matching in a data deduplication system
US10229132B2 (en) 2013-07-15 2019-03-12 International Business Machines Corporation Optimizing 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
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 (en) * 2019-10-31 2022-04-21 울산과학기술원 Method and apparatus for conversing data key value
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

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05135108A (en) * 1990-03-27 1993-06-01 Sun Microsyst Inc Method and apparatus for organizing database
JPH06103127A (en) * 1992-09-22 1994-04-15 Kanebo Ltd Device for managing hash file data and method thereof
JP2003524243A (en) * 2000-02-18 2003-08-12 アヴァマー テクノロジーズ インコーポレイテッド Hash file system and method used in commonality factoring system
JP2004514968A (en) * 2000-11-06 2004-05-20 アヴァマー テクノロジーズ インコーポレイテッド System for identifying common digital sequences

Family Cites Families (57)

* 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
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
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
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
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
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
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
US6560620B1 (en) 1999-08-03 2003-05-06 Aplix Research, Inc. Hierarchical document comparison system and method
EP2148284A1 (en) 2000-01-10 2010-01-27 Iron Mountain Incorporated Administration of a differential backup system in a client-server environment
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
EP1317715A1 (en) * 2000-08-04 2003-06-11 Infoglide Corporation System and method for comparing heterogeneous data sources
US6694337B1 (en) 2000-10-26 2004-02-17 Intel Corporation Synchronizing databases
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 (en) * 2002-03-20 2005-07-20 株式会社東芝 Information recording / reproducing apparatus and information recording / reproducing method for performing encryption processing
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 (en) 2002-05-22 2008-01-23 国立大学法人 東京大学 Method for determining sensitivity to imatinib
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
US7490116B2 (en) 2003-01-23 2009-02-10 Verdasys, Inc. Identifying history of modification 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
US7831667B2 (en) * 2003-05-15 2010-11-09 Symantec Corporation Method and apparatus for filtering email spam using email noise reduction
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
WO2005050489A1 (en) * 2003-11-13 2005-06-02 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
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
US20070214198A1 (en) * 2006-03-10 2007-09-13 Nathan Fontenot Allowing state restoration using differential backing objects
TW200942552A (en) * 2008-03-06 2009-10-16 Genentech Inc Combination therapy with c-Met and HER antagonists

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05135108A (en) * 1990-03-27 1993-06-01 Sun Microsyst Inc Method and apparatus for organizing database
JPH06103127A (en) * 1992-09-22 1994-04-15 Kanebo Ltd Device for managing hash file data and method thereof
JP2003524243A (en) * 2000-02-18 2003-08-12 アヴァマー テクノロジーズ インコーポレイテッド Hash file system and method used in commonality factoring system
JP2004514968A (en) * 2000-11-06 2004-05-20 アヴァマー テクノロジーズ インコーポレイテッド System for identifying common digital sequences

Also Published As

Publication number Publication date
EP1962209A2 (en) 2008-08-27
WO2006032049A1 (en) 2006-03-23
CA2581065A1 (en) 2006-03-23
JP2008513891A (en) 2008-05-01
US8725705B2 (en) 2014-05-13
AU2005284737A1 (en) 2006-03-23
BRPI0515335A (en) 2008-07-22
AU2005284737B2 (en) 2011-03-10
EP1805664A1 (en) 2007-07-11
US20060059207A1 (en) 2006-03-16
CA2581065C (en) 2014-03-11
EP1962209A3 (en) 2009-01-07

Similar Documents

Publication Publication Date Title
JP4939421B2 (en) System and method for retrieving and storing data
JP2008513891A6 (en) System and method for retrieving and storing data
US10282257B2 (en) Systems and methods for efficient data searching, storage and reduction
US8402063B2 (en) Restoring data backed up in a content addressed storage (CAS) system
US7478113B1 (en) Boundaries
US8370305B2 (en) Method of minimizing the amount of network bandwidth needed to copy data between data deduplication storage systems
US8983952B1 (en) System and method for partitioning backup data streams in a deduplication based storage system
US7257257B2 (en) Method and apparatus for differential, bandwidth-efficient and storage-efficient backups
US20070043705A1 (en) Searchable backups
CN103765393A (en) Storage system
US11461140B2 (en) Systems and methods for controller-worker architecture for searching a storage system
KR101299555B1 (en) Apparatus and method for text search using index based on hash function
US20230376461A1 (en) Supporting multiple fingerprint formats for data file segment
KR100319761B1 (en) Frame-partitioned parallel processing method for database retrieval using signature file

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080912

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20091214

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110426

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20110516

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20110516

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110725

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120207

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120207

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120224

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

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4939421

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150