(57)【要約】【課題】接続に失敗するデータベースがある場合に、接続に長時間かかるデータベースが存在する場合でも、業務処理要求を受け付ける状態にするデータベース接続システム、データベース接続装置およびデータベース接続方法を提供する。【解決手段】業務処理プロセス起動時に、業務処理プロセスから接続するデータベース１つに対して１つの接続処理スレッドを作成し、業務処理の実行が指示され、データベースとの通信が必要となった時点で、通信を行おうとしたデータベースとの接続セッションが１つ確立できている場合、かつ、確立しているセッションが使用中でなければ、確立済みのセッションを使用し、前記データベースとの通信を行い、前記業務処理を実行する。【選択図】図１
2009187350.tif 000002
【特許請求の範囲】
【請求項１】
業務処理プロセス起動時に、業務処理プロセスから接続するデータベース１つに対して１つの接続処理スレッドを作成し、
業務処理の実行が指示され、データベースとの通信が必要となった時点で、通信を行おうとしたデータベースとの接続セッションが１つ確立できている場合、かつ、確立しているセッションが使用中の場合でなければ、確立済みのセッションを使用し、前記データベースとの通信を行い、前記業務処理を実行することを特徴とするデータベース接続システム。
【請求項２】
前記データベースとの接続セッションが１つも確立できていなかった場合、または、接続済みのセッションが全て使用中の場合は、前記業務処理は、データベースとの接続待ちであることを業務処理の要求元に報告することを特徴とする請求項１に記載のデータベース接続システム。
【請求項３】
業務処理プロセス起動時に、業務処理プロセスから接続するデータベース１つに対して１つの接続処理スレッドを作成し、
業務処理の実行が指示され、データベースとの通信が必要となった時点で、通信を行おうとしたデータベースとの接続セッションが１つ確立できている場合、かつ、確立しているセッションが使用中の場合でなければ、確立済みのセッションを使用し、前記データベースとの通信を行い、前記業務処理を実行することを特徴とするデータベース装置。
【請求項４】
前記データベースとの接続セッションが１つも確立できていなかった場合、または、接続済みのセッションが全て使用中の場合は、前記業務処理は、データベースとの接続待ちであることを業務処理の要求元に報告することを特徴とする請求項３に記載のデータベース接続装置。
【請求項５】
業務処理プロセス起動時に、業務処理プロセスから接続するデータベース１つに対して１つの接続処理スレッドを作成し、
業務処理の実行が指示され、データベースとの通信が必要となった時点で、通信を行おうとしたデータベースとの接続セッションが１つ確立できている場合、かつ、確立しているセッションが使用中の場合でなければ、確立済みのセッションを使用し、前記データベースとの通信を行い、前記業務処理を実行することを特徴とするデータベース接続方法。
【請求項６】
前記データベースとの接続セッションが１つも確立できていなかった場合、または、接続済みのセッションが全て使用中の場合は、前記業務処理は、データベースとの接続待ちであることを業務処理の要求元に報告することを特徴とする請求項５に記載のデータベース接続方法。
【発明の詳細な説明】
【技術分野】
【０００１】
プロセス起動遅延を防ぐデータベース接続システム、データベース接続装置およびデータベース接続方法に関する。
【背景技術】
【０００２】
データベースとの接続処理が大量に発生するような場合はその処理に数秒から数十秒かかる。
【０００３】
またデータベースでの障害の中には、ネットワーク通信的な障害のために応答が数十秒から数分かかるような障害が存在する。
【０００４】
複数のデータベースと接続し大量のＤＢセッションを要求するプロセスの場合や、データベースで障害が発生している場合には、業務処理プロセスの起動が完了し業務処理が行えるまでの時間が遅延することがある。
【０００５】
また、複数のデータベースと接続するプロセスの場合には、接続している全てのデータベースを参照／更新を必要とせず一部のデータベースとの参照／更新で処理が可能な業務処理を実行可能になるまでの時間が遅延する。
【０００６】
上記背景に関連する技術を次に開示する。
【０００７】
特許文献１に開示のバッチ実行プロセスは，複数のプログラム実行制御部を生成し、各プログラム実行制御部は，最初に一度だけＤＢコネクト等のバッチアプリ共通処理を実行し、バッチ実行プロセスは，バッチアプリケーションの実行依頼を受け付けると，空いているプログラム実行制御部に対し，バッチアプリケーションの実行命令を出し，プログラム実行制御部は，指示されたバッチアプリケーションを呼び出してデータ処理を実行させることが記載されている。
【０００８】
上記によれば、バッチアプリケーション実行制御方法に関し，バッチアプリケーションを高速に処理することを可能とする。
【０００９】
特許文献２に開示の業務プロセスシステムにおいては、オープンなネットワーク層に接続された発注元が所持する端末であり、ピアツーピアネットワークアーキテクチャを実現するアプリケーションが実装されたクライアント端末から送信されたデータを、オープンなネットワーク層とは隔離され且つ受注拠点の内部のＬＡＮ層とも隔離されたセグメントである受注拠点のＤＭＺ層に接続されて当該クライアント端末と、ピアツーピア接続したコレクタノードを介して、受注拠点の受注データベースに記録することが記載されている。
【００１０】
上記によれば、業務プロセスシステムにおいては、ピアツーピアテクノロジーを用いて、不特定多数の企業との取引をサーバレスで安価且つ高いセキュリティ性のもとに実現することができる。
【特許文献１】特開２００４−３６２３７６号公報
【特許文献２】ＷＯ２００５／０７８５９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、特許文献１は、データベースの接続処理を業務処理により行うことに関して記載はあるが、プロセスの起動時に、データベースの接続処理を、業務処理を行うプロセスの起動処理とは別のスレッドで行うことに関して記載ない。
【００１２】
また、特許文献１および特許文献２は、接続に失敗するデータベースがある場合に、接続に長時間かかるデータベースが存在する場合でも、業務処理要求を受け付ける状態にすることに関しては、成し得ない。
【００１３】
そこで、本発明は、業務処理を行うプロセスの起動時に、データベースの接続処理を業務処理を行うプロセスの起動処理とは別のスレッドで行うことで、接続するデータベースのセッションが大量にある場合や接続するデータベースで異常が発生している場合でも、業務処理を行うプロセスの起動処理は遅延することなく完了させるデータベース接続システム、データベース接続装置およびデータベース接続方法を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の目的を達成するため、本発明にかかる第１のデータベース接続システムは、業務処理プロセス起動時に、業務処理プロセスから接続するデータベース１つに対して１つの接続処理スレッドを作成し、業務処理の実行が指示され、データベースとの通信が必要となった時点で、通信を行おうとしたデータベースとの接続セッションが１つ確立できている場合、かつ、確立しているセッションが使用中の場合でなければ、確立済みのセッションを使用し、前記データベースとの通信を行い、前記業務処理を実行することを特徴とする。
【００１５】
本発明にかかる第１のデータベース接続装置は、業務処理プロセス起動時に、業務処理プロセスから接続するデータベース１つに対して１つの接続処理スレッドを作成し、業務処理の実行が指示され、データベースとの通信が必要となった時点で、通信を行おうとしたデータベースとの接続セッションが１つ確立できている場合、かつ、確立しているセッションが使用中の場合でなければ、確立済みのセッションを使用し、前記データベースとの通信を行い、前記業務処理を実行することを特徴とする。
【００１６】
本発明にかかる第１のデータベース接続方法は、業務処理プロセス起動時に、業務処理プロセスから接続するデータベース１つに対して１つの接続処理スレッドを作成し、業務処理の実行が指示され、データベースとの通信が必要となった時点で、通信を行おうとしたデータベースとの接続セッションが１つ確立できている場合、かつ、確立しているセッションが使用中の場合でなければ、確立済みのセッションを使用し、前記データベースとの通信を行い、前記業務処理を実行することを特徴とする。
【発明の効果】
【００１７】
本発明は、業務処理を行うプロセスの起動時に、データベースの接続処理を業務処理を行うプロセスの起動処理とは別のスレッドで行うことで、接続するデータベースのセッションが大量にある場合や接続するデータベースで異常が発生している場合でも、業務処理を行うプロセスの起動処理は遅延することなく完了させ、業務処理を実行することが可能になるまでの時間を遅延させないことができるデータベース接続システム、データベース接続装置およびデータベース接続方法を提供することを可能とする。
【発明を実施するための最良の形態】
【００１８】
本発明にかかるデータベース接続システムは、以下の態様を有する。
【００１９】
本発明では、業務処理プロセスの起動時に、業務処理プロセスから接続するデータベース１つに対して１つの接続処理スレッドを作成する。
【００２０】
業務処理プロセスは、データベースとの接続処理以外のプロセス起動処理を終えた後、実際に業務処理を行える状態と判断する。
【００２１】
業務処理の実行が指示されデータベースとの通信が必要となった時点で、通信を行おうとしたデータベースとの接続セッションが１つ以上確立できている場合かつ確立しているセッションが使用中でなければ、確立済みのセッションを使用しデータベースとの通信を行い、業務処理を実行する。
【００２２】
データベースとの接続セッションが１つも確立できていなかった場合あるいは接続済みのセッションが全て使用中の場合は、業務処理はデータベースとの接続待ちであることを業務処理の要求元に返却する。
【００２３】
上記態様を有することで以下に記載することを実現する。
【００２４】
業務プロセスから接続するデータベースの数およびセッション数が多い場合や、一部のデータベースで異常が発生しデータベースとの接続処理が遅延するような状況の時に、データベースとの接続処理の応答待ちで業務処理プロセスの起動完了が遅延して、実際の業務処理を開始できるまでの時間が遅延することを防ぐことができる。
【００２５】
データベースとの接続処理を行うスレッドを持つことで、複数のデータベースとの接続を行うための処理時間が発生する場合にも、プロセスの起動処理が遅延しなくなる。
【００２６】
データベースとの接続処理を行うスレッドを持つことで、大量のデータベースとの通信を行うセッションを作成するための処理時間が発生する場合にも、プロセスの起動処理が遅延しなくなる。
【００２７】
データベースとの接続処理を行うスレッドを持つことで、データベースで異常が発生しているために、データベースとの応答待ちが発生している場合にも、プロセスの起動処理が遅延しなくなる。
【００２８】
上記を実現するデータベース接続システムについて以下、実施の形態を用いて説明する。
以下の実施の形態は、本発明を好適もしくは最良に実施する形態であって、これに限定されることはなく、当業者が容易に想到できる範囲内において、修正、変形可能とする。
【００２９】
（第１の実施形態）
第１の実施形態にかかるデータベース接続システムについて図１を用いて説明する。
図１は、本実施形態にかかるデータベース接続システムの構成の一例を示す図である。
【００３０】
図１を参照すると、本実施形態にかかるデータベース接続システムは、クライアント１０、業務ノード２０、ＤＢノード３０１、ＤＢノード３０２、および、ＤＢノード３０３から構成される。
【００３１】
業務ノード２０は、業務処理プロセス２１を含む。
【００３２】
業務処理プロセス２１は、メインスレッド２２、接続処理スレッド２３１、接続処理スレッド２３２、接続処理スレッド２３３、ＤＢセッション２４１、ＤＢセッション２４２、ＤＢセッション２４３、および、業務処理スレッド２５を含む。
【００３３】
図１に示すように、本実施形態にかかるデータベース接続システムは、ＤＢノード３０１、ＤＢノード３０２、および、ＤＢノード３０３の３つＤＢノードがそれぞれデータベースを有し、業務処理プロセス２１は、接続処理スレッド２３１、接続処理スレッド２３２、および、接続処理スレッド２３３の３つの接続処理スレッドを有するが、接続処理スレッドは、接続するデータベースの数だけ作成される。
【００３４】
図１に示すように、本実施形態にかかるデータベース接続システムにおける業務処理プロセス２１は、ＤＢセッション２４１、ＤＢセッション２４２、および、ＤＢセッション２４３を有しているので、３つのＤＢセッションを有するが、ＤＢセッションは、１つのデータベースに対して利用者が必要な数だけ作成される。
【００３５】
図１に示すように、本実施形態にかかるデータベース接続システムにおける業務処理プロセス２１は、業務処理スレッド２５の１つの業務処理スレッドを有するが、業務処理スレッドは、利用者が必要な数だけ作成され、利用者が作成した業務処理アプリケーションが動作する。
【００３６】
ＤＢノード３０１は、データベース３１１を含み、ＤＢノード３０２は、データベース３１２を含み、ＤＢノード３０３は、データベース３１３を含む。
【００３７】
図１に示すように、本実施形態にかかるデータベース接続システムは、ＤＢノード３０１、ＤＢノード３０２、および、ＤＢノード３０３の３つＤＢノードを有し、接続処理スレッド２３１、接続処理スレッド２３２、および、接続処理スレッド２３３の３つの接続処理スレッドを有するが、ＤＢノードは、業務処理プロセスから接続が必要な数だけ用意される。
【００３８】
業務処理プロセス２１は、起動すると、メインスレッド２２が作成され、メインスレッド２２は、接続が必要となるデータベースの数だけ接続処理スレッドを作成する。
【００３９】
接続処理スレッドは、データベースへ接続要求を行い、データベースとの接続が成功した場合、そのデータベースとの参照／更新の通信を行えるＤＢセッションを利用者要求数だけ作成する。
【００４０】
データベースとの接続に成功しない場合は、成功するまで接続要求を繰り返し実行する。
【００４１】
メインスレッドは、全ての接続処理スレッドの作成が完了すると、業務処理スレッド２５を利用者要求数だけ作成する。
【００４２】
クライアント１０の通信手段１は，業務処理プロセス２１へ業務処理の要求を行う。
【００４３】
業務処理の要求が行われると、クライアントの要求は業務処理スレッド２５に届き、業務処理スレッドは利用者が用意したアプリケーションプログラムに従いＤＢセッション２４１を使用しデータベース３１１の参照／更新処理を行う。
【００４４】
アプリケーションプログラムが必要としたＤＢセッションが作成されていない場合には、業務処理スレッドはクライアントに、ＤＢセッションが作成されていなかったために業務処理が実行できなかったことを通知する。
【００４５】
（第２の実施形態）
第２の実施形態にかかるデータベース接続システムについて図１および図２を用いて説明する。
図２は、本実施形態にかかるデータベース接続システムのスレッド動作を示すフローチャート図である。
本実施形態では、図１の構成図と、図２のスレッド動作フローチャートを参照し、本発明にかかるデータベース接続システムの全体の動作について詳細に説明する。
本実施形態では、図２のスレッド動作フローチャートを中心に本発明にかかるデータベース接続システムの全体の動作について説明し、一例として、図１の構成図で用いた記号を使用する場合がある。
【００４６】
図２に示すように、本実施形態にかかるデータベース接続システムにおいて、メインスレッド２２は、業務処理プロセス２１の起動処理の開始時に作成され、メインスレッドは、業務処理プロセスの起動処理を実行する（ステップＳ１０１）。
【００４７】
ステップＳ１０１の処理後、メインスレッド２２は、接続処理スレッドを接続するデータベースの数だけ作成する（ステップＳ１０２）。
【００４８】
ステップＳ１０２の処理後、メインスレッド２２は、起動処理の最後に業務処理スレッド２５を利用者の要求数だけ作成する（ステップＳ１０３）。
【００４９】
ステップＳ１０２の処理後、接続処理スレッドは、業務処理プロセスと接続を行うデータベース１つにつき１つ作成され、１つの接続処理スレッドの通信手段は、１つのデータベースとの接続処理を実行する（ステップＳ１１１）。
【００５０】
上記のステップＳ１１１の処理は、図１を用いて説明すると、接続処理スレッドは、業務処理プロセス２１と接続を行うデータベース１つにつき１つ作成され、接続処理スレッド２３１の通信手段３は、１つのデータベースとの接続処理を実行する。
【００５１】
データベース３０１との接続処理が、データベースの異常やネットワークの異常等で失敗した場合、再度接続処理を行う(ステップＳ１１１)。
【００５２】
データベース３０１との接続に成功した場合は、そのデータベースと通信を行うためのＤＢセッションを１つ作成する（ステップＳ１１２）。
【００５３】
ＤＢセッション２４１を作成した結果、そのデータベースに対するＤＢセッションの数が利用者の要求数を充足していない場合、接続スレッドは再度データベースとの接続処理を行い（ステップＳ１１１）、ＤＢセッションの数が利用者の要求数に到達するまで繰り返す。
【００５４】
ＤＢセッションの数が利用者の要求数に到達した場合、接続スレッドは、終了する。
【００５５】
業務処理スレッド２５は、メインスレッド２２によって作成された後、クライアント１０から要求があるまで何もせず待機状態となる（ステップＳ１２１）。
【００５６】
業務処理スレッド２５の判断手段２は、クライアント１０から業務処理の要求があった場合,利用者が作成した業務処理を開始し、その業務処理で参照／更新を行うデータベース３０と通信が行えるＤＢセッション２４１の取得要求を実行する（ステップＳ１２２）。
【００５７】
ＤＢセッション２４１の取得に成功した場合は、業務処理を行い（ステップＳ１２３）、業務が完了後は再度クライアント１０からの要求があるまで待機状態に戻る（ステップＳ１２１）。
【００５８】
その時点でＤＢセッションがまだ作成されていない状態や、他の業務処理スレッドが使用しているため空きのＤＢセッションが無い状態のためにＤＢセッション２４１の取得に失敗した場合は、セッション取得に失敗したとしてエラーをクライアントに返却し業務処理を終了し再度クライアント１０からの要求があるまで待機状態に戻る（ステップＳ１２４）。
【００５９】
本実施形態によれば、データベースとの接続処理を行う専用のスレッドを作成することで、接続するデータベースの種類が多く有る場合や、ＤＢセッションの数を大量に要求している場合、データベース障害が発生しているために接続要求の応答が遅延する場合に、プロセスの起動処理自体が遅延したり失敗したりすることを防ぐことが可能となる。
【００６０】
また、上記により、業務処理スレッドがクライアントからの要求を受け付けることができる状態になるまでの時間に遅延が発生しなくなることにある。
【００６１】
また、業務プロセスから接続するデータベースの数およびセッション数が多い場合や、一部のデータベースで異常が発生しデータベースとの接続処理が遅延するような状況の時に、データベースとの接続処理の応答待ちで業務処理プロセスの起動完了が遅延して、実際の業務処理を開始できるまでの時間が遅延することを防ぐことができる。
【００６２】
また、データベースとの接続処理を行うスレッドを持つことで、複数のデータベースとの接続を行うための処理時間が発生する場合にも、プロセスの起動処理が遅延しなくなる。
【００６３】
また、データベースとの接続処理を行うスレッドを持つことで、大量のデータベースとの通信を行うセッションを作成するための処理時間が発生する場合にも、プロセスの起動処理が遅延しなくなる。
【００６４】
また、データベースとの接続処理を行うスレッドを持つことで、データベースで異常が発生しているために、データベースとの応答待ちが発生している場合にも、プロセスの起動処理が遅延しなくなる。
【００６５】
さらに、接続に失敗するデータベースがある場合に、接続に長時間かかるデータベースが存在する場合でも、業務処理要求を受け付ける状態にすることを可能とする。
【図面の簡単な説明】
【００６６】
【図１】第１の実施形態におけるデータベース接続システムの構成の一例を示す図である。
【図２】第２の本実施形態におけるデータベース接続システムの処理を示すフローチャート図である。
【符号の説明】
【００６７】
１    通信手段
２    判断手段
１０    クライアント
２０    業務ノード
２１    業務処理プロセス
２２    メインスレッド
２５    業務処理スレッド
２３１、２３２、２３３    接続処理スレッド
２４１、２４２、２４３    ＤＢセッション
３０１、３０２、３０３    ＤＢノード
３１１、３１２、３１３    データベース 
【図１】
2009187350.tif 000003
【図２】
2009187350.tif 000004