(57)【要約】【課題】  共用表への処理を含むデータベース処理を効率的に行うことが可能な技術を提供する。【解決手段】  複数のデータベース処理装置から参照可能な共用表を含むデータベースへの処理を管理するデータベース管理方法において、データベース中の表の属性と処理種別に応じて割り当てられているデータベース処理装置を示す表情報を記憶装置から参照して、データベースへの処理要求が共用表への処理を含むかに応じて当該処理要求を実行するデータベース処理装置を選択し、その選択したデータベース処理装置に対してデータベースへの処理要求を行い、前記データベースの処理要求に従って、前記選択されたデータベース処理装置でデータベースへのアクセスを行うものである。【選択図】図１
2006172067.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベース処理装置から参照可能な共用表を含むデータベースへの処理を管理するデータベース管理方法において、
データベース中の表の属性と処理種別に応じて割り当てられているデータベース処理装置を示す表情報を記憶装置から参照して、データベースへの処理要求が共用表への処理を含むかに応じて当該処理要求を実行するデータベース処理装置を選択し、その選択したデータベース処理装置に対してデータベースへの処理要求を行い、前記データベースの処理要求に従って、前記選択されたデータベース処理装置でデータベースへのアクセスを行うことを特徴とするデータベース管理方法。
【請求項２】
データベースへの処理要求が共用表及び分割表の処理を要求するものである場合に、複数のデータベース処理装置でのデータベース処理を設定し、データベースへの処理要求が共用表及び分割表以外の表の処理を要求するものである場合に、単一のデータベース処理装置でのデータベース処理を設定することを特徴とする請求項１に記載されたデータベース管理方法。
【請求項３】
共用表が排他処理中である場合に、当該共用表の更新処理に割り当てられた割り当てデータベース処理装置を選択して、その選択した割り当てデータベース処理装置に対してデータベースへの処理要求を行うことを特徴とする請求項１または請求項２のいずれかに記載されたデータベース管理方法。
【請求項４】
共用表が排他処理中ではなくデータベースへの処理要求に含まれる共用表への処理が更新処理である場合に、当該共用表の更新処理に割り当てられた割り当てデータベース処理装置を選択して、その選択した割り当てデータベース処理装置に対してデータベースへの処理要求を行うことを特徴とする請求項１乃至請求項３のいずれか１項に記載されたデータベース管理方法。
【請求項５】
共用表が排他処理中ではなくデータベースへの処理要求に含まれる共用表への処理が参照処理である場合に、共用表を参照可能な複数のデータベース処理装置を選択して、その選択したデータベース処理装置に対してデータベースへの処理要求を行うことを特徴とする請求項１乃至請求項４のいずれか１項に記載されたデータベース管理方法。
【請求項６】
共用表の更新処理に割り当てられた割り当てデータベース処理装置で共用表の更新を行う際に、共用表の更新開始から各データベース処理装置のバッファ中の共用表データに対する同期制御の終了までの間を表排他とすることを示す共用表排他情報を記憶装置に設定することを特徴とする請求項１乃至請求項５のいずれか１項に記載されたデータベース管理方法。
【請求項７】
共用表への処理を行う際に前記共用表排他情報を参照し、当該共用表の共用表排他情報が設定されている場合にその共用表が排他処理中であると判定することを特徴とする請求項６に記載されたデータベース管理方法。
【請求項８】
更新処理の行われる共用表の識別情報を記憶装置に格納することにより前記共用表排他情報の設定を行うことを特徴とする請求項６または請求項７のいずれかに記載されたデータベース管理方法。
【請求項９】
複数のデータベース処理装置から参照可能な共用表を含むデータベースへの処理を管理するデータベース管理システムにおいて、
データベース中の表の属性と処理種別に応じて割り当てられているデータベース処理装置を示す表情報を記憶装置から参照して、データベースへの処理要求が共用表への処理を含むかに応じて当該処理要求を実行するデータベース処理装置を選択し、その選択したデータベース処理装置に対してデータベースへの処理要求を行うデータアクセス要求制御部と、前記データベースの処理要求に従って、前記選択されたデータベース処理装置でデータベースへのアクセスを行うデータアクセス制御部とを備えることを特徴とするデータベース管理システム。
【請求項１０】
複数のデータベース処理装置から参照可能な共用表を含むデータベースへの処理を管理するデータベース管理方法をコンピュータに実行させる為のプログラムにおいて、
データベース中の表の属性と処理種別に応じて割り当てられているデータベース処理装置を示す表情報を記憶装置から参照して、データベースへの処理要求が共用表への処理を含むかに応じて当該処理要求を実行するデータベース処理装置を選択し、その選択したデータベース処理装置に対してデータベースへの処理要求を行い、前記データベースの処理要求に従って、前記選択されたデータベース処理装置でデータベースへのアクセスを行うデータベース管理方法をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベースへのアクセスを管理するデータベース管理技術に関し、特に複数のバックエンドサーバから参照可能なデータベース格納領域中の表である共用表を含むデータベースへのアクセスを管理するデータベース管理技術に適用して有効な技術に関するものである。
【背景技術】
【０００２】
複数のサーバで構成するデータベース管理システム（以下、ＤＢＭＳと記述）としては、シェアードディスク方式とシェアードナッシング方式がある。これらは、非特許文献１に記載されて知られている。シェアードディスク方式は、全てのサーバが全てのデータベースにアクセスできるため、サーバ間の負荷が分散されるが、サーバ間の同期制御が必要である。シェアードナッシング方式は、各サーバが割り当てられたデータベース格納領域しかアクセスしないため、参照頻度が高いデータベース格納領域を割り当てた特定のサーバに負荷が集中するが、サーバ間の同期制御が不要である。
【０００３】
【非特許文献１】Sohan DeMel著「Oracle9i real Application clusters - Cache Fusion Delivers Scalability, An Oracle White Paper」Oracle Corporation, 2001年5月, P.7-9, 12-13
【発明の開示】
【発明が解決しようとする課題】
【０００４】
前記シェアードディスク方式では、アクセスパスの切り替えによって結合検索を行うことが可能であるため、結合検索の際にシェアードナッシング方式程の負荷は発生しないが、データベースの内容が更新された場合には、各バックエンドサーバのバッファ上のデータを更新する同期制御が必要になる。
【０００５】
一方、シェアードナッシング方式では、参照頻度が高いが複数のデータベース格納領域に分割して格納することができない表と他の表の結合検索時には、バックエンドサーバ間の検索データのコピー及びコピー先への負荷が発生するため、特定のバックエンドサーバに負荷が集中したり、ＤＢＭＳ中のサーバ間のデータ転送量が大きいという課題が生じる。
【０００６】
ここで、参照頻度が高い表を任意のバックエンドサーバから参照可能な共用表とした場合、その共用表についてはバックエンドサーバ間の検索データのコピーを行う必要がなくなるが、共用表の更新処理が行われると、その更新から同期制御までの間、当該更新処理を行ったバックエンドサーバのみが共用表へアクセス可能な状態となり、共用表への処理内容によって共用表にアクセス可能なバックエンドサーバが変わるので、共用表への処理を行う際に、共用表へのアクセスを行うバックエンドサーバを固定できないという課題が生じる。
【０００７】
本発明の目的は上記問題を解決し、共用表への処理を含むデータベース処理を効率的に行うことが可能な技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、複数のデータベース処理装置から参照可能な共用表を含むデータベースへの処理を管理するデータベース管理システムにおいて、データベースへの処理要求が共用表への処理を含むかに応じて選択したデータベース処理装置によりデータベースへのアクセスを行うものである。
【０００９】
本発明のデータベース管理システムでは、ＳＱＬ(Structured Query Language)文を受け付け、ＳＱＬ文の解析処理、最適化処理、データベースへのアクセス方法の決定、及びバックエンドサーバに実行内容を指示するフロントエンドサーバと、フロントサーバからの指示に基づいてデータベースのアクセス、排他制御、演算処理を行うバックエンドサーバと、特定のバックエンドサーバからアクセス可能なデータベース格納領域をネットワークで接続している（前記サーバは計算機や情報処理装置、またはその様な処理を実施するプログラムやオブジェクトでも良い）。
【００１０】
本発明では、参照頻度が高い表を任意のバックエンドサーバから参照可能な共用表とし、フロントエンドサーバがデータベースへの処理要求を受け取ると、データベース中の表の属性と処理種別に応じて割り当てられているデータベース処理装置を示す表情報を記憶装置から参照して、その処理要求で処理される表の属性（共用表や分割表等）や処理種別（参照処理や更新処理）に応じて、それらの表へのアクセスを行うバックエンドサーバを選択し、その選択したバックエンドサーバに対してデータベースへの処理要求を行う。前記処理要求を受け取ったバックエンドサーバは、その処理要求の内容に従って、データベース処理を実行し、データベースへのアクセスを行う。
【００１１】
例えば、前記処理要求が分割表と共用表との結合検索を行うものである場合、フロントエンドサーバは、その分割表の参照が可能なバックエンドサーバの名称と共用表の参照が可能なバックエンドサーバの名称とを前記表情報から取得して、分割表及び共用表を共に参照可能なバックエンドサーバを抽出した後、その抽出した各バックエンドサーバで参照可能な分割表の分割データと共用表との結合検索を行う為の処理要求を各バックエンドサーバに送って結合検索の実行を指示する。
【００１２】
更に本発明では、共用表の更新処理に応じて、選択するバックエンドサーバを変更し、共用表の更新から同期制御までの間、すなわち共用表が表排他中である場合には、その更新処理を行った単一のバックエンドサーバに各バックエンドサーバの分割表等の表データを転送して共用表データとの結合処理を行う。また、共用表が表排他中ではない場合には、その共用表を複数のバックエンドサーバによりアクセスして、各バックエンドサーバの表データと共用表データとの結合処理を行う。
【発明の効果】
【００１３】
本発明によれば、共用表への処理を含むデータベース処理を効率的に行うことが可能である。
【発明を実施するための最良の形態】
【００１４】
以下に複数のバックエンドサーバから参照可能な共用表を含むデータベースへの処理を管理する一実施形態のデータベース管理システムについて説明する。
【００１５】
図１は本実施形態の分割表と共用表の結合検索例を示す図である。図１では、複数のデータベース格納領域に分割格納した表（分割表）と、表排他中ではない場合に任意のバックエンドサーバから参照可能なデータベース格納領域中の表（共用表）の結合検索例を表している。
【００１６】
図１に示す様にフロントエンドサーバ１は、データアクセス要求制御部２、共用表処理制御部３、表情報４及び共用表排他情報５を備え、バックエンドサーバａ６、バックエンドサーバｂ７及びバックエンドサーバｃ８は、データ転送制御部９、共用表排他情報５、共用表排他制御部１０、データアクセス制御部１１及び表情報４と、バッファａ１２、バッファｂ１３またはバッファｃ１４のいずれかとをそれぞれ備えている。
【００１７】
表ａ１８と表ｂ２０の結合検索を行う場合、まずフロントエンドサーバ１からの指示により、バックエンドサーバａ６、バックエンドサーバｂ７及びバックエンドサーバｃ８で表ａ１８にアクセスした後、アクセス結果のデータを、バックエンドサーバａ６中のバッファａ１２、バックエンドサーバｂ７中のバッファｂ１３、バックエンドサーバｃ８中のバッファｃ１４に読み込む。また表ｂのデータをバッファａ１２、バッファｂ１３、バッファｃ１４中に読み込み済みの場合には、各バッファ中のデータを基に各バックエンドサーバで表ａ１８のデータと表ｂ２０のデータの結合処理を行い、結合結果をフロントエンドサーバ１に返却する。
【００１８】
各バックエンドサーバで表ａ１８と表ｂ２０の結合処理を行うことで、並列実行によるＳＱＬ実行の性能が向上し、特定のバックエンドサーバへの負荷の集中を抑止でき、表ａ１８のデータを１つのバックエンドサーバに集める為のデータ転送量を減らす効果が出る。
【００１９】
ここで、表ｂ２０が表排他中の場合には、各バックエンドサーバから表ｂ２０の割り当てバックエンドサーバに表ａ１８のアクセス結果のデータを転送した後、表ｂ２０の割り当てバックエンドサーバで表ａ１８と表ｂ２０のデータの結合処理を行い、結合結果をフロントエンドサーバ１に返却する。
【００２０】
図２は本実施形態のＤＢＭＳ全体のハードウェア構成を示す図である。図２に示す様に本実施形態のＤＢＭＳは、データベース格納領域を制御するコンピュータ３２と、磁気記憶装置等のデータベース格納領域１５、１６、１７、１９と、データベースを使用する為の指示情報を入力し、データベースの内容を表示する為の端末装置３１とにより構成される。
【００２１】
コンピュータ３２は、ＣＰＵ３３とメモリ３４とを備え、メモリ３４には、データベース格納領域１５、１６、１７、１９へのアクセス方法を決定した後、バックエンドサーバ３６に実行内容を指示するフロントエンドサーバ３５としてコンピュータ３２を機能させる為のプログラムと、データベース格納領域１５、１６、１７、１９を管理するバックエンドサーバ３６としてコンピュータ３２を機能させる為のプログラムが格納される。
【００２２】
図３は本実施形態のＤＢＭＳ全体の処理概要を示す図である。図３の様に本実施形態のＤＢＭＳでは、クライアントａ４０またはクライアントｂ４１でユーザの要求を受け付け、フロントエンドサーバ５０へ要求を転送した後、フロントエンドサーバ５０で、ＳＱＬ文の解析処理、最適化処理、表Ａ−ａ８０、表Ａ−ｂ８１、表Ａ−ｃ８２、表Ｂ８３へのアクセス方法の決定、及びバックエンドサーバａ６０、バックエンドサーバｂ６１、バックエンドサーバｃ６２への実行内容の指示を行う。
【００２３】
表のデータは、それぞれデータベース格納領域ａ７０、データベース格納領域ｂ７１、データベース格納領域ｃ７２、データベース格納領域ｄ７３中の表Ａ−ａ８０、表Ａ−ｂ８１、表Ａ−ｃ８２、表Ｂ８３に格納されており、バックエンドサーバａ６０、バックエンドサーバｂ６１、バックエンドサーバｃ６２を介してフロントエンドサーバ５０が取得する。最後に検索結果をクライアントａ４０またはクライアントｂ４１に返却して検索を終了する。
【００２４】
各サーバはネットワーク９０で接続されている。表Ａ−ａ８０、表Ａ−ｂ８１、表Ａ−ｃ８２は、１つの表をデータベース格納領域ａ７０、データベース格納領域ｂ７１、データベース格納領域ｃ７２に分割して格納した分割表であり、表Ｂ８３は、バックエンドサーバａ６０、バックエンドサーバｂ６１、バックエンドサーバｃ６２から参照可能な共用表である。
【００２５】
図４は本実施形態のフロントエンドサーバ及びバックエンドサーバの構成を示す図である。図４に示す様に本実施形態のフロントエンドサーバ５０は、データアクセス要求制御部５１０と、共用表処理制御部５３０とを有している。
【００２６】
データアクセス要求制御部５１０は、データベース中の表の属性と処理種別に応じて割り当てられているバックエンドサーバを示す表情報５５０をメモリ上で参照して、データベースへの処理要求が共用表への処理を含むかに応じて当該処理要求を実行するバックエンドサーバを選択し、その選択したバックエンドサーバに対してデータベースへの処理要求を行う処理部である。
【００２７】
共用表処理制御部５３０は、データベースへの処理要求が共用表及び分割表の処理を要求するものである場合に、複数のバックエンドサーバでのデータベース処理を設定し、データベースへの処理要求が共用表及び分割表以外の表の処理を要求するものである場合に、単一のバックエンドサーバでのデータベース処理を設定する処理部である。
【００２８】
フロントエンドサーバ５０をデータアクセス要求制御部５１０及び共用表処理制御部５３０として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００２９】
またバックエンドサーバは、データ転送制御部６１０と、共用表排他制御部６２０と、データアクセス制御部６４０とを有している。
【００３０】
データ転送制御部６１０は、バックエンドサーバ間での表データの転送を制御する処理部である。共用表排他制御部６２０は、共用表に表排他を掛けた場合に、プロセス固有領域中の共用表排他情報５８０の更新を行う処理部である。データアクセス制御部６４０は、フロントエンドサーバ５０から受け取ったデータベース処理要求に従ってデータベースへのアクセスを行う処理部である。
【００３１】
バックエンドサーバをデータ転送制御部６１０、共用表排他制御部６２０及びデータアクセス制御部６４０として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００３２】
フロントエンドサーバ５０では、必要となる表の表情報をデータアクセス要求制御部５１０を介して共用領域中の表情報５５０で取得し、共用表の排他情報を、データアクセス要求制御部５１０を介してプロセス固有領域中の共用表排他情報５８０で取得する。また共用表を含む結合検索の実行バックエンドサーバ数を共用表処理制御部５３０で設定する。
【００３３】
バックエンドサーバでは、共用表を含む結合検索時の共用表の表排他情報をプロセス固有領域中の共用表排他情報５８０で取得した後、その内容に応じた表データの転送方法をデータ転送制御部６１０で設定する。共用表に表排他を掛けた場合には、共用表排他制御部６２０を介してプロセス固有領域中の共用表排他情報５８０の更新を行う。必要となる表の情報をデータアクセス制御部６４０を介して表情報５５０で取得し、必要となる表のデータをデータアクセス制御部６４０を介してバッファ６５０で取得する。
【００３４】
図５は本実施形態の表情報５５０の一例を示す図である。図５に示す様に表情報５５０は、表名５５１をキーとし、表が共用表であるかどうかを示す共用表属性５５２の情報と、表の更新に割り当てたバックエンドサーバを示す割り当てバックエンドサーバ名５５３の情報と、表の参照に割り当てたバックエンドサーバを示す参照可能バックエンドサーバ名５５４の情報を保持している。
【００３５】
図５に記載されている様に、表Ａ−ａでは、共用表属性が「ＮＯ」、割り当てバックエンドサーバが「バックエンドサーバａ」、参照可能バックエンドサーバが「バックエンドサーバａ」であり、表Ａ−ｂでは、共用表属性が「ＮＯ」、割り当てバックエンドサーバが「バックエンドサーバｂ」、参照可能バックエンドサーバが「バックエンドサーバｂ」である。また、表Ａ−ｃでは、共用表属性が「ＮＯ」、割り当てバックエンドサーバが「バックエンドサーバｃ」、参照可能バックエンドサーバが「バックエンドサーバｃ」であり、表Ｂでは、共用表属性が「ＹＥＳ」、割り当てバックエンドサーバが「バックエンドサーバｂ」、参照可能バックエンドサーバが「バックエンドサーバａ」、「バックエンドサーバｂ」、「バックエンドサーバｃ」である。
【００３６】
図６は本実施形態の共用表排他情報５８０の一例を示す図である。図６に示す様に共用表排他情報５８０は、排他状態の共用表ＩＤ５８１を保持しており、表排他がかかった共用表が１つあり、その共用表のＩＤが「0x00009999」であるとき、共用表排他情報５８０の排他状態の共用表ＩＤ５８１には「0x00009999」が設定される。
【００３７】
本実施形態のＤＢＭＳでは、割り当てバックエンドサーバで共用表の更新を行う際に、更新開始から同期制御の終了までの間を表排他として、その共用表のＩＤを共用表排他情報５８０に設定し、他のバックエンドサーバからの当該共用表へのアクセスの抑止を行うものとする。
【００３８】
よって、本実施形態では、結合検索で結合の行われる共用表のＩＤが共用表排他情報５８０に保持され、その共用表が表排他中であることを示している場合には、その共用表と結合される表の表データを、排他を行った割り当てバックエンドサーバへ転送するデータ転送の設定を行う。
【００３９】
図７は本実施形態の共用表を含む結合処理の処理手順を示すフローチャートである。図７に示す様に、共用表の結合処理を含む処理要求をクライアントから受け付けると、ステップ５０１で共用表処理制御部５３０は、前記処理要求として入力されたＳＱＬ文の内容を調べ、その処理を複数のバックエンドサーバで実行するかどうかを設定する。
【００４０】
ステップ５０２でデータアクセス要求制御部５１０は、検索や更新の為にアクセスするバックエンドサーバを選択した後、その選択したバックエンドサーバに検索または更新の為のアクセスを要求する。
ステップ５０３でデータアクセス制御部６４０は、前記入力されたＳＱＬからの要求処理種別に従って、ステップ５０２で選択したバックエンドサーバでデータのアクセスを行う。
ステップ５０４では、実行しているＳＱＬ中の全表へのアクセスが完了したかの判定を行う。その結果、アクセスが完了済みではない場合にはアクセスしていない表に対して、ステップ５０３以下の処理を行う。一方で、アクセス完了済みの場合には、共用表を含む結合処理を終了する。
【００４１】
図８は本実施形態の共用表処理設定の処理手順を示すフローチャートである。図８に示す様にフロントエンドサーバ５０内の共用表処理制御部５３０は、入力されたＳＱＬ文が共用表と分割表との結合検索である場合に、複数のバックエンドサーバでの結合検索を設定し、入力されたＳＱＬ文が共用表と分割表以外の表との結合検索である場合に、単一のバックエンドサーバでの結合検索を設定する処理を行う。
【００４２】
フロントエンドサーバ５０でＳＱＬ文を受け取ると、ステップ５３１で共用表処理制御部５３０は、そのＳＱＬ文に共用表の結合検索が含まれているかどうかを調べ、共用表の結合検索が含まれている場合には、その入力されたＳＱＬ文から結合元表種別を取得した後、結合先表の表種別を格納する領域として予め確保しておいたメモリ領域に前記取得した結合元表種別を設定する。ここで、結合先表とは、ＳＱＬ文に共用表の結合検索が含まれているかどうかを調べた際に検出した共用表を表すものとし、結合元表は、結合先表の結合相手となる表を示すものとする。
【００４３】
ステップ５３２では、入力されたＳＱＬ文から取得した結合元表種別を参照し、結合元表が分割表であるか若しくは共用表であるかの判定を行う。その結果、結合元表が分割表の場合にはステップ５３３へ進み、複数のバックエンドサーバで結合検索を行うことを示す情報をメモリ上の所定領域に格納して共用表処理制御部５３０の処理を終了する。
【００４４】
またステップ５３２で判定した結果、結合元表が共用表である場合にはステップ５３４へ進み、１バックエンドサーバで結合検索を行うことを示す情報をメモリ上の所定領域に格納して共用表処理制御部５３０の処理を終了する。
【００４５】
図９は本実施形態のデータアクセス要求制御処理の処理手順を示すフローチャートである。図９に示す様にフロントエンドサーバ５０内のデータアクセス要求制御部５１０は、検索や更新の為にアクセスするバックエンドサーバを選択した後、選択したバックエンドサーバに検索または更新の為のアクセスを要求する処理を行う。
【００４６】
データアクセス要求が行われるとステップ５１１でデータアクセス要求制御部５１０は、アクセス要求の行われている表の情報を表情報５５０から参照する。
【００４７】
ステップ５１２では、ステップ５１１で参照した表情報５５０の共用表属性５５２による判定を行う。その結果、その表が共用表ではない場合にはステップ５１６に進み、表情報５５０の割り当てバックエンドサーバ名５５３で示されたサーバを、アクセスするバックエンドサーバに選択する。
【００４８】
一方、表情報５５０の共用表属性５５２による判定の結果、その表が共用表である場合にはステップ５１３に進み、アクセス要求されている共用表の排他情報を共用表排他情報５８０から参照した後、ステップ５１４ではその共用表が排他中であるかどうかの判定を行う。その結果、アクセス要求されている共用表が排他中の場合にはステップ５１６へ進み、表情報５５０の割り当てバックエンドサーバ名５５３で示されたサーバを、アクセスするバックエンドサーバに選択する。
【００４９】
一方で、アクセス要求されている共用表が排他中ではない場合にはステップ５１５へ進み、入力されたＳＱＬ文から要求処理種別の判定を行う。その結果、要求処理種別が更新要求である場合にはステップ５１８へ進み、排他中ではない共用表の更新時にアクセスするサーバの選択処理を行う。その後、ステップ５２２では、ステップ５１８で選択した、アクセスするバックエンドサーバにアクセス要求を行って、データアクセス要求制御部５１０の処理を終了する。
【００５０】
一方、要求処理種別の判定を行った結果、要求処理種別が参照要求である場合にはステップ５１７へ進み、その共用表が結合先表であるかの判定を行う。すなわち、ステップ５３１の処理で結合先表の表種別を格納するメモリ領域に結合元表種別を設定しているので、当該共用表の表種別を格納するメモリ領域を参照し、そのメモリ領域に表種別が設定されている場合にはその共用表が結合先表であると判定し、前記メモリ領域に表種別が設定されていない場合にはその共用表が結合先表ではないと判定する。
【００５１】
前記判定の結果、要求処理種別が参照要求である共用表が結合先表である場合にはステップ５１９へ進み、その結合元表のアクセスに使用した全てのバックエンドサーバを、アクセスするサーバに選択する。
【００５２】
一方、前記判定の結果、要求処理種別が参照要求である共用表が結合先表ではない場合にはステップ５２０へ進み、表情報に参照可能なバックエンドサーバとして設定しているバックエンドサーバから、任意のバックエンドサーバをアクセスするサーバに選択する。
【００５３】
その後、ステップ５２１では、実行しているＳＱＬ中の表のアクセスするバックエンドサーバが全て設定済みであるかの判定を行う。その結果、設定済みではないものがある場合にはアクセスするバックエンドサーバが未設定の表に対して、ステップ５１１以下の処理を行う。一方で、全て設定済みである場合にはステップ５２２へ進み、ステップ５１６、ステップ５１８、ステップ５１９またはステップ５２０で選択した、アクセスするバックエンドサーバにデータアクセス要求制御部５１０がアクセス要求を行って、データアクセス要求制御部５１０の処理を終了する。
【００５４】
図１０は本実施形態のデータアクセス制御処理の処理手順を示すフローチャートである。図１０に示す様にバックエンドサーバ６０内のデータアクセス制御部６４０は、データアクセス要求制御部５１０からのアクセス要求に従ってデータへのアクセスを行う。
【００５５】
まずステップ６４０１では、入力されたＳＱＬから要求処理種別の判定を行う。その結果、要求処理種別が参照要求である場合にはステップ６４０２へ進み、アクセス要求された表のデータが、選択したアクセスするバックエンドサーバのバッファにあるかどうかの判定をステップ６４０２で行い、ステップ６４０４の処理に進む。バッファにデータを読み込み済みではない場合には、アクセス要求された表からデータをバッファにステップ６４０３で読み込み、ステップ６４０４の処理に進む。
【００５６】
バッファにデータがある場合、入力されたＳＱＬから、アクセス要求された表を結合元表とする結合処理があるかの判定をステップ６４０４で行う。その結果、アクセス要求された表を結合元表とする結合処理が無い場合には、ステップ６４０６でバッファ上のデータを元に参照結果を上位処理に返却し、データアクセス制御部６４０の処理を終了する。
【００５７】
一方、アクセス要求された表を結合元表とする結合処理がある場合には、ステップ６４０５でデータ転送方法制御処理を行い、ステップ６４０７でバッファのデータを元にした参照結果を、データアクセス要求制御部５１０で選択した結合先表をアクセスするバックエンドサーバに転送し、データアクセス制御部６４０の処理を終了する。
【００５８】
またステップ６４０１で要求処理種別の判定を行った結果、要求処理種別が更新要求だった場合には、アクセス要求された表のデータが、選択したアクセスするバックエンドサーバのバッファにあるかどうかの判定をステップ６４０８で行い、ステップ６４１０の処理に進む。バッファにデータを読み込み済みではない場合には、アクセス要求された表からデータをバッファにステップ６４０９で読み込み、ステップ６４１０の処理に進む。バッファにデータがある場合、バッファ上のアクセス要求された表のデータをステップ６４１０で更新する。
【００５９】
ステップ６４１１では、アクセス要求された表の情報を表情報５５０から参照し、ステップ６４１２では、ステップ６４１１で参照した表情報５５０の共用表属性による判定を行う。その結果、アクセス要求された表が共用表ではない場合にはステップ６４１４へ進み、選択したアクセスするバックエンドサーバでデータベース格納領域上のアクセス要求された表データの更新を行って、データアクセス制御部６４０の処理を終了する。
【００６０】
一方で、アクセス要求された表が共用表の場合にはステップ６４１３へ進み、ステップ６４１１で参照した表情報５５０から、データアクセス要求制御部５１０で選択したバックエンドサーバがアクセス要求された表の割り当てバックエンドサーバかの判定を行う。割り当てバックエンドサーバではない場合には、データアクセス制御部６４０の処理を終了する。
【００６１】
一方で、前記判定の結果、データアクセス要求制御部５１０で選択したバックエンドサーバがアクセス要求された表の割り当てバックエンドサーバではある場合にはステップ６４１４へ進み、選択したアクセスするバックエンドサーバでデータベース格納領域上のアクセス要求された表データの更新を行って、データアクセス制御部６４０の処理を終了する。
【００６２】
図１１は本実施形態の共用表排他情報処理の処理手順を示すフローチャートである。図１１に示す様にバックエンドサーバ６０内の共用表排他制御部６２０は、共用表の表排他情報を管理し、割り当てバックエンドサーバで共用表の更新を行う際に、更新開始から同期制御の終了までの間を表排他として、その共用表のＩＤを共用表排他情報５８０に設定し、他のバックエンドサーバからの当該共用表へのアクセスの抑止を行う。
【００６３】
表排他を行うＳＱＬを実行すると、ステップ６２１では、表排他を行う表の情報を表情報５５０から参照する。ステップ６２２では、ステップ６２１で参照した表情報５５０の共用表属性による判定を行う。その結果、表排他を行う表が共用表ではない場合には共用表排他制御部６２０の処理を終了する。一方で、表排他を行う表が共用表の場合には、共用表排他情報５８０に表排他を行う表の表ＩＤをステップ６２３で追加し、共用表排他制御部６２０の処理を終了する。
【００６４】
なお、同期制御を行って各バックエンドサーバ６０内のバッファの共用表データを更新後の共用表の内容に同期させた場合には、共用表排他情報５８０中の当該共用表のＩＤの削除を行うものとする。
【００６５】
図１２は本実施形態のデータ転送方法制御処理の処理手順を示すフローチャートである。図１２では、データアクセス制御部６４０のステップ６４０５のデータ転送方法制御処理で結合相手表の共用表へのデータ転送方法を設定する処理を表している。
【００６６】
ステップ６４０５１で、入力されたＳＱＬから結合先表の表種別を取得し、ステップ６４０５２では、ステップ６４０５１で取得した表種別から、結合先表が共用表かどうかの判定を行う。その結果、結合先表が共用表ではない場合にはステップ６４０５の処理を終了する。
【００６７】
一方で、結合先表が共用表の場合にはステップ６４０５３に進み、結合先表の表排他情報を共用表排他情報５８０から参照する。ステップ６４０５４では、ステップ６４０５３で参照した共用表排他情報５８０から結合先の共用表が表排他中かの判定を行う。表排他が行われていない場合にはステップ６４０５の処理を終了する。
【００６８】
表排他が行われている場合には、共用表処理制御部５３０で複数バックエンドサーバでの結合検索が設定されているかの判定をステップ６４０５５で行う。複数バックエンドサーバでの結合検索が設定されていない場合には、ステップ６４０５の処理を終了する。複数バックエンドサーバでの結合検索が設定されている場合には、１バックエンドサーバでの結合検索をステップ６４０５６で設定し、ステップ６４０５の処理を終了する。
【００６９】
図１３は本実施形態のインデクス列の更新を含む共用表更新処理の一例を示す図である。インデクス更新を伴う共用表更新が複数トランザクションに跨ると、各バックエンドサーバにあるバッファのインデクスページ中のインデクスキー値に対する更新順序が異なることがある。更に、各バックエンドサーバがバッファから落ちたデータをデータベース格納領域中の表から読み込むと、バッファのデータ構造が各バックエンドサーバで大幅に異なる。そのため、インデクス更新を伴う共用表更新は、更新順序を保つ為に共用表に表排他を掛けて１バックエンドサーバで行わなければならない。
【００７０】
よって、インデクスを伴う共用表の更新を行う場合、データアクセス要求制御部９２で、更新する共用表１０８の排他情報を共用表排他情報９３から参照し、共用表１０８が排他中だった場合には、フロントエンドサーバ９１からの指示で、共用表１０８の割り当てバックエンドサーバであるバックエンドサーバｂ９５でバッファｂ１０４中のインデクスページｂ９８と、データページｂ１０１中のインデクスデータの更新を行う。
【００７１】
図１４は本実施形態の排他中ではない共用表の更新時にアクセスするサーバの選択処理の処理手順を示すフローチャートである。図１４では、データアクセス要求制御部５１０内の、排他中ではない共用表の更新時にアクセスするサーバの選択処理（ステップ５１８）で、共用表の更新時にアクセスするサーバを選択する処理を表している。
【００７２】
排他中ではない共用表の更新時にアクセスするサーバの選択を要求されたステップ５１８の処理では、入力されたＳＱＬ文がＩＮＳＥＲＴ、ＤＥＬＥＴＥ、またはインデクス更新を伴うＵＰＤＡＴＥ文であるかの判定をステップ５１８１で行う。
【００７３】
その結果、ＩＮＳＥＲＴ、ＤＥＬＥＴＥ、またはインデクス更新を伴うＵＰＤＡＴＥ文である場合には、ステップ５１８２で共用表に排他をかけた後、ステップ５１８３では、割り当てバックエンドサーバをアクセスするサーバに選択して、ステップ５１８の処理を終了する。
【００７４】
一方で、ＩＮＳＥＲＴ、ＤＥＬＥＴＥ、またはインデクス更新を伴うＵＰＤＡＴＥ文ではない場合には、ステップ５１８４で表情報に参照可能なバックエンドサーバとして設定している全てのバックエンドサーバをアクセスするサーバに選択して、ステップ５１８の処理を終了する。
【００７５】
以上説明した様に本実施形態のデータベース管理システムによれば、データベースへの処理要求が共用表への処理を含むかに応じて選択したデータベース処理装置によりデータベースへのアクセスを行うので、共用表への処理を含むデータベース処理を効率的に行うことが可能である。
【図面の簡単な説明】
【００７６】
【図１】本実施形態の分割表と共用表の結合検索例を示す図である。
【図２】本実施形態のＤＢＭＳ全体のハードウェア構成を示す図である。
【図３】本実施形態のＤＢＭＳ全体の処理概要を示す図である。
【図４】本実施形態のフロントエンドサーバ及びバックエンドサーバの構成を示す図である。
【図５】本実施形態の表情報５５０の一例を示す図である。
【図６】本実施形態の共用表排他情報５８０の一例を示す図である。
【図７】本実施形態の共用表を含む結合処理の処理手順を示すフローチャートである。
【図８】本実施形態の共用表処理設定の処理手順を示すフローチャートである。
【図９】本実施形態のデータアクセス要求制御処理の処理手順を示すフローチャートである。
【図１０】本実施形態のデータアクセス制御処理の処理手順を示すフローチャートである。
【図１１】本実施形態の共用表排他情報処理の処理手順を示すフローチャートである。
【図１２】本実施形態のデータ転送方法制御処理の処理手順を示すフローチャートである。
【図１３】本実施形態のインデクス列の更新を含む共用表更新処理の一例を示す図である。
【図１４】本実施形態の排他中ではない共用表の更新時にアクセスするサーバの選択処理の処理手順を示すフローチャートである。
【符号の説明】
【００７７】
１…フロントエンドサーバ、２…データアクセス要求制御部、３…共用表処理制御部、４…表情報、５…共用表排他情報、６…バックエンドサーバａ、７…バックエンドサーバｂ、８…バックエンドサーバｃ、９…データ転送制御部、１０…共用表排他制御部、１１…データアクセス制御部、１２…バッファａ、１３…バッファｂ、１４…バッファｃ、１５…データベース格納領域ａ、１６…データベース格納領域ｂ、１７…データベース格納領域ｃ、１８…表ａ、１９…データベース格納領域ｄ、２０…表ｂ、２１…共用表データ、２２〜２４…分割表データ、３１…端末装置、３２…コンピュータ、３３…ＣＰＵ、３４…メモリ、３５…フロントエンドサーバ、３６…バックエンドサーバ、４０…クライアントａ、４１…クライアントｂ、５０…フロントエンドサーバ、６０…バックエンドサーバａ、６１…バックエンドサーバｂ、６２…バックエンドサーバｃ、７０…データベース格納領域ａ、７１…データベース格納領域ｂ、７２…データベース格納領域ｃ、７３…データベース格納領域ｄ、８０…表Ａ−ａ、８１…表Ａ−ｂ、８２…表Ａ−ｃ、８３…表Ｂ、９０…ネットワーク、５１０…データアクセス要求制御部、５３０…共用表処理制御部、５５０…表情報、５８０…共用表排他情報、６１０…データ転送制御部、６２０…共用表排他制御部、６４０…データアクセス制御部、６５０…バッファ、５５１…表名、５５２…共用表属性、５５３…割り当てバックエンドサーバ名、５５４…参照可能バックエンドサーバ名、５８１…排他状態の共用表ＩＤ、９１…フロントエンドサーバ、９２…データアクセス要求制御部、９３…共用表排他情報、９４…バックエンドサーバａ、９５…バックエンドサーバｂ、９６…バックエンドサーバｃ、９７…インデクスページａ、９８…インデクスページｂ、９９…インデクスページｃ、１００…データページａ、１０１…データページｂ、１０２…データページｃ、１０３…バッファａ、１０４…バッファｂ、１０５…バッファｃ、１０６…データベース格納領域、１０７…インデクス、１０８…共用表、１０９…インデクスデータ、１１０…共用表データ。
【図１】
2006172067.tif 000003
【図２】
2006172067.tif 000004
【図３】
2006172067.tif 000005
【図４】
2006172067.tif 000006
【図５】
2006172067.tif 000007
【図６】
2006172067.tif 000008
【図７】
2006172067.tif 000009
【図８】
2006172067.tif 000010
【図９】
2006172067.tif 000011
【図１０】
2006172067.tif 000012
【図１１】
2006172067.tif 000013
【図１２】
2006172067.tif 000014
【図１３】
2006172067.tif 000015
【図１４】
2006172067.tif 000016