JP2014534486A - スケーラブル・データ・デュプリケーションのための方法、システム、およびコンピュータ・プログラム - Google Patents

スケーラブル・データ・デュプリケーションのための方法、システム、およびコンピュータ・プログラム Download PDF

Info

Publication number
JP2014534486A
JP2014534486A JP2014530085A JP2014530085A JP2014534486A JP 2014534486 A JP2014534486 A JP 2014534486A JP 2014530085 A JP2014530085 A JP 2014530085A JP 2014530085 A JP2014530085 A JP 2014530085A JP 2014534486 A JP2014534486 A JP 2014534486A
Authority
JP
Japan
Prior art keywords
spectrum
small data
signature
data chunk
chunk
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.)
Pending
Application number
JP2014530085A
Other languages
English (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
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2014534486A publication Critical patent/JP2014534486A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • G06F3/0641De-duplication techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1752De-duplication implemented within the file system, e.g. based on file segments based on file chunks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3091Data deduplication
    • H03M7/3093Data deduplication using fixed length segments

Landscapes

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

Abstract

【課題】小さいデータ・チャンクを用いて動作するスケーラブル・データデュプリケーションのための例示的な方法、システム、およびコンピュータ・プログラムの実施形態を提供する。【解決手段】例示としてのみ示す一実施形態では、小さいデータ・チャンクの各々について、小さいデータ・チャンクに現れるキャラクタの表現と小さいデータ・チャンクの頻度の表現との組み合わせに基づいてシグネチャを発生させる。現れるキャラクタの表現の組み合わせに基づいてシグネチャを発生させる。シグネチャを用いて、デュプリケーションの対象となるデータの選択を支援する。【選択図】図2

Description

本発明は、一般にコンピュータに関し、更に特定すれば、コンピューティング記憶環境において小さいデータ・ブロックに対するアクセスを可能とするために細かい分解が必要であるスケーラブル・デュプリケーション(scalable duplication)に関する。
今日の社会において、コンピュータ・システムは一般化している。職場や家庭で、また学校でもコンピュータ・システムを見ることができる。コンピュータ・システムは、データを処理し記憶するためにデータ記憶システムまたはディスク記憶システムを含むことができる。大量のデータを毎日処理する必要があり、現在の動向からこのデータ量が当分の間は増え続けることが示唆される。この問題を軽減するための1つの効率的な方法は、デュプリケーションを用いることである。デュプリケーション・システムの基礎となる考えは、反復されたデータを探し出し、その最初の発生のみを記憶することによって、利用可能データの大部分を全く変更せずに何度もコピーし転送することである。以降のコピーは、記憶された発生を指し示すポインタによって置換する。これによって、データが実際に反復される場合の記憶要求を著しく低減させる。
データ・デュプリケーションとは、冗長データの削減または排除あるいはその両方を指す。データ・デュプリケーションにおいて、ファイル、データ・ストリーム、または他の何らかのデータ形態とすることができるデータ・オブジェクトは、チャンキング方法を用いて、チャンクと呼ばれる1つ以上の部分に分解される。データ・デュプリケーション・プロセスにおいて、データの複製の(duplicate)コピーは削減または排除され、最少量の冗長コピーまたは単一のデータ・コピーがそれぞれ残される。デュプリケーション・プロセスを用いると、必要な記憶容量の縮小およびネットワーク帯域幅の拡大等の様々な利点が得られる。これらおよび他のメリットのため、デュプリケーションは近年、コンピューティング記憶システムにおいて極めて重要な技術分野として浮上している。デュプリケーションに対するいくつかの手法が提案されており、それらの多くはハッシング技法を用いる。
しかしながら、ハッシング技法を用いる際の主な問題の1つは、一方では衝突(誤一致)数を最小限に抑えるように関数によってできる限り均一に近い値の分散を与えなければならない均一性と、他方ではチャンクにおける小さい変更によって対応するハッシュ値に及ぼす影響を皆無とするかまたはごく小さくしなければならない感度との間で、適切なバランスを見出すことである。
従って、前述のことに鑑み、コンピューティング環境において小さいデータ・チャンクを用いて動作するスケーラブル・データ・デュプリケーションのための様々な例示的な方法、システム、およびコンピュータ・プログラムの実施形態を提供する。例示としてのみ示す一実施形態では、小さいデータ・チャンクの各々について、小さいデータ・チャンクに現れるキャラクタの表現と小さいデータ・チャンクの頻度の表現との組み合わせに基づいてシグネチャ(signature)を発生させる。現れるキャラクタの表現の組み合わせに基づいてシグネチャを発生させる。シグネチャを用いて、デュプリケーションの対象となるデータの選択を支援する。
前述の例示的な方法の実施形態に加えて、他の例示的なシステムおよびコンピュータの実施形態を提供し、関連する利点を与える。前述の「発明の概要」は、概念のいくつかの抜粋を簡略化した形態で紹介するために示したが、この概念については以下の「発明を実施するための形態」において更に記載する。「発明の概要」は、特許請求した主題の重要な特性(features)または不可欠な特性を明確にすることは意図しておらず、特許請求した主題の範囲の決定に役立てるために用いることも意図していない。特許請求した主題は、「背景技術」において言及した欠点のいずれかまたは全てを解決する実施に限定されるものではない。
本発明の利点を容易に理解するため、添付図面に示す特定の実施形態を参照して、簡単に記載した本発明について更に具体的な説明を行う。これらの図面は本発明の実施形態を表しており、従ってその範囲を限定するものとは見なさないことを踏まえて、添付図面を用いて本発明を更に具体的かつ詳細に記載し説明する。
本発明の態様を実現可能である一例の記憶デバイスを有するコンピューティング・システム環境を示す。 小さいブロックを用いたスケーラブル・データ・デュプリケーションのための例示的な方法を示すフローチャートである。 本発明の態様を実現可能であるコンピュータ環境においてパーティションをキャラクタ頻度のブロックに分けることを概略的に表す例示的な図を示す。 本発明の態様を実現可能である近似ハッシュ関数(appropriate hash function)の様々な構築コンポーネントのレイアウトを示す例示的な図を示す。 32GBサイズの試験データベースにおいて、規定されたシグネチャの32ビット位置の各々で1ビットを取得する確率を示すグラフである。 データ・チャンクを規定するための例示的な方法を示すフローチャートである。 シグネチャ規定のキャラクタ部分を規定する例示的な方法を示すフローチャートである。 シグネチャ規定の頻度部分を規定するための例示的な方法を示すフローチャートである。 シグネチャ規定のキャラクタ対部分を規定するための例示的な方法を示すフローチャートである。 図7、図8、および図9のフローチャートにおいて用いられるシフト定数を規定する。
前述のように、データ・デュプリケーションとは、冗長データの削減または排除あるいはその両方を指す。データ・デュプリケーション・プロセスにおいて、データの複製のコピーは削減または排除され、最少量の冗長コピーまたは単一のデータ・コピーがそれぞれ残される。デュプリケーション・プロセスを用いると、必要な記憶容量の縮小およびネットワーク帯域幅の拡大等の様々な利点が得られる。
ハッシングに基づいたデュプリケーションのための手法については、概略的に以下のように記載することができる。利用可能データは、チャンク(例えばCおよびC)と呼ばれる部分に分割される。これらのチャンクは固定または可変のサイズとすることができ、1つのチャンクの(平均)サイズは、例えば4〜8キロバイト(KB)の小さいものから、16メガバイト(MB)等の極めて大きいものまでとすることができる。これらのチャンクに対して、暗号的に強力なハッシュ関数(h)を適用する。これが意味するのは、h(C)=h(C)ならば、極めて低いエラー確率で、チャンクCおよびチャンクCは同一であると想定可能であるということである。異なるハッシュ値のセット(S)は、対応するチャンクに対するポインタと共に、高速アクセスおよび容易な更新を可能とするデータ構造(D)に保持される。これは典型的にハッシュ・テーブルまたはBツリーである。処理対象の新しいチャンクごとに、そのハッシュ値をD内で検索する。これが見つかった場合には、その所与のチャンクがデュプリケーション可能であると想定できるので、これを再び記憶するのではなく、もっと前の時点の発生を指し示すポインタによって置換する。ハッシュ値がD内に存在しない場合、その所与のチャンクは新しいと見なされるので、これを記憶してそのハッシュ値をセットSに付加する。
しかしながら、どのようにチャンク境界を規定するかに基づいて、示唆されるチャンク・サイズに差が生じ得る。チャンク・サイズは性能に大きな影響を与える。チャンク・サイズが小さすぎる場合、異なるチャンクの数が多すぎてデュプリケーション手法に支障を来すことがある。これは、データ構造DがRAMに収まらないのでシステムがスケーラブルでなくなる恐れがあるからである。一方、チャンク・サイズが大きすぎる場合は、同一のチャンクを取得する確率が低下する。多くの場合、チャンク・サイズがもっと小さければデュプリケーションを実行できたチャンクが多数存在するが、チャンク・サイズが大きいと、これらのチャンクの多くを保持しなければならない。
また、デュプリケーション・プロセスは、同一のチャンクだけでなく類似のチャンクを探すことができる。類似チャンクが探し出されると、その差だけが記録されるが、これは一般にチャンク全体よりもはるかに小さい。これによって、同一性ベースのシステムにおけるよりもはるかに大きいチャンクを用いることができる。しかしながら多くの使用例では、データを更に細分化し、極めて小さいチャンクを用いてもっと高効率のデュプリケーション・プロセスを実行することができる。例えば、設計に他の変更を加えることなくチャンク・サイズを2000分の1に、例えば16MBから8Kに縮小することができるシステムを簡単に一般化すると、インデックス・サイズは4GBから約8TBに2000倍増大することが暗示される。しかしながら、これはRAMに収まらないと見なされる場合がある。更に、チャンク類似性の概念の規定を保持しつつそのサイズを縮小すると、衝突数の増大につながり、この手法を全く無効にしてしまう恐れがある。
これに対して、前述の非効率に対処するため、例示する実施形態の機構は、近似ハッシュ・スキーム(approximate hash scheme)と特定されるものによって必要な類似性を実現するように機能する。その主な考えは、かかる近似ハッシュ関数が、その値の均一に近い分布に関する限り、チャンク内の「小さい」変更に影響されず、他のハッシュ関数と同様にふるまうことである。従って、この機構は、ハッシュ使用例において通常実行されるように(ハッシュ・テーブルを用いて、または値をBツリーに記憶して)近似ハッシュ値セットを処理することができるが、類似ブロックおよび同一ブロックの双方を検出可能である。所与のチャンクに、もっと広範であるが依然として小さい更新が行われた場合、その新しいハッシュ値は元のものに近いことがあり、これはミスの場合にハッシュ・テーブル内でその所与の要素の近傍に記憶された値をチェックしなければならないことを示す。かかる近傍検索は、通常のハッシュ手法では役に立たない。
レポジトリを記憶するための一般的なアルゴリズムは、基本的なデータ構造として、例えば232のエントリを有するハッシュ・テーブルHの使用を含むことができる。構築プロセスの間、各チャンクCにその近似ハッシュ値ah(C)を割り当て、チャンクのインデックスまたはアドレスをH[ah(C)]に記憶し、Hのエントリにはチャンクのハッシュ値でインデックスを付ける。テーブル内のロケーションがフリーでない場合、これが上書きされることがある。これは、新しいチャンクが以前に遭遇したチャンクと同一または極めて類似している場合に起こり得る。この場合、必要であれば後に参照するためにもっと最近のチャンクのアドレスを記憶することが好ましい場合がある。しかしながら、2つの完全に異なるチャンクを同一の値にハッシングした結果として衝突が起こる場合があり、上書きされた古いチャンクを指し示すポインタは失われる。
一実施形態において、本発明の機構は、データに対して固有の変形を適用し、デュプリケーションの対象となるデータの選択を可能とするシグネチャを決定する。この機構はデータを、固定長または可変長の、(平均)サイズが約8〜16Kの比較的小さいチャンク(C)に分割する。各チャンクは、これを形成するキャラクタの分布およびそれらの対応する発生頻度について分析することができる。チャンク内の発生頻度によって配列させた異なるキャラクタのシーケンスをCのcスペクトラムとして規定し、対応する頻度のシーケンスをCのfスペクトラムとして規定する。更に、本発明の機構は、チャンク内の発生頻度によって配列させた異なるキャラクタ対のシーケンスについて検討し、この対のシーケンスをCのpスペクトラムとして規定する。提案する近似ハッシュ関数(ah(C)と称する)は、これらのスペクトラムのいくつかの要素の組み合わせである。一例としてのみ示す一実施形態において、割り当てたハッシュ・テーブルの空間を利用するために、ハッシュ値のサイズを前もって固定することができる。例えば、テーブルが、32ビットのハッシュ値に相当する約40億のエントリを有すると決定することができる。スペクトラムの選択された要素、もっと正確にはスペクトラムの選択された要素のビットの一部は、それらを所望の位置にシフトさせてそのビット・ストリングに論理XOR演算を実行することによって、適切に配置することができる。一実施形態において、近似ハッシュ関数は、キャラクタおよびそれらの頻度の組み合わせに基づいて発生させる。近似ハッシュ関数を用いて、デュプリケーションの対象となるデータを選択する。
ここで図1に移ると、コンピューティング・システム環境の例示的なアーキテクチャ10が図示されている。コンピュータ・システム10は、中央処理装置(CPU)12を含み、これは通信ポート18およびメモリ・デバイス16に接続されている。通信ポート18は通信ネットワーク20と通信状態にある。通信ネットワーク20および記憶ネットワークは、サーバ(ホスト)24、および記憶デバイス14を含むことができる記憶システムと通信状態にあるように構成することができる。記憶システムは、ハード・ディスク・ドライブ(HDD)・デバイス、固体デバイス(SSD)等を含むことができ、これらはRAID(redundant array of independentdisks)に構成することができる。以下に記載するような動作は、システム10内または他の場所に配置された記憶デバイス(複数のデバイス)14上で実行することができ、独立してまたは他のCPUデバイス12と関連付けてあるいはその両方で動作する多数のメモリ・デバイス16を有することができる。メモリ・デバイス16は、電気的消去可能プログラマブル読み取り専用メモリ(EEPROM)または関連デバイスのホストのようなメモリを含むことができる。メモリ・デバイス16および記憶デバイス14は、信号担持媒体を介してCPU12に接続されている。更に、CPU12は、通信ポート18を介して、複数の追加のコンピュータ・ホスト・システム24が付与された通信ネットワーク20に接続されている。更に、メモリ・デバイス16およびCPU12は、コンピューティング・システム10の各コンポーネントに埋め込まれるかまたは含ませることができる。また、各記憶システムが、別個のまたは異なるあるいはその両方のメモリ・デバイス16およびCPU12を含んで、これらが関連して動作するかまたは別個のメモリ・デバイス16またはCPU12あるいはその両方として動作することも可能である。
図2は、小さいブロックを用いたスケーラブル・データ・デュプリケーションのための例示的な方法200を示すフローチャートである。方法200が開始し(ステップ202)、シグネチャを発生する。これは、キャラクタ、頻度、およびキャラクタ対の分布の組み合わせに基づいて小さいデータ・ブロックに近似ハッシュ関数を適用した結果である(ステップ204)。近似ハッシュ関数を用いて、所与のデータ・ブロックについて、このデータ・ブロックのデュプリケーションが可能であるか否かを決定する(ステップ206)。方法200は終了する(ステップ208)。
図2の機構を更に説明するため一実施形態において、a,a,...,a等のキャラクタ・セットを、チャンク内の異なるキャラクタのシーケンスとして、更に正確には、チャンク内で頻度の高い順に配列させたこれらのキャラクタのASCII表現として規定する。これらのキャラクタの頻度におけるタイ(tie)は、同一頻度を有するキャラクタをそれらのASCII値でソートすることによって切ることができる。この機構では、f≧f≧...≧fを、それぞれ対応する頻度とする。チャンク内の異なるキャラクタの数nは、1(同一キャラクタのチャンクについて全てゼロまたはブランクのように)とチャンクのサイズであるkとの間で変動し得る。一般にこのサイズはASCIIアルファベットよりもはるかに大きいので、1≦n≦256と想定することができる。
要素aはブロックに分割することができる。この機構は、いくつかのキャラクタを集めて、それらを対称的に処理することができる。これは、いくつかのキャラクタの頻度が等しいかまたは極めて近いことが頻繁に起こり得るからである。このような場合、小さい混乱によってキャラクタの順序が変化し、完全に異なるハッシュ値が生じ得る。このことは、近似ハッシュ関数の目的が小さい変更に影響されないことであるのとは正反対である。ブロック内の全要素のASCII表現を同一のオフセットで並べ、それらの要素にXOR演算を実行して、ブロック内の内部順序が任意となるようにすることができる。
一実施形態において、ブロックを規定するための機構は、i=1,...,n−1について、隣接する頻度間のギャップ・サイズdを調べる(d=f−fi+1)。しかしながら、dのみに従ってギャップをソートすると、ギャップの規定は単一の要素を有するブロックを生成する方向へと強く偏る可能性がある。これは、最大のギャップが最大値間で発生する傾向があり得るからである。ギャップのサイズは、適切な重みで除算することによって正規化させ、ジップの法則に従ってi≧1について高調波の重み1/iを適用する。従って、ギャップはi×d=i(f−fi+1)に関してソートされる。これは有利である。すなわち、整数の計算しか必要としない。最大の重みを有するl−1(lはブロックの数を表す)のギャップを選択し(例えばl=10に設定する)、シーケンスの開始、これらのl−1のギャップ、およびシーケンスの終了によって区切られる連続要素のlセットをブロックとして規定する。
図3は、本発明の態様を実現可能であるコンピュータ環境においてブロックへの分割を概略的に示す例示的なブロック図を示す。一例としてのみ、図3においてl=8とする。四角形は要素aを表し、矢印は重み付けしたギャップi(f−fi+1)を表し、矢印の下の数字は低下順(non-increasing order)の重み付けギャップのインデックスである。図3において一例としてのみ示すが、生成されたブロックは、それぞれ3、1、3、2、4、1、4、および5の要素から成る。
図4は、本発明の態様を実現可能である近似ハッシュ関数の様々なコンポーネントのレイアウトを示す例示的なブロック図を示す。一実施形態において、提案する近似ハッシュ関数の様々な構築ブロックは、32ビットのシグネチャを表す32列を示し、これらは右(0)から左(31)に示すように付番されている。右上から左下への斜線を付けたブロックは、キャラクタaのブロックを表し、キャラクタのASCII表現がその元の形態で行われていることを示す。左上から右下への斜線を付けたブロックは、キャラクタのASCII表現が逆に行われていることを示す。例えば、ASCIIの文字Wについて01010111の代わりに11101010である。網状線を付けたブロックは、キャラクタ対のブロックを表す。図の右下部分の小さいバーは、頻度(すなわちfスペクトラムの要素)を表す。
一実施形態において、ブロックの数はl=10であり、最後のブロックのサイズは、多くても10のキャラクタを含むように必要ならば切り捨てる。また、検討対象のキャラクタの発生数(例えば(15))およびギャップ・サイズdの制限は、もっと小さくすることも可能である。これらの調節の後、所与のチャンク内のブロック数が10よりも小さい場合、その所与のブロック数に適合させた異なるレイアウトを選択することができる。図4のレイアウトでは、l=10のブロックが与えられていると想定する。図7のフローチャートで、全ての可能な値lを扱う完全な説明を見ることができる。
更に、cスペクトラムから取得される各データ・ブロックは、完全なASCII表現を用いて、8ビット・サイズとすることができる。ただし、第1の(最も左の)2ビットを切り取ることができる最高頻度キャラクタの第1のブロックを除く。これらのブロックの各々をシフトすることができる。より具体的には、第1のブロックを26ビット左に(例えば32ビット・レイアウトにおいて左に揃えて)シフトし、次のブロックを24ビット、次いで18、16、13、11、9、7、5、および3ビットずつシフトすることができる。キャラクタのそのままの表現および逆の表現は交互に配することができる。
fスペクトラムの要素は、以下に記載するようにシグネチャに組み込むことができる。1と8192との間の整数とすることができる各頻度値について、この機構はまず頻度値を(例えば16ビットの)標準的な二値表現と見なし、このストリングに8個のゼロを追加することで右に拡張する。従って、この機構は各頻度fに24ビット・ストリングFを割り当て、例えばf=5である場合、F=00000000 00000101 00000000とする。この機構はDを、最上位ビットの直後の位置で開始する3ビット長のFのサブストリングと規定する。上述の例では、
Figure 2014534486

である(Dを形成するビットを強調して示す)。一例として、8ビットを超える値を有する別の例を示すためにf=759について検討すると、
Figure 2014534486

となる。FおよびDの双方を表示している(強調を加えている)。一実施形態において、長さ2ビットのみである第1の要素を除いた全要素のサイズを3ビットに選択し、このことと、fスペクトラムの値の下限が15であることによって、ゼロによる右パディングが必要ないことが示唆される。しかしながら他の実施形態では、下限を更に小さくし、値のビット・サイズを大きくすることも可能である。これらの要素のビットのオフセットは、0、0、0、1、1、2、2、3、3、4、4、5、5、6、6、および6と示されている。第1の(最大の)頻度は図において最も下の要素として示されている。
Cのpスペクトラムのブロックは、長さ12ビットとすることができ、レイアウトにおいて左に揃えて配置することができる。一実施形態において、Cのpスペクトラムは、頻度の高い順に配列させることで規定することができ、この配列において5、6、7、8、および9とインデックスを付けたもの(すなわち5番目から9番目のブロック)を検討する。キャラクタについて実行したように最高頻度の対を選択しない理由は、それらの分布がはるかに偏っており、対(0、0)および(255、255)が、我々が試験を行った例の圧倒的多数において最高頻度として現れたからである。
5対の各々について、以下のビット・ストリングを構築することができる。2バイトA=aおよびB=bが与えられると、この機構は、Aを循環的に3ビット左に回転させ、Bを循環的に3ビット右に回転させる。Aの右側の4ビットがBの左側の4ビットと重複するようにこれらのバイトを並べ、次いでこれらのビット・ストリングにXOR論理演算を実行することができる。結果として得られる12のビットを、
Figure 2014534486

と示すことができる。ここで、aXORbについて表記
Figure 2014534486

を用いている。AおよびBの双方の最上位ビットおよび最下位ビットは重複部分にあるので、それらの分布が偏っている場合、更にXOR論理演算を行うことによって偏りを補正する追加の機会が得られる。最後に、レイアウトの全要素にXOR論理演算を実行して、所与のチャンクCのハッシュ値として機能することができる0と232−1との間の数を表す32ビット・ストリングを生成することができる。
一例としてのみ、シグネチャの実行を説明して分布の均一性を示すため、約27GBのExchangeデータベースのサブセットおよび約5GBのファイルを選択した。選択した実施形態において、チャンクは可変長サイズであった。検討対象のチャンクの右側dバイトに単純なラビン−カープ・ローリング・ハッシュを適用することで、チャンクの境界を規定した。このハッシュ値が何らかの既定の定数cに等しい場合、これらのdバイトの後でチャンクを切り捨てた。他の場合、バイトを付加し、ローリング・ハッシュを用いた試験を繰り返した。選択した実施形態において、d=25、c=2718であり、ハッシュ関数はRK(x)=x mod Pであった。ここでRKはラビン−カープ・ローリング・ハッシュ値であり、xは変数であり、P=248−257は素数であり、modはモジュラス関数を表し、A mod Bで規定されるのはAをBで除算した余りであり、ここでAおよびBの双方は整数である。または、数学的表記では以下のとおりである。
Figure 2014534486

チャンク長に極値を避けるため、一例として2Kの下限および64Kの上限を適用する。このため、チャンクの平均サイズは試験データベースで約12Kであった。
図5は、例示的な試験データベースにおいて、シグネチャの32ビット位置の各々で1ビットを取得する確率を示すグラフである。垂直軸は0から1までの確率値を示し、水平軸は0から31のインデックスを付けた32ビット位置を示す。図5からわかるように、全てのビット位置で、確率はランダム分布についての予想値0.5に極めて近い。
図6は、データ・チャンクを規定するための例示的な方法600を示すフローチャートである。方法600が開始し(ステップ602)、パラメータKmin,Kmax,P,s,Constを読み取る。ここでKminおよびKmaxはチャンクに許容する最小サイズおよび最大サイズである(ステップ604)。Pはラビン−カープ・ハッシュにおいて用いる素数であり、sはラビン−カープ・ハッシュを適用するバイト数であり、Constは何らかの固定の整数定数である(0≦Const<P)。Kminバイトをバッファに読み込む(ステップ606)。Sを、最後のsバイトが整数を表すと見なされた場合に読み取られるそのsバイトの値を示すものとする(ステップ608)。次いで方法600は、S mod P=Constであるか否かを判定する(ステップ610)。イエスの場合、方法600は現在のバッファをチャンクとして規定する(ステップ616)。ノーの場合、方法600は更に1バイトを読み取る(ステップ612)。次いで方法600は、バッファ・サイズがパラメータKmaxと等しいか否かを判定する(ステップ614)。ノーの場合、方法600はステップ608に戻る。イエスの場合、方法600は現在のバッファをチャンクとして規定し(ステップ616)、方法600は終了する(ステップ618)。
図7、図8、および図9は、シグネチャ規定のための方法7000を示す。技術的な理由のため、方法700のフローチャートは3つの部分すなわち図7、図8、および図9に分割され、それぞれキャラクタ、頻度、およびキャラクタ対を処理するが、図7、図8、図9は全て方法700の一部である。図7は、シグネチャ規定のキャラクタ部分を規定するための例示的な方法を示すフローチャートである。キャラクタを処理する図7において、方法700はステップ702で開始し、次いでパラメータを初期化するため、チャンクを読み取り、チャンクにおける異なるキャラクタのシーケンスでありチャンク内の頻度の高い順にインデックスを付けたキャラクタa,a,...,aのセットを規定し、対応する頻度としてf≧f≧...≧fをそれぞれ規定し、i=1,...,n−1について頻度間のギャップ・サイズd=f−fi+1として規定し、f≦15またはd≦5である要素aを排除し、
Figure 2014534486

(9、シーケンスd内の要素数)によってブロック数Kを規定し、シーケンスidをソートし、n,...,nk−1を、シーケンスid内のK−1の最大要素のインデックスとし、n=0およびn=nk−1+10を規定し、頻度のKブロックを、
Figure 2014534486

として規定する(ステップ704)。構築するシグネチャsigは、ゼロのみから成る32ビット長の整数として初期化される。続いてステップ708に移り、方法700は、ブロックのインデックスを表すパラメータjをゼロに設定し、現在のキャラクタのインデックスを表すパラメータisをn+1に設定し(ステップ708)、その後、方法700はj=0であるか否かを判定する(ステップ724)。イエスの場合、方法700はaの2の最も左の2ビットを切り捨て(ステップ726)、次いでステップ728に移る。いずれの場合であっても、方法700は次いでjが奇数であるか否かを判定する(ステップ728)。イエスの場合、aのASCII表現を逆にする(ステップ730)。いずれの場合であっても、方法700は次いで関数
Figure 2014534486

を実行する(ステップ732)。これは、sigに記憶された現在の値と、ブロックのインデックスjおよびブロック合計数Kによって決まる位置にシフトされたキャラクタaのASCII表現との論理XOR演算を実行する。これらのシフトの正確な量は、シグネチャ・スキームの外部パラメータである(特定のチャンクに依存しない)テーブルcshift[K,j]で与えられ、図10に示されている。次いで方法700はiを1だけ増分する(ステップ734)。次いで方法700は、i≦nj+1であるか否かをチェックすることで、jとインデックスが付いた処理対象の現在のブロック内にまだ要素があるか否かを判定する(ステップ736)。イエスの場合、方法700はステップ724に戻る。ノーの場合、方法700はjを1だけ増分することで次のブロックに移ろうとする(ステップ738)。次いで方法700は、j<Kであるか否かをチェックすることで処理対象のブロックがまだあるか否かを判定する(ステップ740)。イエスの場合、方法700はステップ724に戻ってループの追加の繰り返しを実行する。ノーの場合、方法700は続けて接続点A(ステップ742)に移る。これは、頻度を処理する図8に示すフローチャートの次の部分に対するエントリ・ポイントである。
図8は、シグネチャ規定の頻度部分を規定するための例示的な方法700を示すフローチャートである。頻度を処理する図8において、方法700はエントリ・ポイントAで開始し(ステップ742)、利用可能ブロックの数Kに従ってシグネチャの規定に関係する頻度の数を選択する。K>6である場合(ステップ750)、頻度の数limを16に設定する(ステップ754)。他の場合、K>2であるならば(ステップ752)、頻度の数limを20に設定する(ステップ756)。他の場合、すなわちK=2またはK=1またはK=0である場合、頻度の数limを23に設定する(ステップ758)。全ての場合において、方法700はステップ760に移り、頻度fのインデックスを表すパラメータiを初期化し、これを1に設定する。ステップ762において、図4で上述したように、頻度fの二進表現から長さ3ビットのサブストリングを抽出する。更に具体的には、Fはfを右端の8個のゼロでパディングした結果であり、これはfを256で乗算したものと同等である。f、従ってFはゼロになり得ないことに留意すべきである。次いで、方法700はパラメータhを
Figure 2014534486

に設定し、これは0のインデックスが付いた最も右のビットでカウントを始めたFの二進表現の最も左の1ビットのインデックスである。最後に、Fから2を減算することによってFの先頭の1ビットの後の3ビットをeにおいて取得する。これによって先頭の1ビットをキャンセルする。次いで2h−3で除算して、右側のh−3ビットを消去し、所望のとおり3ビットのみを残す。次いで方法700は、ステップ764においてi=1であるか否かをチェックすることによって第1の頻度を処理するか否かをチェックし、そうである場合、ステップ766においてeの値を半分にする。これはその3ビットの最も右側を消去することと同等である。いずれの場合であっても、方法700は次いで
Figure 2014534486

を実行する(ステップ768)。これは、sigに記憶された現在の値と、要素のインデックスiおよびブロック合計数Kによって決まる位置にシフトされた値eの2または3ビットとの論理XOR演算を実行する。これらのシフトの正確な量は、シグネチャ・スキームの外部パラメータである(特定のチャンクに依存しない)テーブルfshift[K,i]で与えられ、図10に示されている。次いで方法700はiを1だけ増分し(ステップ770)、i≦limであるか否かをチェックすることで処理対象の頻度がまだあるか否かを判定する(ステップ772)。イエスの場合、方法700はステップ762に戻ってループの追加の繰り返しを実行する。ノーの場合、方法700は続けて接続点Bに移る(ステップ774)。これは、キャラクタ対を処理する図9に示すフローチャートの次の部分に対するエントリ・ポイントである。
図9は、シグネチャ規定のキャラクタ対部分を規定するための例示的な方法700を示すフローチャートである。キャラクタ対を処理する図9において、方法700はエントリ・ポイントBで開始する(ステップ774)。ステップ776において、最初にキャラクタ対をチャンク内の発生頻度の高い順にソートする。方法700での検討対象の対は、ソートによる順序でインデックスが5以上のものである。対は、いくつかの対のクラスタで処理する。クラスタの数pnum、および各クラスタにどの対が属するかは、利用可能ブロックの数Kに従って決定する。対のクラスタへの分割は、アレイplim[j]によって実施する。ここで1≦j≦pnumであり、plim[j]はクラスタj内の最後の対のインデックスを与える。K≧8である場合(ステップ778)、クラスタの数pnumを1に設定し、plim[1]を9に設定するので、この場合の唯一のクラスタは、5、6、7、8、および9とインデックスが付いた5対から成る(ステップ781)。他の場合、K>1であるならば(ステップ780)、クラスタの数pnumを2に設定し、plim[1]を8に設定し、plim[2]を12に設定するので、この場合の2つのクラスタの第1のものは5、6、7、および8とインデックスが付いた4対から成り、第2のクラスタは9、10、11、および12とインデックスが付いた4対から成る(ステップ782)。他の場合、すなわちK=1またはK=0である場合、クラスタの数pnumを3に設定し、plim[1]を8に設定し、plim[2]を12に設定し、plim[3]を16に設定するので、この場合の3つのクラスタの第1のものは5、6、7、および8とインデックスが付いた4対から成り、第2のクラスタは9、10、11、および12とインデックスが付いた4対から成り、第3のクラスタは13、14、15、および16とインデックスが付いた4対から成る(ステップ783)。全ての場合において、方法700は次いでステップ784に移り、対のインデックスを表すパラメータiを初期化し、これを5に設定し、クラスタのインデックスを表すパラメータjも初期化し、これを1に設定する。
ステップ785において、方法700は、各繰り返しにおいて単一の対Pを処理するループを開始する。uおよびvは、対Pを形成するキャラクタとして規定される。ステップ786において、uおよびvのASCII表現の関数として長さ12ビットのストリングwを形成する。更に具体的には、uを循環的に3ビット左に回転させ、vを循環的に3ビット右に回転させ、uを4ビット左にシフトさせた後に回転後のストリングに論理XOR演算を適用することによって、結果wを得る。方法700は次いで、
Figure 2014534486

を実行する(ステップ787)。これは、sigに記憶された現在の値と、クラスタのインデックスjおよびブロック合計数Kによって決まる位置にシフトされた値wの12ビットとの論理XOR演算を実行する。これらのシフトの正確な量は、シグネチャ・スキームの外部パラメータである(特定のチャンクに依存しない)テーブルpshift[K,j]で与えられ、図10に示している。方法700は次いでiを1だけ増分し(ステップ788)、i≦plim[j]であるか否かをチェックすることでこのクラスタ内に処理対象の対がまだあるか否かを判定する(ステップ789)。イエスの場合、方法700はステップ785に戻って、同一クラスタの別の対を用いてループの更に別の繰り返しを実行する。ノーの場合、方法700はjを1だけ増分して(ステップ790)、j≦pnumであるか否かをチェックすることで処理対象のクラスタがまだあるか否かを判定する(ステップ791)。イエスの場合、方法700はステップ785に戻って、別のクラスタを用いてループの更に別の繰り返しを実行する。ノーの場合、方法700は評価を行ったシグネチャsigを出力し(ステップ792)、終了する(ステップ799)。
図10は、図7、図8、図9のフローチャートに用いたシフト定数を規定する。これらのテーブルはCスタイルで与え、インデックスは0から開始するので、第1の行および第1の列は用いない。第1のパラメータはブロックKの所与の数である。第2のパラメータは、
a)cshiftでは、キャラクタのブロックのインデックスj
b)fshiftでは、頻度のインデックスi
c)pshiftでは、用いる対の数のインデックスpnum(1から3)
K≧8では、1対だけ用い、要素はインデックスが5−6−7−8−9のもの
2≦K≦7では、2対を用いる。5−6−7−8および9−10−11−12
K=1では、3対を用いる。5−6−7−8、9−10−11−12、13−14−15−16
これらの要素ブロックの最後のインデックスはplim[j]で与えられる。
当業者によって認められるように、本発明の態様は、システム、方法、またはコンピュータ・プログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、「回路」、「モジュール」、または「システム」と一般的に称することができる。更に、本発明の態様は、具現化されたコンピュータ読み取り可能プログラム・コードを有する1つ以上のコンピュータ読み取り可能媒体(複数の媒体)において具現化されたコンピュータ・プログラムの形態を取ることも可能である。
1つ以上のコンピュータ読み取り可能媒体(複数の媒体)のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は例えば、限定ではないが、電子、磁気、光、電磁、赤外線、または半導体のシステム、装置、デバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例(非網羅的な列挙)は、以下を含む。すなわち、1本以上のワイヤを有する電気的接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラマブル読み取り専用メモリ(EPROMまたはフラッシュ・メモリ)、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ(CD−ROM)、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することが可能ないずれかの有形の(tangible)媒体とすることができる。
コンピュータ読み取り可能媒体上で具現化されるプログラム・コードは、限定ではないが、無線、有線、光ファイバ・ケーブル、RF等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて伝送することができる。本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++等のオブジェクト指向プログラミング言語、および「C」プログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む1つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラム・コードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でおよび部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で、実行することができる。後者の場合、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は、(例えばインターネット・サービス・プロバイダを用いてインターネットを介して)外部コンピュータに対して行うことができる。
本発明の実施形態に従った方法、装置(システム)、およびコンピュータ・プログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様について上述した。フローチャート図またはブロック図あるいはその両方の各ブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実施可能であることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための手段を生成するようになっている。
これらのコンピュータ・プログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これによって、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の方法で機能するように指示することができ、これにより、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施する命令を含む製造品を生成するようになっている。また、コンピュータ・プログラム命令を、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するためのプロセスを提供するようになっている。
上述の図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータ・プログラムの可能な実施のアーキテクチャ、機能性、および動作を例示する。この点で、フローチャートまたはブロック図における各ブロックは、指定された論理機能(複数の機能)を実施するための1つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した2つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャート図あるいはその両方の各ブロック、およびブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能もしくは行為を実行する特殊目的ハードウェア・ベースのシステム、または特殊目的ハードウェアおよびコンピュータ命令の組み合わせによって実施可能であることに留意すべきである。
本発明の1つ以上の実施形態について詳細に例示したが、以下の特許請求の範囲に記載した本発明の範囲から逸脱することなくそれらの実施形態に変更および適合を実施可能であることは、当業者には認められよう。特に、図6のステップ604に見られる定数Kmin,Kmax,P,s,Const、または、図7、図8、または図9のフローチャートにおいて、ステップ704、726、750、752、754、756、758、762、766、776、778、780、781、782、783、784、786に見られる定数のいずれか、または図8のまたは表cshift、fshift、およびpshiftのいずれかの値を変更すると、完全に異なるシグネチャsigが得られるが、これも本発明の目的を達成することができる。従って、上で用いた具体的な定数は、一例として可能な実施のために与えられており、これらの値のみに本発明の範囲を限定するものとして理解されない。

