説明

分散トランザクション制御システムおよびその方法

【課題】複数の計算機からなる分散トランザクションシステムで、特定の部位にて障害が発生した状態でも、稼動している部位のみでデータの一貫性を保ちつつトランザクションの回復を行い、かつ障害が発生した部位が復旧しなくても業務処理を続行する。
【解決手段】分散トランザクションシステムにおけるトランザクションコミット処理において、フロントエンドサーバからバックエンドサーバへコミット保証指示を行う際に、フロントエンドサーバが通信を行っている全てのバックエンドサーバの情報を各々のバックエンドサーバへ分配する機構を用意して、バックエンドサーバのみでトランザクション決着処理を行う。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、並列処理型データベース管理システムにおける分散トランザクションのコミット処理、特にシステムの部分障害の発生に対する耐久性を向上させたデータベース管理システムに関する。
【背景技術】
【0002】
従来、並列処理型データベース管理システムにおける分散トランザクション処理での障害復旧の技術については、特許文献1に記載のものが知られている。下記特許文献1に記載のものは、複数の計算機からなる分散トランザクションシステムで、計算機間に渡る障害発生に備えて、システム内でトランザクションごとに一意の通番をファイルで管理し、障害復旧後にデータの一貫性を回復することができる。
【0003】
【特許文献1】特開平9−204341号公報
【発明の開示】
【発明が解決しようとする課題】
【0004】
しかしながら、上記特許文献1に記載の技術は、障害が発生した計算機が障害復旧する場合に有効な技術であり、システム上の部分的な障害が発生した状態でも業務処理を続行するという用途には適用できない。
【0005】
本発明の目的は、複数の計算機からなる分散トランザクションシステムで、特定の部位にて障害が発生した状態でも、稼動している部位のみでデータの一貫性を保ちつつトランザクションの回復を行い、かつ障害が発生した部位が復旧しなくても業務処理を続行することにある。
【課題を解決するための手段】
【0006】
本発明は、並列処理型データベース管理システムにおけるトランザクションコミット処理において、フロントエンドサーバからバックエンドサーバへコミット保証指示を行う際に、フロントエンドサーバが通信を行っている全てのバックエンドサーバの情報を各々のバックエンドサーバへ分配する機構を用意して、バックエンドサーバのみでトランザクション決着処理を可能とすることを特徴とする。
【発明の効果】
【0007】
本発明によれば、ネットワーク上に分散配置されたサーバにてトランザクション処理を行う並列処理型データベース管理システムにおいて、フロントエンドサーバにて障害が発生した状態でも、稼動している他のサーバでデータの一貫性を保ちつつトランザクションの回復を行い、かつ障害が発生したフロントエンドサーバが復旧しなくても業務処理を続行できるという効果が有る。
【0008】
さらに、フロントエンドサーバではログを取得しないため、フロントエンドサーバのログファイル用意する必要が無く、バックエンドサーバにログ情報を集約できるという効果も有る。
【発明を実施するための最良の形態】
【0009】
以下、本発明を実施する場合の一形態を、図面を参照して具体的に説明する。
【0010】
図1は、本発明の実施の並列処理型データベース管理システムの構成を示すブロック図である。本並列処理型データベース管理システムは、図1に示すように、トランザクションを管理するフロントエンドサーバが、個々にデータベースを管理しているバックエンドサーバと相互に通信を行って、アプリケーションプログラムからのデータ操作の要求を処理する。Aノード1においてアプリケーションプログラム2からデータ操作の要求が発生すると、Bノード11における本並列処理型データベース管理システムのトランザクション管理を行うフロントエンドサーバ12がデータ操作要求の内容を解析し、該当するデータベースに対してデータ操作の要求を行う。フロントエンドサーバ12からのデータ操作要求は、Eノード41またはFノード51におけるバックエンドサーバ(42,52)が受け、該当するデータベース(43,53)にアクセスする。
【0011】
データ操作処理が完了し、アプリケーションプログラム2からコミット要求が発生すると、フロントエンドサーバ12はバックエンドサーバ(42,52)と通信を行っているというトランザクションの構成情報と共に、バックエンドサーバ(42,52)にコミット指示を送信する。バックエンドサーバ(42,52)では、ログ情報管理処理部(44,54)がデータベース更新履歴とトランザクション構成情報をログファイル(45,55)に取得し、データベース(43,53)に対する処理が完了した後、コミット処理完了をフロントエンドサーバ12に報告して一連のトランザクション処理を完了する。
【0012】
Cノード21においてアプリケーションプログラム22からデータ操作の要求が発生した場合は、Dノード31のフロントエンドサーバ32がデータ操作要求の内容を解析し、同様の処理を行う。
【0013】
図2はトランザクション構成情報の分配を行わない従来のトランザクション処理方式の流れを示すフローチャートであり、図3はその構成を示すブロック図である。以降、図2、図3を参照して説明する。
【0014】
まず、アプリケーションプログラム302よりステップ201において、データ操作要求が発生する。これを受けて、フロントエンドサーバ312がステップ202でトランザクション開始処理を行う。次に、ステップ203でデータベース操作指示を、バックエンドサーバ(342,352)に送信する。
【0015】
バックエンドサーバ(342,352)では、データベース操作指示を受け、ステップ204においてデータベース(343,353)の操作処理を行う。
【0016】
データベース操作処理(ステップ204)が終了すると、バックエンドサーバ(342,352)は処理完了をフロントエンドサーバ312に報告し、フロントエンドサーバ312に制御を戻す。これにより、フロントエンドサーバ312ではステップ205にてデータ操作成功の応答をアプリケーションプログラム302に返す。
【0017】
アプリケーションプログラム302では、次のステップ206においてコミット要求を送り、これを受けたフロントエンドサーバ312では、ステップ207でコミット保証指示をバックエンドサーバ(342,352)に送信する。
【0018】
バックエンドサーバ(342,352)では、ステップ208でログ情報管理処理部(344,354)において、データベース更新履歴をログファイル(345,355)に取得する。データベース更新履歴を取得した後、バックエンドサーバ(342,352)は、ステップ209でコミット保証処理成功応答をフロントエンドサーバ312に返す。
【0019】
フロントエンドサーバ312では、ステップ210においてコミット保証成功応答によりコミット決定を行う。続いて、ステップ211でログ情報管理処理部313において、コミット決定履歴とバックエンドサーバ(342,352)と通信を行っているというトランザクション構成情報をログファイル314に取得する処理を行う。さらに、ステップ212においてコミット指示をバックエンドサーバ(342,352)に送信する。
【0020】
バックエンドサーバ(342,352)ではコミット指示を受信すると、ステップ213においてログ情報管理処理部(344,354)がログファイル(345,355)にコミット決定履歴を取得する。そして、ステップ214においてデータベース(343,353)の実更新を行う。データベース(343,353)の実更新の終了後、フロントエンドサーバ312に制御を戻す。
【0021】
フロントエンドサーバ312では、ステップ215においてトランザクション終了処理を行い、次のステップ216でアプリケーションプログラム302にコミット成功の応答を返す。アプリケーションプログラム302がコミット成功の応答を受け、ステップ217においてコミットを完了し、1トランザクションは終了する。
【0022】
このようにして、各ノードのサーバは二相コミットプロトコルにしたがって互いに通信を行い、1つのトランザクション処理を行う。
【0023】
以上のようなトランザクション構成情報の分配を行わない従来のトランザクション処理方式では、ステップ208からステップ212の間にフロントエンドサーバ312やBノード311で処理続行不可能な障害が発生した場合、障害部位が復旧されなければバックエンドサーバ(342,352)はデータベース(343,353)の実更新の可否を判断できず、障害部位の復旧まで待ち合わせなければならない。このため、Dノード331のフロントエンドサーバ332が稼動していても、バックエンドサーバ(342,352)へのデータ操作が不可能となり、業務処理を続行できない状態となる。
【0024】
一方、図4は本発明であるトランザクション構成情報の分配を行うトランザクション処理方式の流れを示すフローチャートである。以降、図1、図4を参照して説明する。
【0025】
アプリケーションプログラム2よりステップ401において、データ操作要求が発生すれば、フロントエンドサーバ12はステップ402からのトランザクション処理の開始を行う。まず、ステップ402でトランザクション開始処理を行い、次にステップ403でデータベース操作指示を、バックエンドサーバ(42,52)に送信する。
【0026】
バックエンドサーバ(42,52)では、データベース操作指示を受け、ステップ404においてデータベース(43,53)の操作処理を行う。データベース操作処理(ステップ404)が終了すると、バックエンドサーバ(42,52)は処理完了をフロントエンドサーバ12に報告し、フロントエンドサーバ12に制御を戻す。これにより、フロントエンドサーバ12ではステップ405にてデータ操作成功の応答をアプリケーションプログラム2に返す。
【0027】
アプリケーションプログラム2では、次のステップ406においてコミット要求を送り、これを受けたフロントエンドサーバ12では、ステップ407でコミット保証指示と共に、バックエンドサーバ(42,52)と通信を行っているというトランザクション構成情報を、バックエンドサーバ(42,52)に送信する。
【0028】
バックエンドサーバ(42,52)では、ステップ408でログ情報管理処理部(44,54)において、データベース更新履歴とフロントエンドサーバ12から受けたトランザクション構成情報をログファイル(45,55)に取得する。データベース更新履歴とトランザクション構成情報を取得した後、バックエンドサーバ(42,52)は、ステップ409でコミット保証処理成功応答をフロントエンドサーバ12に返す。
【0029】
フロントエンドサーバ12では、ステップ410においてコミット保証成功応答によりコミット決定を行う。続いて、ステップ411においてコミット指示をバックエンドサーバ(42,52)に送信する。
【0030】
バックエンドサーバ(42,52)ではコミット指示を受信すると、ステップ412においてログ情報管理処理部(44,54)がログファイル(45,55)にコミット決定履歴を取得する。そして、ステップ413においてデータベース(43,53)の実更新を行う。データベース(43,53)の実更新の終了後、フロントエンドサーバ12に制御を戻す。
【0031】
フロントエンドサーバ12では、ステップ414においてトランザクション終了処理を行い、次のステップ415でアプリケーションプログラム2にコミット成功の応答を返す。アプリケーションプログラム2がコミット成功の応答を受け、ステップ416においてコミットを完了し、1トランザクションは終了する。
【0032】
以上のようなトランザクション構成情報の分配を行うトランザクション処理方式では、ステップ408からステップ411の間にフロントエンドサーバ12やBノード11で処理続行不可能な障害が発生した場合でも、バックエンドサーバ(42,52)の各々でトランザクションを構成しているサーバが判明しているので、バックエンドサーバ(42,52)同士で通信を行い、トランザクションの決着方法を決定することができる。このため、Dノード31のフロントエンドサーバ32のように障害部位以外に稼動しているフロントエンドサーバがあれば、バックエンドサーバ(42,52)へのデータ操作が可能であり、業務処理を続行することができる。
【0033】
以上、本発明を実施例にもとづき具体的に説明したが、本発明は前記実施例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。
【図面の簡単な説明】
【0034】
【図1】本発明の一実施の形態の並列処理型データベース管理システムの概略構成を示すブロック図。
【図2】トランザクション構成情報の分配を行わない場合の通常のトランザクション処理の流れを示すフローチャート。
【図3】トランザクション構成情報の分配を行わない場合の通常の形態の並列処理型データベース管理システムの概略構成を示すブロック図。
【図4】トランザクション構成情報の分配を行う場合のトランザクション処理の流れを示すフローチャート。
【符号の説明】
【0035】
1,301…Aノード(クライアント側システム)、21,321…Cノード(クライアント側システム)、2,22,302,322…アプリケーションプログラム、11,311…Bノード(フロントエンドサーバ側)、31,331…Dノード(フロントエンドサーバ側)、12,32,312,332…フロントエンドサーバ、41,341…Eノード(バックエンドサーバ側)、51,351…Fノード(バックエンドサーバ側)、42,52,342,352…バックエンドサーバ、43,53,343,353…データベース、44,54,313,333,344,354…ログ情報管理処理部、45,55,314,334,345,355…ログファイル。

