(57)【要約】【課題】複数システム間でのデータベース共用システムにおいて、通信によるオーバーヘッドを抑え大量データの検索を可能とするデータベース管理方法を提供すること。【解決手段】検索に必要な全てのロック資源へのロックを検索要求元データベース管理システムで実行してから、必要なロック資源情報のみをロックマネジャデータベース管理システムへ一括転送することで通信によるオーバーヘッドを削減する。また、マネジャデータベース管理システムへの一括転送後に追加されたデータに対して追加ロックを行うことで、データベースの整合性を保ちながらアクセスすることを可能とする。更に、検索終了時に検索要求元データベース管理システムでアンロックしてから、必要なロック資源情報のみをロックマネジャデータベース管理システムへ一括転送することで通信によるオーバーヘッドを削減する。【選択図】  図１
2004288079.tif 000002
【特許請求の範囲】
【請求項１】
データベースを管理するデータベース管理手段を複数有し、前記複数のデータベースをデータベース管理手段間へアクセスを制御し、当該複数のデータベースのロック制御を行うロック管理手段とを有するデータベース管理システムにおけるデータベース管理方法において、
第１のデータ検索要求を受け付けたときに前記複数のデータベースにおける検索対象となる複数のデータをロックするために当該複数のデータの格納エリア情報を前記ロック管理手段へ登録し、
第２のデータ検索要求を受け付けたとき、前記第２のデータ検索要求で検索対象となる複数のデータのうち前記ロック管理情報に登録されていないものについては当該データをロックするために前記ロック管理情報に登録することを特徴とするデータベース管理方法。
【請求項２】
第１の検索要求に対する検索対象データのロック後に、他のデータベース管理手段によって追加されたデータに対してを検索する時に、該追加されたデータをロック管理手段へ追加登録することを特徴とするデータベース管理方法。
【請求項３】
データベースを管理するデータベース管理手段を複数有し、前記複数のデータベースをデータベース管理手段間へアクセスを制御し、当該複数のデータベースのロック制御を行うロック管理手段とを有するデータベース管理システムにおいて、
第１のデータ検索要求を受け付けたときに前記複数のデータベースにおける検索対象となる複数のデータをロックするために当該複数のデータの格納エリア情報を前記ロック管理手段へ登録する手段と、
第２のデータ検索要求を受け付けたとき、前記第２のデータ検索要求で検索対象となる複数のデータのうち前記ロック管理情報に登録されていないものについては当該データをロックするために前記ロック管理情報に登録する手段とを備えたことを特徴とするデータベース管理システム。
【請求項４】
第１の検索要求に対する検索対象データのロック後に、他のデータベース管理手段によって追加されたデータに対してを検索する時に、該追加されたデータをロック管理手段へ追加登録する手段を備えたことを特徴とする第３項記載のデータベース管理システム。
【請求項５】
データベースを管理するデータベース管理手段を複数有し、前記複数のデータベースをデータベース管理手段間へアクセスを制御し、当該複数のデータベースのロック制御を行うロック管理手段とを有するデータベース管理システムにおけるデータベース管理プログラムにおいて、
第１のデータ検索要求を受け付けたときに前記複数のデータベースにおける検索対象となる複数のデータをロックするために当該複数のデータの格納エリア情報を前記ロック管理手段へ登録するステップと、
第２のデータ検索要求を受け付けたとき、前記第２のデータ検索要求で検索対象となる複数のデータのうち前記ロック管理情報に登録されていないものについては当該データをロックするために前記ロック管理情報に登録するステップとを有することを特徴とするデータベース管理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
複数のデータベース管理システムから構成されるシステムにて共通リソースであるデータベースを共用アクセスするのデータベース管理技術に関する。
【０００２】
【従来の技術】
従来の複数のデータベース管理システム間でデータベースを共用する方式として、ロック制御（ロック、アンロック）を検索もしくは更新処理を要求したデータベース管理システムと複数のシステム間でのロック制御を管理するロックマネジャデータベース管理システムの両者で行い、既に占有しているロック資源に対するロックマネジャデータベース管理システムへのメッセージトラフィックを削減するのような方式は特開平５−１３４９１５号に開示されている。
【０００３】
【特許文献１】
特開平５−１３４９１５号公報
【０００４】
【発明が解決しようとする課題】
しかしながら、特許文献１に記載の技術は、既に占有しているロック資源においてはロックマネジャデータベース管理システムへのメッセージトラフィックを削減することが可能であるが、対象となるロック資源数分のロックマネジャデータベース管理システムへの通信が必要となるため、大量のデータの検索を行う場合には対象となるロック資源数も大量となり、システム間でデータベースを共用しないシステムに比べて通信回数の増加によるオーバーヘッドが大きくなる。
【０００５】
本発明の目的は、複数のシステム間でデータベースを共用する場合に、既に占有しているロック資源のロックマネジャデータベース管理システムへのメッセージトラフィックを削減するデータベース管理方法およびシステムを提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、本発明は、複数のデータベース管理システムとそれぞれを結びつける通信装置と複数のデータベース管理システムがデータを共有する複数のファイル装置から構成されるシステム間データベース共有システムにおいて、データ検索時に検索対象となる複数のデータのロック資源をデータ検索要求元データベース管理システムで全てロックしてから、複数システム間でのロック制御を管理するロックマネジャデータベース管理システムへの通信が必要なロック資源だけをロックマネジャデータベース管理システムへ一括転送することで通信回数および通信量の増加によるオーバーヘッドを削減することを特徴とする。
【０００７】
更に、本発明は、上記方式によるデータ検索時、ロックマネジャデータベース管理システムへの一括転送によるロックを行った後に他のトランザクションからの更新要求によって追加されたデータや一括ロック時に削除中であったデータに対しての整合性を確保するために、一括ロック後のデータの存在チェックや一括ロック管理テーブルへの登録チェックを行い、必要に応じてロックマネジャデータベース管理システムへ後から追加されたデータのロック資源の追加ロックを行うことを特徴とする。
【０００８】
更に、本発明は、上記方式によるデータ検索において、ロックの有効期間がトランザクション終了までロックを保持しない指定がされている場合、または、更新との競合によって一括ロック後に列値が変更され検索対象から外れた場合などに、その検索で占有した複数のロック資源のアンロックをデータ検索要求元データベース管理システムで行った後、ロックマネジャデータベース管理システムでのアンロックが必要なロック資源のみをロックマネジャデータベース管理システムへ一括転送することによって、通信回数および通信量の増加によるオーバーヘッドを削減するを特徴とする。
【０００９】
【発明の実施の形態】
以下、本発明を実施する場合の一形態を図面を参照して具体的に説明する。
図１は、本発明の実施の一形態のシステム間データベース共用システムの構成を示すブロック図である。本システム間データベース共用システムは、図１に示すように、システム間のロック制御（ロックおよびアンロック）を管理するロックマネジャデータベース管理システム１と、データ検索要求や更新要求等を実行するデータベース管理システム２およびデータベース管理システム３と、データベース管理システム２およびデータベース管理システム３とロックマネジャデータベース管理システム１間の通信を行う通信装置４および通信装置５と、データベース管理システム２およびデータベース管理システム３からアクセス可能なデータを格納するデータファイル６とインデックスを格納するインデックスファイル７からなっている。
【００１０】
ロックマネジャデータベース管理システム１は、ロック制御プログラム１１を有しており、ロック制御プログラム１１ではデータベース管理システム２またはデータベース管理システム３から通信装置４または通信装置５を介してロック転送情報が通知された場合、ロック転送情報から対象となるロック資源に対してロック制御を行う。
【００１１】
データベース管理システム２およびデータベース管理システム３はロック制御プログラム２１およびロック制御プログラム３１、ロック要求管理部２２およびロック要求管理部３２、データベースアクセス部２３およびデータベースアクセス部３３、ユーザプログラム２４およびユーザプログラム３４をそれぞれ有しており、各データベース管理システムのユーザプログラムから検索または更新のデータベースアクセス要求があると、検索または更新に関係なく、データベース管理システム内のロック要求管理部が同一データベース管理システム内のロック制御プログラムに対してロック制御要求を行い、ロック制御プログラムがロック資源に対する同一データベース管理システム内でのロック処理を行う。また、各ロック要求管理部では、ロック制御プログラムから同一データベース管理システムでのロックのリターン情報を受け取り、そのリターン情報を元にロックマネジャデータベース管理システム１に対してロック制御の要求を行う必要があるか判断し、必要であれば通信装置４または通信装置５を介してロックマネジャデータベース管理システム１に対してロック制御要求を行う。同様に、データベースアクセス要求のあったデータベース管理システム内のデータベースアクセス部がインデックスファイル６およびデータファイル７に直接アクセスし、データベースの検索または更新を行う。
【００１２】
通信装置４および通信装置５はデータベース管理システム２およびデータベース管理システム３からロックマネジャデータベース管理システム１へロック制御要求があった場合に必要なロック制御転送情報を通信し、ロックマネジャデータベース管理システム１でロック制御が完了した場合にロックマネジャデータベース管理システム１からのロック制御完了報告を要求元データベース管理システムに転送する。
【００１３】
データファイル６は複数のデータページを有しており、更に各データページは表を構成する複数の列の値を集合させた行データから構成された行を有している。図１に示すようにデータファイル６はデータページ６１からデータページ６ｎ（ｎ≧２の整数）までを有しており、データページ６１には行データを持つ行６１１から行６１ｍ（ｍ≧２の整数）までが表への格納順に格納されており、同様にデータページ６ｎには行６ｎ１から行６ｎｍまでが表への格納順に格納されている。
【００１４】
インデックスファイル７は複数のインデックスページを有しており、更に各インデックスページは行データの主キーとなる列値によって構成されるキー値と行データの格納位置を示す行アドレスから構成されるインデックスエントリを有しており、これらのインデックスページによってＢ木が構成されている。図１に示すようにインデックスファイル７はインデックスページ７１からインデクスページ７ｐ（ｐ≧２の整数）までを有しており、インデックスページ７１にはインデックスエントリ７１１からインデックスエントリ７１ｑ（ｑ≧２の整数）までがキー値が昇順になるように格納されており、同様にインデックスページ７ｐにはインデックスエントリ７ｐ１からインデックスエントリ７ｐｑまでがキー値が昇順になるように格納されている。更にこの時、インデックスページ７１からインデックスページ７ｐ内で全てのキー値が昇順になるように、インデックスページ７１からインデックスページ７ｐまでがキー値順にインデックスページ間のポインタでチェーン付けされている。
【００１５】
図１のシステム間データベース共用システムにおいてロック制御を行う場合、ロックマネジャデータベース管理システム内のロック制御プログラム１１でのロック制御は、ロック転送情報の要求コードがロック（Ｌ）であれば、ロック転送情報のロックモードを参照し、別のトランザクションによる共有モードのロックだけを許可する共有（ＰＲ）モードもしくは別のトランザクションによるいかなるモードのロックも許可しない占有（ＥＸ）モードのどちらかで対象となるロック資源をロックし、ロック要求を行ったデータベース管理システム２またはデータベース管理システム３に対してロック完了報告を通信装置４または通信装置５を介して行う。このとき、既にＰＲモードでロックしているロック資源に対するＥＸモードでのロック要求である場合、ＥＸモードでのロックに遷移させる。また、ロック制御情報の要求コードがアンロック（Ｕ）であれば、対象となるロック資源の占有を解除（アンロック）し、アンロック要求を行ったデータベース管理システム２またはデータベース管理システム３に対して通信装置４または通信装置５を介してアンロック完了報告を行う。
【００１６】
また、データベースのアクセス要求を行ったデータベース管理システム内のロック制御プログラム２１またはロック制御プログラム３１では、図２に示すようなトランザクション毎かつロック資源毎のロックモードおよびロック回数を管理するロック情報８１からロック情報８ｒ（ｒ≧２の整数）を有するロック管理テーブル８を作成し、ロック制御を管理する。ロック要求管理部からロック要求が行われた場合、ロック管理テーブル８をサーチし、そのトランザクションからのそのロック資源に対するロックがまだ行われていないのであれば、要求されたロックモードでその資源をロックし、トランザクション毎かつロック資源毎のロックモードおよびロック回数の初期値をロック管理テーブル８へ登録してから、ロック要求管理部にロック完了報告を行う。既にＰＲモードでロックしているロック資源に対するＥＸモードでのロック要求であれば、ＥＸモードでのロックに遷移させ、ロック管理テーブル８に登録されているそのロック資源のロックモードの更新およびロック回数のカウントアップを行ってからロック要求管理部にロック完了報告を行う。そうでない、即ち、そのロック資源を要求したロックモードで既にロックしている場合もしくは既にＥＸモードでロックしているロック資源に対しＰＲモードでロック要求をしていたのであれば、ロック管理テーブル８に登録されているそのロック資源のロック回数のカウントアップのみを行い、ロック要求管理部に対してロック完了報告ではなくロック済み報告を行う。
【００１７】
更に、ロック制御プログラム２１またはロック制御プログラム３１では、ロック要求管理部からアンロック要求が行われたときに、ロック管理テーブル８に登録されているそのロック資源のロック回数を参照し、ロック回数が初期値であれば、そのロック資源に対するアンロックを行い、ロック管理テーブル８から削除した後ロック要求管理部にアンロック完了報告を行う。ロック回数が初期値以外であれば、アンロックは行わずに、ロック管理テーブル８に登録されているそのロック資源のロック回数のカウントダウンのみを行い、ロック要求管理部に対してアンロック完了報告ではなくロック未解除報告を行う。
【００１８】
複数トランザクションから排反するロックモードで同一ロック資源に対するロック要求が行われた場合、後からロック要求を行ったトランザクションは先にロック要求を行ったトランザクションが、アンロックもしくはコミットまたはロールバックによってそのロック資源がアンロック完了となるまでロック待ち状態となる。
【００１９】
図３は、データファイル６およびインデックスファイル７におけるデータおよびインデックスの構造の具体的な例である。データファイル６のデータページ６１、データページ６２およびデータページ６３には、数値型データ列１と文字型データ列２からなる行が格納されている。データページ６１には、列１の値が‘７００’で列２の値が‘学校’である行６１１および列１の値が‘３００’で列２の値が‘病院’である行６１２が格納され、同様に、データページ６２には、列１の値が‘９００’で列２の値が‘消防署’である行６２１および列１の値が‘４００’で列２の値が‘図書館’である行６２２が、データページ６３には、列１の値が‘１００’で列２の値が‘区役所’である行６３１および列１の値が‘６００’で列２の値が‘警察署’である行６３２がそれぞれ格納されている。またインデックスファイル７のインデックスページ７１、インデックスページ７２およびインデックスページ７３にはデータファイル６に格納される表の列１をキーとしたインデックスエントリがキー値が昇順になるように格納されている。インデックスページ７１には、キー値が‘１００’で列１の値が１００である行６３１の格納位置を示すデータページのページ番号とそのページ内での格納順番を１からの連続番号で割り振ったページ内通番からなる行アドレスが‘６３−１’であるインデックスエントリ７１１およびキー値が‘３００’で行アドレスが‘６１−２’のインデックスエントリ７１２が格納され、同様に、インデックスページ７２には、キー値が‘４００’で行アドレスが‘６２−２’のインデックスエントリ７２１およびキー値が‘６００’で行アドレスが‘６３−２’のインデックスエントリ７２２が、インデックスページ７３には、キー値が‘７００’で行アドレスが‘６１−１’のインデックスエントリ７３１およびキー値が‘９００’で行アドレスが‘６２−１’のインデックスエントリ７３２がそれぞれ格納されている。
【００２０】
更に図４は、図３のデータファイル６およびインデックスファイル７の表およびインデックスに対して列１が‘５００’で列２が‘工場’である行６４１およびキー値が‘５００’で行アドレスが‘６４−１’であるインデックスエントリ７２３が追加された図である。このときデータファイル６では格納順に行が格納されるために、行６４１はデータページ６４に格納される。これに対しインデックスファイル７ではキー値が昇順になるようにインデックスエントリが格納されるために、インデックスエントリ７２３はインデックスページ７２のキー値が‘４００’のインデックスエントリ７２１とキー値が‘６００’のインデックスエントリ７２２の中間に格納される。
【００２１】
以下、データファイル６およびインデックスファイル７で管理している値が図３または図４の場合を例にとり、データベース検索の具体的な処理手順を説明する。図５、図６、図７および図８は、システム間データベース共用システムにおいてデータベース管理システム２またはデータベース管理システム３からキー値の順にデータを検索する場合のフローチャートである。また、図９は図３のデータおよびインデックスを検索するときにロック要求管理部によって作成される一括ロックを管理するための一括ロック管理テーブル９１および、ロックマネジャデータベース管理システム１に一括してロック要求を行うためのロック転送情報９２である。一括ロック管理テーブル９１は一括ロックを開始するときのインデックスエントリのキー値情報９１１１と行アドレス情報９１１２を退避する一括ロック開始位置情報９１１、ロックマネジャデータベース管理システム１への一括転送を行ったときのインデックスエントリのキー値情報９１２１と行アドレス情報９１２２を退避する一括ロック終了位置情報９１２、およびその一括ロックでロックしているロック資源毎の検索要求元データベース管理システム内でのロック回数（９１３１、９１４１、９１５１）、そのロック資源で占有しているデータページ内の行をいくつ取り出したかを示す取り出し回数（９１３２、９１４２、９１５２）およびロック資源名称（９１３３、９１４３、９１５３）からなるロック情報（９１３、９１４、９１５）を有している。一括転送情報９２はロックマネジャデータベース管理システム１に要求するロック制御がロック（Ｌ）またはアンロック（Ｕ）であるかを示す要求コード９２１、要求コード９２１がロックであるときのそのロックモード（ＰＲまたはＥＸ）を示すロックモード９２２、ロック対象となるロック資源の名称であるロック資源名称（９２４、９２５、９２６）、およびそのロック資源名称がいくつ登録されているかを示すロック資源数９２３を有している。
【００２２】
例えば、まず、図３に示すデータおよびインデックスに対して、図１に示すデータベース管理システム２においてキー値（列１）が‘２００’以上かつ‘５００’以下である行から列２の文字型データをキー値の昇順に検索する場合を図５、図６、図７および図８のフローチャートを元に説明する。
ユーザプログラム２４から１件目の検索要求が行わると、データベースアクセス部２３がインデックスファイル７にアクセスし、検索条件（キー値が‘２００’以上かつ‘５００’以下）を満たす最小のキー値を持つインデックスエントリ７１２を検索開始位置とし、そのキー値‘３００’と行アドレス‘６１−２’を検索位置情報とする（１００、１０１、１０２）。このとき、もし検索条件を満たすインデックスエントリが存在しない場合（１０３）、ここでユーザプログラム２４に検索終了報告を行い（１１２）、ユーザプログラム２４では該当データなしで検索要求が終了する。
【００２３】
検索条件を満たすインデックスエントリが存在する場合、ここでロック要求管理部２２に一括ロックが要求される（２００）。ロック要求管理部２２に一括ロックが要求されると、まず、検索位置情報からキー値の‘３００’を一括ロック開始位置情報９１１のキー値情報９１１１に、行アドレスの‘６１−２’を行アドレス情報９１１２に退避しておく（２０１）。検索位置情報の行アドレス‘６１−２’から行の格納されているデータページ６１が求められロック制御プログラム２１によってロック資源（データページ６１）に対するデータベース管理システム２内でのＰＲモードでのロックが実行される（２０２）。次いで、ロック要求管理部２２において、一括ロック管理テーブル９１をロック資源名称‘データページ６１’でサーチするが、一括ロック管理テーブル９１には未登録であるため、ロック資源情報９１３３を‘データページ６１’、ロック回数９１３１を１、取り出し回数９１３２を０としたロック情報９１３を一括ロック管理テーブル９１に登録する（２０３、２０４、２０５）。このとき、データベース管理システム２内でのロック資源（データページ６１）に対するロック時に、ロック制御プログラム２１からはロック済み報告ではなくロック完了報告がされているため、ロックマネジャデータベース管理システム１に転送するロック転送情報９２として、要求コード９２１に‘Ｌ’、ロックモード９２２に‘ＰＲ’、ロック資源数９２３に初期値である１、およびロック資源情報９２４に‘データページ６１’を登録する（２０６、２０７）。ここで、データベースアクセス部２３によって検索位置情報のキー値が‘３００’で行アドレスが‘６１−２’（インデックスエントリ７１２）の次に格納されているインデックスエントリ７２１をチェックし、キー値が‘４００’で検索条件を満たしているため、検索位置情報をキー値‘４００’、行アドレス‘６２−２’と更新し、インデックスエントリ７１２の場合とと同様に、処理２０２から処理２０７までを繰り返す（２０９、２１０）。ただし、処理２０７のロック転送情報９２の登録では、ロック資源数９２３をカウントアップし、ロック資源情報９２５に‘データページ６２’を登録する。
【００２４】
同様に、インデックスエントリ７２２、インデックスエントリ７３１も処理２０２から処理２０７までを繰り返す。ただし、インデックスエントリ７３１についてはインデックスエントリ７１２に対する処理時に、既にロック資源情報９１３３が‘データページ６１’であるロック情報９１３が一括ロック管理テーブル９１に登録済みのため、ロック情報９１３のロック回数９１３１をカウントアップし（２１１）、ロック転送情報９２への登録はしない。以上のように、検索条件を満たさないインデックスエントリ７３２をチェックするまでに処理２０２から２１０が繰り返された結果、図９に示すような一括ロック管理テーブル９１およびロック転送情報９２が作成される。
【００２５】
検索条件を満たす全てのインデックスエントリに対して検索要求元データベース管理システム２内でのロックが完了した時点で、ロック転送情報９２に転送情報が登録されている（ロック資源数９２３＞０）ため、ロック要求管理部２２がロックマネジャデータベース管理システム１に対してロック転送情報９２を通信装置４を介して通信し（２１２，２１３）、ロックマネジャデータベース管理システム１ではロック転送情報９２からデータページ６１、データページ６２およびデータページ６３へのＰＲモードのロックが行われ、ロック完了報告が通信装置４を介してデータベース管理システム２に返される。ロック要求管理部２２では、最後に検索条件のチェックを行ったインデックスエントリ７３２の検索位置情報から、一括ロック終了位置情報９１２のキー値情報９１２１に‘９００’と行アドレス情報９１２２に‘６２−１’をそれぞれ設定し（２１４）、一括ロック開始位置情報９１１から、検索位置情報のキー値に‘３００’、行アドレスに‘６１−２’を回復して（２１５）、一括ロックを終了する（２１６）。
【００２６】
一括ロックが完了すると、一括ロック前に、他のトランザクションによって更新されていないかどうかをチェックするために、データベースアクセス部２３が検索位置情報からキー値が‘３００’であるインデックスエントリ７１２の存在をチェックし、更にロック要求管理部２２が、再チェックしたインデックスエントリ７１２の行アドレス‘６１−２’から求められるデータページ番号が検索位置情報の行アドレスから求められるデータページ番号‘６１’と一致するかチェックする（１０５、１０６、１０７）。その後、ロック要求管理部２２で一括ロック管理テーブルの取り出し回数９１３２をカウントアップしてから（１０８）、データベースアクセス部２３がインデックスエントリ７１２の行アドレス‘６１−２’が示すデータページ６１の２番目の行６１２から列２の値である文字型データ‘病院’を取り出し、その結果をユーザプログラム２４に報告する（１０９、１１０）。
【００２７】
以降、ユーザプログラム２４では検索終了が報告されるまで２件目以降のデータの検索要求を繰り返す（１００）。データベースアクセス部２３では、前回の検索位置情報のキー値‘３００’、行アドレス‘６１−２’から、次のインデックスエントリであるインデックスエントリ７２１が検索条件を満たすかチェックし（１０１、１１１）、検索条件を満たす（１１２）ため検索位置情報をキー値‘４００’、行アドレス‘６２−２’に更新した後、ロック要求管理部２２が検索位置情報が一括ロック終了位置情報９１２（キー値‘９００’、行アドレス‘６２−１’）を越えていないかチェックした後（１１３）、一括ロック管理テーブル９１を検索位置情報の行アドレス‘６２−２’から求めた‘データページ６２’でサーチし（１１４）、ロック資源名称９１４３が‘データページ６２’であるロック情報９１４が登録済みであるため、ロック要求管理部２２で一括ロック管理テーブル９１内のロック情報９１４の取り出し回数９１４２をカウントアップしてから（１０８）、データベースアクセス部２３が行アドレス６２−２が示すデータページ６２の２番目の行６２２から列２の値である文字型データ‘図書館’を取り出し、その結果をユーザプログラム２４に報告する（１０９、１１０）。同様に、行６３２から文字型データ‘警察署’および行６１１から文字型データ‘学校’が順にユーザプログラム２４に報告され、検索条件を満たすインデックスエントリが無くなった時点で検索終了をユーザプログラム２４に報告する（１１２、１１９）。
【００２８】
また、上記の検索において、一括ロック実施後に他のトランザクションによって図３のデータベースの状態から図４のデータベースの状態になるような更新が行われた場合を説明する。
【００２９】
一括ロック実施後に、インデックスエントリ７１２およびインデックスエントリ７２１からそれぞれ、行６１２および行６２２を検索したところで、行６４１の列１の値‘５００’をキー値とするインデックスエントリ７２３が検索条件を満たすインデックスエントリとして、検索位置情報に設定される（１１１、１１２、１１３）。このとき、ロック要求管理部２２ではデータページ６４にロックしないで検索することによって、図３から図４への更新がロールバックした場合に、検索結果が不整合にならないように一括ロック管理テーブル９１をサーチし（１１４）、ロック資源名称が‘データページ６４’であるロック情報が未登録であるために追加ロックを行う（３００）。
【００３０】
追加ロックでは、ロック要求管理部２２が一括ロックと同様に、検索位置情報からデータページ６４に対する検索要求元データベース管理システム２内でのロックを行った（３０２）後、一括ロック管理テーブル９１にロック回数が１、取り出し回数が０、ロック資源名称が‘データページ６４’である新たなロック情報を追加し（３０３）、検索要求元データベース管理システム２内でのロックがロック済み報告でない場合だけ、ロック資源数が１、ロック資源名称が‘データページ６４’のロック転送情報を作成し、ロックマネジャデータベース管理システム１に対して通信装置４を介して通信を行う（３０４、３０５、３０６）。追加ロックによって複数システム間でのロックを確保した後は一括ロック時と同様に、検索位置情報のキー値‘５００’を持つインデックスエントリ７２３が存在し、さらに、行アドレスのデータページ番号‘６４’にの変更が無いかの再チェックを行い（１０５、１０６、１０７）、取り出し回数のカウントアップ後に（１０８）、行６４１から列２の値‘工場’を取り出して（１０９）、ユーザプログラムに２４に検索結果を報告する（１１０）。
【００３１】
また、上記検索では全てのデータの取り出しが終了した時に、検索のロック有効期間の指定でトランザクション終了までロックを保持しない指定がされている場合、またはロックを保持しない指定がされておらず、かつ一括ロックおよび追加ロック実施後の再チェックで削除や更新によってロックはしたものの列値を取りださなかった場合、検索終了報告前に一括アンロックを行う（１１２、４００、１１９）。一括アンロックでは、ロック要求管理部２２が一括ロック管理テーブル９１に登録されているロック情報を登録順に参照し（４０１）、ロック有効期間の指定でトランザクション終了までロックを保持しない指定がされている場合はそのロック情報のロック回数分、そうでない場合はロック回数から取り出す回数を減算した回数分だけそのロック資源名称に対して、検索要求元データベース管理システム２内でのアンロックを行い（４０２、４０３、４０４）、それぞれのロック資源の最後のアンロック時にアンロック完了報告が行われた場合（４０５）、ロック転送情報９２の要求コード９２１に‘Ｕ’（アンロック要求）を設定し、最初のロック資源登録時はロック資源数９２３に１を設定し、それ以外の時はロック資源数９２３をカウントアップし、ロック資源名称を登録する（４０６）。これを一括ロック管理テーブル９１に登録されたロック資源数分繰り返し（４０７）、ロック転送情報９２に転送情報があれば（ロック資源数９２３＞０）、ロックマネジャデータベース管理システム１に対して通信装置４を介して通信を行う（４０８）。ロックマネジャデータベース管理システム１においてロック転送情報９２に登録された全てのロック資源をアンロックし（４０９）、検索要求元データベース管理システム２に対して通信装置４を介してアンロック完了報告がされ、一括アンロックの終了となる（４１０）。
【００３２】
一括ロックにおいて一括ロック管理テーブル９１にロック情報が追加ロック用の登録予備領域を残して登録しきれなくなった場合（２０８、２１７、２１３）、そのときの検索位置情報分までで一括ロックを打ちきりとし、ロックマネジャデータベース管理システム１への通信を行うこととする（２１７、２１３）。このときに設定した一括ロック終了情報９１２のキー値を越えるまでインデックスエントリをチェックした場合、そこで、１度一括アンロックを行い、そのときの検索位置情報から再度一括ロックを行うこととする（１１３、４００、２００）。また、追加ロック時に一括ロック管理テーブル９１にロック情報が追加ロック用の登録予備領域にも登録しきれなくなった場合も、同様に１度一括アンロックを行い、そのときの検索位置情報から再度一括ロックを行うこととする（３０１、４００、２００）。
【００３３】
以上、説明したように、データ検索に必要な全てのロック資源へのロック制御をまず検索要求元データベース管理システムで実行し、その後、必要なロック資源情報のみをロックマネジャデータベース管理システムへ一括転送してから検索を行うようにしたため、一回の通信で大量検索も実行可能となる。
【００３４】
また、一括ロック後に再チェックを行ったり、各インデックスエントリサーチ時に一括ロック管理テーブルをサーチし、必要ならば追加ロックを行うようにすることで、削除済みの行を検索しようとしたり、ロックを行っていないデータの検索を行ったりするようなことなく、整合性が保たれたままデータベースをアクセスすることが可能となる。
【００３５】
また、資源毎にロック回数と取り出し回数を管理し、検索終了時に不要なロックに関してはアンロックを行い、かつそのときのロックマネジャデータベース管理システムへの通信を一括転送することで通信回数を削減することが可能となる。
【００３６】
【発明の効果】
以上、説明したように、本発明によれば、ローックマネージャとデータベース管理システム間の通信回数を削減することが可能となり、高速なデータベース処理を実現することができる。
【図面の簡単な説明】
【図１】本発明の一実施の形態のシステム間データベース共用システムの構成を示すブロック図
【図２】ロック時に生成されるロック管理テーブルを示す図
【図３】検索対象となるデータベースの更新前の具体的な例を示す図
【図４】検索対象となるデータベースの更新後の具体的な例を示す図
【図５】システム間データベース共用システムにおける検索機能を説明するためのフローチャート
【図６】システム間データベース共用システムにおける検索機能を説明するためのフローチャート
【図７】システム間データベース共用システムにおける検索機能を説明するためのフローチャート
【図８】システム間データベース共用システムにおける検索機能を説明するためのフローチャート
【図９】一括ロック時に生成される一括ロック管理テーブルおよびロックマネジャデータベース管理システムへのロック転送情報の具体的な例を示す図
【符号の説明】
１・・・ロックマネジャデータベース管理システム
２，３・・・要求元データベース管理システム
１１，２１，３１・・・ロック制御プログラム
２２，３２・・・ロック要求管理部
２３，３３・・・データベースアクセス部
２４，３４・・・ユーザプログラム
４，５・・・通信装置
６・・・データファイル
６１，６２，６３，６４，６ｎ・・・データページ
６１１，６１２，６２１，６２２，６３１，６３２，６４１，６１ｍ，６ｎ１，６ｎｍ・・・行
７・・・インデックスファイル
７１，７２，７３，７ｐ・・・インデックスページ
７１１，７１２，７２１，７２２，７２３，７３１，７３２，７１ｑ，７ｐ１，７ｐｑ・・・インデックスエントリ
８・・・ロック管理テーブル
８１，８２，８ｒ・・・ロック情報
８１１，８２１，８ｒ１・・・トランザクション名称
８１２，８２２，８ｒ２・・・ロック資源名称
８１３，８２３，８ｒ３・・・ロックモード
８１４，８２４，８ｒ４・・・ロック回数
９１・・・一括ロック管理テーブル
９１１・・・一括ロック開始位置情報
９１２・・・一括ロック終了位置情報
９１３，９１４，９１５・・・ロック情報
９１３１，９１４１，９１５１・・・ロック回数
９１３２，９１４２，９１５２・・・取り出し回数
９１３３，９１４３，９１５３・・・ロック資源名称
９２・・・ロック転送情報
９２１・・・要求コード
９２２・・・ロックモード
９２３・・・ロック資源数
９２４，９２５，９２６・・・ロック資源名称
【図１】
2004288079.tif 000003
【図２】
2004288079.tif 000004
【図３】
2004288079.tif 000005
【図４】
2004288079.tif 000006
【図５】
2004288079.tif 000007
【図６】
2004288079.tif 000008
【図７】
2004288079.tif 000009
【図８】
2004288079.tif 000010
【図９】
2004288079.tif 000011