Claims (23)

  1. 小さいデータ・チャンクを用いて動作するスケーラブル・データデュプリケーションのための方法であって、
    前記小さいデータ・チャンクの各々について、前記小さいデータ・チャンクに現れるキャラクタの表現と前記小さいデータ・チャンクの頻度の表現との組み合わせに基づいてシグネチャを発生させることであって、前記シグネチャを用いてデュプリケーションの対象となるデータの選択を支援する、方法。
  2. 前記シグネチャが、前記小さいデータ・チャンクにおける小さい変更によって前記シグネチャに小さい変化および変化なしの一方を引き起こすことができる特性を有する、請求項1に記載の方法。
  3. 前記シグネチャが、前記小さいデータ・チャンクのcスペクトラム、前記小さいデータ・チャンクのfスペクトラム、前記小さいデータ・チャンクのpスペクトラムに基づいており、前記小さいデータ・チャンクの前記cスペクトラムが、前記小さいデータ・チャンクにおける発生頻度の順に配列された異なるキャラクタの表現のシーケンスであり、前記小さいデータ・チャンクの前記fスペクトラムが、前記小さいデータ・チャンクにおける前記異なるキャラクタの頻度の対応するシーケンスであり、前記小さいデータ・チャンクの前記pスペクトラムが、前記小さいデータ・チャンクにおける前記発生頻度の順に配列された異なるキャラクタ対のシーケンスである、請求項1に記載の方法。
  4. cスペクトラム、fスペクトラム、およびpスペクトラムに基づいて前記シグネチャを発生させることに関連付けて、
    順序付けたシーケンスにおいて隣接するキャラクタの頻度f間のギャップd=f−fi+1に重み付けすることによって、同様の頻度を有する前記cスペクトラムのキャラクタを組み合わせてブロックを生成し、前記ギャップが重みに基づいて正規化されている、ことと、
    前記cスペクトラムのキャラクタのブロックの境界を規定するために前記ギャップのサブセットを選択することと、
    前記cスペクトラムのキャラクタのブロックにおけるキャラクタの組み合わせに論理XOR演算を実行することと、
    前記fスペクトラムの頻度のサブセットのビットのサブセットを選択することと、
    前記pスペクトラムの対のサブセットを選択し、前記pスペクトラムの対の前記選択したサブセットの各々についてキャラクタの表現の対に論理演算を実行することと、
    の1つ以上を実行することを更に含む、請求項3に記載の方法。
  5. 前記ビットの選択したサブセットおよび前記対の選択したサブセットにシフト動作を実行し、前記選択したサブセットを組み合わせてシグネチャを表すビット・ストリングを生成することによって論理XOR演算を実行することを更に含む、請求項4に記載の方法。
  6. パラメータ・テーブルに従って前記シフト動作を実行することを更に含む、請求項5に記載の方法。
  7. 前記ギャップd=f−fi+1を除算する重みwがw=1/iである、請求項4に記載の方法。
  8. キャラクタの表現の対に実行される前記論理演算が、
    ビットのストリングを循環的に回転させることと、
    前記ビットのストリングをシフトさせることと、
    論理XOR演算を実行することと、
    の少なくとも1つを含む、請求項4に記載の方法。
  9. コンピューティング環境において小さいデータ・チャンクを用いて動作するスケーラブル・データデュプリケーションのためのシステムであって、
    前記コンピューティング記憶環境において動作可能である少なくとも1つのプロセッサ・デバイスであって、
    前記小さいデータ・チャンクの各々について、前記小さいデータ・チャンクに現れるキャラクタの表現と前記小さいデータ・チャンクの頻度の表現との組み合わせに基づいてシグネチャを発生させ、前記シグネチャを用いてデュプリケーションの対象となるデータの選択を支援するために適合されている少なくとも1つのプロセッサ・デバイスを含む、システム。
  10. 前記シグネチャが、前記小さいデータ・チャンクにおける小さい変更によって前記シグネチャに小さい変化および変化なしの一方を引き起こすことができる特性を有する、請求項9に記載のシステム。
  11. 前記シグネチャが、前記小さいデータ・チャンクのcスペクトラム、前記小さいデータ・チャンクのfスペクトラム、前記小さいデータ・チャンクのpスペクトラムに基づいており、前記小さいデータ・チャンクの前記cスペクトラムが、前記小さいデータ・チャンクにおける発生頻度の順に配列された異なるキャラクタの表現のシーケンスであり、前記小さいデータ・チャンクの前記fスペクトラムが、前記小さいデータ・チャンクにおける前記異なるキャラクタの頻度の対応するシーケンスであり、前記小さいデータ・チャンクの前記pスペクトラムが、前記小さいデータ・チャンクにおける前記発生頻度の順に配列された異なるキャラクタ対のシーケンスである、請求項9に記載のシステム。
  12. cスペクトラム、fスペクトラム、およびpスペクトラムに基づいて前記シグネチャを発生させることに関連付けて、前記プロセッサ・デバイスが、
    順序付けたシーケンスにおいて隣接するキャラクタの頻度f間のギャップd=f−fi+1に重み付けすることによって、同様の頻度を有する前記cスペクトラムのキャラクタを組み合わせてブロックを生成し、前記ギャップが重みに基づいて正規化されている、ことと、
    前記cスペクトラムのキャラクタのブロックの境界を規定するために前記ギャップのサブセットを選択することと、
    前記cスペクトラムのキャラクタのブロックにおけるキャラクタの組み合わせに論理XOR演算を実行することと、
    前記fスペクトラムの頻度のサブセットのビットのサブセットを選択することと、
    前記pスペクトラムの対のサブセットを選択し、前記pスペクトラムの対の前記選択したサブセットの各々についてキャラクタの表現の対に論理演算を実行することと、
    の1つ以上を実行するために更に適合されている、請求項11に記載のシステム。
  13. 前記プロセッサ・デバイスが、前記ビットの選択したサブセットおよび前記対の選択したサブセットにシフト動作を実行し、前記選択したサブセットを組み合わせてシグネチャを表すビット・ストリングを生成することによって論理XOR演算を実行するために更に適合されている、請求項12に記載のシステム。
  14. 前記プロセッサ・デバイスが、パラメータ・テーブルに従って前記シフト動作を実行するために更に適合されている、請求項13に記載のシステム。
  15. 前記ギャップd=f−fi+1を除算する重みwがw=1/iである、請求項12に記載のシステム。
  16. キャラクタの表現の対に実行される前記論理演算が、
    ビットのストリングを循環的に回転させることと、
    前記ビットのストリングをシフトさせることと、
    論理XOR演算を実行することと、
    の少なくとも1つを含む、請求項12に記載のシステム。
  17. 小さいデータ・チャンクを用いて動作するスケーラブル・データデュプリケーションのためのコンピュータ・プログラムであって、前記コンピュータ・プログラムが、コンピュータ読み取り可能プログラム・コード部分が記憶された一時的でないコンピュータ読み取り可能記憶媒体を含み、前記コンピュータ読み取り可能プログラム・コード部分が、
    前記小さいデータ・チャンクの各々について、前記小さいデータ・チャンクに現れるキャラクタの表現と前記小さいデータ・チャンクの頻度の表現との組み合わせに基づいてシグネチャを発生させるための第1の実行可能部分であって、前記シグネチャを用いてデュプリケーションの対象となるデータの選択を支援する、第1の実行可能部分を含む、コンピュータ・プログラム。
  18. 前記シグネチャが、前記小さいデータ・チャンクにおける小さい変更によって前記シグネチャに小さい変化および変化なしの一方を引き起こすことができる特性を有する、請求項17に記載のコンピュータ・プログラム。
  19. 前記シグネチャが、前記小さいデータ・チャンクのcスペクトラム、前記小さいデータ・チャンクのfスペクトラム、前記小さいデータ・チャンクのpスペクトラムに基づいており、前記小さいデータ・チャンクの前記cスペクトラムが、前記小さいデータ・チャンクにおける発生頻度の順に配列された異なるキャラクタの表現のシーケンスであり、前記小さいデータ・チャンクの前記fスペクトラムが、前記小さいデータ・チャンクにおける前記異なるキャラクタの頻度の対応するシーケンスであり、前記小さいデータ・チャンクの前記pスペクトラムが、前記小さいデータ・チャンクにおける前記発生頻度の順に配列された異なるキャラクタ対のシーケンスである、請求項17に記載のコンピュータ・プログラム。
  20. cスペクトラム、fスペクトラム、およびpスペクトラムに基づいて前記シグネチャを発生させることに関連付けて、
    順序付けたシーケンスにおいて隣接するキャラクタの頻度f間のギャップd=f−fi+1に重み付けすることによって、同様の頻度を有する前記cスペクトラムのキャラクタを組み合わせてブロックを生成し、前記ギャップが重みに基づいて正規化されている、ことと、
    前記cスペクトラムのキャラクタのブロックの境界を規定するために前記ギャップのサブセットを選択することと、
    前記cスペクトラムのキャラクタのブロックにおけるキャラクタの組み合わせに論理XOR演算を実行することと、
    前記fスペクトラムの頻度のサブセットのビットのサブセットを選択することと、
    前記pスペクトラムの対のサブセットを選択し、前記pスペクトラムの対の前記選択したサブセットの各々についてキャラクタの表現の対に論理演算を実行することと、
    の1つ以上を実行するための第3の実行可能部分を更に含む、請求項19に記載のコンピュータ・プログラム。
  21. 前記ビットの選択したサブセットおよび前記対の選択したサブセットにシフト動作を実行し、前記選択したサブセットを組み合わせてシグネチャを表すビット・ストリングを生成することによって論理XOR演算を実行することと、
    パラメータ・テーブルに従って前記シフト動作を実行することと、
    の一方のための前記第3の実行可能部分を更に含む、請求項20に記載のコンピュータ・プログラム。
  22. 前記ギャップd=f−fi+1を除算する重みwがw=1/iである、請求項20に記載のコンピュータ・プログラム。
  23. キャラクタの表現の対に実行される前記論理演算が、
    ビットのストリングを循環的に回転させることと、
    前記ビットのストリングをシフトさせることと、
    論理XOR演算を実行することと、
    の少なくとも1つを含む、請求項20に記載のコンピュータ・プログラム。
