(57)【特許請求の範囲】
【請求項１】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを構築するＴ木インデックス構築方法において、
Ｔ木インデックスを該Ｔ木インデックスの階層構造の情報を有するノードからなるＴ木本体、検索時に条件比較を行うキー値情報、一つキーに対して複数のレコードが対応する重複キー情報の３つの領域に分けて管理し、
前記Ｔ木インデックスのノード情報をキーを構成するカラム数、長さ及びキーの重複とは独立に構築し、
分割した前記３つの領域の中でＴ木本体を構成するノードのみを、ディスク上にバックアップを取得することを特徴とするＴ木インデックス構築方法。
【請求項２】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを構築するＴ木インデックス構築装置において、
Ｔ木インデックスを該Ｔ木インデックスの階層構造の情報を有するノードからなるＴ木本体を格納するＴ木本体格納領域と、
検索時に条件比較を行うキー値情報を格納するキー値格納領域と、
一つキーに対して複数のレコードが対応する重複キー情報を格納する重複キー格納領域と、
前記Ｔ木本体格納領域、前記キー値格納領域及び前記重複キー格納領域の３つの領域を管理する管理手段とを有することを特徴とするＴ木インデックス構築装置。
【請求項３】
前記Ｔ木本体格納領域は、
前記Ｔ木インデックスのノード情報をキーを構成するカラム数、長さ及びキーの重複とは独立に構築する請求項２記載のＴ木インデックス構築装置。
【請求項４】
前記管理手段は、
分割した前記Ｔ木本体格納領域、前記キー値格納領域及び前記重複キー格納領域の３つの領域の中でＴ木本体を構成するノードのみを、ディスク上にバックアップを取得するバックアップ取得手段を含む請求項２及び３記載のＴ木インデックス構築装置。
【請求項５】
前記Ｔ木本体格納領域に格納されるノードは、
前記ノード内要素に前記キー値格納領域内に格納されているキー値の位置を指すポインタを含む請求項２記載のＴ木インデックス構築装置。
【請求項６】
前記キー値格納領域に格納されるキー値は、
１つのキーに対して１つのレコードが対応している場合には、各キー値に対応するレコードの位置を指すポインタを保持し、
１つのキーに対して複数のレコードが対応している場合には、前記重複キー格納領域のポインタの集合内の一つの要素を指すポインタを保持する請求項２記載のＴ木インデックス構築装置。
【請求項７】
前記重複キー格納領域に格納される前記重複キー情報は、
前記重複キーに対応するレコードの位置を指すポインタを有する請求項２記載のＴ木インデックス構築装置。
【請求項８】
前記管理手段は、
前記Ｔ木本体格納領域、前記キー値格納領域及び前記重複キー格納領域内の要素をポインタで結合する手段を含む請求項２、５、６、及び７記載のＴ木インデックス構築装置。
【請求項９】
データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを構築するＴ木インデックス構築プログラムを格納した記憶媒体であって、
Ｔ木インデックスを該Ｔ木インデックスの階層構造の情報を有するノードからなるＴ木本体、検索時に条件比較を行うキー値情報、一つキーに対して複数のレコードが対応する重複キー情報の３つの領域に分けて管理する管理プロセスを有し、
前記管理プロセスは、
前記Ｔ木インデックスのノード情報をキーを構成するカラム数、長さ及びキーの重複とは独立に構築し、分割した前記３つの領域の中でＴ木本体を構成するノードのみを、ディスク上にバックアップを取得するプロセスを有することを特徴とするＴ木インデックス構築プログラムを格納した記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｔ木インッデックス構築方法及び装置及びＴ木インデックス構築プログラムを格納した記憶媒体に係り、特に、データベースをメモリ上に常駐させることで高速なデータアクセスを実現する、メモリ常駐データベース管理システム等におけるＴ木インデックスの構築方法及び装置及びＴ木インデックス構築プログラムを格納した記憶媒体に関する。
【０００２】
【従来の技術】
図８は、従来のＴ木インデックスの構成を示す。同図に示すように、従来のＴ木インデックス１０は、Ｔ木インデックスの構成要素であるノード１１１と当該ノード１１１の間をつなぐノード間ポインタ１１３から成り立っている。各ノード１１１は、キー値１２１と当該キー値１２１に対応するテーブル２０内のレコード２０２の位置を指すポインタ１１６を１組とするノード内要素１１２を含んでいる。ノード内要素１１２の数は、インデックス作成時に決定する同定値である。
【０００３】
レコード２０２検索時には、ノード間ポインタ１１３を使用し、各ノード１１１間を移動することにより、アプリケーションの指定した検索条件に合致するキー値１２１を検索する。
次に、キー値１２１と組になっているレコード２０２間のポインタ１１６を参照し、ポインタ１１６の指している目的のレコード２０２へアクセスする。
【０００４】
図９は、従来のＴ木インデックスにおけるノード構成を示す。
インデックスサイズの観点から見た場合、同図に示すように、ＣＬＭ１とＣＬＭ２の２カラムでキー値１２１を構成する場合と、ＣＬＭ１のみでキー値１２１を構成する場合とでは、ノード１１１のサイズが異なっている。これは、各ノード１１１の内部にキー値１２１を直接埋め込んでいるためであり、キー値１２１を構成するカラム２０１の数、長さによりノード１１１のサイズが変化し、ノード１１１のサイズは、Ｔ木インデックス１０毎に決まる。全てのノード内要素１１２にキー値１２１が挿入されていない場合には、その領域は空き１１５として管理される。
【０００５】
図１０は、従来のＴ木インデックスにおける重複キーの増加を示す。同図はＴ木インデックス１０における重複キー１３３の扱いについて示している。重複キー１３３であるＫＥＹ３は、直接ノード１１１の内部に埋め込まれている。このとき、ＫＥＹ３が更に挿入され、ＫＥＹ３の数が２から３に増加することによって、Ｔインデックス１０で扱うキー値１２１の数及び段数が増加する。このように、１つのキー値に対応するレコード数を表す重複度により検索時に参照対象となるキー１２１の数が変化し、場合によっては、Ｔ木インデックス１０の段数が変化する可能性がある。
【０００６】
図１１は、従来のＴ木インデックスにおけるキー値の挿入を示す。同図は、Ｔ木インデックス１０へのキー値１２１の挿入例を示している。Ｔ木インデックス１０にＫＥＹ６が挿入されたとき、ＫＥＹ５，ＫＥＹ６，ＫＥＹ７の順序性を保持するものであれば、ＫＥＹ４，ＫＥＹ５が移動し、ＫＥＹ６を挿入する領域を確保した後、ＫＥＹ６の挿入が行われる。このように、Ｔ木インデックス１０にキー値１２１が挿入された場合には、キー値１２１の移動が生じる可能性がある。
【０００７】
図１２は、従来のＴ木インデックスにおけるキー値の削除を示す。同図は、挿入時と同様に、従来のＴ木インデックス１０からのキー値１２１の削除を示している。Ｔ木インデックス１０からＫＥＹ６が削除されたとき、ＫＥＹ５，ＫＥＹ７，ＫＥＹ８の順序性を保持するのであれば、ＫＥＹ７，ＫＥＹ８の移動が行われる。このように、Ｔ木インデックス１０からキー値１２１を削除する場合にもキー値１２１の移動が生じる可能性がある。
【０００８】
図１３は、従来のＴ木インデックスのバックアップを示す。同図は、Ｔ木インデックス１０のバックアップ３０を取得している状態を示している。メモリ上に展開されたＴ木インデックス１０のバックアップ３０は、ディスク上に取得される。その内容は、Ｔ木インデックス１０のノード間の階層構造の情報、キー値１２１等のＴ木インデックス１０を構成する全ての情報である。
【０００９】
【発明が解決しようとする課題】
しかしながら、上記従来は、Ｔ木の各ノードの内部にキー値（重複キーを含む）を埋め込んでいたため、以下のような問題がある。
１．キーを構成するカラムの数、長さによって、ノードのサイズが変化するため、Ｔ木インデックスの構築がキー構成に影響され、Ｔ木インデックスの構築が複雑となり、構築に時間がかかる。
【００１０】
２．ノード内要素数は固定であるため、キー値のサイズが大きく、空きとして管理される領域が多い場合には、Ｔ木インデックスとして使用するメモリ量が増加する。
３．キーの挿入／削除時にキー値の移動が生じるため、レコードの挿入／削除の処理速度が遅い。
【００１１】
４．重複キーの重複度が増加するにつれて検索対象となるキーの数が増加し、多くのキー値との比較を行わなくてはならないため検索時の処理速度が悪化する。
５．インデックスに含まれる全ての情報についてバックアップを取得しているため、バックアップに要する時間が長い。
【００１２】
本発明は、上記の点に鑑みなされたもので、Ｔ木インデックス構築時間短縮、メモリ使用量削減、キー挿入／削除時の処理速度の向上、キーの重複時の検索速度の向上及びバックアップ時間の短縮を可能とするＴ木インッデックス構築方法及び装置及びＴ木インデックス構築プログラムを格納した記憶媒体を提供することを目的とする。
【００１３】
【課題を解決するための手段】
本発明は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを構築するＴ木インデックス構築方法において、
Ｔ木インデックスを該Ｔ木インデックスの階層構造の情報を有するノードからなるＴ木本体、検索時に条件比較を行うキー値情報、一つキーに対して複数のレコードが対応する重複キー情報の３つの領域に分けて管理し、
Ｔ木インデックスのノード情報をキーを構成するカラム数、長さ及びキーの重複とは独立に構築し、
分割した３つの領域の中でＴ木本体を構成するノードのみを、ディスク上にバックアップを取得する。
【００１４】
図１は、本発明の原理構成図である。
本発明は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを構築するＴ木インデックス構築装置において、
Ｔ木インデックスを該Ｔ木インデックスの階層構造の情報を有するノードからなるＴ木本体を格納するＴ木本体格納領域１００と、
検索時に条件比較を行うキー値情報を格納するキー値格納領域２００と、
一つキーに対して複数のレコードが対応する重複キー情報を格納する重複キー格納領域３００と、
Ｔ木本体格納領域１００、キー値格納領域２００及び重複キー格納領域３００の３つの領域を管理する管理手段４００とを有する。
【００１５】
上記のＴ木本体格納領域１００は、Ｔ木インデックスのノード情報をキーを構成するカラム数、長さ及びキーの重複とは独立に構築する。
上記の管理手段４００は、分割したＴ木本体格納領域１００、キー値格納領域２００及び重複キー格納領域３００の３つの領域の中でＴ木本体を構成するノードのみを、ディスク上にバックアップを取得するバックアップ取得手段４１０を含む。
【００１６】
上記のＴ木本体格納領域１００に格納されるノードは、ノード内要素にキー値格納領域内に格納されているキー値の位置を指すポインタを含む。
上記のキー値格納領域２００に格納されるキー値は、１つのキーに対して１つのレコードが対応している場合には、各キー値に対応するレコードの位置を指すポインタを保持し、
１つのキーに対して複数のレコードが対応している場合には、重複キー格納領域のポインタの集合内の一つの要素を指すポインタを保持する。
【００１７】
上記の重複キー格納領域３００に格納される重複キー情報は、重複キーに対応するレコードの位置を指すポインタを有する。
上記の管理手段４００は、Ｔ木本体格納領域、キー値格納領域及び重複キー格納領域内の要素をポインタで結合する手段を含む。
本発明は、データベースをメモリ上に常駐させ、高速なデータアクセスを実現するデータベース管理システムで使用するＴ木インデックスを構築するＴ木インデックス構築プログラムを格納した記憶媒体であって、
Ｔ木インデックスを該Ｔ木インデックスの階層構造の情報を有するノードからなるＴ木本体、検索時に条件比較を行うキー値情報、一つキーに対して複数のレコードが対応する重複キー情報の３つの領域に分けて管理する管理プロセスを有し、
管理プロセスは、
Ｔ木インデックスのノード情報をキーを構成するカラム数、長さ及びキーの重複とは独立に構築し、分割した３つの領域の中でＴ木本体を構成するノードのみを、ディスク上にバックアップを取得するプロセスを有する。
【００１８】
上記のように、本発明は、Ｔ木インデックスを以下の３領域に分割して格納する各領域内の要素をポインタで結合することにより、データへのアクセスを可能とする。
Ｔ木本体については、Ｔ木インデックスの各ノードを格納し、ノード間の階層構造の情報を保持する。
【００１９】
また、キー値格納領域については、キー値のみを格納し、管理する。
さらに、重複キー格納領域については、重複キーのみを管理する。
バックアップについては、Ｔ木本体のみを取得する。
これにより、従来の方式に比較して以下が可能となる。
１．キーを構成するカラムの数、長さとは独立にＴ木インデックスのノードの作成、ノード間の階層構造が構築できるため、インデックス構築の処理速度が向上する。
【００２０】
２．ノード内にキー値を埋め込まず、キー値を格納する領域は必要最小限に抑えることができるため、Ｔ木インデックス全体のメモリの使用量を少なくできる。
３．キー値の挿入／削除における、Ｔ木インデックスの成長／衰退がノード間のキー値の移動を伴わないで実施でき、キー値の挿入／削除時の処理速度が向上する。
【００２１】
４．重複キーを扱う場合に重複キーの重複度とは独立にＴ木インデックスの階層構造が構築でき、Ｔ木インデックスの検索時の処理速度が向上する。
５．バックアップのデータ量を削減でき、バックアップ取得に要する時間を短縮できる。
【００２２】
【発明の実施の形態】
図２は、本発明のＴ木インデックスの構成を示す。
同図は、本発明の構築方式を使用したＴ木インデックス１０における各領域の相関関係を示している。分割している各領域の内容は、以下の通りである。
１．Ｔ木本体領域１１：
Ｔ木インデックス１０構築のために必要なノード１１１を格納する領域である。各ノード１１１のノード内要素１１２は、キー値格納領域１２内に格納されているキー値の１２１の位置を指すポインタ１１４を保持している。
【００２３】
２．キー値格納領域１２：
検索時に使用するキー値１２１を格納する領域である。１つのキーに対して１レコードのみが対応している場合には、各キー値１２１は、キー値１２１に対応するレコード２０２の位置を指すポインタ１２２を保持している。１つのキーに対して複数のレコード２０２が対応する重複キーを扱う場合には、各キー値１２１は、重複キー格納領域１３内のポインタ１３２の集合１３１内の一つの要素を指すポインタ１２３を保持している。格納しているキー値１２１の並びには制限はない。
【００２４】
３．重複キー格納領域１３：
この領域は、重複キーを扱う場合にのみ作成される。重複キーに対応するレコード２０２の位置を指すポインタ１３２を管理している領域である。
図３は、本発明のＴ木インデックスのノードとキー値の構成を示す。
同図は、キー値１２１を構成するカラム２０１とＴ木インデックス１０の関係を例示している。ＣＬＭ１とＣＬＭ２の２つカラムでキー値１２１を構成する場合と、ＣＬＭ１のみでキー値１２１を構成する場合のＴ本本体１１の各ノード１１１のサイズはどちらも同一となる。そのため、新しいノードの作成時、１つのテーブルに複数のインデックスを張る場合等に、インデックスを構築する全てのノードが同じサイズとなり、Ｔ木インデックス１０の設計及び構築が簡易になる。
【００２５】
また、各ノード１１１の要素１１２内でキー値１２１へのポインタ１１４を格納していない空き１１５が生じてもこの空き１１５に対応するキー値１２１の領域は、キー値格納領域１２内に確保しないため、Ｔ木インデックス１０としてのメモリの使用量を少なく抑えることができる。
【００２６】
【実施例】
以下、図面と共に、本発明の実施例を説明する。
前述の図２、図３の構成に基づいて以下の実施例を説明する。
図４は、本発明の一実施例の重複キーの増加を示す。同図は、重複キー１３３の重複度とＴ木本体１１の関係を例示している。テーブルへのレコードの追加によりＫＥＹ３の重複度が２から３に増加した場合には、ＫＥＹ３のポインタ１２３が指している重複キー格納領域１３内のポインタの集合１３１に挿入されたレコードの位置を指すポインタ１３２を追加する。
【００２７】
Ｔ木本体１１、キー値格納領域１２は重要度が増加しても構成は変わらない。そのため、重複キーによるキー値１２１検索の処理速度の低下を防ぐことができ、重複のないキー値１２１に対する検索の処理速度が向上する。
図５は、本発明の一実施例のキー値の挿入を示す。同図は、Ｔ木インデックス１０にキー値１２１を挿入する方法を例示している。Ｔ木インデックス１０にＫＥＹ６を挿入する例を以下に示す。
【００２８】
１．ＫＥＹ６をキー値格納領域１２に挿入する。
２．Ｔ木本体１１のノード１１１内でＫＥＹ６を指すポインタ１１４を挿入する位置を見つける。キーの順序性より、ＫＥＹ５，ＫＥＹ６，ＫＥＹ７の順序となるように挿入するため、ポインタＰｔ５とポインタＰｔ７の間にＫＥＹ６を指すポインタＰｔ６を挿入する。このとき、ポインタＰｔ６を挿入するための領域がないため、ポインタＰｔ４，ポインタＰｔ５についてポインタの張り替えを行い、ポインタＰｔ６を挿入する領域を確保する。
【００２９】
３．ＫＥＹ６を指すポインタＰｔ６を挿入する。
図６は、本発明の一実施例のキー値の削除を示す。同図は、Ｔ木インデックス１０からキー値１２１を削除する方法を例示している。Ｔ木インデックス１０からＫＥＹ６を削除する例を以下に示す。
１．ＫＥＹ６を指すポインタ１１４Ｐｔ６を検索する。
【００３０】
２．キー値格納領域１２からＫＥＹ６を削除する。
３．ポインタＰｔ６をノード１１１から削除する。
４．ポインタＰｔ６を削除した領域が空き１１５となり、順序性が保てなくなるため、ポインタＰｔ７、ポインタＰｔ８についてポインタ１１４の張り替えを行う。
【００３１】
図７は、本発明の一実施例のバックアップを示す。同図は、バックアップ３０を例示している。Ｔ木インデックス１０を構成するＴ木本体１１、キー値格納領域１２、重複キー格納領域１３の３領域のうち、バックアップ３０をディスク上に取得するのは、Ｔ木本体１１のみとする。バックアップ３０をＴ木本体１１のみとすることで、バックアップ３０のデータ量を削減でき、通常運用の処理速度に影響を与えるバックアップ取得時のディスクへの書込み時間を短縮することができる。
【００３２】
障害からのリカバリ時には、Ｔ木本体１１のバックアップ３０をディスクからメモリ上にロードする。次に、データベース内のテーブル２０のバックアップを参照して、キー値１２１を取り出し、Ｔ木本体１１の各ノード１１１の各要素１１２とポインタ１１４で結合することで、キー値格納領域１２、重複キー格納領域１３を作成し、レコード２０２へのアクセスが可能な状態とする。
【００３３】
また、本発明は、上記において、Ｔ木インデックスを該Ｔ木インデックスの階層構造の情報を有するノードからなるＴ木本体、検索時に条件比較を行うキー値情報、一つキーに対して複数のレコードが対応する重複キー情報の３つの領域に分けて管理し、Ｔ木インデックスのノード情報をキーを構成するカラム数、長さ及びキーの重複とは独立に構築し、分割した３つの領域の中でＴ木本体を構成するノードのみを、ディスク上にバックアップを取得する処理をプログラムとして構築し、ディスク装置や、フロッピーディスク、ＣＤ−ＲＯＭ等の可搬記憶媒体に格納し、データベースをメモリ上に常駐させる場合に利用することにより汎用的に利用することが可能である。
【００３４】
なお、本発明は、上記の実施例に限定されることなく、特許請求の範囲内で種々変更・応用が可能である。
【００３５】
【発明の効果】
上述のように、本発明によれば、メモリ常駐データベース管理システムのＴ木インデックスにおいて、キー値を構成するカラムの数、長さとは独立にＴ木本体を構成でき、Ｔ木の成長、衰退時に、ノード間でキー値を移動することなく、ポインタの張り替えのみで対応できるため、Ｔ木の構築が高速化される。
【００３６】
また、キー値を格納する領域を最小限に抑えることができるため、メモリ使用量が削減できる。重複キーを扱う場合にもキー値は一つであるため、重複度が高いデータでも効率良く検索できる。
さらに、バックアップについては、Ｔ木本体のみであるため、バックアップに要する時間が削減できる。
【図面の簡単な説明】
【図１】本発明の原理を説明するための図である。
【図２】本発明のＴ木インデックスの構成図である。
【図３】本発明のＴ木インデックスのノードとキー値の構成図である。
【図４】本発明の一実施例の重複キーの増加を示す図である。
【図５】本発明の一実施例のキー値の挿入を示す図である。
【図６】本発明の一実施例のキー値の削除を示す図である。
【図７】本発明の一実施例のバックアップを示す図である。
【図８】従来のＴ木インデックスの構成図である。
【図９】従来のＴ木インデックスにおけるノード構成図である。
【図１０】従来のＴ木インデックスにおける重複キーの増加を示す図である。
【図１１】従来のＴ木インデックスにおけるキー値の挿入を示す図である。
【図１２】従来のＴ木インデックスにおけるキー値の削除を示す図である。
【図１３】従来のＴ木インデックスのバックアップを示す図である。
【符号の説明】
１０  Ｔ木インデックス
１１  Ｔ木本体
１２  キー値格納領域
１３  重複キー格納領域
２０  テーブル
１００  Ｔ木本体格納領域
１１１  ノード
１１２  ノード内要素
１１３  ノード間ポインタ
１１４  ノード内要素とキー値間ポインタ
１１５  空き
１１６  ノード内要素とレコード間ポインタ
１２１  キー値
１２２  キー値とレコード間ポインタ
１２３  キー値と重複キーポインタ集合間ポインタ
１３１  重複キーポインタ集合内要素とレコード間ポインタ
１３２  重複キーポインタ集合内要素とレコード間ポインタ
１３３  重複キー
２００  キー値格納領域
３００  重複キー格納領域
４００  管理手段
４１０  バックアップ取得手段
【図１】
0003622443.tif 000002
【図２】
0003622443.tif 000003
【図３】
0003622443.tif 000004
【図４】
0003622443.tif 000005
【図５】
0003622443.tif 000006
【図６】
0003622443.tif 000007
【図７】
0003622443.tif 000008
【図８】
0003622443.tif 000009
【図９】
0003622443.tif 000010
【図１０】
0003622443.tif 000011
【図１１】
0003622443.tif 000012
【図１２】
0003622443.tif 000013
【図１３】
0003622443.tif 000014