(57)【特許請求の範囲】
【請求項１】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックス構築装置における、Ｔ木インデックス構築方法において、
リンク付与手段が、ノード生成手段で生成されたノードと、キー値取得手段で取得されたノード間を辿る昇順、降順、又は、その両方が指定されたキー値を取得し、該キー値の昇順、降順、または、その両方に従って、ノード間を辿ることができるノード間リンクを付与しながらＴ木インデックスを生成し、Ｔ木インデックス記憶手段に格納することを特徴とするＴ木インデックス構築方法。
【請求項２】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを検索するＴ木インデックス検索装置における、Ｔ木インデックス検索方法において、
検索条件取得手段が、検索キー、大小関係を含む検索条件を取得する検索条件取得ステップと、
検索手段が、前記検索条件のキー値の昇順、降順、または、その両方にノードを辿ることができる範囲検索用のノード間リンクを利用し、前記検索条件の大小関係を満足するキー値の集合を範囲検索する検索ステップと、を行い、
前記検索ステップは、
範囲検索用のノード間ポインタを用いて、Ｔ木インデックス記憶手段のＴ木インデックス内を前記検索キーに基づいて探索し、探索により取得したすべてのキー値に対応するノード内要素レコード間ポインタを参照し、該ノード内要素レコード間ポインタが指し示すレコードにアクセスし、検索結果を出力することを特徴とするＴ木インデックス検索方法。
【請求項３】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを構築するＴ木インデックス構築装置であって、
ノードを生成するノード生成手段と、
ノード間を辿る昇順、降順、又は、その両方が指定されたキー値を取得するキー値取得手段と、
前記キー値取得手段で取得した前記キー値の昇順、降順、または、その両方に従って、ノード間を辿ることができるノード間リンクを付与しながらＴ木インデックスを生成し、Ｔ木インデックス記憶手段に格納するリンク付与手段と、
を有することを特徴とするＴ木インデックス構築装置。
【請求項４】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを検索するＴ木インデックス検索装置であって、
ノード間及びノード内要素とレコード間をポインタで表現されたリンクで結んだＴ木インデックスを格納するＴ木インデックス記憶手段と、
複数のレコードを有するテーブルと、
検索キー、大小関係を含む検索条件を取得する検索条件取得手段と、
前記検索条件のキー値の昇順、降順、または、その両方にノードを辿ることができる範囲検索用のノード間リンクを利用し、前記検索条件の大小関係を満足するキー値の集合を範囲検索する検索手段と、を有し、
前記検索手段は、
範囲検索用のノード間ポインタを用いて、前記Ｔ木インデックス記憶手段のＴ木インデックス内を前記検索キーに基づいて探索し、探索により取得したすべてのキー値に対応するノード内要素レコード間ポインタを参照し、前記テーブルの該ノード内要素レコード間ポインタが指し示すレコードにアクセスし、検索結果を出力する手段を含む、
を行うことを特徴とするＴ木インデックス検索装置。
【請求項５】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックス構築装置に実行させるＴ木インデックス構築プログラムを格納した記憶媒体であって、
請求項１記載のＴ木インデックス構築方法を実現するための処理をＴ木インデックス構築装置として利用されるコンピュータに実行させるプログラムを格納したことを特徴とするＴ木インデックス構築プログラムを格納した記憶媒体。
【請求項６】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを検索するＴ木インデックス検索装置に実行させる、Ｔ木インデックス検索プログラムを格納した記憶媒体であって、
前記請求項２記載のＴ木インデックス検索方法を実現するための処理をＴ木インデックス検索装置として利用されるコンピュータに実行させるプログラムを格納したことを特徴とするＴ木インデックス検索プログラムを格納した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｔ木インデックス構築方法及びＴ木インデックス検索方法及びＴ木インデックス構築装置及びＴ木インデックス検索装置及びＴ木インデックス構築プログラムを格納した記憶媒体及びＴ木インデックス検索プログラムを格納した記憶媒体に係り、特に、データベースをメモリ上に常駐させることで、高速なデータアクセスを実現する、メモリ常駐型データベース管理システム等におけるＴ木インデックス構築方法及びＴ木インデックス検索方法及びＴ木インデックス構築装置及びＴ木インデックス検索装置及びＴ木インデックス構築プログラムを格納した記憶媒体及びＴ木インデックス検索プログラムを格納した記憶媒体に関する。
【０００２】
【従来の技術】
図６は、従来のＴ木インデックスの構成を示す。同図に示すように、従来のＴ木インデックス１０は、Ｔ木インデックスの構成要素であるノード１１１と当該ノード１１１の間をつなぐノード間ポインタ１１３から構成される。各ノード１１１は、キー値１２１と当該キー値１２１に対応するテーブル２０内のレコード２０２の位置を指すポインタ１１６を１組とするノード内要素１１２を含んでいる。ノード内要素１１２の数は、インデックス作成時に決定する固定値である。
【０００３】
Ｔ木インデックスを構築する際は、キー値１２１の値の大小関係により、ノード１１１の生成を行う。図６を例とすると、「ＫＥＹ１」が最も小さく（もしくは最も大きく）、「ＫＥＹ１２」が最も大きい（もしくは最も小さい）。各ノード１１１内のキー値１２１も、キー値の値の大小関係に沿って並べられている。例えば、ＫＥＹ１＜ＫＥＹ２＜ＫＥＹ３＜ＫＥＹ４（もしくはその逆）という具合に並べられている。
【０００４】
各ノード１１１は、当該ノードが保有しているキー値の最小値及び最大値を保持もしくは求めることができ、当該ノードより小さいキー値を持つノード及び当該ノードより大きいキー値を持つノードに対して、ノード間ポインタ１１３で結合してある。
レコード２０２の検索時には、アプリケーションの指定した検索条件に合致するキー値をＴ木インデックス内で求める。Ｔ木の根（最上位）にあたるノードを基点として、当該ノード内に検索条件と一致するキー値が含まれない場合は、検索条件のキー値は、当該ノード内のキー値の、最小値より小さいか、最大値より大きいかの判定を行い、その判定結果によって、ノード間ポインタ１１３を選択し、より小さいキー値を含む各ノード１１１へ、もしくは、より大きいキー値を含むノード１１１へ移動し、キー値を含むノード１１１に到達するまで移動を繰り返す。
【０００５】
当該ノード内に検索条件と一致するキー値が含まれる場合は、キー値１２１と組になっているレコード２０２間のポインタ１１６を参照し、ポインタ１１６の指している目的のレコード２０２へアクセスする。
また、配下にそれ以上ノードが存在しない場合は、データベース内のレコードに検索条件と一致するレコードが存在しないことになり、検索結果が存在しない旨をアプリケーションに返却する。
【０００６】
上記のように、データベース内のレードに対する検索キー値が与えられた時、それと一致する値を持つ全レコード、または、レコードＩＤを検索結果とする検索を一致検索という。図６を例とすると、「ＣＬＭ２の値が３に等しいレコード」という検索条件が一致検索に該当する。
一方、データベース内のレコードに対して、検索キーの値と共に、検索条件としての大小関係が与えられ、その関係を満足する値を持つデータベース内の全レコード、または、レコードＩＤを検索結果とする検索を範囲検索と言う。図６を例とすると、「ＣＬＭ２の値が１以上１０以下のレコード」という検索条件が範囲検索に該当する。
【０００７】
また、範囲検索は、「キー値が１以上１０以下」のように範囲の両端にあたるキー値が指定される場合と、「キー値が３以上」や「キー値が２０以下」のように範囲の片側のみが指定される場合に分類される。
【０００８】
【発明が解決しようとする課題】
しかしながら、上記従来のＴ木インデックスを用いた範囲検索には、以下のような問題がある。
範囲の両端にあたるキー値が指定された範囲検索の場合、両端にあたるキー値の両方が一つのノード内に存在する場合は、そのノード内で両端に挟まるキー値を検索結果として返却すればよいが、両端にあたるキー値がそれぞれ別のノードに存在する場合は、複数ノードに跨がるキー値全てを返却する必要がある。図６を例にすると、「ＫＥＹ１以上ＫＥＹ１０以下」の範囲検索に合致するキー値は、ＫＥＹ１からＫＥＹ１０まですべてのキー値で３つのノードに跨がっている。
【０００９】
また、範囲の片方だけ与えられるような範囲検索では、片方のキー値より大きい（もしくは小さい）キー値全てが検索結果となり、上記と同様に複数のノード内のキー値を返却する必要がある。
従来のＴ木インデックスでは、検索時に木構造の根を基点として、木構造の下向きの検索は可能であるが、木構造の葉まで辿り着いた後、キー値の大小関係を用いて、ノードを探索するプロセスを有していないため、葉ノードに辿り着くまでに通過した全てのノードを記憶しておき、条件を満たすすべてのノードを再帰的に探索を行う必要があり、検索アルゴリズムも非常に複雑になり、かつ検索に多大な時間がかかる。
【００１０】
本発明は、上記の点に鑑みなされたもので、キー値の昇順もしくは降順もしくはその両方のノード間リンクを辿ることでＴ木インデックスを利用した高速な範囲検索を行うことが可能なＴ木インデックス構築方法及びＴ木インデックス検索方法及びＴ木インデックス構築装置及びＴ木インデックス検索装置及びＴ木インデックス構築プログラムを格納した記憶媒体及びＴ木インデックス検索プログラムを格納した記憶媒体を提供することを目的とする。
【００１１】
【課題を解決するための手段】
図１は、本発明の第１の原理を説明するための図である。
本発明（請求項１）は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックス構築装置における、Ｔ木インデックス構築方法において、
リンク付与手段が、ノード生成手段で生成されたノードと、キー値取得手段で取得されたノード間を辿る昇順、降順、又は、その両方が指定されたキー値を取得し（ステップ１）、該キー値の昇順、降順、または、その両方に従って、ノード間を辿ることができるノード間リンクを付与しながらＴ木インデックスを生成し、Ｔ木インデックス記憶手段に格納する（ステップ２）。
【００１２】
図２は、本発明の第２の原理を説明するための図である。
本発明（請求項２）は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを検索するＴ木インデックス検索装置における、Ｔ木インデックス検索方法において、
検索条件取得手段が、検索キー、大小関係を含む検索条件を取得する検索条件取得ステップと（ステップ１１）、
検索手段が、検索条件のキー値の昇順、降順、または、その両方にノードを辿ることができる範囲検索用のノード間リンクを利用し、検索条件の大小関係を満足するキー値の集合を範囲検索する検索ステップ（ステップ１２）と、を行い、
検索ステップ（ステップ１２）は、
範囲検索用のノード間ポインタを用いて、Ｔ木インデックス記憶手段のＴ木インデックス内を検索キーに基づいて探索し、探索により取得したすべてのキー値に対応するノード内要素レコード間ポインタを参照し、該ノード内要素レコード間ポインタが指し示すレコードにアクセスし、検索結果を出力する（ステップ１３）。
【００１３】
本発明（請求項３）は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを構築するＴ木インデックス構築装置であって、
ノードを生成するノード生成手段と、
ノード間を辿る昇順、降順、又は、その両方が指定されたキー値を取得するキー値取得手段と、
キー値取得手段で取得したキー値の昇順、降順、または、その両方に従って、ノード間を辿ることができるノード間リンクを付与しながらＴ木インデックスを生成し、Ｔ木インデックス記憶手段に格納するリンク付与手段と、を有する。
【００１４】
本発明（請求項４）は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを検索するＴ木インデックス検索装置であって、
ノード間及びノード内要素とレコード間をポインタで表現されたリンクで結んだＴ木インデックスを格納するＴ木インデックス記憶手段と、
複数のレコードを有するテーブルと、
検索キー、大小関係を含む検索条件を取得する検索条件取得手段と、
検索条件のキー値の昇順、降順、または、その両方にノードを辿ることができる範囲検索用のノード間リンクを利用し、検索条件の大小関係を満足するキー値の集合を範囲検索する手段とを有し、
検索手段は、
範囲検索用のノード間ポインタを用いて、Ｔ木インデックス記憶手段のＴ木インデックス内を検索キーに基づいて探索し、探索により取得したすべてのキー値に対応するノード内要素レコード間ポインタを参照し、テーブルの該ノード内要素レコード間ポインタが指し示すレコードにアクセスし、検索結果を出力する手段を含む。
【００１５】
本発明（請求項５）は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックス構築装置に実行させるＴ木インデックス構築プログラムを格納した記憶媒体であって、
請求項１記載のＴ木インデックス構築方法を実現するための処理をＴ木インデックス構築装置として利用されるコンピュータに実行させるプログラムを格納した記憶媒体である。
【００１６】
本発明（請求項６）は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを検索するＴ木インデックス検索装置に実行させる、Ｔ木インデックス検索プログラムを格納した記憶媒体であって、
請求項２記載のＴ木インデックス検索方法を実現するための処理をＴ木インデックス検索装置として利用されるコンピュータに実行させるプログラムを格納した記憶媒体である。
【００１７】
上記のように、本発明は、キー値の昇順もしくは、降順もしくはその両方に、ノード間を辿ることができるノード間リンクを付与しながら構築する。
また、検索キーの値と共に、検索条件としての大小関係が与えられ、その関係を満足するキー値の集合を検索する範囲検索において、キー値の昇順もしくは、降順もしくはその両方に、ノード間を辿ることができるノード間リンクを利用して、指定された範囲に含まれるキー値の集合を検索する。
【００１８】
これにより、キー値の昇順もしくは、降順、もしくは、その両方のノード間リンクを辿ることでＴ木インデックスを利用した非常に高速な範囲検索が可能となる。
【００１９】
【発明の実施の形態】
図３は、本発明のＴ木インデックス構築装置の構成を示す。同図に示すＴ木インデックス構築装置は、ノード生成部１、キー値取得部２、リンク付与部３、及びＴ木インデックス記憶部４から構成される。
ノード生成部１は、ノードを生成してリンク付与部３に転送する。
【００２０】
キー値取得部２は、ノード間を辿る昇順、降順、または、その両方が指定されたキー値を取得し、リンク付与部３に転送する。
リンク付与部３は、ノード生成部１から取得したノード間を、キー値取得部２から取得したキー値の昇順、降順、または、その両方に従って、ポインタで表現されたリンクで結び、Ｔ木インデックス記憶部４に格納する。
【００２１】
図４は、本発明のＴ木インデックス検索装置の構成を示す。同図に示すＴ木インデックス検索装置は、範囲検索を行うものとし、検索条件取得部５、検索部６及びＴ木インデックス記憶部４から構成される。
検索条件取得部５は、検索条件を取得して検索部６に転送する。当該検索条件には、検索キー及び、検索条件として大小関係が与えられている。
【００２２】
検索部６は、検索条件の大小関係に基づいて、Ｔ木インデックス記憶部４に格納されているノードを木の根から探索を行う。当該検索条件を満足するキー値の集合を探索する範囲検索において、キー値の昇順、降順、または、その両方にノード間を辿ることができるノード間リンクを利用して、指定された範囲に含まれるキー値の集合を検索し、検索結果を返却する。
【００２３】
【実施例】
以下、図面と共に本発明の実施例を説明する。
図５は、本発明の一実施例のリンク付与及び範囲検索を説明するための図である。同図において図６と同一構成部分には同一符号を付し、その説明を省略する。
【００２４】
まず、Ｔ木インデックス構築装置において、範囲検索用のノード間リンクの付与方法を説明する。
図５において、Ｔ木インデックス内のすべてのノード１１１間をキー値の昇順及び降順に従って、リンクで結ぶ。この例では、リンクはポインタとして表現されている。
【００２５】
このリンクは、Ｔ木インデックスを一括して構築する場合は、キー値を追加していく際に、ノード生成部１において新たにノードを生成する毎に、リンク付与部３においてリンクを張っても良いし、Ｔ木インデックスにすべてのキー値を追加し終わってから、一括して全てのノード間のリンクを纏めて張ってもよい。
また、Ｔ木インデックスに動的にキー値を追加するような場合は、新たにノードを生成する毎に、リンクを張る必要がある。
【００２６】
次に、範囲検索用のノード間リンクを利用して、Ｔ木インデックス検索装置が範囲検索を行う方法を図５を用いて説明する。
検索条件として、検索条件取得部５に「ＫＥＹ２以上ＫＥＹ１１以下の範囲に含まれるレコード」が与えられた場合、まず、検索部６は、通常の検索方法で「ＫＥＹ２」が含まれるノードを木の根から探索を行う。
【００２７】
「ＫＥＹ２」を含むノードに辿り着いた後、ノード内で「ＫＥＹ２」以上のキー値でかつ「ＫＥＹ１１」以下のキー値を探す。この例では、「ＫＥＹ２」，「ＫＥＹ３」，「ＫＥＹ４」がそれに当たる。
まだ、「ＫＥＹ１１」以上のキー値に遭遇していないので、範囲検索用のノード間ポインタ１１４を利用して、次のノードに移動し、「ＫＥＹ１１」以下のキー値を探す。この例では、当該ノード内のキー値捨てがそれに当たる。
【００２８】
まだ、「ＫＥＹ１１」以上のキー値に遭遇していないので、範囲検索用のノード間ポインタ１１４を利用して、次のノードに移動し、「ＫＥＹ１１」以下のキー値を探す。この例では、「ＫＥＹ９」，「ＫＥＹ１０」，「ＫＥＹ１１」がそれに当たる。当該ノード内に「ＫＥＹ１１」より大きいキー値（ＫＥＹ１２）が見つかったので、Ｔ木インデックス内の探索処理は終了し、上記の過程で見つかったすべてのキー値に対応するノード内要素とレコード間ポインタ１１６を参照し、ポインタ１１６の指しているレコード２０２へアクセスし、検索結果として返却する。
【００２９】
また、上記の実施例では、図３、図４の構成に基づいて説明しているが、図３、図４の構成要素をプログラムとして構築し、Ｔ木インデックス構築装置及びＴ木インデックス検索装置として利用されるコンピュータに接続されるディスク装置や、フロッピーディスク、ＣＤ−ＲＯＭ等の可搬記憶媒体に格納しておき、本発明を実施する際にインストールすることにより、容易に本発明を実現できる。
【００３０】
なお、本発明は、上記の実施例に限定されることなく、特許請求の範囲内において種々変更・応用が可能である。
【００３１】
【発明の効果】
上述のように、本発明によれば、メモリ常駐型データベース管理システムのＴ木インデックスにより、検索キーの値と共に、検索条件としての大小関係が与えられ、その関係を満足するキー値の集合を検索する範囲検索の実行が高速に行うことができる。
【図面の簡単な説明】
【図１】本発明の第１の原理を説明するための図である。
【図２】本発明の第２の原理を説明するための図である。
【図３】本発明のＴ木インデックス構築装置の構成図である。
【図４】本発明のＴ木インデックス検索装置の構成図である。
【図５】本発明の一実施例のリンク付与及び範囲検索を説明するための図である。
【図６】従来のＴ木インデックスの構成を説明するための図である。
【符号の説明】
１  ノード生成部
２  キー値取得部
３  リンク付与部
４  Ｔ木インデックス記憶部
５  検索条件取得部
６  検索部
１０  Ｔ木インデックス
２０  テーブル
１１１  ノード
１１２  ノード内要素
１１３  ノード間ポインタ
１１４  範囲検索用ノード間ポインタ
１１６  ノード内要素とレコード間ポインタ
１２１  キー値
２０１  カラム
２０２  レコード
【図１】
0003630045.tif 000002
【図２】
0003630045.tif 000003
【図３】
0003630045.tif 000004
【図４】
0003630045.tif 000005
【図５】
0003630045.tif 000006
【図６】
0003630045.tif 000007