JP2014530085A 2011-09-19 2012-09-10 スケーラブル・データ・デュプリケーションのための方法、システム、およびコンピュータ・プログラム Pending JP2014534486A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/236,552 2011-09-19
US13/236,552 US8484170B2 (en) 2011-09-19 2011-09-19 Scalable deduplication system with small blocks
PCT/CN2012/081168 WO2013040993A1 (en) 2011-09-19 2012-09-10 Scalable deduplication system with small blocks

Publications (1)

Publication Number Publication Date
JP2014534486A true JP2014534486A (ja) 2014-12-18

Family

ID=47881629

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014530085A Pending JP2014534486A (ja) 2011-09-19 2012-09-10 スケーラブル・データ・デュプリケーションのための方法、システム、およびコンピュータ・プログラム

Country Status (6)

Country Link
US (5) US8484170B2 (ja)
JP (1) JP2014534486A (ja)
CN (1) CN103814361B (ja)
DE (1) DE112012003503T5 (ja)
GB (1) GB2508325A (ja)
WO (1) WO2013040993A1 (ja)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8924366B2 (en) * 2011-09-16 2014-12-30 Symantec Corporation Data storage deduplication systems and methods
US8935222B2 (en) * 2013-01-02 2015-01-13 International Business Machines Corporation Optimizing a partition in data deduplication
US9306997B2 (en) 2013-01-16 2016-04-05 Cisco Technology, Inc. Method for optimizing WAN traffic with deduplicated storage
US9300748B2 (en) * 2013-01-16 2016-03-29 Cisco Technology, Inc. Method for optimizing WAN traffic with efficient indexing scheme
US9509736B2 (en) 2013-01-16 2016-11-29 Cisco Technology, Inc. Method for optimizing WAN traffic
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
US9547662B2 (en) 2013-03-15 2017-01-17 International Business Machines Corporation Digest retrieval based on similarity search in data deduplication
US9678975B2 (en) * 2013-03-15 2017-06-13 International Business Machines Corporation Reducing digest storage consumption in a data deduplication system
US10296597B2 (en) * 2013-07-15 2019-05-21 International Business Machines Corporation Read ahead of digests in similarity based data deduplicaton
US10133502B2 (en) 2013-07-15 2018-11-20 International Business Machines Corporation Compatibility and inclusion of similarity element resolutions
US10073853B2 (en) * 2013-07-17 2018-09-11 International Business Machines Corporation Adaptive similarity search resolution in a data deduplication system
EP3015999A4 (en) 2013-09-29 2016-08-17 Huawei Tech Co Ltd METHOD OF PROCESSING DATA, SYSTEM AND CLIENT
BR112016005391B8 (pt) * 2014-02-14 2022-10-25 Huawei Tech Co Ltd Método e servidor para buscar ponto divisório de corrente de dados com base em servidor
KR20150121505A (ko) * 2014-04-21 2015-10-29 삼성전자주식회사 데이터 중복 제거 방법 및 장치
KR102172321B1 (ko) * 2014-05-20 2020-10-30 삼성전자주식회사 데이터 중복 제거 방법
CN105446964B (zh) * 2014-05-30 2019-04-26 国际商业机器公司 用于文件的重复数据删除的方法及装置
US9760578B2 (en) 2014-07-23 2017-09-12 International Business Machines Corporation Lookup-based data block alignment for data deduplication
US9996603B2 (en) * 2014-10-14 2018-06-12 Adobe Systems Inc. Detecting homologies in encrypted and unencrypted documents using fuzzy hashing
US10372695B2 (en) * 2014-12-27 2019-08-06 Intel Corporation Technologies for computing rolling hashes
US20160335294A1 (en) * 2015-05-15 2016-11-17 Bjorn J. Gruenwald System and Method for Organizing Data
US9665287B2 (en) 2015-09-18 2017-05-30 Alibaba Group Holding Limited Data deduplication using a solid state drive controller
US10261946B2 (en) 2016-01-12 2019-04-16 International Business Machines Corporation Rebalancing distributed metadata
US10242021B2 (en) 2016-01-12 2019-03-26 International Business Machines Corporation Storing data deduplication metadata in a grid of processors
US10255288B2 (en) 2016-01-12 2019-04-09 International Business Machines Corporation Distributed data deduplication in a grid of processors
JP6537202B2 (ja) 2016-04-19 2019-07-03 ホアウェイ・テクノロジーズ・カンパニー・リミテッド ベクトル処理を使用する並行セグメント化
US10922280B2 (en) * 2018-04-10 2021-02-16 Nutanix, Inc. Policy-based data deduplication
US11153094B2 (en) * 2018-04-27 2021-10-19 EMC IP Holding Company LLC Secure data deduplication with smaller hash values
CN109444570B (zh) * 2018-09-18 2021-01-01 中国人民解放军第五七一九工厂 一种基于存储器的电子产品故障诊断模块及方法
US11003629B2 (en) * 2018-10-31 2021-05-11 EMC IP Holding Company LLC Dual layer deduplication for application specific file types in an information processing system

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3694813A (en) * 1970-10-30 1972-09-26 Ibm Method of achieving data compaction utilizing variable-length dependent coding techniques
US3717851A (en) * 1971-03-03 1973-02-20 Ibm Processing of compacted data
US4192010A (en) * 1977-11-28 1980-03-04 Kerner William R Data reduction system
US4359286A (en) * 1980-11-20 1982-11-16 International Business Machines Corporation Character set expansion
US4516246A (en) * 1982-02-26 1985-05-07 Prentice Corporation Data compression system
US4672679A (en) * 1983-08-16 1987-06-09 Wang Laboratories, Inc. Context redundancy text compression
US5469354A (en) * 1989-06-14 1995-11-21 Hitachi, Ltd. Document data processing method and apparatus for document retrieval
JPH04280517A (ja) * 1991-03-08 1992-10-06 Fujitsu Ltd データ圧縮および復元方式
US5276741A (en) * 1991-05-16 1994-01-04 Trw Financial Systems & Services, Inc. Fuzzy string matcher
GB2305746B (en) * 1995-09-27 2000-03-29 Canon Res Ct Europe Ltd Data compression apparatus
JP2840589B2 (ja) * 1996-02-09 1998-12-24 富士通株式会社 データ圧縮装置及びデータ復元装置
JP3276860B2 (ja) * 1996-09-02 2002-04-22 富士通株式会社 データ圧縮/復元方法
US5870750A (en) * 1997-05-29 1999-02-09 Matsushita Electric Industrial Co., Ltd. Information retrieval system for retrieving a record of data including a keyword
CA2387653C (en) * 1999-08-13 2006-11-14 Fujitsu Limited File processing method, data processing device and storage medium
US7417568B2 (en) * 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US7259751B2 (en) * 2003-02-03 2007-08-21 The Board Of Trustees Of The Leland Stanford Junior University Input systems and methods for the evaluation and optimization of same
KR20050053996A (ko) * 2003-12-03 2005-06-10 삼성전자주식회사 허프만 코드를 효율적으로 복호화하는 방법 및 장치
JP2005333233A (ja) * 2004-05-18 2005-12-02 Mitsubishi Electric Corp 電子署名装置および署名検証装置
MX2007002071A (es) * 2004-08-18 2007-04-24 Nielsen Media Res Inc Metodos y aparatos para generar firmas.
US7689633B1 (en) * 2004-09-15 2010-03-30 Data Domain, Inc. Network file system-based data storage system
US20060106769A1 (en) * 2004-11-12 2006-05-18 Gibbs Kevin A Method and system for autocompletion for languages having ideographs and phonetic characters
US7664323B2 (en) * 2005-01-28 2010-02-16 Microsoft Corporation Scalable hash-based character recognition
EP1846922A4 (en) * 2005-02-03 2009-04-08 Pitney Bowes Inc BICANAL CODING METHOD FOR A MESSAGE
WO2006102227A2 (en) * 2005-03-19 2006-09-28 Activeprime, Inc. Systems and methods for manipulation of inexact semi-structured data
US7516130B2 (en) * 2005-05-09 2009-04-07 Trend Micro, Inc. Matching engine with signature generation
WO2006123429A1 (ja) * 2005-05-20 2006-11-23 Fujitsu Limited 情報検索方法、装置、プログラム、該プログラムを記録した記録媒体
JP4456554B2 (ja) * 2005-10-31 2010-04-28 富士通株式会社 データ圧縮方法及び圧縮データ送信方法
US8141149B1 (en) * 2005-11-08 2012-03-20 Raytheon Oakley Systems, Inc. Keyword obfuscation
EP1952282A2 (en) * 2005-11-15 2008-08-06 Koninklijke Philips Electronics N.V. Method of obtaining a representation of a text
US7617231B2 (en) * 2005-12-07 2009-11-10 Electronics And Telecommunications Research Institute Data hashing method, data processing method, and data processing system using similarity-based hashing algorithm
US7814111B2 (en) * 2006-01-03 2010-10-12 Microsoft International Holdings B.V. Detection of patterns in data records
US7516418B2 (en) * 2006-06-01 2009-04-07 Microsoft Corporation Automatic tracking of user data and reputation checking
US7831531B1 (en) * 2006-06-22 2010-11-09 Google Inc. Approximate hashing functions for finding similar content
US8015162B2 (en) * 2006-08-04 2011-09-06 Google Inc. Detecting duplicate and near-duplicate files
US8099415B2 (en) * 2006-09-08 2012-01-17 Simply Hired, Inc. Method and apparatus for assessing similarity between online job listings
JP5007743B2 (ja) * 2007-05-24 2012-08-22 富士通株式会社 情報検索プログラム、該プログラムを記録した記録媒体、情報検索装置、および情報検索方法
US8055599B1 (en) * 2007-07-13 2011-11-08 Werth Larry J Pattern recognition using cycles or traces in an associative pattern memory (APM), vertical sensors, amplitude sampling, adjacent hashes and fuzzy hashes
US8209334B1 (en) * 2007-12-28 2012-06-26 Don Doerner Method to direct data to a specific one of several repositories
US8515909B2 (en) * 2008-04-29 2013-08-20 International Business Machines Corporation Enhanced method and system for assuring integrity of deduplicated data
US8645333B2 (en) * 2008-05-29 2014-02-04 International Business Machines Corporation Method and apparatus to minimize metadata in de-duplication
US8751462B2 (en) * 2008-11-14 2014-06-10 Emc Corporation Delta compression after identity deduplication
US7733247B1 (en) * 2008-11-18 2010-06-08 International Business Machines Corporation Method and system for efficient data transmission with server side de-duplication
US8346736B2 (en) 2009-03-16 2013-01-01 International Business Machines Corporation Apparatus and method to deduplicate data
US8205065B2 (en) 2009-03-30 2012-06-19 Exar Corporation System and method for data deduplication
US8254698B2 (en) * 2009-04-02 2012-08-28 Check Point Software Technologies Ltd Methods for document-to-template matching for data-leak prevention
US8484148B2 (en) * 2009-05-28 2013-07-09 Microsoft Corporation Predicting whether strings identify a same subject
US8412848B2 (en) * 2009-05-29 2013-04-02 Exagrid Systems, Inc. Method and apparatus for content-aware and adaptive deduplication
CN101630290B (zh) * 2009-08-17 2011-06-08 成都市华为赛门铁克科技有限公司 重复数据处理方法和装置
US8321648B2 (en) 2009-10-26 2012-11-27 Netapp, Inc Use of similarity hash to route data for improved deduplication in a storage server cluster
US8121993B2 (en) * 2009-10-28 2012-02-21 Oracle America, Inc. Data sharing and recovery within a network of untrusted storage devices using data object fingerprinting
US8156306B1 (en) * 2009-12-18 2012-04-10 Emc Corporation Systems and methods for using thin provisioning to reclaim space identified by data reduction processes
WO2012006509A1 (en) * 2010-07-09 2012-01-12 Google Inc. Table search using recovered semantic information
GB2482128A (en) * 2010-07-19 2012-01-25 Quantum Corp Delta chunks and delta hashes
CN101908077B (zh) 2010-08-27 2012-11-21 华中科技大学 一种适用于云备份的重复数据删除方法
US8898114B1 (en) * 2010-08-27 2014-11-25 Dell Software Inc. Multitier deduplication systems and methods
US8666998B2 (en) * 2010-09-14 2014-03-04 International Business Machines Corporation Handling data sets
US20120089775A1 (en) * 2010-10-08 2012-04-12 Sandeep Ranade Method and apparatus for selecting references to use in data compression
US20120089579A1 (en) * 2010-10-08 2012-04-12 Sandeep Ranade Compression pipeline for storing data in a storage cloud
CN102185889B (zh) * 2011-03-28 2014-01-22 北京邮电大学 基于iSCSI的重复数据删除方法
EP2706466A4 (en) * 2011-05-02 2015-06-17 Fujitsu Ltd EXTRACTION PROCESS, INFORMATION PROCESSING, EXTRACTION PROGRAM, INFORMATION PROCESSING, EXTRACTION DEVICE AND INFORMATION PROCESSING DEVICE
US8521759B2 (en) * 2011-05-23 2013-08-27 Rovi Technologies Corporation Text-based fuzzy search

