JP2008516342A - データのランダムに命名したブロック用の記憶システム - Google Patents
データのランダムに命名したブロック用の記憶システム Download PDFInfo
- Publication number
- JP2008516342A JP2008516342A JP2007535813A JP2007535813A JP2008516342A JP 2008516342 A JP2008516342 A JP 2008516342A JP 2007535813 A JP2007535813 A JP 2007535813A JP 2007535813 A JP2007535813 A JP 2007535813A JP 2008516342 A JP2008516342 A JP 2008516342A
- Authority
- JP
- Japan
- Prior art keywords
- index
- name
- new
- record
- level index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 111
- 230000008569 process Effects 0.000 claims abstract description 21
- 238000013461 design Methods 0.000 claims description 2
- 238000004904 shortening Methods 0.000 claims description 2
- 230000005540 biological transmission Effects 0.000 claims 1
- 230000000875 corresponding effect Effects 0.000 description 12
- 238000013459 approach Methods 0.000 description 10
- 238000011084 recovery Methods 0.000 description 7
- 230000000717 retained effect Effects 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000014759 maintenance of location Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000001737 promoting effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 235000013559 Schnittsellerie Nutrition 0.000 description 1
- 244000169997 Schnittsellerie Species 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 210000000707 wrist Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
- G06F16/902—Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99933—Query processing, i.e. searching
- Y10S707/99934—Query formulation, input preparation, or translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
本出願は、2004年10月6日付けの米国仮特許出願第60/16,653号の優先権を主張する。
この説明においては、ブロック名という用語は、任意に割り当てることができる内容のブロックの名前、またはブロック内容の暗号ハッシュに基づく名前をいつでも意味する。
データ・リポジトリの最初の原型は、ブロック名を通常のLinux ext2ファイル・システム内に埋め込まれるデータ・ストアを使用する。ブロック名およびパス名間のマッピングを調整した後でも、データ・ストア内の名前を付けたブロックの数が数百万になると、格納している各ブロックにアクセスするには、平均して数十回のディスク探索が行われる。所与のブロック名がすでに使用されているのかどうかを単に問合せる問題は同様に非効率的である。内容の名前のブロックの帯域幅および記憶装置の節減はこの問合せに依存している。
提案のスキームの場合には、ほとんどすべてのブロック名に対して、名前の最初のlog2Mビットだけが索引リスト内に表示される。このことは、索引がN個のエントリのその最大の大きさである場合には、ランダムに選択した名前が索引リスト内の現在のエントリと衝突する可能性は、約N/Mであることを意味する。これは、索引リスト内の一致する問合せを受けた名前は、全ブロック名のリスト内には実際には存在しない可能性である。これは、メンバシップ試験装置としての索引リストの偽の正の割合である。M=32Nである場合には、これは約3%である。M=64N(ビットがもう1つ多い)の場合には、これは約1.6%である。索引リストが、問合せた項目が全リスト内に含まれていないと間違って表示する可能性はない。
データ・ストアに新しい名前が付いているブロックを書き込む場合には、データ・ストア内にその名前がすでに存在するかどうかをチェックするために、索引に対して問合せが行われる。この問合せの間に、すべての衝突しているエントリのブロック名が検索される。衝突している場合には、古いエントリおよび新しいエントリ両方の追加ビットが、第1のレベルの索引に追加され、その結果、両方のエントリは、全ブロック名の一意の最初のセグメントを表示する。
各名前が付いているブロックは、第1のレベルの索引内に個々のエントリを有しているので、各エントリに簡単にディスク上のブロックの位置を付けることができる。このことは各エントリに数バイトを追加することになるが、1回ディスクにアクセスするだけで、名前が付いているブロックをいつでも検索することができる。このディスク・アクセスは、ブロック、およびそれが問合せを行っているブロックであるかどうかを判定するためにテストされる全ブロック名(またはそれを再構成するのに十分な情報)の両方を検索する。別の方法としては、衝突の場合の曖昧さを解消するために使用する第2のレベルの索引は、ディスク上の簡単なハッシュ・テーブルであってもよいし、すべての検索は、全ブロック名およびブロック位置の両方を発見するためのこのテーブルへのアクセス、その後での名前が付いているブロック自身の検索を含むことができる。この第2のアプローチは、第1のレベルの索引エントリへデータを追加しないが、ブロックを検索するために2回のディスク・アクセスをいつでも行う。各第1のレベルの索引エントリに短い注釈を追加する中間スキームが現在よく使用されている。この中間スキームは、名前が付いているブロックの書込み順のパターンが、検索順にうまく反映されている場合には、(ブロック位置が第1のレベルの索引内に置かれる)全注釈スキームも実行する。また、索引しているデータ・ブロックに近く、ほぼ同時に書き込まれる第2のレベルの索引情報のセグメントを格納することにより、データ・ブロックの格納および検索の両方をより効率的に行うことができる。
本明細書に開示するデータ・ストアは、始めにのところで概略説明したアプローチのある可能な実施態様に過ぎない。他の実施態様の節内でいくつかの可能な別の方法および強化について説明する。また、本発明が使用する索引技術は広く適用することができる。
図4は、好ましい実施態様で使用するバイト指向索引エントリ・フォーマットである。このフォーマットは、1バイトのデルタ値および2バイトの注釈を使用する。デルタの溢れ(28−1のデルタにより表示する大きすぎる差)がある場合には、情報の余分な2つのバイトが追加される。これにより、8の余分な(高次)ビットを含む切り捨てた値を表示することができる。(216−1のデルタにより表示されるように)これで十分でない場合には、もっと多くのバイトが追加される等する。このコード化は、索引が最大の大きさである場合には、平均、エントリ当たり約0.3個の余分なビットを使用する。
図4は、索引の注釈、すなわち、索引エントリに対応する名前が付いているブロックに関する情報をコード化するためのバイト指向フォーマットである。好ましい実施態様の場合には、第1のレベルの索引エントリは、いつでも数バイトの長さの整数である。もちろん、この制限は便宜上のものである。
図8は、データ・ストアが使用する論理的ディスク・フォーマットである。このフォーマットは、記憶装置内のデータのランダムに命名したブロックの索引および検索を容易にするために設計される。
クラッシュからの回復を容易にするために、ディスクに書き込まれている各項目は、ジャーナル・フレーム内に入っている。図9は、好ましい実施態様で使用しているジャーナル・フレーム構造の一例である。ジャーナル・フレームは、各フレームのスタートをマークするために使用する一定の値からスタートする。ディスクがフォーマットされる度にそれをマークするために異なる疑似乱数の値が選択される。格納している記録のスタートを示すのを助けるこのような一定の値は、「マジック番号」と呼ばれる場合がある。この後には、すべてのフレームが同じ年代に属することを確認する仮想年代数が続く(仮想年代数は、実際の年代数より多くの他のビットを有する)。この後に、どのジャーナル・フレームも喪失していないことの保証を容易にするシーケンス数、どのタイプの情報がジャーナルされたのかを反映するフレーム・タイプが続き、その後に現在保護されている情報のペイロードの長さ(名前が付いているブロックの長さは可変であり、最高64KBである)が続き、その後にペイロード自身が続く。ジャーナル・フレームの最後には32ビットのチェックサムが位置していて、データのエラーを容易に検出することができる。
情報がディスクの追加ログの頭に不明確に追加された場合には、最終的にディスクは満杯になる。入手装置(reaper)は、背景タスクとして稼働し、ディスク上の解放できるスペースを再生し、保持データをコンパクトにするプログラムである。
すでに説明したように、データ・リポジトリは、それぞれが多数のデータ・ストアを備える多数の記憶装置サーバを備えることができる。ブロック名の最下位ビットのうちのいくつかは、異なるデータ・ストアに割り当てられたアドレス範囲を指定するために使用することができる。この目的のためのアドレス範囲を使用すると、スケーラブルな方法でデータ・ストア間に索引問題を分散することができるという利点がある。
ハード・ディスクは、ディスク・セクタがハードウェアの問題を許容し、データを正しく読み出すことができるように、ディスク・セクタのレベルで冗長コード化を使用する。データ記憶が使用することができるスペースからディスク基板上に冗長な情報を追加すると、ディスク・メーカは、必要なだけのエラー修正情報だけを追加する。通常の現在のディスクは、1014ビットを読み出す度に1回程度、ディスク上の1つのセクタを読み出すことができないと指定している。
ディスク上の第1のレベルの索引:ブロック位置への非常に低速で偽陽性および直接ポインタを含むオンディスクの第1のレベルの索引は、ディスク上の全ハッシュ・テーブルへの非常にコンパクトな代案として機能することができ、ほとんど常に1つのディスク・アクセスを含むブロック名へのポインタを供給する。索引エントリをキャッシュするためにあるメモリ内スキームをオンディスク第1のレベルの索引と一緒に使用する場合には、メモリ内のキャッシュに対して行った更新をオンディスク索引に併合する際に、オンディスク索引がコンパクトであることが貴重になる。全オンディスク構造を超えた更新のために読取りおよび書込みを行う必要があるデータの量は、大きな要因により低減される。
Claims (42)
- 長い全体的にランダムに分布している記録名により識別された大きな一組の記録を索引し、前記一組の記録についてのメンバシップ問合せに応答するのに適している索引を構成するための方法であって、
前記一組の記録に新しい記録を追加し、各名前の少なくとも一部が少なくともほぼランダムになっている名前を生成するように設計されたプロセスにより、前記新しい記録に新しい記録名を割り当てること、
第1のレベルの索引をチェックすることにより、前記索引内に前記新しい記録名がまだ存在しないと判定すること、
前記新しい記録名よりも短い結合記録名を形成するために、前記新しい記録名に前記索引内にすでに存在する記録名情報を結合すること、
前記新しい記録を表す新しい第1のレベルの索引エントリを形成するために、前記結合記録名を前記第1のレベルの索引に追加すること、
前記一組の記録に第2の新しい記録を追加し、前記第2の新しい記録に、前記新しい記録名とは異なる第2の新しい記録名を割り当てること、
前記第2の新しい記録名が前記第1の新しい記録名と異なるものであるかどうかを判定するために、前記第1のレベルの索引が十分な情報を含んでいないと判定すること、
前記第2の新しい記録名を表し、前記第2の新しい記録名より短い前記第1のレベルの索引にエントリを追加すること、
を含み、前記第1のレベルの索引が、前記新しい記録名が前記索引に追加されたと結論するのに十分な情報を含んではおらず、
前記一組の記録内の異なる各記録が異なる記録名に割り当てられ、
前記第1のレベルの索引の少なくとも一部が、記録名に基づいて配列される、方法。 - 請求項1に記載の方法において、前記一組の記録内の異なる各記録が、前記第1のレベルの索引内に異なるエントリを有する、方法。
- 請求項1に記載の方法において、前記新しい記録名を結合するために使用する前記プロセスが、それを前記索引内にすでに存在する記録名から区別するのに十分な前記新しい記録名から入手した情報の一部を決定することを含む、方法。
- 請求項1に記載の方法であって、さらに、
新しいエントリを、前記完全な新しい記録名またはそれを再構成するのに十分な情報を含む第2のレベルの索引に追加すること、
最初に、問合せを受けた記録名が前記新しい第1のレベルの索引エントリにより表示されていると判定し、次に、前記問合せを受けた記録名が新しい第2のレベルの索引エントリにより表示されていると判定することにより、問合せを受けた記録名が索引内にすでに存在すると判定すること、
を含む方法。 - 請求項4に記載の方法において、前記第1のレベルの索引が、RAM内に格納され、前記第2のレベルの索引がディスク上に格納される、方法。
- 請求項3に記載の方法において、前記新しい記録名から入手した情報の一部が、前記新しい記録名を表示する2進値のビットのあるサブセットを除去することにより入手される、方法。
- 請求項1に記載の方法において、前記結合することが、2つの記録名の少なくとも一部の算術差を計算すること、または2つの記録名の少なくとも一部を含むある他の演算または有限体算術演算を計算することを含む、方法。
- 請求項1に記載の方法において、前記新しい記録名を割り当てる前記プロセスが、疑似乱数を生成することか、または一意であることが分かっている記録識別情報のある組合せの暗号ハッシュを計算することを含む、方法。
- 請求項1に記載の方法において、前記索引の一部が、前記新しい記録が追加された時間内に記録名が前記索引に追加された一組の記録を表し、前記新しい記録に関する追加情報、および前記時間がRAM内にキャッシュされる間に追加された他の記録の情報を入手するために、前記一部が一組の単位として検索される、方法。
- 請求項1に記載の方法において、記録または索引情報がディスク上のシーケンシャルなログ構造内に格納され、前記シーケンシャルなログ構造のセグメントを含む一組のピースのビット毎のXORを記録する余分な情報が、ディスク上の読み出すことができないセクタを再構成することができるように、ディスクに書き込まれる、方法。
- 請求項1に記載の方法において、可能な記録名のスペースが、一組のばらばらのサブスペースに分割され、その各サブスペースが、前記索引の複数の例の1つまたは複数に関連する、方法。
- 請求項11に記載の方法において、前記同じサブスペースに関連する異なる索引に、前記記録名の一部に基づいて異なる役割が割り当てられる、方法。
- 請求項1に記載の方法において、前記新しい記録が内容の1つのブロックであり、前記新しい記録名が内容の前記ブロックの暗号ハッシュであり、内容の前記ブロックの反復送信および反復格納を避けるために前記索引に対して問合せが行われる、方法。
- 請求項1に記載の方法において、前記新しい記録名が前記索引に2回目が追加され、前記新しい記録名に関連する参照カウントが、前記新しい記録が2回追加されたことを示す、方法。
- 請求項1に記載の方法において、注釈が、前記新しい記録に関連する情報、または追加情報を発見することができる表示を含む前記第1のレベルの索引内の前記新しいエントリに取り付けられる、方法。
- 請求項15に記載の方法において、前記新しいエントリに取り付けられている前記注釈内に格納されている情報が、後で他の場所に表示され、前記第1のレベルの索引内の前記エントリから除去される、方法。
- 請求項1に記載の方法において、前記索引の少なくとも一部が、記録が前記索引に追加された時点に基づいて組織される、方法。
- 請求項3に記載の方法において、前記索引内にすでに存在する記録名からそれを区別するのに十分な前記新しい記録名から入手した情報の前記一部が、前記第1のレベルの索引内に表示される、方法。
- 請求項1に記載の方法において、前記索引内に表示された前記記録名の長さの合計が、前記第1のレベルの索引内の前記エントリの長さの合計より長い、方法。
- 請求項1に記載の方法において、前記第1のレベルの索引が、すべての可能な記録名間の一定のおよび所定の順序に基づいてばらばらのセグメントに分割される、方法。
- 請求項1に記載の方法において、記録または索引情報がディスク上のシーケンシャルなログ構造内に格納され、入手プログラムが、ディスク上の他の場所にこのログ構造のセグメントをコピーし、前記情報のあるものを除去し、再使用のために前記セグメントを解放する、方法。
- 請求項21に記載の方法において、前記新しい記録に関連する情報が前記セグメントに内蔵され、前記新しい記録に関連する参照カウントが、ゼロにデクリメントされ、前記入手プログラムが、再使用のために前記セグメントを解放する前に、前記新しい記録に関連する前記情報をコピーしない、方法。
- 請求項1に記載の方法において、記録または索引情報がディスク上のシーケンシャルなログ構造内に格納され、このログ構造のバイトのある範囲が、ある時間内に変更することができないものとしてマークが付けられ、この変更することができない状態が、データ・ストアの基礎をなす記憶リソースにより強制される、方法。
- 請求項1に記載の方法において、前記索引がその設計容量を超えて充填されない限りは、前記第1のレベルの索引だけをチェックして、ランダムに選択した記録名が前記索引内に存在しないと判定することの可能性が98%以上である、方法。
- 請求項24に記載の方法において、前記索引の容量が、使用できる記憶スペースだけにより制限される、方法。
- 請求項1に記載の方法において、ある時間内に記録名が前記索引に追加された一組の記録が、記憶デバイスのある局所化した領域内にすべて格納され、前記一組の記録を表す前記索引の一部が前記一組の記録と一緒に格納される、方法。
- 請求項1に記載の方法において、前記新しい第1のレベルの索引エントリがディスクに書き込まれ、RAMから除去され、問合せを受けた記録名が前記索引内にすでに存在すると判定することが、ディスク上の前記新しい第1のレベルの索引エントリにアクセスすることを含む、方法。
- 請求項15に記載の方法において、前記新しいエントリに取り付けられている前記注釈内の情報が、ディスク上に表示され、前記注釈から除去される、方法。
- 請求項1に記載の方法において、前記新しい第1のレベルの索引エントリが、ディスク上のデータの位置に関する情報を含んでいない、方法。
- 請求項1に記載の方法において、前記第1のレベルの索引エントリが、前記エントリが記録名情報以外の情報を含んでいるのかどうかについての表示を含む、方法。
- 請求項1に記載の方法において、コピー・プロセスが、情報を第1のレベルの索引エントリからディスクにコピーし、前記第1のレベルの索引から前記情報を除去する、方法。
- 請求項1に記載の方法において、注釈が、近似的なディスク位置を含む前記第1のレベルの索引内の前記新しいエントリに取り付けられる、方法。
- 請求項1に記載の方法において、注釈が、前記新しい記録に関する近似的なディスク位置を含むディスク上に格納している第2のレベルの索引内の新しいエントリに取り付けられる、方法。
- 請求項14に記載の方法において、複数の参照カウントが前記新しい記録名に関連していて、前記複数の参照カウントの合計が、前記記録が前記索引に追加された全回数を反映している、方法。
- 請求項14に記載の方法において、前記新しい記録名に関連する前記参照カウントが、ディスク上の参照カウント構成要素と、前記第1のレベルの索引内の参照カウント構成要素とを含み、前記新しい記録に属する参照カウント構成要素の合計が、前記新しい記録名が前記索引に追加された回数を反映している、方法。
- 請求項1に記載の方法において、入手装置プログラムが記録または索引をディスク上の古い位置からディスク上の新しい位置にコピーし、前記コピーからある情報を除去し、前記入手装置プログラムが、少なくとも前記除去したデータを分からなくし、読み出せなくするために、前記古い位置にデータのパターンを上書きする、方法。
- 請求項1に記載の方法において、入手装置プログラムが、記録または索引データをソース記憶デバイス上のソース位置から宛先記憶デバイス上の宛先位置にコピーし、前記コピーからある情報を除去し、前記ソース位置に自由スペースのマークを付け、宛先記憶デバイスの選択が前記コピーしたデータが次にアクセスまたは変更される時間の予測に基づいて行われる、方法。
- 請求項20に記載の方法において、前記新しい記録名に関連する前記第1のレベルの索引のセグメントが、一定のサイズおよび位置を有する、方法。
- 請求項20に記載の方法において、前記新しい記録名に関連する前記第1のレベルの索引のセグメントが、可変のサイズおよび位置を有する、方法。
- 請求項20に記載の方法において、前記第1のレベルの索引の複数のセグメントが、アレイ構造内に格納され、前記アレイ構造内のある位置へのポインタが、前記新しい記録名に関連するセグメントの頭を指定する、方法。
- 長い全体的にランダムに分布している記録名により識別された大きな一組の記録を索引し、前記一組の記録についてのメンバシップ問合せに応答するのに適している索引を構成するための方法であって、
前記一組の記録に新しい記録を追加し、各名前の少なくとも一部が少なくともほぼランダムになっている名前を生成するように設計されたプロセスにより、前記新しい記録に新しい記録名を割り当てること、
すでに前記索引に追加された記録の完全な記録名を再構成するのに十分な情報を含んでいない第1のレベルの索引をチェックすることにより、前記索引内に前記新しい記録名が存在しないと判定すること、
前記新しい記録名より短いが、すでに前記索引内に含まれている記録名からそれを区別するのに十分な新しい省略名を形成するために前記新しい記録名を短縮すること、
前記新しい記録を表す新しい第1のレベルの索引エントリを形成するために、前記短縮記録名の表示を前記第1のレベルの索引に追加すること、
前記一組の記録に第2の新しい記録を追加し、前記第2の新しい記録に、前記新しい記録名とは異なる第2の新しい記録名を割り当てること、
第2の新しい記録名が前記第1の新しい記録名と異なるものであるかどうかを判定するために、前記第1のレベルの索引が十分な情報を含んでいないと判定すること、
前記第2の新しい記録名を表し、前記第2の新しい記録名より短い前記第1のレベルの索引にエントリを追加すること、
を含み、前記一組の記録内の異なる各記録には異なる記録名が割り当てられ、
前記第1のレベルの索引が、短縮した記録名に基づいて配列され、
前記第1のレベルの索引のセグメントが、その中に含まれる前記短縮した記録名の長さの合計より短いコンパクトな形で格納される、方法。 - 請求項41に記載の方法であって、さらに、
新しいエントリを、前記完全な新しい記録名またはそれを再構成するのに十分な情報を含む第2のレベルの索引に追加すること、
最初に、問合せを受けた記録名が新しい第1のレベルの索引エントリにより表示されていると判定し、次に問合せを受けた記録名が新しい第2のレベルの索引エントリにより表示されていると判定することにより、問合せを受けた記録名が索引内にすでに存在すると判定すること、
を含み、前記一組の記録内の異なる各記録が、前記第1のレベルの索引内に異なるエントリを有する、方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US61665304P | 2004-10-06 | 2004-10-06 | |
US60/616,653 | 2004-10-06 | ||
PCT/US2005/035994 WO2006042019A2 (en) | 2004-10-06 | 2005-10-06 | A storage system for randomly named blocks of data |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008516342A true JP2008516342A (ja) | 2008-05-15 |
JP4932726B2 JP4932726B2 (ja) | 2012-05-16 |
Family
ID=36148914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007535813A Active JP4932726B2 (ja) | 2004-10-06 | 2005-10-06 | データのランダムに命名したブロック用の記憶システム |
Country Status (4)
Country | Link |
---|---|
US (3) | US7457800B2 (ja) |
EP (1) | EP1797510A2 (ja) |
JP (1) | JP4932726B2 (ja) |
WO (1) | WO2006042019A2 (ja) |
Families Citing this family (43)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8364891B2 (en) * | 2006-04-04 | 2013-01-29 | Permabit Technology Corporation | Storage assignment technique for scalable and fault tolerant storage system |
JP5204099B2 (ja) | 2006-05-05 | 2013-06-05 | ハイバー インコーポレイテッド | グループ・ベースの完全および増分コンピュータ・ファイル・バックアップ・システム、処理および装置 |
KR100817562B1 (ko) * | 2007-03-22 | 2008-03-27 | 주식회사 이너버스 | 대용량 로그파일의 인덱싱 방법, 이를 내장한 컴퓨터가판독 가능한 기록매체 및 이를 수행하기 위한 인덱싱시스템 |
US8768895B2 (en) * | 2007-04-11 | 2014-07-01 | Emc Corporation | Subsegmenting for efficient storage, resemblance determination, and transmission |
DE112007003645B4 (de) | 2007-10-25 | 2011-06-16 | Hewlett-Packard Development Co., L.P., Houston | Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung |
US8140637B2 (en) | 2007-10-25 | 2012-03-20 | Hewlett-Packard Development Company, L.P. | Communicating chunks between devices |
US8782368B2 (en) * | 2007-10-25 | 2014-07-15 | Hewlett-Packard Development Company, L.P. | Storing chunks in containers |
WO2009054827A1 (en) * | 2007-10-25 | 2009-04-30 | Hewlett-Packard Development Company, L.P. | Data processing apparatus and method of processing data |
US8209334B1 (en) * | 2007-12-28 | 2012-06-26 | Don Doerner | Method to direct data to a specific one of several repositories |
JP5132339B2 (ja) * | 2008-01-31 | 2013-01-30 | キヤノン株式会社 | 情報処理装置及びその制御方法、及びコンピュータプログラム |
US9021068B2 (en) * | 2008-02-13 | 2015-04-28 | International Business Machines Corporation | Managing a networked storage configuration |
US8028000B2 (en) * | 2008-02-28 | 2011-09-27 | Microsoft Corporation | Data storage structure |
US8959089B2 (en) | 2008-04-25 | 2015-02-17 | Hewlett-Packard Development Company, L.P. | Data processing apparatus and method of processing data |
US8108446B1 (en) * | 2008-06-27 | 2012-01-31 | Symantec Corporation | Methods and systems for managing deduplicated data using unilateral referencing |
US8359318B2 (en) * | 2008-10-13 | 2013-01-22 | Wolf Garbe | System and method for distributed index searching of electronic content |
US20100174968A1 (en) * | 2009-01-02 | 2010-07-08 | Microsoft Corporation | Heirarchical erasure coding |
US8397051B2 (en) | 2009-02-23 | 2013-03-12 | Autonomy, Inc. | Hybrid hash tables |
US8145598B2 (en) * | 2009-02-23 | 2012-03-27 | Iron Mountain Incorporated | Methods and systems for single instance storage of asset parts |
US8396873B2 (en) * | 2010-03-10 | 2013-03-12 | Emc Corporation | Index searching using a bloom filter |
US9053032B2 (en) | 2010-05-05 | 2015-06-09 | Microsoft Technology Licensing, Llc | Fast and low-RAM-footprint indexing for data deduplication |
US20110276744A1 (en) * | 2010-05-05 | 2011-11-10 | Microsoft Corporation | Flash memory cache including for use with persistent key-value store |
US8935487B2 (en) | 2010-05-05 | 2015-01-13 | Microsoft Corporation | Fast and low-RAM-footprint indexing for data deduplication |
US8463742B1 (en) | 2010-09-17 | 2013-06-11 | Permabit Technology Corp. | Managing deduplication of stored data |
US9110936B2 (en) | 2010-12-28 | 2015-08-18 | Microsoft Technology Licensing, Llc | Using index partitioning and reconciliation for data deduplication |
US8904128B2 (en) | 2011-06-08 | 2014-12-02 | Hewlett-Packard Development Company, L.P. | Processing a request to restore deduplicated data |
CN103890763B (zh) * | 2011-10-26 | 2017-09-12 | 国际商业机器公司 | 信息处理装置、数据存取方法以及计算机可读存储介质 |
US9069707B1 (en) | 2011-11-03 | 2015-06-30 | Permabit Technology Corp. | Indexing deduplicated data |
US9817728B2 (en) | 2013-02-01 | 2017-11-14 | Symbolic Io Corporation | Fast system state cloning |
US9304703B1 (en) | 2015-04-15 | 2016-04-05 | Symbolic Io Corporation | Method and apparatus for dense hyper IO digital retention |
US9467294B2 (en) | 2013-02-01 | 2016-10-11 | Symbolic Io Corporation | Methods and systems for storing and retrieving data |
US10133636B2 (en) | 2013-03-12 | 2018-11-20 | Formulus Black Corporation | Data storage and retrieval mediation system and methods for using same |
US9628108B2 (en) | 2013-02-01 | 2017-04-18 | Symbolic Io Corporation | Method and apparatus for dense hyper IO digital retention |
US9953042B1 (en) | 2013-03-01 | 2018-04-24 | Red Hat, Inc. | Managing a deduplicated data index |
US9639577B1 (en) * | 2013-03-27 | 2017-05-02 | Symantec Corporation | Systems and methods for determining membership of an element within a set using a minimum of resources |
US9451578B2 (en) * | 2014-06-03 | 2016-09-20 | Intel Corporation | Temporal and spatial bounding of personal information |
US9854436B2 (en) | 2014-09-25 | 2017-12-26 | Intel Corporation | Location and proximity beacon technology to enhance privacy and security |
US10061514B2 (en) | 2015-04-15 | 2018-08-28 | Formulus Black Corporation | Method and apparatus for dense hyper IO digital retention |
US10216748B1 (en) | 2015-09-30 | 2019-02-26 | EMC IP Holding Company LLC | Segment index access management in a de-duplication system |
WO2019126072A1 (en) | 2017-12-18 | 2019-06-27 | Formulus Black Corporation | Random access memory (ram)-based computer systems, devices, and methods |
US10942909B2 (en) * | 2018-09-25 | 2021-03-09 | Salesforce.Com, Inc. | Efficient production and consumption for data changes in a database under high concurrency |
US10725853B2 (en) | 2019-01-02 | 2020-07-28 | Formulus Black Corporation | Systems and methods for memory failure prevention, management, and mitigation |
US20210056085A1 (en) * | 2019-08-19 | 2021-02-25 | Gsi Technology Inc. | Deduplication of data via associative similarity search |
US20230334022A1 (en) * | 2022-04-14 | 2023-10-19 | The Hospital For Sick Children | System and method for processing and storage of a time-series data stream |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3668647A (en) | 1970-06-12 | 1972-06-06 | Ibm | File access system |
DE2941452C2 (de) * | 1979-10-12 | 1982-06-24 | Polygram Gmbh, 2000 Hamburg | Verfahren zur Codierung von Analogsignalen |
US5450553A (en) | 1990-06-15 | 1995-09-12 | Kabushiki Kaisha Toshiba | Digital signal processor including address generation by execute/stop instruction designated |
US5717908A (en) | 1993-02-25 | 1998-02-10 | Intel Corporation | Pattern recognition system using a four address arithmetic logic unit |
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 |
US5870747A (en) * | 1996-07-09 | 1999-02-09 | Informix Software, Inc. | Generalized key indexes |
US5813008A (en) * | 1996-07-12 | 1998-09-22 | Microsoft Corporation | Single instance storage of information |
US5963956A (en) * | 1997-02-27 | 1999-10-05 | Telcontar | System and method of optimizing database queries in two or more dimensions |
US6119133A (en) | 1998-04-16 | 2000-09-12 | International Business Machines Corporation | Extensible method and apparatus for retrieving files having unique record identifiers as file names during program execution |
US6070164A (en) | 1998-05-09 | 2000-05-30 | Information Systems Corporation | Database method and apparatus using hierarchical bit vector index structure |
US6374266B1 (en) * | 1998-07-28 | 2002-04-16 | Ralph Shnelvar | Method and apparatus for storing information in a data processing system |
US6496830B1 (en) | 1999-06-11 | 2002-12-17 | Oracle Corp. | Implementing descending indexes with a descend function |
US6366900B1 (en) | 1999-07-23 | 2002-04-02 | Unisys Corporation | Method for analyzing the conditional status of specialized files |
US7412462B2 (en) | 2000-02-18 | 2008-08-12 | Burnside Acquisition, Llc | Data repository and method for promoting network storage of data |
US6625591B1 (en) * | 2000-09-29 | 2003-09-23 | Emc Corporation | Very efficient in-memory representation of large file system directories |
US6654855B1 (en) * | 2000-10-26 | 2003-11-25 | Emc Corporation | Method and apparatus for improving the efficiency of cache memories using chained metrics |
US7007141B2 (en) | 2001-01-30 | 2006-02-28 | Data Domain, Inc. | Archival data storage system and method |
SG103289A1 (en) * | 2001-05-25 | 2004-04-29 | Meng Soon Cheo | System for indexing textual and non-textual files |
EP1407386A2 (en) | 2001-06-21 | 2004-04-14 | ISC, Inc. | Database indexing method and apparatus |
US6912645B2 (en) | 2001-07-19 | 2005-06-28 | Lucent Technologies Inc. | Method and apparatus for archival data storage |
US6871263B2 (en) * | 2001-08-28 | 2005-03-22 | Sedna Patent Services, Llc | Method and apparatus for striping data onto a plurality of disk drives |
GB2379526A (en) * | 2001-09-10 | 2003-03-12 | Simon Alan Spacey | A method and apparatus for indexing and searching data |
US6782452B2 (en) | 2001-12-11 | 2004-08-24 | Arm Limited | Apparatus and method for processing data using a merging cache line fill to allow access to cache entries before a line fill is completed |
US6928526B1 (en) * | 2002-12-20 | 2005-08-09 | Datadomain, Inc. | Efficient data storage system |
JP4991283B2 (ja) | 2003-02-21 | 2012-08-01 | カリンゴ・インコーポレーテッド | コンテンツベースのアドレシングにおける追加ハッシュ関数 |
US7676390B2 (en) * | 2003-09-04 | 2010-03-09 | General Electric Company | Techniques for performing business analysis based on incomplete and/or stage-based data |
US7107416B2 (en) * | 2003-09-08 | 2006-09-12 | International Business Machines Corporation | Method, system, and program for implementing retention policies to archive records |
US20050138031A1 (en) | 2003-12-05 | 2005-06-23 | Wefers Wolfgang M. | Systems and methods for assigning task-oriented roles to users |
US20050210028A1 (en) * | 2004-03-18 | 2005-09-22 | Shoji Kodama | Data write protection in a storage area network and network attached storage mixed environment |
-
2005
- 2005-10-06 EP EP05808531A patent/EP1797510A2/en not_active Ceased
- 2005-10-06 WO PCT/US2005/035994 patent/WO2006042019A2/en active Application Filing
- 2005-10-06 US US11/246,004 patent/US7457800B2/en not_active Ceased
- 2005-10-06 JP JP2007535813A patent/JP4932726B2/ja active Active
- 2005-10-06 US US11/246,897 patent/US7457813B2/en not_active Expired - Fee Related
-
2010
- 2010-11-24 US US12/953,901 patent/USRE45350E1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20060112112A1 (en) | 2006-05-25 |
EP1797510A2 (en) | 2007-06-20 |
JP4932726B2 (ja) | 2012-05-16 |
WO2006042019A2 (en) | 2006-04-20 |
US7457813B2 (en) | 2008-11-25 |
US7457800B2 (en) | 2008-11-25 |
WO2006042019A3 (en) | 2006-08-31 |
US20060116990A1 (en) | 2006-06-01 |
USRE45350E1 (en) | 2015-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4932726B2 (ja) | データのランダムに命名したブロック用の記憶システム | |
US8843454B2 (en) | Elimination of duplicate objects in storage clusters | |
US9880746B1 (en) | Method to increase random I/O performance with low memory overheads | |
US9043334B2 (en) | Method and system for accessing files on a storage system | |
Hong et al. | Duplicate data elimination in a SAN file system | |
US7814149B1 (en) | Client side data deduplication | |
US8468320B1 (en) | Scalability of data deduplication through the use of a locality table | |
TWI472935B (zh) | 漸進式備份之基于片段的高延展的去複本系統與方法 | |
US9798754B1 (en) | Method to efficiently track I/O access history using efficient memory data structures | |
JP6200886B2 (ja) | フラッシュストレージアレイにおける論理セクタマッピング | |
US7725437B2 (en) | Providing an index for a data store | |
US9367557B1 (en) | System and method for improving data compression | |
KR100622801B1 (ko) | 파일 시스템 액세스 방법, 파일 시스템 복원 방법, 컴퓨터 판독 가능 기록 매체 및 데이터 처리 시스템 | |
US9367448B1 (en) | Method and system for determining data integrity for garbage collection of data storage systems | |
US10503445B2 (en) | Data structure store and data management | |
US20070255758A1 (en) | System and method for sampling based elimination of duplicate data | |
US20200249860A1 (en) | Optmizing metadata management in data deduplication | |
US20210224236A1 (en) | Primary storage with deduplication | |
US10078648B1 (en) | Indexing deduplicated data | |
JP6807395B2 (ja) | プロセッサ・グリッド内の分散データ重複排除 | |
US11372576B2 (en) | Data processing apparatus, non-transitory computer-readable storage medium, and data processing method | |
US20030115408A1 (en) | Cache storage system and method | |
US20100010996A1 (en) | Method for the allocation of data on physical media by a file system that eliminates duplicate data | |
US11645333B1 (en) | Garbage collection integrated with physical file verification | |
CN117519576A (zh) | 去重存储系统的数据收纳缓冲区 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20080123 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080925 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A712 Effective date: 20100412 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110524 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110817 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110824 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111121 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20111213 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20111221 |
|
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: 20120124 |
|
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: 20120215 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4932726 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150224 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |