(57)【要約】【課題】複数の計算機からなる分散トランザクションシステムで、特定の部位にて障害が発生した状態でも、稼動している部位のみでデータの一貫性を保ちつつトランザクションの回復を行い、かつ障害が発生した部位が復旧しなくても業務処理を続行する。【解決手段】分散トランザクションシステムにおけるトランザクションコミット処理において、フロントエンドサーバからバックエンドサーバへコミット保証指示を行う際に、フロントエンドサーバが通信を行っている全てのバックエンドサーバの情報を各々のバックエンドサーバへ分配する機構を用意して、バックエンドサーバのみでトランザクション決着処理を行う。【選択図】図４
2007293650.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に分散配置されたサーバが、データ操作の要求に対応する通信を相互に行って、各々が並列に操作を行うトランザクション処理において、サーバ間での同期を必要とするトランザクションコミット処理方法としての二相コミット処理を行う際に、コミット保証指示と共にトランザクション構成情報を分配する手段を備え、かつコミット処理における履歴情報と共に分配されたトランザクション構成情報をログ情報としてログファイルに取得する手段を備えた分散トランザクション制御システム。
【請求項２】
ネットワーク上に分散配置されたサーバが、データ操作の要求に対応する通信を相互に行って、各々が並列に操作を行うトランザクション処理において、コミット保証指示と共にトランザクション構成情報を分配することを特徴とし、かつコミット処理における履歴情報と共に分配されたトランザクション構成情報をログ情報としてログファイルに取得することを特徴とする、サーバ間での同期を必要とするトランザクションコミット処理方法としての二相コミット処理方法。
【請求項３】
ネットワーク上に分散配置されたサーバが、データ操作の要求に対応する通信を相互に行って、各々が並列に操作を行うトランザクション処理において、部分障害発生時に分配されたトランザクション構成情報をもとに、障害部位以外でトランザクションを決着する手段を備えた分散トランザクション制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理型データベース管理システムにおける分散トランザクションのコミット処理、特にシステムの部分障害の発生に対する耐久性を向上させたデータベース管理システムに関する。
【背景技術】
【０００２】
従来、並列処理型データベース管理システムにおける分散トランザクション処理での障害復旧の技術については、特許文献１に記載のものが知られている。下記特許文献１に記載のものは、複数の計算機からなる分散トランザクションシステムで、計算機間に渡る障害発生に備えて、システム内でトランザクションごとに一意の通番をファイルで管理し、障害復旧後にデータの一貫性を回復することができる。
【０００３】
【特許文献１】特開平９−２０４３４１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記特許文献１に記載の技術は、障害が発生した計算機が障害復旧する場合に有効な技術であり、システム上の部分的な障害が発生した状態でも業務処理を続行するという用途には適用できない。
【０００５】
本発明の目的は、複数の計算機からなる分散トランザクションシステムで、特定の部位にて障害が発生した状態でも、稼動している部位のみでデータの一貫性を保ちつつトランザクションの回復を行い、かつ障害が発生した部位が復旧しなくても業務処理を続行することにある。
【課題を解決するための手段】
【０００６】
本発明は、並列処理型データベース管理システムにおけるトランザクションコミット処理において、フロントエンドサーバからバックエンドサーバへコミット保証指示を行う際に、フロントエンドサーバが通信を行っている全てのバックエンドサーバの情報を各々のバックエンドサーバへ分配する機構を用意して、バックエンドサーバのみでトランザクション決着処理を可能とすることを特徴とする。
【発明の効果】
【０００７】
本発明によれば、ネットワーク上に分散配置されたサーバにてトランザクション処理を行う並列処理型データベース管理システムにおいて、フロントエンドサーバにて障害が発生した状態でも、稼動している他のサーバでデータの一貫性を保ちつつトランザクションの回復を行い、かつ障害が発生したフロントエンドサーバが復旧しなくても業務処理を続行できるという効果が有る。
【０００８】
さらに、フロントエンドサーバではログを取得しないため、フロントエンドサーバのログファイル用意する必要が無く、バックエンドサーバにログ情報を集約できるという効果も有る。
【発明を実施するための最良の形態】
【０００９】
以下、本発明を実施する場合の一形態を、図面を参照して具体的に説明する。
【００１０】
図１は、本発明の実施の並列処理型データベース管理システムの構成を示すブロック図である。本並列処理型データベース管理システムは、図１に示すように、トランザクションを管理するフロントエンドサーバが、個々にデータベースを管理しているバックエンドサーバと相互に通信を行って、アプリケーションプログラムからのデータ操作の要求を処理する。Ａノード１においてアプリケーションプログラム２からデータ操作の要求が発生すると、Ｂノード１１における本並列処理型データベース管理システムのトランザクション管理を行うフロントエンドサーバ１２がデータ操作要求の内容を解析し、該当するデータベースに対してデータ操作の要求を行う。フロントエンドサーバ１２からのデータ操作要求は、Ｅノード４１またはＦノード５１におけるバックエンドサーバ(４２，５２)が受け、該当するデータベース(４３，５３)にアクセスする。
【００１１】
データ操作処理が完了し、アプリケーションプログラム２からコミット要求が発生すると、フロントエンドサーバ１２はバックエンドサーバ(４２，５２)と通信を行っているというトランザクションの構成情報と共に、バックエンドサーバ(４２，５２)にコミット指示を送信する。バックエンドサーバ(４２，５２)では、ログ情報管理処理部(４４，５４)がデータベース更新履歴とトランザクション構成情報をログファイル(４５，５５)に取得し、データベース(４３，５３)に対する処理が完了した後、コミット処理完了をフロントエンドサーバ１２に報告して一連のトランザクション処理を完了する。
【００１２】
Ｃノード２１においてアプリケーションプログラム２２からデータ操作の要求が発生した場合は、Ｄノード３１のフロントエンドサーバ３２がデータ操作要求の内容を解析し、同様の処理を行う。
【００１３】
図２はトランザクション構成情報の分配を行わない従来のトランザクション処理方式の流れを示すフローチャートであり、図３はその構成を示すブロック図である。以降、図２、図３を参照して説明する。
【００１４】
まず、アプリケーションプログラム３０２よりステップ２０１において、データ操作要求が発生する。これを受けて、フロントエンドサーバ３１２がステップ２０２でトランザクション開始処理を行う。次に、ステップ２０３でデータベース操作指示を、バックエンドサーバ(３４２，３５２)に送信する。
【００１５】
バックエンドサーバ(３４２，３５２)では、データベース操作指示を受け、ステップ２０４においてデータベース(３４３，３５３)の操作処理を行う。
【００１６】
データベース操作処理(ステップ２０４)が終了すると、バックエンドサーバ(３４２，３５２)は処理完了をフロントエンドサーバ３１２に報告し、フロントエンドサーバ３１２に制御を戻す。これにより、フロントエンドサーバ３１２ではステップ２０５にてデータ操作成功の応答をアプリケーションプログラム３０２に返す。
【００１７】
アプリケーションプログラム３０２では、次のステップ２０６においてコミット要求を送り、これを受けたフロントエンドサーバ３１２では、ステップ２０７でコミット保証指示をバックエンドサーバ(３４２，３５２)に送信する。
【００１８】
バックエンドサーバ(３４２，３５２)では、ステップ２０８でログ情報管理処理部(３４４，３５４)において、データベース更新履歴をログファイル(３４５，３５５)に取得する。データベース更新履歴を取得した後、バックエンドサーバ(３４２，３５２)は、ステップ２０９でコミット保証処理成功応答をフロントエンドサーバ３１２に返す。
【００１９】
フロントエンドサーバ３１２では、ステップ２１０においてコミット保証成功応答によりコミット決定を行う。続いて、ステップ２１１でログ情報管理処理部３１３において、コミット決定履歴とバックエンドサーバ(３４２，３５２)と通信を行っているというトランザクション構成情報をログファイル３１４に取得する処理を行う。さらに、ステップ２１２においてコミット指示をバックエンドサーバ(３４２，３５２)に送信する。
【００２０】
バックエンドサーバ(３４２，３５２)ではコミット指示を受信すると、ステップ２１３においてログ情報管理処理部(３４４，３５４)がログファイル(３４５，３５５)にコミット決定履歴を取得する。そして、ステップ２１４においてデータベース(３４３，３５３)の実更新を行う。データベース(３４３，３５３)の実更新の終了後、フロントエンドサーバ３１２に制御を戻す。
【００２１】
フロントエンドサーバ３１２では、ステップ２１５においてトランザクション終了処理を行い、次のステップ２１６でアプリケーションプログラム３０２にコミット成功の応答を返す。アプリケーションプログラム３０２がコミット成功の応答を受け、ステップ２１７においてコミットを完了し、１トランザクションは終了する。
【００２２】
このようにして、各ノードのサーバは二相コミットプロトコルにしたがって互いに通信を行い、１つのトランザクション処理を行う。
【００２３】
以上のようなトランザクション構成情報の分配を行わない従来のトランザクション処理方式では、ステップ２０８からステップ２１２の間にフロントエンドサーバ３１２やＢノード３１１で処理続行不可能な障害が発生した場合、障害部位が復旧されなければバックエンドサーバ(３４２，３５２)はデータベース(３４３，３５３)の実更新の可否を判断できず、障害部位の復旧まで待ち合わせなければならない。このため、Ｄノード３３１のフロントエンドサーバ３３２が稼動していても、バックエンドサーバ(３４２，３５２)へのデータ操作が不可能となり、業務処理を続行できない状態となる。
【００２４】
一方、図４は本発明であるトランザクション構成情報の分配を行うトランザクション処理方式の流れを示すフローチャートである。以降、図１、図４を参照して説明する。
【００２５】
アプリケーションプログラム２よりステップ４０１において、データ操作要求が発生すれば、フロントエンドサーバ１２はステップ４０２からのトランザクション処理の開始を行う。まず、ステップ４０２でトランザクション開始処理を行い、次にステップ４０３でデータベース操作指示を、バックエンドサーバ(４２，５２)に送信する。
【００２６】
バックエンドサーバ(４２，５２)では、データベース操作指示を受け、ステップ４０４においてデータベース(４３，５３)の操作処理を行う。データベース操作処理(ステップ４０４)が終了すると、バックエンドサーバ(４２，５２)は処理完了をフロントエンドサーバ１２に報告し、フロントエンドサーバ１２に制御を戻す。これにより、フロントエンドサーバ１２ではステップ４０５にてデータ操作成功の応答をアプリケーションプログラム２に返す。
【００２７】
アプリケーションプログラム２では、次のステップ４０６においてコミット要求を送り、これを受けたフロントエンドサーバ１２では、ステップ４０７でコミット保証指示と共に、バックエンドサーバ(４２，５２)と通信を行っているというトランザクション構成情報を、バックエンドサーバ(４２，５２)に送信する。
【００２８】
バックエンドサーバ(４２，５２)では、ステップ４０８でログ情報管理処理部(４４，５４)において、データベース更新履歴とフロントエンドサーバ１２から受けたトランザクション構成情報をログファイル(４５，５５)に取得する。データベース更新履歴とトランザクション構成情報を取得した後、バックエンドサーバ(４２，５２)は、ステップ４０９でコミット保証処理成功応答をフロントエンドサーバ１２に返す。
【００２９】
フロントエンドサーバ１２では、ステップ４１０においてコミット保証成功応答によりコミット決定を行う。続いて、ステップ４１１においてコミット指示をバックエンドサーバ(４２，５２)に送信する。
【００３０】
バックエンドサーバ(４２，５２)ではコミット指示を受信すると、ステップ４１２においてログ情報管理処理部(４４，５４)がログファイル(４５，５５)にコミット決定履歴を取得する。そして、ステップ４１３においてデータベース(４３，５３)の実更新を行う。データベース(４３，５３)の実更新の終了後、フロントエンドサーバ１２に制御を戻す。
【００３１】
フロントエンドサーバ１２では、ステップ４１４においてトランザクション終了処理を行い、次のステップ４１５でアプリケーションプログラム２にコミット成功の応答を返す。アプリケーションプログラム２がコミット成功の応答を受け、ステップ４１６においてコミットを完了し、１トランザクションは終了する。
【００３２】
以上のようなトランザクション構成情報の分配を行うトランザクション処理方式では、ステップ４０８からステップ４１１の間にフロントエンドサーバ１２やＢノード１１で処理続行不可能な障害が発生した場合でも、バックエンドサーバ(４２，５２)の各々でトランザクションを構成しているサーバが判明しているので、バックエンドサーバ(４２，５２)同士で通信を行い、トランザクションの決着方法を決定することができる。このため、Ｄノード３１のフロントエンドサーバ３２のように障害部位以外に稼動しているフロントエンドサーバがあれば、バックエンドサーバ(４２，５２)へのデータ操作が可能であり、業務処理を続行することができる。
【００３３】
以上、本発明を実施例にもとづき具体的に説明したが、本発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。
【図面の簡単な説明】
【００３４】
【図１】本発明の一実施の形態の並列処理型データベース管理システムの概略構成を示すブロック図。
【図２】トランザクション構成情報の分配を行わない場合の通常のトランザクション処理の流れを示すフローチャート。
【図３】トランザクション構成情報の分配を行わない場合の通常の形態の並列処理型データベース管理システムの概略構成を示すブロック図。
【図４】トランザクション構成情報の分配を行う場合のトランザクション処理の流れを示すフローチャート。
【符号の説明】
【００３５】
１，３０１…Ａノード(クライアント側システム)、２１，３２１…Ｃノード(クライアント側システム)、２，２２，３０２，３２２…アプリケーションプログラム、１１，３１１…Ｂノード(フロントエンドサーバ側)、３１，３３１…Ｄノード(フロントエンドサーバ側)、１２，３２，３１２，３３２…フロントエンドサーバ、４１，３４１…Ｅノード(バックエンドサーバ側)、５１，３５１…Ｆノード(バックエンドサーバ側)、４２，５２，３４２，３５２…バックエンドサーバ、４３，５３，３４３，３５３…データベース、４４，５４，３１３，３３３，３４４，３５４…ログ情報管理処理部、４５，５５，３１４，３３４，３４５，３５５…ログファイル。
【図１】
2007293650.tif 000003
【図２】
2007293650.tif 000004
【図３】
2007293650.tif 000005
【図４】
2007293650.tif 000006