Also Published As

Publication number Publication date
US9075842B2 (en) 2015-07-07
CN103814361A (zh) 2014-05-21
CN103814361B (zh) 2016-06-29
US20130073528A1 (en) 2013-03-21
US20150286443A1 (en) 2015-10-08
US20130290279A1 (en) 2013-10-31
US9747055B2 (en) 2017-08-29
GB2508325A (en) 2014-05-28
US9081809B2 (en) 2015-07-14
US8478730B2 (en) 2013-07-02
US8484170B2 (en) 2013-07-09
DE112012003503T5 (de) 2014-09-25
GB201406218D0 (en) 2014-05-21
US20130290278A1 (en) 2013-10-31
US20130073529A1 (en) 2013-03-21
WO2013040993A1 (en) 2013-03-28

Similar Documents

Publication Publication Date Title
JP2014534486A (ja) スケーラブル・データ・デュプリケーションのための方法、システム、およびコンピュータ・プログラム
US9727573B1 (en) Out-of core similarity matching
US20170038978A1 (en) Delta Compression Engine for Similarity Based Data Deduplication
US8078593B1 (en) Dictionary architecture and methodology for revision-tolerant data de-duplication
US10678654B2 (en) Systems and methods for data backup using data binning and deduplication
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
US7921088B1 (en) Logical operations encoded by a function table for compressing index bits in multi-level compressed look-up tables
US8937564B2 (en) System, method and non-transitory computer readable medium for compressing genetic information
US9646043B1 (en) Combining data matches from multiple sources in a deduplication storage system
CN108090125B (zh) 一种非查询式的重复数据删除方法及装置
CN109937411A (zh) 将接收的数据块存储为去重数据块的装置和方法
CA2931184A1 (en) A method of generating a reference index data structure and method for finding a position of a data pattern in a reference data structure
Gakhov Probabilistic data structures and algorithms for big data applications
JP2017194753A (ja) 符号化プログラム、符号化方法、符号化装置、検索プログラム、検索方法および検索装置
US9952771B1 (en) Method and system for choosing an optimal compression algorithm
Žarković et al. Spontaneous Regression of Cancer: Revealing Granulocytes and Oxidative Stress as the Crucial Double-edge Sword
Quedenfeld et al. Variant tolerant read mapping using min-hashing
KR20220049540A (ko) 인코딩 및 디코딩 테이블을 이용한 세미 소팅 압축
Abdulsalam et al. Evaluation of Two Thresholds Two Divisor Chunking Algorithm Using Rabin Finger print, Adler, and SHA1 Hashing Algorithms
US11748307B2 (en) Selective data compression based on data similarity
Vaidya Instance-Optimized Data Structures for Membership Queries
WO2013128788A1 (ja) データ管理装置、データ管理方法およびプログラム