(57)【要約】【課題】非同期マージを行っている際に、挿入操作のレスポンスを低下させず、また、大量の検索要求に対してもトータルなレスポンスを上げることができるデータベース管理システムを提供する。【解決手段】このデータベース管理システムは、データベースの非同期マージを行っているときに、マージ対象の第二データ保持手段５とデータベースに対する操作要求の対象となる第二データ保持手段５とを異なるデータ保持手段となるようにファイルを切り替えることによって、マージ操作と挿入操作との間で排他制御が不要になり、その結果、挿入操作のレスポンスが低下しないようにすることができる。【選択図】　　　　図５
2004013490.tif 000002
【特許請求の範囲】
【請求項１】
データベースを管理するデータベース管理システムにおいて、データの検索操作の処理は高速だが変更操作の処理は低速な検索向けの第一データ保持手段と、データの検索操作の処理は低速だが変更操作の処理は高速な挿入向けおよび削除向けの複数の第二データ保持手段と、前記第二データ保持手段から第一データ保持手段へデータを転送して、挿入または削除操作で処理された結果を反映するデータ転送手段と、データベースに対する操作要求を実行するデータベース操作要求処理手段と、前記データ転送手段と前記データベース操作要求処理手段の間でデータの一貫性を保証するトランザクション処理手段と、前記複数の第二データ保持手段を、データベースに対する操作要求と非同期マージ処理とに振り分けるファイル切り替え手段とを備え、前記ファイル切り替え手段は、前記複数の第二データ保持手段のいずれか一方が前記第一データ保持手段への非同期マージ処理で使用しているときは、他方をデータベースに対する操作要求で使用するように振り分けることを特徴とするデータベース管理システム。
【請求項２】
請求項１に記載のデータベース管理システムにおいて、３つ以上の前記第二データ保持手段と、データベースに対する操作要求で使用している前記第二データ保持手段のデータ量が閾値を超えたか否かを判定するデータ量判定手段とを備え、前記ファイル切り替え手段は、前記データ量判定手段でデータ量が閾値を超えたと判断された第二データ保持手段をマージ処理に、データベースに対する操作要求で使用する第二データ保持手段を使用していない残りの第二データ保持手段へ切り替えることを特徴とするデータベース管理システム。
【請求項３】
請求項１に記載のデータベース管理システムにおいて、データベースに対する操作要求で使用している前記第二データ保持手段のデータ量が閾値を超えたか否かを判定するデータ量判定手段を備え、前記ファイル切り替え手段は、前記データ量判定手段でデータ量が閾値を超えたと判断された第二データ保持手段をマージ処理で使用し、データベースに対する操作要求で使用する第二データ保持手段を新たに動的に生成して切り替えることを特徴とするデータベース管理システム。
【請求項４】
請求項１、２または３に記載のデータベース管理システムにおいて、設定された時間の経過を監視し、その時間が経過したときにロックの解放を要求するウォッチドッグタイマを備え、前記データベース操作要求処理手段は、検索要求がきた時にウォッチドッグタイマをスタートさせ、前記データ転送手段は、タイマの設定時間になるまで、その間ロックを解くことなく複数の索引単位をまとめてマージ処理し、タイマの設定時間になった場合、マージ処理の排他制御を解いて検索要求に制御を渡すことを特徴とするデータベース管理システム。
【請求項５】
請求項４に記載のデータベース管理システムにおいて、前記ウォッチドッグタイマの設定時間は、検索の遅延が許される最大時間に設定することを特徴とするデータベース管理システム。
【請求項６】
コンピュータに、請求項１乃至５のいずれか１に記載のデータベース管理システムの機能を実行させるためのプログラム。
【請求項７】
請求項６に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベース管理システム、プログラムおよび記録媒体に関し、具体的には、遅延更新によりマージ処理を行うデータベース管理システム、データベース管理システムの機能を実行するプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【０００２】
【従来の技術】
リレーショナルデータベースは、データを表で表現して管理している。この表は、属性値の並びであるタプルの集合から構成される。また、表の実体は、ファイルに格納される。
データベースに対する操作は、次の４つの操作に分類される。
（１）検索操作
属性値に関する条件を検索条件として与えてそれに合致するタプルの集合を得る操作である。
（２）挿入操作
与えられた属性値を持った新たなタプルを表に挿入する操作である。
（３）更新操作
表から選び出されたタプルの属性値を新たな値に変更する操作である。
（４）削除操作
表から選び出されたタプルを削除する操作である。
以下、上記の挿入操作、更新操作および削除操作をまとめて変更操作と呼ぶことにする。
【０００３】
リレーショナルデータベースを用いたシステムでは、検索操作を行ったときの応答時間が重要な性能指標となっている。
そのため、検索応答時間を短縮するために、索引ファイルを用いてリレーショナルデータベースを構築する方法がとられている。
この索引ファイルは、ひとつまたは複数の属性値を特定の構造に変換することで、それらの属性値に関する条件を高速に評価できるようにしたものといえる。
【０００４】
一方、変更操作においては、索引ファイルの更新にかかる時間が性能を低下させる原因となっている。
利用形態として通常は、検索操作に比べて変更操作の要求頻度が少ないため、検索操作のみが実行され、大量の変更操作は夜間などにシステムを停止した状態で行っている。そのため、これまでは変更操作に対する応答時間で測られる性能は重要視されてこなかった。
【０００５】
しかし、オンラインシステムのようにリアルタイム性が求められる場合においては、変更操作に対する応答時間が重要視される。
このような問題に対し、例えば、特開平１０−１４３４１２号公報の「データベース管理システム」では、データベースへの書き込みを磁気ディスクに反映する前に、不揮発性メモリに一時的に保持し、該当データの参照は磁気ディスクの代わりに不揮発性メモリをディスクキャッシュとして用いている。
しかしながら、ディスクキャッシュには、構造が単純なデータしかおくことができず、高機能の索引ファイルを用いることはできないという問題が生ずる。
【０００６】
また、特開２０００−１６３２９４号公報の「データベース管理方法及びその装置並びにプログラムを記録した機械読み取り可能な記録媒体」では、二次記憶上のデータベースに対する参照および更新を主記憶に設けたデータバッファ上で行い、且つ更新されたページのデータベースへの反映を、アプリケーションプログラムによる処理と非同期に行って、一組のデータバッファだけを使用して遅延更新処理が行えるようにし、主記憶の必要容量を削減している。
しかしながら、このデータバアファには、上記特開平１０−１４３４１２号公報と同じく、構造が単純なデータしかおくことができず、高機能の索引ファイルを用いることはできないという問題が生ずる。
【０００７】
データベースシステムを複数のユーザが同時に利用する場合、検索操作と変更操作が非同期に要求されるが、その際にデータの一貫性を保つためにトランザクション処理が用いられる。トランザクション処理については［１］「“トランザクション処理システム入門”　フィリップ・Ａ・バーンスタイン、エリック・ニューマーカー　日経ＢＰ社」に詳しく説明されている。
【０００８】
トランザクションを完全に隔離するとデータの一貫性がどの時点においても保証されるようになるが、同時実行性の低下によって全体のスループットが著しく低下する場合がある。この問題を解決するためにアイソレーションレベルの概念が用いられる。アイソレーションレベルについては、［２］「“Ａ　Ｃｒｉｔｉｑｕｅ　ｏｆ　ＡＮＳＩ　ＳＱＬ　Ｉｓｏｌａｔｉｏｎ　Ｌｅｖｅｌｓ”　Ｈａｌ　Ｂｅｒｅｓｏｎ，　Ｐｈｉｌｉｐ　Ａ　Ｂｅｒｎｓｔｅｉｎ，　Ｊｉｍ　Ｇｒａｙ，　ＪｉｍＭｅｌｔｏｎ，　Ｅｌｉｚａｂｅｔｈ　Ｊ．　Ｏ’Ｎｅｉｌ，　Ｐａｔｒｉｃｋ　Ｅ．　Ｏ’Ｎｅｉｌ　Ｐｒｏｃ．　ＡＣＭ　ＳＩＧＭＯＤ　Ｃｏｎｆ．（Ｊｕｎ．　１９９５）ｐ．１−１０」に詳しく説明されている。
【０００９】
【発明が解決しようとする課題】
上述の従来の技術での問題点を説明するために、複数に分割してある全文検索用データ保持手段（転置ファイル）を纏め上げるマージ操作について考える。
マージ操作は、マージ元の転置ファイル内のデータ量がある閾値に達したことをもとに開始するが、その動作には、その転置ファイルへの挿入操作と同じ一連の動作（フォアグラウンド動作）としてマージを行う同期マージと、挿入操作とは別の動作（バックグラウンド動作）としてマージを行う非同期マージの２種類がある。
非同期マージでは、マージ中の挿入を正しく行うために、マージ対象となる転置ファイルは排他処理しなければならない。そのため、排他処理されている期間、マージ操作と挿入操作とは、互いに処理が遅延してしまい、その結果、挿入操作の応答が低下してしまうことになる。
【００１０】
本発明は、上述の実情を考慮してなされたものであって、非同期マージを行っている際に、挿入操作のレスポンスを低下させず、また、大量の検索要求に対してもトータルなレスポンスを上げることができるデータベース管理システム、データベース管理システムの機能を実行するプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上記の課題を解決するために、本発明の請求項１のデータベース管理システムは、データベースを管理するデータベース管理システムにおいて、データの検索操作の処理は高速だが変更操作の処理は低速な検索向けの第一データ保持手段と、データの検索操作の処理は低速だが変更操作の処理は高速な挿入向けおよび削除向けの複数の第二データ保持手段と、前記第二データ保持手段から第一データ保持手段へデータを転送して、挿入または削除操作で処理された結果を反映するデータ転送手段と、データベースに対する操作要求を実行するデータベース操作要求処理手段と、前記データ転送手段と前記データベース操作要求処理手段の間でデータの一貫性を保証するトランザクション処理手段と、前記複数の第二データ保持手段を、データベースに対する操作要求と非同期マージ処理とに振り分けるファイル切り替え手段とを備え、前記ファイル切り替え手段は、前記複数の第二データ保持手段のいずれか一方が前記第一データ保持手段への非同期マージ処理で使用しているときは、他方をデータベースに対する操作要求で使用するように振り分けることを特徴とする。
【００１２】
また、本発明の請求項２は、請求項１に記載のデータベース管理システムにおいて、３つ以上の前記第二データ保持手段と、データベースに対する操作要求で使用している前記第二データ保持手段のデータ量が閾値を超えたか否かを判定するデータ量判定手段とを備え、前記ファイル切り替え手段は、前記データ量判定手段でデータ量が閾値を超えたと判断された第二データ保持手段をマージ処理に、データベースに対する操作要求で使用する第二データ保持手段を使用していない残りの第二データ保持手段へ切り替えることを特徴とする。
【００１３】
また、本発明の請求項３は、請求項１に記載のデータベース管理システムにおいて、データベースに対する操作要求で使用している前記第二データ保持手段のデータ量が閾値を超えたか否かを判定するデータ量判定手段を備え、前記ファイル切り替え手段は、前記データ量判定手段でデータ量が閾値を超えたと判断された第二データ保持手段をマージ処理で使用し、データベースに対する操作要求で使用する第二データ保持手段を新たに動的に生成して切り替えることを特徴とする。
【００１４】
また、本発明の請求項４は、請求項１、２または３に記載のデータベース管理システムにおいて、設定された時間の経過を監視し、その時間が経過したときにロックの解放を要求するウォッチドッグタイマを備え、前記データベース操作要求処理手段は、検索要求がきた時にウォッチドッグタイマをスタートさせ、前記データ転送手段は、タイマの設定時間になるまで、その間ロックを解くことなく複数の索引単位をまとめてマージ処理し、タイマの設定時間になった場合、マージ処理の排他制御を解いて検索要求に制御を渡すことを特徴とする。
【００１５】
また、本発明の請求項５は、請求項４に記載のデータベース管理システムにおいて、前記ウォッチドッグタイマの設定時間は、検索の遅延が許される最大時間に設定することを特徴とする。
また、本発明の請求項６のプログラムは、コンピュータに、請求項１乃至５のいずれか１に記載のデータベース管理システムの機能を実行させるためのプログラムである。
また、本発明の請求項７の記録媒体は、請求項６に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００１６】
上記のような構成によって、データベースの非同期マージを行っているときに、マージ対象のデータ保持手段とデータベースに対する操作要求の対象となるデータ保持手段とを異なるデータ保持手段となるようにファイルを切り替えることによって、マージ操作と挿入操作との間で排他制御が不要になり、その結果、挿入操作のレスポンスが低下しない。
【００１７】
また、データベースに対する操作要求の対象となるデータ保持手段のデータ量が閾値を超えないように監視し、超えた場合には新たなデータ保持手段へ切り替えるので、パフォーマンス低下が起こらない。
データ量が閾値を超えた場合、動的にデータ保持手段を作成するようにして、無駄にデータ保持手段を生成しておくことがなくなるので、リソースの無駄な消費が起こらない。
【００１８】
また、マージ処理中に大量の検索要求が来ても、許される遅延の最大限の時間内でマージ処理が実行されるので、マージ処理が早目に終了し、その後の検索要求に対して検索に有利なデータ保持手段のみが使われる。
そのため、全体として検索要求に対するトータルなレスポンスを上げることができる。
【００１９】
【発明の実施の形態】
＜システム構成＞
図１は、データベース管理システムの機能構成を説明するためのブロック図である。以下、データベースとして、リレーショナルデータベースを用いて説明するが、他のデータベースに対しても適用可能である。
図１のデータベース管理システムは、データベース操作要求入力手段１、トランザクション処理手段２、データベース操作要求処理手段３、第一データ保持手段４、第二データ保持手段５、データ転送手段６とを備えている。
【００２０】
データベース操作要求入力手段１からデータベースに対する操作要求が入力され、データベース操作要求処理手段３でその操作要求を処理する。
第一データ保持手段４は、データベースの検索操作、およびデータ転送における変更操作で使用される。
第二データ保持手段５は、データベースの挿入操作、削除操作および更新操作、およびデータ転送における削除操作で使われる。
上記の第一データ保持手段４および第二データ保持手段５での処理対象は、例えば、リレーショナルデータベースにおいては、データを参照等するために関連付けて保持している索引ファイルである。
データ転送手段６は、第二データ保持手段５からタプルを読み取って第一データ保持手段４に対するタプルの挿入、更新、削除の操作を実行する。
トランザクション処理手段２は、非同期に要求される検索操作と変更操作をデータの一貫性を保つように実行順序を制御するための排他制御と、変更操作を中止したときにトランザクション開始前の状態に戻すための情報を記録するためのロギングを行う。
以下、さらに各構成要素を詳細に説明する。
【００２１】
（データベース操作要求入力手段）
図２は、データベース管理システムを具体化するシステム構成の一例を示す図で、データベース操作要求入力手段１は、入力端末２５として実現される。データベースを保持するサーバホスト２０は、ＣＰＵ２１、プログラム領域２２ａとデータ領域２２ｂとを有するメモリ２２、およびハードディスク２３がデータバス２４によって接続されている。このサーバホスト２０に対してＬＡＮ２６により複数の入力端末２５が接続可能となっている。この例におけるデータベース操作要求入力手段１は、複数のユーザからのデータベース操作要求を入力できるものとする。
【００２２】
ユーザは、入力端末２５から例えばＳＱＬ文の形式で文字列により表現されたデータベース操作要求を入力する。データベース操作要求は、ＬＡＮ２６を通じてサーバホスト２０に送られ処理される。処理の結果は再びＬＡＮ２６を通じて入力端末２５に送られ、当該入力端末２５のディスプレイに表示するなどしてユーザに知らせられる。
【００２３】
（データベース操作要求処理手段）
図３は、データベース操作要求処理手段３の処理手順の一例を示すフローチャートである。
データベース操作要求の種類によって処理内容が分かれる。この例では、表の各タプルは一意に定まるＩＤ（タプルＩＤ）を付与され、タプルはすべてタプルＩＤで識別される。
【００２４】
データベース操作要求処理手段３がデータベース操作要求処理を受け取ると（ステップＳ１）、挿入操作かどうか判断し（ステップＳ２）、挿入操作の場合は新しいタプルに対してタプルＩＤを取得した後（ステップＳ３）、挿入向けの第二データ保持手段５に対してタプルの挿入操作を実行し（ステップＳ４）、その結果を返す（ステップＳ５）。
【００２５】
ステップＳ２で挿入操作でない場合は、検索向けの第一データ保持手段４、挿入向けおよび削除向けの第二データ保持手段５のそれぞれに検索操作を実行し（ステップＳ６〜Ｓ８）、それぞれの検索結果集合Ｒｒ、Ｒｉ、Ｒｄから最終検索結果集合Ｒ（Ｒ＝Ｒｒ＋Ｒｉ−Ｒｄ；ただし＋は論理和、−は論理差を表す。）を作って結果とする（ステップＳ９）。
【００２６】
ついで、ステップＳ１０で検索操作であれば、その結果を返し（ステップＳ５）、検索操作でなければ、さらに削除操作かどうかを判断し（ステップＳ１１）、削除操作でなければ更新操作として、検索操作と同様の手順で選ばれたタプルに対して新しい値に変更したものを用いて挿入向けの第二データ保持手段５に対してタプルの更新操作を実行し（ステップＳ１５）、その結果を返す（ステップＳ５）。
【００２７】
ステップＳ１１で削除操作である場合は、検索操作と同様な手順で選ばれたタプルがＲｉにある場合には（ステップＳ１２のＹＥＳ）、挿入向けの第二データ保持手段５に対して削除処理を実行し（ステップＳ１３）、その結果を返す（ステップＳ５）。Ｒｉにない場合（ステップＳ１２のＮＯ）、即ちＲｒにある場合には、タプルを削除向けの第二データ保持手段５に対して挿入処理を実行し（ステップＳ１４）、その結果を返して（ステップＳ５）処理を終了する。
【００２８】
（第一データ保持手段）
第一データ保持手段４は、データベース操作要求処理手段３が実行する検索操作、また、データ転送手段６が実行する変更操作で使われる検索向けのデータ保持手段である。
第一データ保持手段４は、検索操作を高速で実行できる代わりに変更操作が比較的低速である。例えば、全文検索を行うことができる全文検索サーバを用いることが考えられる。
【００２９】
（第二データ保持手段）
第二データ保持手段５には、挿入向けと削除向けの２種類のデータ保持手段がある。
挿入向けの第二データ保持手段５は、データベース操作要求処理手段３が実行する挿入操作、削除操作および更新操作で使われる。また、データ転送手段６が実行する削除操作でも使われる。
削除向けの第二データ保持手段５は、データベース操作要求処理手段３が実行する挿入操作で使われる。また、データ転送手段６が実行する削除操作でも使われる。
【００３０】
第二データ保持手段５は、挿入操作や変更操作を高速に実行できる。例えば、ＯＳが管理する通常のファイルを用いることが考えられる。
【００３１】
通常のファイルのように第二データ保持手段５が検索操作を実行できない場合は、保持しているタプルを逐次的に返し、データベース操作要求処理手段３が検索条件を評価（全数検索と呼ぶ）する。
第二データ保持手段５が保持するタプル数は、第一データ保持手段４が保持するタプル数に比べて、非常に少数なので全数検索を行っても応答時間に影響しない。
【００３２】
（データ転送手段）
図４は、データ転送手段６の処理手順の一例を示すフローチャートである。
データ転送手段６によるデータ転送は、挿入向けの第二データ保持手段５からタプルを順次読み込み、その値に従って第一データ保持手段４に対するタプルの挿入あるいは更新の操作を行い、反映が終わったタプルを挿入向けの第二データ保持手段５から削除する。
次に、削除向けの第二データ保持手段５からタプルを順次読み込み、そのタプルを第一データ保持手段４から削除し、反映が終わったタプルを削除向けの第二データ保持手段５から削除するという手順で実行される。
【００３３】
図４において、データ転送手段６が挿入向けの第二データ保持手段５からタプルを得ると（ステップＳ２１）、第一データ保持手段４から同じタプルＩＤのタプルを探し（ステップＳ２２）、同じタプルがあれば（ステップＳ２３のＹＥＳ）、第一データ保持手段４に対するタプルの更新を実行し（ステップＳ２４）、挿入向けの第二データ保持手段５のタプルを削除する（ステップＳ２５）。
同じタプルがなければ（ステップＳ２３のＮＯ）、第一データ保持手段４に対するタプルの挿入を実行し（ステップＳ２９）、挿入向けの第二データ保持手段５のタプルを削除する（ステップＳ２５）。
ステップＳ２５が終了すると、削除向けの第二データ保持手段５からタプルを得て（ステップＳ２６）、第一データ保持手段４のタプルの削除を実行し（ステップＳ２７）、削除向けの第二データ保持手段５のタプルを削除して（ステップＳ２８）、処理を終了する。
【００３４】
（トランザクション処理手段）
トランザクション処理手段２は、非同期に要求される検索操作と変更操作をデータの一貫性を保つように実行順序を制御するための排他制御と、変更操作を中止したときにトランザクション開始前の状態に戻すための情報を記録するためのロギングを行う。
排他制御は複数のユーザから要求されるデータベース操作間の排他制御のほかに、データベース操作要求処理手段３とデータ転送手段６の間の排他制御にも用いられる。
【００３５】
前述の文献［１］で説明される複粒度ロックを用いてさまざまなアイソレーションレベルを実現する。ロックの対象は、表、タプル、ファイルであり、ファイルは第一データ保持手段４、挿入向けおよび削除向けの第二データ保持手段５からなるものとみなすことができる。
排他制御とロギングにおいては、ファイルを構成する第一データ保持手段４および第二データ保持手段５がどういう構造であるかとは無関係にこれらをまとめてひとつのオブジェクトとして扱うことができる。
【００３６】
以下、ＲＥＡＤ　ＣＯＭＭＩＴＴＥＤのアイソレーションレベルを実現する方法について述べる。まず、ロックに関して以下の前提条件がある。
・表にかかるロックは、次のいずれかのモードを持つ。
【００３７】
【表１】
2004013490.tif 000003
【００３８】
・タプルにかかるロックは、Ｓ、Ｘのいずれかのモードを持つ。
・タプルにかかっているＳロックは、参照後にいつでも解除できる。
・タプルにかかっているＸロックは、トランザクションの終了まで解除できない。
・ファイルにアクセスする前後では、ファイルに排他的なラッチをかける。
【００３９】
次に、データベース操作の種類ごとに実現する手順を述べる。
（１）検索操作
０．操作開始前に対象の表にＩＳロックをかける。
１．ファイルにラッチをかける。
２．検索条件に合致するタプルを探す。
３．得られたタプルにＳロックをかける。
４．Ｓロックをかけることができない場合は、ファイルへのラッチを解除して１へ戻る。
５．Ｓロックをかけることができた場合は、タプルを検索結果に加える。
６．タプルへのロックを解除する。
７．ファイルへのラッチを解除する。
【００４０】
（２）挿入操作
０．操作開始前に対象の表にＩＸロックをかける。
１．ファイルにラッチをかける。
２．新たなタプルＩＤを取得する。
３．そのタプルにＸロックをかける。
４．ログにタプル挿入を記録する。
５．ファイルにタプルを挿入する。
６．ファイルへのラッチを解除する。
【００４１】
（３）更新操作
０．操作開始前に対象の表にＩＸロックをかける。
１．ファイルにラッチをかける。
２．更新対象の条件に合致するタプルを探す。
３．得られたタプルにＸロックをかける。
４．Ｘロックをかけることができない場合は、ファイルへのラッチを解除して１へ戻る。
５．Ｘロックをかけることができた場合は、ログにタプル更新を記録する。
６．タプルの更新を実行する。
７．ファイルへのラッチを解除する。
【００４２】
（４）削除操作
０．操作開始前に対象の表にＩＸロックをかける。
１．ファイルにラッチをかける。
２．削除対象の条件に合致するタプルを探す。
３．得られたタプルにＸロックをかける。
４．Ｘロックをかけることができない場合は、ファイルへのラッチを解除して１へ戻る。
５．Ｘロックをかけることができた場合は、ログにタプル削除を記録する。
６．タプルの削除を実行する。
７．ファイルへのラッチを解除する。
【００４３】
トランザクションの終了に際しては、以下の処理を行う。
（１）コミット
変更操作の前に対象の表にＩＸロックがかかっているときに、コミットされた場合は、
１．ログにコミットを記録する。
２．コミットしたトランザクションが要求したロックをすべて解除する。
【００４４】
（２）ロールバック（アボート）
変更操作の前に対象の表にＩＸロックがかかっているときに、ロールバックした場合は、
１．ログにロールバックを記録する。
２．ログを参照しながら、データ操作をＵＮＤＯする。その際、必要なファイルへのラッチを行う。
３．ロールバックしたトランザクションが要求したロックをすべて解除する。
【００４５】
次に、マージの基本的動作について説明する。このマージは、デーモンによって、次の３つのファイルを用いて、バックグラウンドで小転置ファイルから大転置ファイルへのマージを実施する。
大転置ファイル：マージ先のファイル
挿入用小転置ファイル：挿入用マージ元のファイル
削除用小転置ファイル：削除用マージ元のファイル
【００４６】
以下、デーモンの動作概要を説明する。このデーモンには、３つのスレッドがあり、エグゼキュータと同じスレッドで動作する部分をメインスレッド、マージを実行するスレッドをデーモンスレッド、常時マージを管理するスレッドをタイマースレッドという。
【００４７】
メインスレッドの基本的動作は、小転置ファイルに挿入したとき、小転置ファイルのファイルサイズが既定値を超えたかを判断し、既定値を超えた場合、デーモンスレッドに対象の大転置ファイルと２つの小転置ファイルのファイルＩＤを渡してマージの実行を指示し、サイズに起因するマージを実行する。
タイマースレッドの基本動作は、一定の時間間隔で時刻をチェックし、指定された時刻を過ぎたかを判断し、時刻が過ぎていれば、すべての大転置ファイルについて、デーモンスレッドに対象の大転置ファイルと２つの小転置ファイルのファイルＩＤを渡してマージの実行を指示し、定時刻に起因するマージを実行する。
【００４８】
デーモンスレッドは、起動の指示を受けると、以下の一連の動作を行って、転置ファイルのマージを実行する。
１．暗黙のトランザクションを開始する。
２．メタデータベース全体に（操作対象：タプル、操作内容：読み込み）ロックをかける。
３．メタデータベースのデータベース表に（操作対象：タプル、操作内容：読み込み）ロックかける。
４．メタデータベースのデータベース表の、操作対象のデータベースに対応するタプルに（操作対象：タプル、操作内容：読み込み）ロックをかける。
５．データベースに（操作対象：タプル、操作内容：読み書き）ロックをかける。
６．表に（操作対象：タプル、操作内容：読み書き）ロックをかける。
７．転置ファイルをマージ中状態にする。
８．小転置ファイルの転置リストの数だけマージを行う。
９．マージした小転置ファイルを空にする。
１０．転置ファイルのマージ中状態を解除する。
１１．トランザクションを終了する。
【００４９】
以下、本発明の一実施形態に係るデータベース管理システムを、上述したデータベース管理システムをもとに説明する。
＜実施形態１＞
図５は、本実施形態１のデータベース管理システムの機能構成を示すブロック図である。
図５において、データベース管理システムは、データベース操作要求入力手段１、トランザクション処理手段２、データベース操作要求処理手段３、第一データ保持手段４、第二データ保持手段５、データ転送手段６、ファイル切り替え手段７とを備えている。
上述した図１のデータベース管理システムと同じ機能の構成要素については同じ符号を付し、本実施形態１では、その相違点のみ説明する。
【００５０】
まず、第二データ保持手段（挿入向けおよび削除向けの転置ファイル）５を複数個用意する。
ファイル切り替え手段７は、複数の第二データ保持手段５がデータベース操作用か、またはマージ処理用かのいずれかで使われているかを判断し、データベースへの操作はデータベース操作用の第二データ保持手段５へ要求を転送し、マージ処理用の第二データ保持手段５の場合にはマージ処理の際に第一データ保持手段へ転送するように切り替える。
【００５１】
図５において、第一データ保持手段４は検索向けのデータ保持手段であり、第二データ保持手段５は挿入向けおよび削除向けのデータ保持手段を意味するものとする。
図６は、このファイル切り替え手段７の動作を説明するための図である。
まず、第二データ保持手段（挿入向けおよび削除向け）５を２組用意する。
ファイル切り替え手段７は、一方の第二データ保持手段５をデータベース操作用に使用している場合は、他方の第二データ保持手段５をマージ処理用に使用するように２組の第二データ保持手段５を切り替える。
【００５２】
この第二データ保持手段５の用途を切り替えるタイミングは、上述したマージ処理におけるデーモンスレッドの動作のうち「７．転置ファイルをマージ中状態にする」の個所で行い、第一データ保持手段（大転置ファイル）４をマージ処理中状態にし、データベース操作用の第二データ保持手段５をマージ処理用へ、マージ処理用の第二データ保持手段５をデータベース操作用へ切り替え、その後で、マージ処理用の第二データ保持手段（小転置ファイル）５のみをマージ中状態にする。
上述の「８．小転置ファイルの転置リストの数だけマージを行う」、「９．マージした小転置ファイルを空にする」における操作は、マージ処理用の第二データ保持手段５について実施される。
【００５３】
＜実施形態２＞
上述の実施形態１では、データベースに対する操作要求で挿入操作が一度に多量に発生すると、データベース操作用の第二データ保持手段５へのデータ量が容量を越えてなお挿入が続き、パフォーマンス低下を招く恐れがある。
実施形態２は、第二データ保持手段を３つ以上備えて、データベースの操作用の第二データ保持手段５が与えた閾値を超えたときに、他の使用していない第二データ保持手段５へ切り替えるようにする。
【００５４】
図７は、本実施形態２のデータベース管理システムの機能構成を示すブロック図である。
図７において、データベース管理システムは、データベース操作要求入力手段１、トランザクション処理手段２、データベース操作要求処理手段３、第一データ保持手段４、（挿入向けおよび削除向けの）第二データ保持手段５、データ転送手段６、ファイル切り替え手段７、データ量判定手段８とを備えている。
上述した図１および実施形態１のデータベース管理システムと同じ機能の構成要素については同じ符号を付し、本実施形態２では、その相違点のみ説明する。
【００５５】
図８は、このファイル切り替え手段７の動作を説明するための図である。
まず、第二データ保持手段（挿入向けおよび削除向け）５を３つ以上用意する。また、この用意された第二データ保持手段５の個数分の参照キュー６０を用意し、この参照キュー６０の１つ１つから第二データ保持手段５を参照するように構成する。また、この参照キュー６０の先頭位置で参照される第二データ保持手段５はデータベース操作用の第二データ保持手段５とし、残りをマージ処理用の第二データ保持手段５および空の第二データ保持手段５として使用する。
【００５６】
データ量判定手段８は、データベース操作用の第二データ保持手段５の容量を監視しており、予め与えられた閾値以上になったときには、データベース操作用の空の第二データ保持手段５を要求するようにファイル切り替え手段７へ知らせる。
ファイル切り替え手段７は、データ量判定手段８から空の第二データ保持手段５を要求されたときには、マージ処理用の第二データ保持手段５のうち空の第二データ保持手段５を参照キュー６０の先頭へ移し、先頭にあったデータベース操作用の第二データ保持手段５を参照キュー６０の２番目以降へ移動させる。これによって、データベース操作用とマージ処理用の第二データ保持手段５を切り替えることができる。
【００５７】
この第二データ保持手段５の用途を切り替えるタイミングは、上述したマージ処理におけるデーモンスレッドの動作のうち「７．転置ファイルをマージ中状態にする」の個所で行い、上述のようにデータベース操作用の第二データ保持手段５が与えられた閾値を超えた場合、参照キュー６０の順序を並び替え、データベース操作用の第二データ保持手段５をマージ処理用の第二データ保持手段５へ、マージ処理用の空の第二データ保持手段５をデータベース操作用の第二データ保持手段５へ切り替え、その後、マージ処理用の第二データ保持手段５のみをマージ中状態にする。
上述の「８．小転置ファイルの転置リストの数だけマージを行う」、「９．マージした小転置ファイルを空にする」における操作は、マージ処理用の第二データ保持手段５について実施される。
【００５８】
＜実施形態３＞
上記実施形態２では、第二データ保持手段５が予め必要とされる最大個数用意していたので、データベースに対する操作要求が一度に発生しなければ無駄な第二データ保持手段５を保持することになり、リソースの無駄が発生する。
本実施形態３は、必要に応じて動的に第二データ保持手段を確保するようにした。
本実施形態３の機能構成は、実施形態２と同様であるから、以下では、相違する点についてのみ説明する。
【００５９】
図９は、このファイル切り替え手段７を説明するための図である。
本実施形態３では、現在使用中の第二データ保持手段５を登録する参照キュー７０と、その参照キュー７０に登録されている個数を保持する参照キューの個数８０を備えている。
この参照キュー７０の先頭位置で参照される第二データ保持手段５をデータベース操作用とし、残りをマージ処理用として使用する。
ファイル切り替え手段７は、データ量判定手段８で空の第二データ保持手段５を要求されたときには、新しい第二データ保持手段５を動的に生成し、参照キュー６０の先頭位置へ設定し、先頭位置にあったデータベース操作用の第二データ保持手段５を参照キュー６０の２番目以降へ移動させて、参照キュー７０を拡大し、参照キューの個数８０を１つ進め、データベース操作用とマージ処理用の第二データ保持手段５を切り替える。
この第二データ保持手段５の用途を切り替えるタイミングは、実施形態２と同様であるが、上述の「９．マージした小転置ファイルを空にする」操作では、マージ処理の終了した第二データ保持手段５と参照キュー７０の参照を削除し、参照キューの個数８０を一つ減少させる。
【００６０】
＜実施形態４＞
データベース管理システムでは、マージ処理中であっても検索を行えるようにするために、マージ処理の単位は索引単位ごとに行っている。
検索の場合、第一データ保持手段４とマージ処理用の第二データ保持手段５のすべてを利用することになるため、その１つの索引単位に対するマージ処理の前後で排他制御が必須となる。
【００６１】
また、検索要求を処理する場合、マージ処理用の第二データ保持手段５にデータが残っている状態では、検索処理のパフォーマンス上不利になるので、検索のためにはマージ処理済の状態にするのが望ましい。
しかし、マージ処理中に大量の検索要求がくると、検索に対する排他制御をしているためマージ処理が進まず、結果として検索処理のパフォーマンス上不利となるマージ処理用のデータが残っている状態が続いてしまう。このため、トータルな検索パフォーマンスが低下してしまう。
【００６２】
本実施形態４では、トランザクション処理手段の排他機構を利用して、検索処理とマージ処理との排他制御を行うようにする。これにより、大量の検索要求がきた場合でも、早目にマージ処理を終了させ、全体として検索要求に対するトータルなレスポンスを上げることができる。
【００６３】
図１０は、実施形態４のデータベース管理システムの機能構成を示すブロック図である。この実施形態４のデータベース管理システムは、実施形態１を基にしているが、実施形態１の代わりに、実施形態２または実施形態３を基にして構成するようにしてもよい。
図１０において、データベース管理システムは、データベース操作要求入力手段１、トランザクション処理手段２、データベース操作要求処理手段３、第一データ保持手段４、第二データ保持手段５、データ転送手段６、ファイル切り替え手段７、ウォッチドッグタイマ９とを備えている。
上述した図１および実施形態１のデータベース管理システムと同じ機能の構成要素については同じ符号を付し、本実施形態４では、その相違点のみ説明する。以下、図１１，１２，１３のフローチャートをもとに実施形態４の動作を説明する。
【００６４】
（１）検索処理
図１１は、データベース操作要求処理手段３における検索要求の処理手順を示すフローチャートである。
検索要求を受けたデータベース操作要求処理手段３は、まず、検索処理の開始時にウォッチドッグタイマ９に検索で遅延可能な最大時間を設定する（ステップＳ３１）。
その後で、トランザクション処理手段２の排他機構に検索処理のための排他制御を依頼する（ステップＳ３２）。
ウォッチドッグタイマ９で設定した遅延可能な最大時間後に検索処理の排他制御が成功して、検索処理が実行可能となる。
このときに、ウォッチドッグタイマ９をクリアし（ステップＳ３３）、データベースに対して検索を実行させる（ステップＳ３４）。
検索が終了すると、検索処理のための排他制御の解除を排他機構へ依頼して終了する（ステップＳ３５）。
【００６５】
図１２は、ウォッチドッグタイマ９の処理手順を示すフローチャートである。ウォッチドッグタイマ９は、データベース操作要求処理手段３からタイマに遅延可能な最大時間が設定されるまで待機している（ステップＳ４１）。
タイマに時間が設定されると（ステップＳ４１のＹＥＳ）、その設定された時間になるまでカウントダウンしながら、ｓｌｅｅｐする（ステップＳ４２、Ｓ４３）。
タイマが設定された時間になった場合（ステップＳ４３のＹＥＳ）、マージ処理に対して、検索処理のために排他制御を解放するように要求をして、次のタイマに時間の設定があるまで待機する（ステップＳ４４，Ｓ４１）。
【００６６】
（２）マージ処理
図１３は、データ転送手段６におけるマージ処理の処理手順を示すフローチャートである。
マージ処理に対してデータ転送手段６は、トランザクション処理手段２の排他機構に対してマージ処理のための排他制御を依頼して、マージ処理中の検索要求を一時禁止しておく（ステップＳ５１）。
マージ処理に対する排他制御が成功した後、ウォッチドッグタイマ９からのロック解放要求の有無を検査し（ステップＳ５２）、解放要求がなければ（ステップＳ５２のＮＯ）、マージ処理の単位となる転置リストをマージ処理用の（挿入向けおよび削除向けの）第二データ保持手段５から取り出し、１索引単位で第一データ保持手段４へマージを実行する（ステップＳ５３）。
これを転置リストが無くなるまで、ステップＳ５２から繰り返す（ステップＳ５４のＹＥＳ）。
また、ステップＳ５４で索引単位の残りがなくなった場合（ステップＳ５４のＮＯ）、マージ処理が終了したとして、排他機構にマージ処理のための排他制御を解放するように依頼し、終了する（ステップＳ５５）。
【００６７】
一方、ステップＳ５２でウォッチドッグタイマ９からのロック解放要求があった場合（ステップＳ５２のＹＥＳ）、１索引単位の転置リストのマージ処理を終了した時点で、マージ処理のための排他制御を解放するように排他機構へ以来する（ステップＳ５６）。
一旦、マージ処理を中断し、検索処理のためにＣＰＵを解放し（ステップＳ５７）、マージ処理のための排他制御を再度かけなおすために、ステップＳ５１へ戻る。
これにより、ＣＰＵを解放している間に検索が実行され、その間は転置リストのマージを実行していないため、安全に検索処理を実行することができる。
【００６８】
＜実施形態５＞
さらに、本発明は上述した実施形態のみに限定されたものではない。上述した各実施形態のデータベース管理システムを構成する機能をそれぞれプログラム化し、あらかじめＣＤ−ＲＯＭ等の記録媒体に書き込んでおき、このＣＤ−ＲＯＭをＣＤ−ＲＯＭドライブのような媒体駆動装置を搭載したコンピュータに装着して、これらのプログラムをコンピュータのメモリあるいは記憶装置に格納し、それを実行することによって、本発明の目的が達成されることは言うまでもない。この場合、記録媒体から読出されたプログラム自体が上述した各実施形態の機能を実現することになり、そのプログラムおよびそのプログラムを記録した記録媒体も本発明を構成することになる。
【００６９】
なお、記録媒体としては半導体媒体（例えば、ＲＯＭ、不揮発性メモリカード等）、光媒体（例えば、ＤＶＤ、ＭＯ、ＭＤ、ＣＤ−Ｒ等）、磁気媒体（例えば、磁気テープ、フレキシブルディスク等）のいずれであってもよい。
【００７０】
また、ロードしたプログラムを実行することにより上述した各実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、オペレーティングシステム等が実際の処理の一部または全部を行い、その処理によって上述した各実施形態の機能が実現される場合も含まれる。
【００７１】
また、上述したプログラムをサーバコンピュータの磁気ディスク等の記憶装置に格納しておき、インターネット等の通信網で接続されたユーザのコンピュータからダウンロード等の形式で頒布する場合、このサーバコンピュータの記憶装置も本発明の記録媒体に含まれる。
【００７２】
【発明の効果】
以上説明したように本発明によれば、データベースの非同期マージを行っているときに、マージ対象のデータ保持手段とデータベースに対する操作要求の対象となるデータ保持手段とを異なるデータ保持手段となるようにファイルを切り替えることによって、マージ操作と挿入操作と排他制御が不要になり、その結果、挿入操作のレスポンスが低下しない。
【００７３】
また、データベースに対する操作要求の対象となるデータ保持手段のデータ量が閾値を超えないように監視し、超えた場合には新たなデータ保持手段へ切り替えるので、パフォーマンス低下が起こらない。
データ量が閾値を超えた場合、動的にデータ保持手段を作成するようにして、無駄にデータ保持手段を生成しておくことがなくなるので、リソースの無駄な消費が起こらない。
【００７４】
また、マージ処理中に大量の検索要求が来ても、許される遅延の最大限の時間内でマージ処理が実行されるので、マージ処理が早く終了し、その後の検索要求に対して検索に有利なデータ保持手段のみが使われる。
そのため、全体として検索要求に対するトータルなレスポンスを上げることができる。
【図面の簡単な説明】
【図１】データベース管理システムの機能構成を説明するためのブロック図である。
【図２】データベース管理システムを具体化するシステム構成の一例を示す図である。
【図３】データベース操作要求処理手段の処理手順の一例を示すフローチャートである。
【図４】データ転送手段の処理手順の一例を示すフローチャートである。
【図５】実施形態１のデータベース管理システムの機能構成を示すブロック図である。
【図６】実施形態１のファイル切り替え手段の動作を説明するための図である。
【図７】実施形態２のデータベース管理システムの機能構成を示すブロック図である。
【図８】実施形態２のファイル切り替え手段の動作を説明するための図である。
【図９】実施形態３の他のファイル切り替え手段の動作を説明するための図である。
【図１０】実施形態４のデータベース管理システムの機能構成を示すブロック図である。
【図１１】データベース操作要求処理手段における検索処理の処理手順を示すフローチャートである。
【図１２】ウォッチドッグタイマの処理手順を示すフローチャートである。
【図１３】データ転送手段におけるマージ処理の処理手順を示すフローチャートである。
【符号の説明】
１…データベース操作要求入力手段、２…トランザクション処理手段、３…データベース操作要求処理手段、４…第一データ保持手段、５…（挿入向けおよび削除向けの）第二データ保持手段、６…データ転送手段、７…ファイル切り替え手段、８…データ量判定手段、９…ウォッチドッグタイマ、２０…サーバホスト、２１…ＣＰＵ、２２…メモリ、２２ａ…プログラム領域、２２ｂ…データ領域、２３…ハードディスク、２４…データバス、２５…入力端末、２６…ＬＡＮ、６０，７０…参照キュー、８０…参照キューの個数。
【図１】
2004013490.tif 000004
【図２】
2004013490.tif 000005
【図３】
2004013490.tif 000006
【図４】
2004013490.tif 000007
【図５】
2004013490.tif 000008
【図６】
2004013490.tif 000009
【図７】
2004013490.tif 000010
【図８】
2004013490.tif 000011
【図９】
2004013490.tif 000012
【図１０】
2004013490.tif 000013
【図１１】
2004013490.tif 000014
【図１２】
2004013490.tif 000015
【図１３】
2004013490.tif 000016