【特許請求の範囲】
【請求項1】
ネットワーク上に分散配置されたサーバが、データ操作の要求に対応する通信を相互に行って、各々が並列に操作を行うトランザクション処理において、サーバ間での同期を必要とするトランザクションコミット処理方法としての二相コミット処理を行う際に、コミット保証指示と共にトランザクション構成情報を分配する手段を備え、かつコミット処理における履歴情報と共に分配されたトランザクション構成情報をログ情報としてログファイルに取得する手段を備えた分散トランザクション制御システム。
【請求項2】
ネットワーク上に分散配置されたサーバが、データ操作の要求に対応する通信を相互に行って、各々が並列に操作を行うトランザクション処理において、コミット保証指示と共にトランザクション構成情報を分配することを特徴とし、かつコミット処理における履歴情報と共に分配されたトランザクション構成情報をログ情報としてログファイルに取得することを特徴とする、サーバ間での同期を必要とするトランザクションコミット処理方法としての二相コミット処理方法。
【請求項3】
ネットワーク上に分散配置されたサーバが、データ操作の要求に対応する通信を相互に行って、各々が並列に操作を行うトランザクション処理において、部分障害発生時に分配されたトランザクション構成情報をもとに、障害部位以外でトランザクションを決着する手段を備えた分散トランザクション制御システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2007−293650(P2007−293650A)
【公開日】平成19年11月8日(2007.11.8)
【国際特許分類】
【出願番号】特願2006−121534(P2006−121534)
【出願日】平成18年4月26日(2006.4.26)
【出願人】(000005108)株式会社日立製作所 (27,607)
【出願人】(000233055)日立ソフトウエアエンジニアリング株式会社 (1,610)
【Fターム(参考)】