(57)【要約】【課題】アプリケーションノードで障害が発生した場合に稼働可能なアプリケーション処理待ちを少なくし、即応性を向上させる。【解決手段】データベースノード２０を介してアプリケーション１０−１〜１０−ｎからデータベース４０にアクセスが行われるデータベースシステムにおいて、データベースノード２０は、データベース４０に接続しているアプリケーション１０−１〜１０−ｎの稼働状態を管理する接続元状態管理部２２と、接続元状態管理部２２にて稼動状態が異常とされたアプリケーション１０−１〜１０−ｎとデータベース４０との接続を切断する接続切断部３２とを有する。【選択図】図１
2009187269.tif 000002
【特許請求の範囲】
【請求項１】
データベースノードを介してアプリケーションからデータベースにアクセスが行われるデータベースシステムにおいて、
前記データベースノードは、
前記データベースに接続しているアプリケーションの稼働状態を管理する接続元状態管理手段と、
前記接続元状態管理手段にて稼動状態が異常とされたアプリケーションと前記データベースとの接続を切断する接続切断手段とを有することを特徴とするデータベースシステム。
【請求項２】
請求項１に記載のデータベースシステムにおいて、
前記データベースノードは、前記アプリケーションに対応して該アプリケーションの稼動状態を監視する接続元稼動監視手段を有し、
前記接続元状態管理手段は、前記接続元稼動監視手段における監視結果に基づいて、前記アプリケーションの稼働状態を管理するデータベースシステム。
【請求項３】
請求項２に記載のデータベースシステムにおいて、
前記接続元稼動監視手段は、前記アプリケーションの稼動状態を定期的に監視し、
前記接続元状態管理手段は、前記接続元稼動監視手段にて監視されたアプリケーションの稼動状態を接続元状態テーブルに保持し、前記接続元状態テーブルに保持された稼動状態が異常とされた回数が所定値を超えた場合に、前記接続切断手段によって当該アプリケーションと前記データベースとの接続を切断するデータベースシステム。
【請求項４】
データベースノードを介してアプリケーションからデータベースへの接続を制御するデータベース接続制御方法であって、
前記データベースに接続しているアプリケーションの稼働状態を管理する処理と、
前記稼動状態が異常とされたアプリケーションと前記データベースとの接続を切断する処理とを有するデータベース接続制御方法。
【請求項５】
請求項４に記載のデータベース接続制御方法において、
前記アプリケーションに対応して該アプリケーションの稼動状態を監視する処理と、
前記監視結果に基づいて、前記アプリケーションの稼働状態を管理する処理とを有するデータベース接続制御方法。
【請求項６】
請求項５に記載のデータベース接続制御方法において、
前記アプリケーションの稼動状態を定期的に監視する処理と、
前記監視されたアプリケーションの稼動状態を接続元状態テーブルに保持する処理と、
前記接続元状態テーブルに保持された稼動状態が異常とされた回数が所定値を超えた場合に、当該アプリケーションと前記データベースとの接続を切断する処理とを有するデータベース接続制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースへのアクセスを制御するデータベースシステム及びデータベース接続制御方法に関する。
【背景技術】
【０００２】
近年、データベースにアクセスするアプリケーションは、アプリケーションサーバーの普及により、全稼働のクラスタ構成による複数ノード上で同時に実行される状態が一般的となっている。このようなシステム構成においては、データベース側から見ると、複数のノードから同一リソースへアクセスされることになり、その間で排他制御が行われることとなる。
【０００３】
このような環境において、クラスタ構成をとっているアプリケーションノードで障害が発生した場合、タイミングによってはデータベースからアプリケーションノードの障害（コネクション切断）の検出に時間がかかり、その間アクセスされていたリソースに排他ロックが掛かった状態となる。つまり、アプリケーションノード障害によって、リソースを掴んでいた処理が停止したにも関わらずロックを保持し続けるために、稼働中のアプリケーションノードで動作するアプリケーション処理が待たされてしまうことになる。
【０００４】
ここで、特許文献１には、ユーザとデータベースとの接続を人為的に切断する技術が開示されている。
【特許文献１】特開２０００−２８５１６７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されたようにユーザとデータベースとの接続を人為的に切断する技術においては、アプリケーションノードで障害が発生した場合に上述した問題を解決するためには、データベースからアプリケーションノードの障害をユーザが認識しなければならず、稼働中のアプリケーションノードで動作するアプリケーション処理が待たされてしまうことを回避することは事実上困難である。
【０００６】
本発明は、上述したような従来の技術が有する問題点に鑑みてなされたものであって、アプリケーションノードで障害が発生した場合に稼働可能なアプリケーション処理待ちを少なくし、即応性を向上させることができるデータベースシステムデータベース接続制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本発明は、
データベースノードを介してアプリケーションからデータベースにアクセスが行われるデータベースシステムにおいて、
前記データベースノードは、
前記データベースに接続しているアプリケーションの稼働状態を管理する接続元状態管理手段と、
前記接続元状態管理手段にて稼動状態が異常とされたアプリケーションと前記データベースとの接続を切断する接続切断手段とを有することを特徴とする。
【０００８】
また、データベースノードを介してアプリケーションからデータベースへの接続を制御するデータベース接続制御方法であって、
前記データベースに接続しているアプリケーションの稼働状態を管理する処理と、
前記稼動状態が異常とされたアプリケーションと前記データベースとの接続を切断する処理とを有する。
【発明の効果】
【０００９】
以上説明したように本発明においては、データベースノードにて接続元のアプリケーションの稼働状態を管理し、稼動状態が異常とされたアプリケーションとデータベースとの接続を切断する構成とすることにより、アプリケーションノードで障害が発生した場合に稼働可能なアプリケーション処理待ちを少なくし、即応性を向上させることができる。
【発明を実施するための最良の形態】
【００１０】
以下に、本発明の実施の形態について図面を参照して説明する。
【００１１】
図１は、本発明のデータベースシステムの実施の一形態を示す図である。
【００１２】
本形態は図１に示すように、データベース４０と、データベース４０にアクセスする複数のアプリケーション１０−１〜１０−ｎと、アプリケーション４０からのデータベース４０へのアクセスを制御するデータベースノード２０とを有している。
【００１３】
アプリケーション１０−１〜１０−ｎは、それぞれ、実際にアプリケーションの処理を行うアプリケーション処理部１３−１〜１３−ｎと、アプリケーション処理部１３−１〜１３−ｎからの要求で、データベース４０と接続する通信部１２−１〜１２−ｎと、データベースノード２０から稼働状態の問合せがあった際に応答する稼働応答部１１−１〜１１−ｎとを備えている。
【００１４】
データベースノード２０は、アプリケーション１０−１〜１０−ｎに対応してアプリケーション１０−１〜１０−ｎ毎の稼働状態を定期的に監視する接続元稼働監視部２３−１〜２３−ｎと、接続元稼動監視部２３−１〜２３−ｎにて監視されたアプリケーション１０−１〜１０−ｎ毎の稼働状態を保持する接続元状態テーブル２１と、接続元稼働監視部２３−１〜２３−ｎの稼働監視の開始や接続元状態テーブル２１の更新を行い、接続元稼動監視部２３−１〜２３−ｎにおける監視結果に基づいて、アプリケーション１０−１〜１０−ｎの稼働状態を接続元状態テーブル２１に保持して管理する接続元状態管理部２２と、アプリケーション１０−１〜１０−ｎからの要求によりデータベース４０にアクセスするデータベースインスタンス３０とを備えている。
【００１５】
データベースインスタンス３０は、アプリケーション１０−１〜１０−ｎからの通信の接続を受け付け、データベース４０へのアクセスの要求をデータベース処理部３４に依頼する通信部３３と、通信部３３からの接続通知を受け、アプリケーション１０−１〜１０−ｎとデータベース４０との接続状態を接続元状態管理部２２に通知する接続通知部３１と、通信部３３からの要求を受け実際にデータベース４０にアクセスするデータベース処理部３４とを備えている。
【００１６】
図２は、図１に示した接続元テーブル２１の構成を示す図である。
【００１７】
接続元テーブル２１は図２に示すように、接続元稼働監視部２３−１〜２３−ｎの識別情報と、アプリケーション１０−１〜１０−ｎの識別情報と、アプリケーション１０−１〜１０−ｎの稼動状態として、「停止」、「稼働中」、「異常」の３つの状態となる接続元稼動状態と、アプリケーション１０−１〜１０−ｎの高負荷時により誤診を防ぐために何回異常を検知したかを判断するために異常検知回数とが互いに対応づけて保持されている。
【００１８】
以下に、上記のように構成されたデータベースシステムにおけるデータベース接続制御方法について説明する。
【００１９】
図３及び図４は、図１に示したデータベースシステムにおけるデータベース接続制御方法を説明するためのフローチャートである。
【００２０】
図１に示したデータベースシステムが起動すると、まず、接続元状態管理部２２は、予め定義された接続元情報に従い、図２に示してように、接続元状態管理テーブル２１の接続元情報を格納し、稼働状態を「停止」、異常検知回数を「０」に設定する。
【００２１】
アプリケーション１０−１〜１０−ｎは、それぞれ予め設定されたデータベースノード２０の接続先情報に従い、データベースインスタンス３０の通信部３３に接続する。
【００２２】
通信部３３は、アプリケーション１０−１〜１０−ｎから接続されると、該当するアプリケーション１０−１〜１０−ｎの接続元情報を接続通知部３１に通知し、接続通知部３１は、通信部３３から通知された接続元情報を接続元状態管理部２２に通知する。
【００２３】
接続元情報が通知された接続元状態管理部２２は、対応するアプリケーション１０−１〜１０−ｎの状態を定期的に監視する接続元稼働監視部２３−１〜２３−ｎを起動させ、対応するアプリケーション１０−１〜１０−ｎの稼働監視を開始する。
【００２４】
接続元稼働監視部２３−１〜２３−ｎは、起動するとまず、アプリケーション１０−１〜１０−ｎの現在の稼働状況を確認するため、対応するアプリケーション１０−１〜１０−ｎの稼動応答部１１−１〜１１−ｎに対して、アプリケーション１０−１〜１０−ｎの稼働状態を問い合わせる（ステップ１）。
【００２５】
そして、この稼動状態の問い合わせに対する応答が規定時間以内に得られた場合は（ステップ２）、接続元稼働監視部２３−１〜２３−ｎは、接続元状態管理部２２に対して、そのアプリケーション１０−１〜１０−ｎの稼動状態の監視結果として「稼働中」をアプリケーション１０−１〜１０−ｎを識別可能な情報とともに通知し（ステップ３）、また、規定時間以内に応答が得られなかった場合は、そのアプリケーション１０−１〜１０−ｎの稼動状態の監視結果として「異常」をアプリケーション１０−１〜１０−ｎを識別可能な情報とともに通知する（ステップ４）。
【００２６】
その後、接続元稼働監視部２３−１〜２３−ｎは、対応するアプリケーション１０−１〜１０−ｎの稼動応答部１１−１〜１１−ｎに対して、予め設定された待ち合わせ時間毎に定期的に稼働状態の問い合わせを行い、アプリケーション１０−１〜１０−ｎの稼動状態を監視する（ステップ６）。
【００２７】
接続元稼働監視部２３−１〜２３−ｎから監視結果が通知された接続元状態管理部２２は、接続元状態テーブル２１の対応するアプリケーション１０−１〜１０−ｎの接続元状態を更新するが、稼動状態を「稼働中」に更新した場合には（ステップ１１）、異常検知回数を「０」に戻し（ステップ１２）、また、稼動状態を「異常」に更新した場合には、異常検知回数を＋１カウントアップする（ステップ１３）。
【００２８】
ここで、異常検知回数は、アプリケーション１０−１〜１０−ｎが高負荷状態のために規定時間内で応答を得られなかった場合の誤診を防ぐために利用する。稼動状態が異常とされた関数である異常検知回数が予め設定された所定値を超えた場合には（ステップ１４）、接続元状態管理部２２は、アプリケーション１０−１〜１０−ｎからのデータベースアクセスによる排他ロックを解除させるため、データベースインスタンス３０の接続切断部３２に対して、アプリケーション１０−１〜１０−ｎからのコネクションを強制的に切断するように要求する（ステップ１５）。
【００２９】
強制切断要求を受けた接続切断手段３２は、対応するアプリケーション１０−１〜１０−ｎからのコネクションを切断することを通信部３３に依頼し、通信部３３は対応するアプリケーション１０−１〜１０−ｎとのコネクションを強制的に切断する。
【００３０】
コネクションが切断された旨が通信部３３からデータベース処理部３４に通知されると、対応するアプリケーション１０−１〜１０−ｎからのデータベースアクセスによる排他ロックが解除され、他のアプリケーションからのデータアクセスが不用意に長い間待ち合わせることを防ぐことができる。
【００３１】
コネクションの切断が完了すると、接続元状態管理部２２は、接続元状態テーブル２１にて対応するアプリケーションの接続元状態を「停止」、異常検知回数を「０」に戻すとともに、そのアプリケーションに対応する接続元稼働監視部へ停止要求を行う（ステップ１６）。
【００３２】
停止要求を受け取った接続元稼働監視部は、対応するアプリケーションの稼働監視を中止し、終了する。
【００３３】
このように、本形態においては、データベースノード２０側からアプリケーション１０−１〜１０−ｎの稼働状況を定期的に監視し、異常を検知した際は、データベースノード１０側で該当するアプリケーションとのコネクションを強制的に切断し、データベース４０の排他ロックを解除させることで、他のデータベースアクセスが可能になり、他のアプリケーションの実行待ち合わせ時間を短縮することができる。
【００３４】
このようなデータベースシステムは、同一のデータベースにアクセスするシステム全般に利用することができる。
【図面の簡単な説明】
【００３５】
【図１】本発明のデータベースシステムの実施の一形態を示す図である。
【図２】図１に示した接続元テーブルの構成を示す図である。
【図３】図１に示したデータベースシステムにおけるデータベース接続制御方法を説明するためのフローチャートである。
【図４】図１に示したデータベースシステムにおけるデータベース接続制御方法を説明するためのフローチャートである。
【符号の説明】
【００３６】
１０−１〜１０−ｎ    アプリケーション
１１−１〜１１−ｎ    稼動応答部
１２−１〜１２−ｎ，３３    通信部
１３−１〜１３−ｎ    アプリケーション処理部
２０    データベースノード
２１    接続元状態テーブル
２２    接続元状態管理部
２３−１〜２３−ｎ    接続元稼動監視部
３０    データベースインスタンス
３１    接続通知部
３２    接続切断部
３４    データベース処理部
４０    データベース
【図１】
2009187269.tif 000003
【図２】
2009187269.tif 000004
【図３】
2009187269.tif 000005
【図４】
2009187269.tif 000006