(57)【特許請求の範囲】
【請求項１】
コンピュータ実行可能命令を格納したコンピュータ読み取り可能記録媒体であって、コンピュータによって前記コンピュータ実行可能命令が実行されると、
所定のサイズより大きいフラグメントを識別するステップと、
前記フラグメントが、実フラグメントマップにおいて２回以上参照されるかどうかを決定するステップと、
前記実フラグメントマップのサイズを大きくするステップと、
新しい実フラグメントを識別するために新しいトークンを選択するステップと、
前記新しいトークンを用いて前記実フラグメントマップのエントリを変更するステップと
を備えた方法を実行することを特徴とするコンピュータ読み取り可能記録媒体。
【請求項２】
前記実フラグメントマップのサイズを大きくするステップは、実フラグメントマップのサイズを２倍にすることを特徴とする請求項１に記載のコンピュータ読み取り可能記録媒体。
【請求項３】
前記新しいトークンと関連付けられたデータは、前記フラグメントから前記新しいフラグメントに移動されることを特徴とする請求項１に記載のコンピュータ読み取り可能記録媒体。
【請求項４】
前記フラグメントは、データセットのサブセットであることを特徴とする請求項１に記載のコンピュータ読み取り可能記録媒体。
【請求項５】
前記実フラグメントマップは、配列であることを特徴とする請求項１に記載のコンピュータ読み取り可能記録媒体。
【請求項６】
前記実フラグメントマップの少なくとも１つのエントリを変更するステップをさらに備えたことを特徴とする請求項１に記載のコンピュータ読み取り可能記録媒体。
【請求項７】
コンピュータ実行可能命令を格納したコンピュータ読み取り可能記録媒体であって、コンピュータによって前記コンピュータ実行可能命令が実行されると、
既定のしきい値未満に縮小したサイズのフラグメントを識別するステップと、
実フラグメントマップのフラグメントに対するマージパートナーを識別するステップと、
前記マージパートナーの識別子を用いて前記実フラグメントマップの前記フラグメントに一致するエントリを変更するステップと、
前記実フラグメントマップを縮小できる場合には、前記実フラグメントマップのサイズを縮小させるステップと
を備えた方法を実行することを特徴とするコンピュータ読み取り可能記録媒体。
【請求項８】
前記フラグメントと関連付けられたデータを、前記マージパートナーと関連付けられた物理的記憶装置に移動させるステップをさらに備えたことを特徴とする請求項７に記載のコンピュータ読み取り可能記録媒体。
【請求項９】
前記フラグメントは、データセットのサブセットであることを特徴とする請求項７に記載のコンピュータ読み取り可能記録媒体。
【請求項１０】
前記実フラグメントマップのサイズを縮小させるステップは、前記実フラグメントマップの要素に、特定の識別子が繰り返される配列からなる基準パターンの繰り返しを含む場合、前記基準パターンの繰り返しを畳み込むことにより、前記要素の数を減少させることを特徴とする請求項７に記載のコンピュータ読み取り可能記録媒体。
【請求項１１】
前記実フラグメントマップの少なくとも１つのエントリを変更するステップをさらに備えたことを特徴とする請求項７に記載のコンピュータ読み取り可能記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的フラグメントマッピングに関する。
【背景技術】
【０００２】
データベースシステムは、行と列を有する一連の表形式データをさまざまな方法において記憶できる。データベースシステムは、データを揮発性メモリおよび不揮発性メモリ、データベースシステムに局部的な従来型ファイル記憶装置に配置されたファイル、ネットワーク上に配置された１または２以上の記憶システムに接続された従来型ファイル記憶装置に配置されたファイル等に記憶できる。データベースシステムは典型的に、データを一連のデータに対して追加または除去できるので、それら一連のデータは、時間とともに増減し得る。
【０００３】
しかし一連のデータが増えるにつれ、それら一連のデータが増大し過ぎて、記憶されている場所の保存能力の限度を超えるかもしれない。例えばデータセットは、ハードディスクドライブ上のファイルとして記憶できる。データセットがハードディスクドライブの容量よりも増大した場合、それらのデータセットを、より大きな容量のハードディスクドライブにまとめて移動させるか、１または２以上に細分化し、それぞれの部分を複数の物理的記憶場所の１つに移動させるかのどちらかにできる。
【０００４】
いったんデータセットが分割されると、データベースシステムは、固定した機能性を実装して、複数の物理的記憶場所のそれぞれに記憶されたデータを見つけ、検索できる。例えばデータベースシステムは、２つの物理的記憶場所を含むことができる。データベースシステムは、第１物理的記憶場所のデータセットの第１行と関連付けられたデータを記憶するために選択できる。データベースシステムは、第２物理的記憶場所のデータセットの第２行と関連付けられたデータを記憶するためにさらに選択できる。次にデータベースシステムは、第１物理的記憶場所のデータセットの第３行と関連付けられたデータを記憶するために選択できる。そのようなパターンは、データセットのそれぞれの行に対して繰り返すことができる。次にデータベースシステムは、そのような固定した機能性を逆行させ、データを見つけ、検索できる。例えばデータベースシステムは、第２物理的場所に記憶されたデータにアクセスすることによって、データセットの第２行と関連付けられたデータを検索できる。
【０００５】
第１物理的記憶場所か第２物理的記憶場所のどちらかの容量が一杯になった場合、追加的な物理的記憶場所をデータベースシステムに追加できる。しかしデータベースシステムが、固定した機能性を利用してデータの分割と検索を行うので、第１物理的記憶場所と第２物理的記憶場所に記憶されたすべてのデータは、第３物理的記憶場所の追加に対応するために入れ替えられなければならない。
【０００６】
例えばデータベースシステムは、第１物理的記憶場所の第１行と関連付けられたデータを記憶するために選択できる。データベースシステムは、第２物理的記憶場所の第２行と関連付けられたデータを記憶するためにさらに選択できる。次にデータベースシステムは、第３物理的記憶場所の第３行と関連付けられたデータを記憶するために選択できる。ここで留意すべきは、第３行と関連付けられたデータは以前に、第１物理的記憶場所に記憶されていたことである。しかしデータベースシステムによって用いることができる固定した機能性に従うためには、第３行と関連付けられたデータは、第３物理的記憶場所に入れ替えられなければならない。
【０００７】
あるいはデータベースシステムが、データセットを分割し、記憶するために固定した機能性を用いない場合、分割と参照の機能は、新しい物理的場所がデータベースシステムに対して追加または除去される度に変更されなければならない。例えばデータベースシステムは、行数および物理的記憶場所の数に基づいた数学的関数を実行することによって、データセットの行に対して物理的場所を選択する固定されていない機能を含むことができる。データのそれぞれの行の場所とそれぞれの行の場所を決定する数学的関数との両方は、物理的記憶場所の数に基づくので、数学的関数とそれぞれの行の場所との両方は、物理的記憶場所がデータベースシステムに対して追加または除去される度に再計算および入れ替えられなければならない。
【０００８】
物理的記憶場所が追加または除去される度にすべの物理的記憶場所のすべてのデータを入れ替える必要なく、データが一方の物理的記憶場所からもう一方の物理的記憶場所へ容易に移動できる方法を実装するシステムが有効になり得る。
【発明の概要】
【０００９】
以下に、読者に基本的な理解を提供するために本開示の簡単な概要を提示する。本概要は、本開示の広範囲の要約ではなく、本発明の主要な要素を明らかにするまたは本発明の範囲を明確にするものでもない。その唯一の目的は、後に提示されるより詳細な記述への前置きとして簡易形式によって、本明細書に開示された、いくつかの概念を提示することである。
【００１０】
本例では、動的フラグメントマッピングの構造および技術を提供する。テーブル、行セット、インデックス、またはテーブルもしくはインデックスのパーティション等のデータベースオブジェクトは、データフラグメントに分割またはデータフラグメントとして存在できる。行セットは、データベーステーブルの１または２以上の行のセットまたはインデックスのエントリと見なすことができる。行とレコードの語は、実質的に同一と見なすことができる。従って行セットは、レコードセットと同等にすることもできる。
【００１１】
実行可能な最大数のデータフラグメントを選択できる。データセットはフラグメントに分割されるので、データセットのそれぞれの部分に仮想識別子を割り当てることができる。行のセットを含むことができる物理的場所は、実フラグメントとして認識できる。配列は、実フラグメントの物理的場所を見つけるために逆に参照できる識別子トークンを含むそれぞれの要素を用いて生成できる。そのような配列は、仮想識別子から実フラグメントの物理的場所を見つけるためのマップとして動作できる。仮想識別子をマップインデックス値に相関させるマッピング機能は、関連付けられたマップインデックス値の要素の値を見つけるために呼び出すことができる。次にデータセットのそれぞれの部分は、マップインデックス値によって参照された場所に物理的に記憶できる。
【００１２】
マップの複数の要素は、同じ物理的場所を参照できる。新しい物理的場所を、既存の物理的場所を示す複数のマップインデックス要素の１つの値を変更することによって追加できる。次に以前にマップ要素と関連付けられていたデータの部分は、古い物理的場所から新しい物理的場所に移動できる。従って現存する物理的場所は、マップインデックス要素の値を別の既存の場所に変更し、削除される場所からのデータを前記既存の場所に移動することによって削除できる。
【００１３】
実フラグメントを備える要素のセットは、必要に応じて拡張または縮小できる。例えばマップが新しい物理的場所にもはや十分な記憶領域がない環境に起こり得る。次にマップ要素の数を、選択された要因によって増加することができる。マッピング機能は、仮想識別子をマップインデックス値に相関させることができるので、多数の仮想識別子の値を新しいマップインデックス値に相関させることができる。新しいインデックスのマップ要素の値を変更して、新しい物理的場所を参照できる。新しいマップインデックス値と関連付けられたデータのすべての部分を、新しい物理的場所に移動できる。
【００１４】
別の例において、物理的場所が、ほとんど行を記憶できない環境に起こり得る。マップインデックス要素の数を、減少できる。マッピング機能は、仮想識別子をマップインデックス値に相関させるので、多数の仮想識別子を新しいマップインデックス値に相関させることができる。マップインデックス要素の値を変更して、現存する物理的場所を参照できる。新しいマップインデックス値と関連付けられたデータのすべての部分を、現存する物理的場所に移動できる。
【００１５】
もう一つの例において、仮想識別子と関連付けられた物理的データが、物理的場所に対して増加し過ぎた場合がある。そのような条件は、データスキューとして認識できる。そのようなデータスキューの条件において、新しい物理的場所を追加し、新しい物理的アドレスを仮想識別子に割り当てることによって、情報を２つの部分に分割せずに、すべての情報を古い物理的場所から新しい場所に移動させることは不可能かもしれない。そのようなデータスキューの条件において、フラグをマップインデックスのエントリに追加し、マップインデックス値と関連付けられたデータをすべての物理的場所に分配できる。そのようなデータスキューフラグは、参照機能がデータの場所を見つけるためにすべての物理的場所を調べることができる機能を示すことができる。
【００１６】
フラグメントの物理的場所を見つけるために、仮想識別子はマッピング機能まで移動される。次にマッピング機能は、マップインデックス値を戻すことができる。マップインデックス値の要素は、フラグメントが記憶されている物理的場所を参照する識別子を含むことができる。次に識別子は、物理的場所を見つけるために逆に参照され、フラグメントを検索できる。
【００１７】
付随する機能の多くは、添付図に関連して考慮される以下の詳細な記述を参照することによって、より理解されると同様により容易に認識される。
【００１８】
本記述は、添付図に照らして読まれる以下の詳細な記述によってより理解される。
【図面の簡単な説明】
【００１９】
【図１】従来型データ記憶装置および参照システムを示すブロック図である。
【図２】フラグメントマップを生成する例示的方法、実フラグメントを分割する例示的方法、実フラグメントをマージする例示的方法、およびフラグメントの場所を参照する例示的方法を含む動的フラグメントシステムを示すブロック図である。
【図３】フラグメントマッピングのデータ構造を示すブロック図である。
【図４】フラグメントマップを生成する例示的方法を示すフロー図である。
【図５】実フラグメントを分割する例示的方法を示すフロー図である。
【図６】実フラグメント分割に及ぶ例示的フラグメントマップおよび例示的物理的場所における状態遷移を示すブロック図である。
【図７】実フラグメントをマージする例示的方法を示すフロー図である。
【図８】実フラグメントマージに及ぶ例示的フラグメントおよび例示的物理的場所における状態遷移を示すブロック図である。
【図９】フラグメント識別子を使用してフラグメントの物理的場所の識別子を参照する例示的方法を示すフロー図である。
【図１０】実フラグメントを分割するおよびフラグメントをフラグメントマップにデータスキューを有するものとしてマークする例示的方法を示すフロー図である。
【図１１】データスキューを含む実フラグメント分割の間の、例示的フラグメントマップおよび例示的物理的場所における状態遷移を示すブロック図である。
【図１２】フラグメント識別子を使用してデータスキューを有するフラグメントの物理的場所の識別子を参照する例示的方法を示すフロー図である。
【図１３】記述されたシステムおよび方法を実装する例示的コンピュータ装置を示す図である。
【００２０】
参照番号は、添付図の同じ番号部分を示すために使用される。
【発明を実施するための形態】
【００２１】
添付図に関連して以下に提供された詳細な記述は、本例の記述を目的とし、本例が構成または利用できる形態のみを表すことを目的としない。本記述は、例の機能およびそれらの例を構成ならびに動作するステップの順序を説明する。しかし同じまたは同等の機能および順序は、異なる例によって達成できる。
【００２２】
本例は、動的フラグメントのマッピングシステムに実装されるものとして本明細書に説明されるが、記述されたそれらのシステムは、例示として提供され、それらに限定されない。当業者には当然のことながら、本例は、動的フラグメントのマッピングシステムのさまざまな異なる種類のアプリケーションに適している。
【００２３】
図１は、従来型データセット１１０、従来型記憶および参照コンポーネント１２０、従来型物理的記憶装置１３０、従来型物理的記憶装置１４０、および従来型物理的記憶装置１５０を含む従来型データ参照システム１００を示すブロック図である。
【００２４】
従来型データ参照システム１００は、マイクロソフト（登録商標）ＳＱＬサーバ（登録商標）等の独立型データベースシステムと、マイクロソフト（登録商標）．Ｎｅｔ、サンマイクロシステムズＪａｖａ（登録商標）等のマネージドもしくはインタプリタされた言語システムに組み込まれたデータベースシステムを含む典型的なデータベースシステムの任意の種類にできる。従来型データセット１１０は、従来型記憶および参照コンポーネント１２０に接続できる。従来型記憶および参照コンポーネント１２０は、従来型物理的記憶装置１３０、従来型物理的記憶装置１４０、および従来型物理的記憶装置１５０に接続できる。従来型物理的記憶装置１３０、従来型物理的記憶装置１４０、または従来型物理的記憶装置１５０のいずれかは、揮発性もしくは不揮発性の物理的メモリ、コンピュータハードディスクドライブ等の典型的なコンピュータ記憶形態にできる。
【００２５】
従来型データセット１１０は、表形式構造に記憶された任意の種類のデータにできる。例えば従来型データセット１１０は、従来型行ならびに従来型列、ＸＭＬ(extensible markup language)等を有する従来型データベーステーブルにできる。従来型記憶および参照コンポーネント１２０は、従来型データ参照システム１００上で実行可能な、典型的に構成されたソフトウェアコンポーネントにできる。従来型記憶および参照コンポーネント１２０は、従来型記憶機能を実装できる。そのような従来型記憶機能は、従来型データセット１１０の１または２以上の行を記憶する機能性を、従来型物理的記憶装置１３０、従来型物理的記憶装置１４０、または従来型物理的記憶装置１５０の１つに提供できる。そのような従来型記憶機能は、従来型物理的記憶装置１３０、従来型物理的記憶装置１４０、または従来型物理的記憶装置１５０のどれに行を記憶できるかを決定する固定した機能性をさらに実装できる。
【００２６】
従来型記憶および参照コンポーネント１２０は、従来型の固定した参照機能をさらに実装できる。そのような従来型の固定した参照機能は、従来型物理的記憶装置１３０、従来型物理的記憶装置１４０、または従来型物理的記憶装置１５０に記憶された従来型データセット１１０の１または２以上の行の場所を見つける機能性を提供できる。そのような従来型の固定した参照機能は、従来型記憶機能によって使用される固定した機能性をさらに利用して、従来型データセット１１０の１または２以上の行の場所を見つけることできる。
【００２７】
例えば従来型記憶機能は、物理的記憶装置のカウントを利用して、従来型データセット１１０の１または２以上の行をどこに記憶させるかを決定できる。一例において、従来型記憶および参照コンポーネント１２０は最初に、従来型物理的記憶装置１３０と従来型物理的記憶装置１４０に接続できる。従来型記憶機能は、従来型物理的記憶装置１３０の奇数行と従来型物理的記憶装置１４０の偶数行に記憶できる。従って従来型参照機能は、従来型物理的記憶装置１３０の奇数行と関連付けられたデータと従来型物理的記憶装置１４０の偶数行と関連付けられたデータを見つけることができる。
【００２８】
続いての例において、従来型記憶および参照コンポーネント１２０は次に、従来型物理的記憶装置１３０か従来型物理的記憶装置１４０のどちらかの容量が一杯になるのを受けて、従来型物理的記憶装置１５０を追加できる。しかし従来型記憶および参照コンポーネント１２０は単に、従来型物理的記憶装置１３０または従来型物理的記憶装置１４０に記憶された行を、従来型物理的記憶装置１５０に移動させるだけではない。上述のように、従来型参照機能は、従来型物理的記憶装置１３０の奇数行と従来型物理的記憶装置１５０の偶数行を見つけることができる。従って従来型参照機能は、固定した機能性を拡張することができ、従来型データセット１１０の第１行を従来型物理的記憶装置１３０に記憶し、第２行を従来型物理的記憶装置１４０に記憶し、第３行を従来型物理的記憶装置１５０に記憶し、第４行を従来型物理的記憶装置１３０に記憶する等のパターンを繰り返す。
【００２９】
上記の例から分かるように、従来型物理的記憶装置１５０の追加は、以前に従来型物理的記憶装置１３０と従来型物理的記憶装置１４０に記憶されていたデータの完全な入れ替えを必要とする。あるいは従来型記憶および参照コンポーネント１２０を、新しい従来型記憶方法と新しい従来型参照方法を含むもう一つの従来型記憶および参照コンポーネントと置き換えることができる。そのような新しい従来型記憶方法と新しい従来型参照方法は、従来型物理的記憶装置１３０、従来型物理的記憶装置１４０、または従来型物理的記憶装置１５０のそれぞれからデータを記憶し、検索する機能性を含むことができる。しかし追加的な従来型物理的記憶場所が導入された場合、追加的な新しい従来型記憶および参照コンポーネントは、以前の従来型記憶および参照コンポーネントを置き換えなければならない。
【００３０】
物理的記憶場所が追加または除去される度にすべの物理的記憶場所のすべてのデータを入れ替える必要なく、データが一方の物理的記憶場所からもう一方の物理的記憶場所へ容易に移動できる方法を実装するシステムが有効になり得る。
【００３１】
図２は、フラグメントマップ４００を生成する例示的方法、実フラグメントマップ５００を分割する例示的方法、実フラグメント７００をマージする例示的方法、およびフラグメント９００の場所を参照する例示的方法を含む例示的参照コンポーネント２１０を含む動的フラグメントシステム２００を示すブロック図である。
【００３２】
動的フラグメントシステム２００は、マイクロソフト（登録商標）ＳＱＬサーバ（登録商標）等の独立型データベースシステムと、マイクロソフト（登録商標）．Ｎｅｔ、サンマイクロシステムズＪａｖａ（登録商標）等のマネージドもしくはインタプリタされた言語システムに組み込まれたデータベースシステムを含む典型的なデータベースシステムの任意の種類にできる。しかし動的フラグメントシステム２００を任意の種類のコンピュータシステムに使用して、本明細書に記述された機能性を提供できる。当業者は、動的フラグメントシステム２００が、第１識別子が第２識別子にマッピングできる広範囲のアプリケーションに使用できる機能性を含むことを認識している。フラグメントは、データセットのサブセットとしても認識できる。
【００３３】
データセット１１０は、記憶および参照コンポーネント２１０に接続できる。記憶および参照コンポーネント２１０は、物理的記憶場所１３０、物理的記憶場所１４０、および物理的記憶場所１５０に接続できる。データセット１１０は、表形式構造に記憶された任意の種類のデータにできる。例えばデータセット１１０は、従来型行および従来型列を有する従来型データベーステーブルにできる。データセット１１０の従来型列は、固有の識別子または固有のキーを含むように指定できる。
【００３４】
記憶および参照コンポーネント２１０は典型的に、動的フラグメントシステム２００上で実行可能なソフトウェアコンポーネントを構成できる。物理的記憶場所１３０、物理的記憶場所１４０、または物理的記憶場所１５０のいずれかは、揮発性もしくは不揮発性の物理的メモリ、コンピュータハードディスクドライブ等の典型的なコンピュータ記憶形態にできる。
【００３５】
記憶および参照コンポーネント２１０は、フラグメントマップ４００を生成する例示的方法、実フラグメント５００を分割する例示的方法、実フラグメント７００をマージする例示的方法、フラグメント９００の場所を参照する例示的方法等をさらに実装できる。フラグメントマップ４００を生成する方法は、図４の記述においてより完全に論じられる。実フラグメント５００を分割する方法は、図５の記述においてより完全に論じられる。実フラグメント７００をマージする方法は、図７の記述においてより完全に論じられる。フラグメント９００の場所を参照する方法は、図９の記述においてより完全に論じられる。
【００３６】
図３は、フラグメントマッピングのデータ構造３００を示すブロック図である。フラグメントマッピングのデータ構造３００、フラグメントマッピングのデータ構造３００は、配列、リスト、集合、またはその他の特定のデータ型の同一要素のグループ化の形態における典型的なコンピュータデータ構造にできる。
【００３７】
フラグメントマッピングのデータ構造３００は、論理フラグメントｉｄでもある数字によってインデックス化された要素のセットを含むことができるマップ３３０から構成できる。マップ３３０は、実フラグメントマップ３１０および仮想実フラグメントマップ３２０からさらに構成できる。実フラグメントマップ３１０は、マップ３３０の任意の数の要素から構成できる。さらに実フラグメントマップ３１０のそれぞれの要素は、第１実フラグメント３４０および／または第２実フラグメント３５０等の実フラグメントを参照できる識別子、トークン等を含むことができる。もう一つの例において、実フラグメントマップ３１０のそれぞれの要素は、インデックスを別の同じフラグメントマップ構造の中に参照できる。
【００３８】
上述のように、マップ３３０のそれぞれの要素は、図３の０からｎ＋１までの数字によって表されたように、数字によってインデックス化できる。さらに仮想実フラグメントマップ３２０に含まれるマップ３３０の要素は、インデックス値が機能を通過したとき、そのような機能が実フラグメントマップ３１０の範囲のインデックス値に戻ることができるインデックス値を有することができる。そのような方法において、仮想実フラグメントマップ３２０の要素のインデックス値は、実フラグメントマップ３１０の要素に一致させる機能を使用して「マッピング」される。そのような機能は、図４、図５、図７、および図９の記述においてより完全に説明される。
【００３９】
さらに、実フラグメントマップ３１０の要素が実フラグメント３４０、第２実フラグメント３５０等に一致する識別子を含むことができるので、仮想実フラグメントマップ３２０の要素は、実フラグメント３４０または第２実フラグメント３５０の１つを「ポイント」する。そのような関係は、実フラグメント３４０のインデックス値０、２，４，６からｎまでと第２実フラグメント３５０のインデックス値１，３，５，７、ならびにｎ＋１を含めることによって示される。
【００４０】
一実施形態において、フラグメントマッピングのデータ構造３００の実フラグメントマップ３１０を使用して、データセットの行を物理的記憶場所にマッピングすることができる。もう一つの実施形態において、フラグメントマッピングのデータ構造３００の実フラグメントマップ３１０を使用して、任意のインデックス化されたデータを任意の一致するフラグメント型にマッピングできる。もう一つの実施形態において、実フラグメントマップ３１０を使用して、仮想識別子を別のフラグメントマップ構造の実識別子にマッピングできる。フラグメントマップ構造の実施例を生成する例示的方法を論じることができる。
【００４１】
図４は、フラグメントマップ４００を生成する例示的方法を示すフロー図である。
【００４２】
ブロック４１０は、フラグメントの最初の数を決定できる動作を示す。任意の方法を使用してフラグメントの最初の数を決定できる。一実施形態において、フラグメントの最初の数を出力２に決定できる。もう一つの例において、フラグメントの最初の数を実フラグメントマップのサイズの要因に決定できる。他のもう一つの例において、フラグメントの最初の数は、フラグメントの最初の数によって表されるデータセットのサイズに関連付けることができる。
【００４３】
ブロック４２０は、実フラグメントのサイズを決定できる動作を示す。実フラグメントマップは、識別子、トークン、または実フラグメント、物理的フラグメント、仮想フラグメント等を表すものを含むことができる。そのような決定は、任意の方法を使用して実行できる。一実施形態において、実フラグメントマップのサイズは、ブロック４１０において決定されたフラグメントの最初の数のサイズに基づいて決定される。それらの決定が出力２である実マップのサイズを得なかった場合、出力２に最も近いサイズが選択される。
【００４４】
ブロック４３０は、インデックス値および要素を有する配列を生成できる動作を示す。配列は、ブロック４２０において決定された実フラグメントマップのサイズのものを生成できる。もう一つの実施形態において、配列は、ブロック４１０において生成された最初のフラグメントマップのサイズとブロック４２０において生成された実フラグメントマップのサイズとを合わせたものと同等にできるものを生成できる。もう一つの実施形態において、ブロック４１０において生成された最初のフラグメントマップのサイズとブロック４２０において生成された実フラグメントマップのサイズを合わせたものより大きいか小さいかのどちらかの配列を生成し、他のサイズに動的に適応できる。
【００４５】
ブロック４４０は、ブロック４２０において決定されたような実フラグメントマップの要素を値に投入できる動作を示す。値は、任意の方法を使用して選択でき、そのような値は、識別子、トークン等にできる。一実施形態において、このような値は、実フラグメントの物理的場所に対する参照である。そのような値は、任意の方法を使用して実フラグメントマップに追加できる。
【００４６】
図５は、実フラグメント５００を分割する例示的方法を示すフロー図である。フラグメントマップは、図３に論じたような配列にできる。
【００４７】
ブロック５１０は、増大し過ぎたフラグメントが識別される動作を示す。そのような識別は、フラグメントのクエリを行い、フラグメントの容量が一杯もしくは望ましいサイズより大きいので、追加的な情報を記憶できないという決定をさらに行う形態をとることができる。実証目的のために、ＬＡＲＧＥ＿ＡＦは、増大し過ぎたフラグメントを参照できる。
【００４８】
ブロック５２０は、ＬＡＲＧＥ＿ＡＦが実フラグメントマップにおいて１回より多く参照されるかどうかが決定される決定を示す。否定的な決定を受けて、フローはブロック５３０に続く。肯定的な決定を受けて、フローはブロック５４０に続く。
【００４９】
ブロック５３０は、実フラグメントマップのサイズが２倍になる動作を示す。しかし当業者によって認識されるように、実フラグメントマップは、任意の適正な要因によってサイズを大きくできる。実フラグメントマップのサイズを２倍にした後で、元の実フラグメントマップの要素の値は、新しく生成された実フラグメントマップの要素にコピーされる。
【００５０】
ブロック５４０は、新しい実フラグメントが生成される動作を示す。そのような実フラグメントは「エンプティ」であり、任意の情報等を含むことができない。そのような新しい実フラグメントは考察目的で、ＮＥＷ  ＡＦによって参照できる。
【００５１】
ブロック５５０は、新しい識別子が、ブロック５４０において生成された実フラグメントに対して選択または生成される動作を示す。そのような識別子は、数字、トークン、任意の値等にできる。そのような新しい識別子は考察目的で、ＮＥＷ  ＡＦ  ＩＤによって参照できる。
【００５２】
ブロック５６０は、一度識別子ＬＡＲＧＥ＿ＡＦに投入された実フラグメントマップのエントリの１つが、ブロック５５０において選択または生成されたＮＥＷ  ＡＦ  ＩＤに変更できる動作を示す。
【００５３】
ブロック５７０は、ＮＥＷ  ＡＦ  ＩＤを示す配列の仮想実フラグメントマップのＩＤと関連付けられたデータ行が、ＬＡＲＧＥ＿ＡＦフラグメントからＮＥＷ  ＡＦまで移動できる動作を示す。そのような情報の移動は、任意の手段を使用して達成できる。例えばそれらの情報は、一つの物理的記憶装置から他の物理的記憶装置にコピーでき、ネットワークを通じてコピーでき、物理的メモリの一つの領域から他の物理的メモリの領域にコピーできること等である。
【００５４】
以下の図では、一連の図を利用して図５の方法を示すことができる。
【００５５】
図６は、実フラグメント分割６００に及ぶ例示的フラグメントマップおよび例示的物理的場所における状態遷移を示すブロック図である。
【００５６】
ブロックＡ６１０は、実フラグメントマップ６４０が２つの要素を含む状態を示す。実フラグメントマップ６４０の第１要素は、第１実フラグメント６７０に一致する識別子を含むことができる。実フラグメントマップ６４０の第２要素は、第２実フラグメント６８０に一致する識別子を含むことができる。ブロックＡ  ６１０において、第２実フラグメント６８０は容量が一杯になっている。ここで留意すべきは、第１実フラグメント６７０に含まれる情報が以前に論じたように、マッピング機能を使用して実フラグメントマップ６４０の第１要素にマッピングできることである。さらに第２実フラグメント６８０に含まれる情報は、これも以前に論じたように、マッピング機能を使用して実フラグメントマップ６４０の第２要素にマッピングすることもできる。そのようなマッピングは、ブロックＡ６１０の配列によって表すことができる。
【００５７】
ブロックＢ６２０は、実フラグメントマップ６４０が、拡張された実フラグメントマップ６５０を生成するためにサイズが２倍になった状態を示す。実フラグメントマップ６４０の第１要素および第２要素に含まれる識別子を、拡張されたフラグメントマップ６５０の新しく生成された要素にコピーできる。ブロックＢ６２０に見られるように、拡張された実フラグメントマップ６５０の第１要素および第３要素は、第１実フラグメント６７０に一致できる。さらに拡張された実フラグメントマップ６５０の第２要素および第４要素は、第２実フラグメント６８０に一致できる。
【００５８】
ここで留意すべきは、拡張された実フラグメントマップ６５０と関連付けられた仮想実フラグメントの要素を第１実フラグメント６７０にマッピングし、拡張された実フラグメントマップ６５０の第２要素および第４要素を第２実フラグメント６８０にマッピングできるマッピング機能は、モジュロ機能にできることである。例えばモジュロ機能は、拡張された実フラグメントマップ６５０のサイズを、拡張された実フラグメントマップ６５０の要素のインデックス数または仮想実フラグメントマップ等の拡張された実フラグメントマップ６５０のインデックス値を超えた他の要素部分によって除した後の余りを戻すことができる。しかしそのような動きを作る任意の種類のハッシングまたはマッピング機能を使用できる。
【００５９】
ブロックＣ６３０は、第３実フラグメント６９０を追加できる状態を示す。拡張された実フラグメントマップ６５０の第４エントリを変更して、最後の拡張された実フラグメントマップ６６０を生成できる。最後の拡張された実フラグメントマップ６６０の第４要素は、第３実フラグメント６９０に一致できる。即ち以前に論じたマッピング機能が、仮想実フラグメントマップの要素を、最後の拡張された実フラグメントマップ６６０の第２要素か第４要素のどちらかにマッピングできるので、第２エントリに一致できる仮想実フラグメントマップの要素は、第４エントリに一致できる。従ってこのような要素は、新しいフラグメントである第３実フラグメント６９０に一致できる。最終的に、最後の拡張された実フラグメントマップ６６０の第４要素にマッピングする第２実フラグメント６８０上に記憶された任意の情報は、第３の実フラグメント６９０に移動される。
【００６０】
図７は、実フラグメント７００をマージする例示的方法を示すフロー図である。
【００６１】
ブロック７１０は、実フラグメントがマージされる候補として識別される動作を示す。そのような識別は、実フラグメントのクエリを行い、フラグメントが大量の空いた記憶場所を有することができる決定をさらに行う形態をとることができる。そのような実フラグメントの候補は考察の目的で、ＡＦ＿Ｍと呼ぶことができる。ＡＦ＿Ｍ  ＩＤは、識別されたフラグメントと関連付けられた識別子を参照できる。
【００６２】
ブロック７２０は、実フラグメントマップが実フラグメントＡＦ＿Ｍの候補に対する潜在的マージパートナーを含むことができるかどうかを、実フラグメントマップが決定するためにクエリが行われる決定を示す。一実施形態において、空いた記憶場所等の同じ要因を有する実フラグメントマップの要素は、実フラグメントの１つが実フラグメントＡＦ＿Ｍの候補に対する潜在的マージパートナーであるかどうかを決定するためにクエリが行われる。しかし実フラグメントマップの任意の要素は、実フラグメントＡＦ＿Ｍの候補に対する潜在的マージパートナーにできる。否定的な決定を受けて、フローはブロック７７０に続く。肯定的な決定を受けて、実フラグメントの潜在的マージパートナーは、実フラグメントのマージパートナーになり、フローはブロック７３０に続く。
【００６３】
ブロック７３０は、実フラグメントＡＦ＿Ｍ上に記憶された任意の情報が、ブロック７２０において識別できた実フラグメントのマージパートナーに移動される動作を示す。
【００６４】
ブロック７４０は、実フラグメントＡＦ＿Ｍの候補に対する参照を以前に含んだ実フラグメントマップのマップエントリが、ブロック７２０において識別された実フラグメントのマージパートナーの識別子に対する参照を含むように変更された動作を示す。
【００６５】
ブロック７５０は、実フラグメントマップを折り畳むまたはサイズを小さくすることができるかどうかが決定される決定を示す。一実施形態において、実フラグメントマップが検査され、実フラグメントマップの要素が基準パターンを形成する識別子を含む場合、実フラグメントマップは、基準パターンが繰り返すことのできる回数に関連付けられた要因によって畳み込むことができる。例えば実フラグメントマップは、第１識別子を含む第１要素および第３要素と、第２識別子を含む第２要素および第４要素を有する４つの要素を含むことができる。実フラグメントマップは、識別子が第１識別子、第２識別子の繰り返されるパターンに従うため、畳み込むことができる。否定的な決定を受けて、フローはブロック７７０に続く。肯定的な決定を受けて、フローはブロック７６０に続く。
【００６６】
ブロック７７０は、それらの方法が終了できる動作を示す。
【００６７】
ブロック７６０は、実フラグメントマップが畳み込まれる動作を示す。そのような畳み込みは、任意の方法を使用して実行できる。一実施形態において実フラグメントマップは、実フラグメントマップに含まれる要素の数を減少させることによって畳み込みができる。以下の図では、一連の図形を利用して図７の方法を示すことができる。
【００６８】
図８は、実フラグメントマージング８００に及ぶ例示的フラグメントマップおよび例示的物理的場所の状態遷移を示すブロック図である。
【００６９】
ブロックＡ８１０は、実フラグメントマップ８４０が４つの要素を含む状態を示す。実フラグメントマップ８４０の第１要素は、第１実フラグメント８７０に一致する識別子を含むことができる。実フラグメントマップ８４０の第２要素は、第２実フラグメント８８０に一致する識別子を含むことができる。実フラグメントマップ８４０の第３要素は、第１実フラグメント８７０に一致する識別子を含むことができる。最後に、実フラグメントマップ８４０の第４要素は、第３実フラグメント８９０に一致する識別子を含むことができる。
【００７０】
ブロックＡ８１０において、第３実フラグメント８９０は、ある最小限のデータよりも少ない量を記憶できる。ここで留意すべきは、第３実フラグメント８９０に含まれる情報を、実フラグメントマップ８４０の第４要素によって参照できることである。そのような参照は、ブロックＡ８１０の矢印によって表すことができる。仮想実フラグメントマップに関連付けられた要素は示していないが、仮想実フラグメントマップのそのような要素は以前に論じたように、マッピング機能を使用して実フラグメントマップ８４０の要素の１つと関連付けることができる。そのようなマッピング機能は、余りを決定するために実フラグメントマップ８４０のサイズを利用するモジュロ機能にできる。
【００７１】
ブロックＢ８２０は、変更された実フラグメントマップ８５０の第４要素を変更して、第２実フラグメント８８０に一致する識別子を含むことができる状態を示す。さらに第３実フラグメント８９０に記憶された情報は、第２実フラグメント８８０に移動できる。
【００７２】
ブロックＣ８３０は、ブロックＢ８２０の変更された実フラグメントマップ８５０を畳み込んで、畳み込まれた実フラグメントマップ８６０を作り出すことができる状態を示す。ここで留意すべきは、関連付けられた仮想実フラグメントマップの要素は、マッピング機能を使用して、実フラグメントマップの第３要素および第４要素に前もってマッピングできることである。そのようなマッピング機能は、畳み込まれた実フラグメントマップ８６０のサイズを利用するモジュロ機能にできるため、関連付けられた仮想実フラグメントマップの要素は、畳み込まれた実フラグメントマップ８６０の第１要素か第２要素のどちらかにマッピングできる。
【００７３】
図９は、フラグメント９００の場所を参照する例示的方法を示すフロー図である。
【００７４】
ブロック９１０は、ハッシング機能を使用して、データセットの行を仮想実フラグメントマップに含むことができる要素にマッピングできる状態を示す。一実施形態においてハッシング機能は、データセットの行の列の値をパラメータと見なし、仮想実フラグメントマップのインデックス値の要素を戻すことができる。しかし情報を仮想実フラグメントマップのインデックスにマッピングできる任意のハッシュ機能を使用できる。
【００７５】
ブロック９２０では、ラッピング機能またはマッピング機能を使用して、ブロック９１０において決定された要素のインデックスがマッピングできる一致する実フラグメントの要素を見つけることができる動作を示す。一実施形態において、ラッピング機能は、ブロック９１０において決定された要素のインデックスを実フラグメントマップのサイズで除し、その余りを戻すことによって、実フラグメントマップのインデックスを戻すことができるモジュロ機能にできる。しかし仮想実フラグメントマップの要素のインデックスを実フラグメントマップの要素のインデックスにマッピングする任意のラッピング機能が、使用できる。
【００７６】
ブロック９３０は、ブロック９２０において決定された実フラグメントマップの要素のインデックスが配置される動作を示す。
【００７７】
ブロック９４０は、ブロック９３０に配置されている実フラグメントマップの要素のインデックスに記憶できる識別子が読み取られる動作を示す。そのような読み取り動作は、任意の典型的な配列データ読み取り動作を使用して実行できる。
【００７８】
図１０は、フラグメントマップ１０００において実フラグメントを分割し、データスキューを有するフラグメントとしてマーキングする例示的方法を示すフロー図である。
【００７９】
ブロック１０１０は、増大し過ぎたフラグメントが識別される動作を示す。そのような識別は、フラグメントのクエリを行い、フラグメントの容量が一杯もしくは望ましいサイズより大きいので、追加的な情報を記憶できないという決定をさらに行う形態をとることができる。考察の目的で、ＬＡＲＧＥ＿ＡＦは増大し過ぎたフラグメントを示す。
【００８０】
ブロック１０２０は、ブロック１０１０において識別されたフラグメントがデータスキューの条件であるかどうかを決定する決定を示す。データスキューは、既定の範囲を超える多数のデータの行が単一のフラグメントにマッピングできる条件を示す。さらに図５に説明したように、フラグメントマップは、フラグメントマップがもはや分割できない条件にできる。否定的な決定を受けて、フローは図５のブロック５００に続く。肯定的な決定を受けて、フローは図５のブロック１０３０に続く。
【００８１】
ブロック１０３０は、ブロック１０１０において識別されたフラグメントがデータスキューフラグを有することができ、それらのフラグメントがデータスキューの条件であると指定するために要素インデックスに追加される動作を示す。そのようなフラグは、任意の種類のデータまたは情報にできる。例えばデータスキューフラグは、ブロック１０１０において識別された実フラグメントＬＡＲＧＥ＿ＡＦにすでに記憶されている任意の情報とともに記憶される追加的なデータ部分にできる。
【００８２】
ブロック１０４０は、ブロック１０１０  ＬＡＲＧＥ＿ＡＦにおいて識別されたフラグメント上に以前に記憶されていた情報またはデータは、他のすべてのフラグメントに分配される動作を示す。そのような分配は、任意の方法を使用して実行できる。例えばＬＡＲＧＥ＿ＡＦ上に記憶される情報またはデータは、他のすべてのフラグメントによって表された局部的な物理的記憶場所にコピーでき、ネットワーク接続を通じて他のすべてのフラグメント等によって表された他の物理的記憶場所にコピーできる。
【００８３】
図１１は、データスキュー１１００を含む実フラグメント分割に及ぶ例示的フラグメントマップおよび例示的物理的場所の状態遷移を示すブロック図である。
【００８４】
ブロックＡ１１１０は、実フラグメントマップ１１３０が４つの要素を含む状態を示す。実フラグメントマップ１１３０の第１要素は、第１実フラグメント１１５０と一致する識別子を含むことができる。実フラグメントマップ１１３０の第２要素は、第２実フラグメント１１６０と一致する識別子を含むことができる。実フラグメントマップ１１３０の第３要素は、実フラグメント１１５０と一致する識別子を含むことができる。最後に実フラグメントマップ１１３０の第４要素は、第３実フラグメント１１７０に一致する識別子を含むことができる。ブロックＡ１１１０において、第３実フラグメント１１７０はデータスキューの条件にできる。
【００８５】
ブロックＢ１１２０は、実フラグメントマップ１１４０の第４要素が、図の小文字「ｘ」によって表されたデータスキューフラグを含むことができる状態を示す。データスキューフラグの存在によって、実フラグメントマップ１１４０の第４要素が、実フラグメント１１５０、第２実フラグメント１１６０、および第３実フラグメント１１７０のすべてにマッピングできることを示すことができる。さらに第３実フラグメント１１７０に以前に記憶された情報は、実フラグメント１１５０および第２実フラグメント１１６０のそれぞれに移動できる。
【００８６】
図１２は、フラグメント識別子１２００を使用して、データスキューを有するフラグメントの物理的場所の識別子を参照する例示的方法を示すフロー図である。
【００８７】
ブロック９００は、図９に記述されたフラグメントの識別子を使用して、フラグメントの物理的場所の識別子を参照する例示的方法を示す。
【００８８】
ブロック１２１０は、ブロック９００において参照したフラグメントが、データスキューフラグを含むフラグメントマップの要素にマッピングするかどうかに関する決定を示す。そのような決定は任意の形態をとることができる。例えば、フラグメントと一致する要素は、読み取ることができ、戻った情報はクエリを行ってそれらの情報がデータスキューフラグを含むかどうかを決定できる。否定的な決定を受けて、フローはブロック１２２０に続く。肯定的な決定を受けて、フローはブロック１２３０に続く。
【００８９】
ブロック１２２０は、情報がブロック９００において識別されたフラグメントから読み取られる動作を参照できる。
【００９０】
ブロック１２３０では、情報がフラグメントマップのそれぞれのフラグメントから読み取られる動作を示す。
【００９１】
図１３に、上述のシステムおよび方法を実装する例示的コンピュータ装置１３００を示す。その最も基本的な構成において、計算装置１３００は典型的に、少なくとも１つのＣＰＵ(central processing unit)１３０５およびメモリ１３１０を含む。
【００９２】
具体的な構成および計算装置の種類によって、メモリ１３１０は、揮発性（例えばＲＡＭ等）、不揮発性（例えばＲＯＭ、フラッシュメモリ等）、またはそれら２つのある組み合わせにできる。さらに計算装置１３００は、追加的な機能／機能性も有することができる。例えば計算装置１３００は、複数のＣＰＵを含むことができる。上述の方法は、計算装置１３００の任意の処理ユニットによって任意の方法において実行できる。例えば上述のプロセスは、複数のＣＰＵを並行することによって実行できる。
【００９３】
計算装置１３００は、磁気ディスクもしくは磁気テープまたは光ディスクもしくは光テープを含む追加的な記憶装置（取り外し可能および／または取り外し不可能なもの）を含むこともできるが、これらに限定されない。そのような追加的な記憶装置は、図１３の記憶装置１３１５によって示される。コンピュータ記憶媒体は、コンピュータ読み取り可能命令、データ構造、プログラムモジュールもしくは他のデータ等の情報を記憶する任意の方法または技術において実装される揮発性ならびに不揮発性媒体、取り外し可能ならびに取り外し不能媒体を含む。メモリ１３１０および記憶装置１３１５は、コンピュータ記憶媒体のすべての例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリもしくは他のメモリ技術、ＣＤ―ＲＯＭ、ＤＶＤ(digital versatile disk)もしくは他の光学式記憶、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または望ましい情報を記憶するために使用でき、計算装置１３００によってアクセス可能なその他の媒体を含むが、これらに限定されない。そのような任意のコンピュータ記憶媒体は、計算装置１３００の一部にできる。
【００９４】
計算装置１３００は、その装置が他の装置と通信できる通信装置１３４０を含むこともできる。通信装置１３４０は、通信媒体の例である。通信媒体は典型的に、コンピュータ読み取り可能命令、データ構造、プログラムモジュールまたは搬送波もしくは他の転送機構等の変調されたデータ信号による他のデータを実施し、任意の情報送達媒体を含む。「変調されたデータ信号」の語は、その特性セットの１または２以上を有するまたはその信号の情報の符号化に関する方法に変更された信号を意味する。一例として通信媒体は、有線ネットワークまたは直接有線接続等の有線媒体、音響、ＲＦ、赤外線等の無線媒体および他の無線媒体を含むが、これらに限定されない。本明細書に使用されたコンピュータ読み取り可能媒体または装置読み取り可能媒体の語は、コンピュータ記憶媒体と通信媒体との両方を含む。記述された方法は、データ、コンピュータ実行可能命令等の任意の形態の任意のコンピュータ読み取り可能媒体において符号化できる。
【００９５】
コンピュータ装置１３００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置等の入力装置１３３５を有することもできる。ディスプレイ、スピーカ、プリンタ等の出力装置１３３０も含むことができる。これらすべての装置は公知の技術であり、詳細に論じる必要はない。
【００９６】
当業者は、プログラム命令を記憶するために利用される記憶装置を、ネットワーク上で分配できることを認識している。例えばリモートコンピュータは、ソフトウェアとされているプロセスの例を記憶できる。ローカルコンピュータまたはターミナルコンピュータは、リモートコンピュータにアクセスし、ソフトウェアの一部またはすべてをダウンロードしてプログラムを実行できる。あるいはローカルコンピュータは、必要に応じてソフトウェアの一部をダウンロードでき、またはあるソフトウェアの命令をローカルターミナルにおいて実行し、別のあるソフトウェアの命令をリモートコンピュータ（もしくはコンピュータネットワーク）において実行することによって分配して処理できる。当業者は、当業者が認識する従来型技術を利用することによって、ソフトウェアの命令のすべてまたは一部がＤＳＰ、プログラム可能な論理配列等の専用回線によって実行できることも認識している。
【図１】
0004669067.tif 000002
【図２】
0004669067.tif 000003
【図３】
0004669067.tif 000004
【図４】
0004669067.tif 000005
【図５】
0004669067.tif 000006
【図６】
0004669067.tif 000007
【図７】
0004669067.tif 000008
【図８】
0004669067.tif 000009
【図９】
0004669067.tif 000010
【図１０】
0004669067.tif 000011
【図１１】
0004669067.tif 000012
【図１２】
0004669067.tif 000013
【図１３】
0004669067.tif 000014