(57)【特許請求の範囲】
【請求項１】
第１プロセスのトランザクション処理を行う第１装置と、前記第１プロセスの次に実行する第２プロセスのトランザクション処理を行う第２装置と、前記第１プロセスのトランザクション処理に対するコミット処理が実行されるときに前記第２プロセスへ入力される前記第１プロセスの処理結果が書き込まれる記憶装置と、を備え、
前記第２装置が、前記第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、前記遅延状況が前記基準より悪化すると、コミット処理の保留を指示するコミット抑止通知を前記第１装置へ送信する、
情報処理システム。
【請求項２】
前記第１装置が、前記コミット抑止通知を受信すると、現在実行中の前記トランザクション処理を継続したまま、次データに対する前記第１プロセスの処理を実行する、
請求項１に記載の情報処理システム。
【請求項３】
前記遅延状況が前記基準より良化すると、前記第２装置が、コミット処理の保留を取り消すコミット抑止解除通知を前記第１装置へ送信する、
請求項１または請求項２に記載の情報処理システム。
【請求項４】
前記第１装置が１回のコミット処理で処理するデータ数の下限値が定められていて、
前記第１装置は、前記コミット抑止通知を受信していない場合、コミット処理をしていない前記データ数が前記下限値に達すると、コミット処理を実行する、
請求項１から請求項３の何れか１項に記載の情報処理システム。
【請求項５】
前記第１装置は、前記コミット抑止通知を受信しておらず、前記第１プロセスの実行待ちのデータが存在しない場合、現在の前記トランザクション処理で処理したデータ数に関わらずコミット処理を実行する、
請求項１から請求項４の何れか１項に記載の情報処理システム。
【請求項６】
前記第１装置が１回のコミット処理で処理するデータ数の上限値が定められていて、
前記第１装置は、コミット処理をしていない前記データ数が前記上限値に達すると、前記コミット抑止通知を受信しているか否かに関わらず、コミット処理を実行する、
請求項１から請求項５の何れか１項に記載の情報処理システム。
【請求項７】
第１プロセスのトランザクション処理を実行し、前記トランザクション処理に対するコミット処理を行うとともに、前記第１プロセスの処理結果を記憶装置に書き込み、前記記憶装置から前記処理結果を読み出して前記第１プロセスの次に実行する第２プロセスへ入力し、前記第２プロセスのトランザクション処理を実行するシステムにおける、前記第２プロセスを実行する情報処理装置であって、
前記第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、前記遅延状況が前記基準より悪化すると、前記第１プロセスのコミット処理の保留を指示するコミット抑止通知を送信する、情報処理装置。
【請求項８】
第１プロセスのトランザクション処理を実行し、前記トランザクション処理に対するコミット処理を行うとともに、前記第１プロセスの処理結果を記憶装置に書き込み、前記記憶装置から前記処理結果を読み出して前記第１プロセスの次に実行する第２プロセスへ入力し、前記第２プロセスのトランザクション処理を実行するシステムにおける、前記第１プロセスを実行する情報処理装置であって、
前記第１プロセスのコミット処理の保留を指示するコミット抑止通知を受信すると、現在実行中の前記トランザクション処理を継続したまま、次データに対する前記第１プロセスの処理を実行する、情報処理装置。
【請求項９】
第１プロセスのトランザクション処理を実行し、前記トランザクション処理に対するコミット処理を行うとともに、前記第１プロセスの処理結果を記憶装置に書き込み、前記記憶装置から前記処理結果を読み出して前記第１プロセスの次に実行する第２プロセスへ入力し、前記第２プロセスのトランザクション処理を実行するシステムの制御方法であって、
前記第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、前記遅延状況が前記基準より悪化すると、前記第１プロセスのコミット処理の保留を指示するコミット抑止通知を送信する、制御方法。
【請求項１０】
第１プロセスのトランザクション処理を実行し、前記トランザクション処理に対するコミット処理を行うとともに、前記第１プロセスの処理結果を記憶装置に書き込み、前記記憶装置から前記処理結果を読み出して前記第１プロセスの次に実行する第２プロセスへ入力し、前記第２プロセスのトランザクション処理を実行するシステムのコンピュータに、
前記第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、前記遅延状況が前記基準より悪化すると、前記第１プロセスのコミット処理の保留を指示するコミット抑止通知を送信する処理、を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、制御方法およびプログラムに関する。
【背景技術】
【０００２】
業務処理等のデータ処理を行うシステムとして、システム内の処理を複数のプロセスに分割し、各プロセスを段階的に実行することで処理を完遂するシステムがある。このようなシステムを多段オンライントランザクションシステムと呼ぶ（以下、多段ＯＬＴＸシステムと記載する場合がある。）。多段ＯＬＴＸシステムは、例えば、通信キャリアの利用料金計算システムなど、数分〜数十分単位でまとめて送られてくる大量のデータを処理しなければならない状況で使用されている。多段ＯＬＴＸシステムでは、各プロセスに割り当てられた処理を実行するとともに、その処理結果として出力されたデータを後段プロセスに提供する。後段プロセスでは、前段プロセスから提供されたデータを入力として処理を実行する。多段ＯＬＴＸシステムでは、障害時に処理結果データが失われることを防ぐために、前段プロセスから後段プロセスへのデータ受け渡しにディスク型のＤＢ（database）やＮＡＳ（Network Attached Storage）が使用される(特許文献１）。
【０００３】
多段ＯＬＴＸシステム１´の構成例を図１に示す。プロセスＡは、入力層のプロセスであり、データ入力装置２から受信した入力データをトランザクションとして処理し、コミット時に後段プロセスであるプロセスＢ宛てのデータをＮＡＳ３に書き込む。コミットが完了したら、データの出力先やデータ数等の情報(メタデータと呼ぶ)をプロセスＢ宛てに送信する。プロセスＢは中間層のプロセスであり、入力層からのメタデータの受信を契機として処理を開始する。ここでは、プロセスＡからメタデータを受信し、ＮＡＳ３から入力データを読み込んでトランザクションとして処理してプロセスＣ宛ての出力処理を行う。プロセスＣは出力層のプロセスであり、中間層からのメタデータの受信を契機として処理を開始する。出力層のプロセスＣは、処理結果をデータベース４に書き込み、システム全体としての１つのデータの処理が完了する。このように、多段ＯＬＴＸシステム１´では、プロセス間のデータ受け渡しでＮＡＳ３へのアクセスが発生する。
【０００４】
関連する技術として、特許文献２には、多段ＯＬＴＸシステムを構成するノード内に共有メモリを設け、後段プロセスの処理が同一ノード内で実行される場合には、前段プロセスが後段プロセスへ共有メモリを介してデータを渡すような構成とすることにより、ＮＡＳへのアクセス回数を低減する方法が開示されている。また、特許文献３には、１ノード上の処理で１つのデータに対するトランザクション処理が完結するようなシステム構成でのトランザクション処理について、１つのトランザクションで処理するデータ件数を動的に調整する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第５４５９６１３号公報
【特許文献２】特開２０１０−２６２３５５号公報
【特許文献３】特許第５３６３４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
多段ＯＬＴＸシステム１´では、プロセスＡ〜Ｃのトランザクションが並列して動作するため、複数のプロセスによるＮＡＳへの同時アクセスが発生し処理待ちが生じる。処理待ちが長くなるとＮＡＳへのアクセスがシステム全体のボトルネックとなる。このような現象への対策としてＮＡＳの数を増やして負荷を分散させることが考えられるが、システム構成が高価になる。なお、特許文献２に記載の技術は、その効果が、後段プロセスが同一ノードで実行される場合に限られる。また、特許文献３に記載の技術は、多段ＯＬＴＸシステムに適用できるものでは無い。
【０００７】
この発明は、上述の課題を解決する情報処理システム、情報処理装置、制御方法およびプログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば情報処理システムは、第１プロセスのトランザクション処理を行う第１装置と、前記第１プロセスの次に実行する第２プロセスのトランザクション処理を行う第２装置と、前記第１プロセスのトランザクション処理に対するコミット処理が実行されるときに前記第２プロセスへ入力される前記第１プロセスの処理結果が書き込まれる記憶装置と、を備え、前記第２装置が、前記第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、前記遅延状況が前記基準より悪化すると、コミット処理の保留を指示するコミット抑止通知を前記第１装置へ送信する。
【０００９】
本発明の一態様によれば情報処理装置は、第１プロセスのトランザクション処理を実行し、前記トランザクション処理に対するコミット処理を行うとともに、前記第１プロセスの処理結果を記憶装置に書き込み、前記記憶装置から前記処理結果を読み出して前記第１プロセスの次に実行する第２プロセスへ入力し、前記第２プロセスのトランザクション処理を実行するシステムにおける、前記第２プロセスを実行する情報処理装置であって、前記第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、前記遅延状況が前記基準より悪化すると、前記第１プロセスのコミット処理の保留を指示するコミット抑止通知を送信する。
【００１０】
本発明の一態様によれば情報処理装置は、第１プロセスのトランザクション処理を実行し、前記トランザクション処理に対するコミット処理を行うとともに、前記第１プロセスの処理結果を記憶装置に書き込み、前記記憶装置から前記処理結果を読み出して前記第１プロセスの次に実行する第２プロセスへ入力し、前記第２プロセスのトランザクション処理を実行するシステムにおける、前記第１プロセスを実行する情報処理装置であって、前記第１プロセスのコミット処理の保留を指示するコミット抑止通知を受信すると、現在実行中の前記トランザクション処理を継続したまま、次データに対する前記第１プロセスの処理を実行する。
【００１１】
本発明の一態様によれば第１プロセスのトランザクション処理を実行し、前記トランザクション処理に対するコミット処理を行うとともに、前記第１プロセスの処理結果を記憶装置に書き込み、前記記憶装置から前記処理結果を読み出して前記第１プロセスの次に実行する第２プロセスへ入力し、前記第２プロセスのトランザクション処理を実行するシステムの制御方法であって、前記第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、前記遅延状況が前記基準より悪化すると、前記第１プロセスのコミット処理の保留を指示するコミット抑止通知を送信する制御方法である。
【００１２】
本発明の一態様によれば、第１プロセスのトランザクション処理を実行し、前記トランザクション処理に対するコミット処理を行うとともに、前記第１プロセスの処理結果を記憶装置に書き込み、前記記憶装置から前記処理結果を読み出して前記第１プロセスの次に実行する第２プロセスへ入力し、前記第２プロセスのトランザクション処理を実行するシステムのコンピュータに、前記第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、前記遅延状況が前記基準より悪化すると、前記第１プロセスのコミット処理の保留を指示するコミット抑止通知を送信する処理、を実行させるプログラムである。
【発明の効果】
【００１３】
本発明によれば、トランザクション処理におけるストレージへのアクセス回数を低減することができる。
【図面の簡単な説明】
【００１４】
【図１】一般的な多段オンライントランザクションシステムの一例を示す図である。
【図２】本発明の一実施形態に係る多段オンライントランザクションシステムの一例を示す全体構成図である。
【図３】本発明の一実施形態に係る中間層の構成の一例を示す図である。
【図４】本発明の一実施形態に係る入力層の構成の一例を示す図である。
【図５】本発明の一実施形態に係る出力層の構成の一例を示す図である。
【図６】本発明の一実施形態に係る閾値格納領域のパラメータ値の一例を示す図である。
【図７】本発明の一実施形態におけるパラメータ値の一例を示す第１図である。
【図８】本発明の一実施形態におけるパラメータ値の一例を示す第２図である。
【図９】本発明の一実施形態における処理の一例を示す第１のフロー図である。
【図１０】本発明の一実施形態におけるパラメータ値の一例を示す第３図である。
【図１１】本発明の一実施形態における処理の一例を示す第２のフロー図である。
【図１２】本発明の一実施形態におけるパラメータ値の一例を示す第４図である。
【図１３】本発明の一実施形態における処理の一例を示す第３のフロー図である。
【図１４】本発明の一実施形態における処理の一例を示す第４のフロー図である。
【図１５】本発明の一実施形態におけるパラメータ値の一例を示す第５図である。
【図１６】本発明の一実施形態におけるパラメータ値の一例を示す第６図である。
【図１７】本発明の一実施形態におけるパラメータ値の一例を示す第７図である。
【図１８】本発明の一実施形態における処理の一例を示す第５のフロー図である。
【図１９】本発明の一実施形態におけるパラメータ値の一例を示す第８図である。
【図２０】本発明の一実施形態における処理の一例を示す第６のフロー図である。
【図２１】本発明の一実施形態におけるパラメータ値の一例を示す第９図である。
【図２２】本発明の一実施形態におけるパラメータ値の一例を示す第１０図である。
【図２３】本発明の一実施形態に係る情報処理システムの最小構成を示す図である。
【図２４】本発明の一実施形態に係る情報処理システムのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１５】
＜実施形態＞
以下、一実施形態に係る多段ＯＬＴＸシステムについて図２〜図２４を参照して説明する。
【００１６】
（システムの全体構成）
図２は、本発明の一実施形態に係る多段オンライントランザクションシステムの一例を示す全体構成図である。
図２に示すように多段ＯＬＴＸシステム１は、データ入力装置２と、ノードＸと、ノードＹと、ノードＺと、ＮＡＳ３と、データベース４と、を含んで構成される。多段ＯＬＴＸシステム１で実行する１つのデータに対する処理はプロセスＡ〜Ｃに分割されていて、プロセスＡ、プロセスＢ、プロセスＣの順に行われて完結する。また、プロセスＡ〜Ｃのそれぞれは１つのトランザクション処理として実行される。図１を用いて説明したように、入力層のプロセスＡの後段プロセスは中間層のプロセスＢであり、プロセスＢの後段プロセスは出力層のプロセスＣである。反対にプロセスＢの前段プロセスはプロセスＡであり、プロセスＣの前段プロセスはプロセスＢである。ノードＸ〜Ｚは、それぞれ１台又は複数台のコンピュータで構成される。ノードＸではプロセスＡが処理され、ノードＹではプロセスＢが処理され、ノードＺではプロセスＣが処理される。
【００１７】
多段ＯＬＴＸシステム１は、図１に示す一般的な多段ＯＬＴＸシステム１´の構成に加え、入力層以外のプロセスＢ〜Ｃについて、前段プロセス宛てにコミット抑止通知を行う機能と、コミット抑止解除通知を行う機能を有している。プロセスＢ，Ｃは、後述する３つのトランザクションコミット条件に従い、トランザクションのコミット実行とコミット延期を決定する。次に各層のノードの構成について説明する。
【００１８】
（中間層の構成）
図３は、本発明の一実施形態に係る中間層の構成の一例を示す図である。
図３に中間層のプロセスＢを処理する中間層装置１００を示す。中間層のノードＹは、１台又は複数台の中間層装置１００によって構成される。
中間層装置１００は、記憶部１０１と、メタデータ受信部１０２と、トランザクション管理部１０３と、コミット抑止・抑止解除通知送信部１０４と、トランザクション実行部１０５と、メタデータ送信部１１０と、コミット抑止・抑止解除通知受信部１１１と、を備える。
記憶部１０１は、中間層装置１００が備えるメモリである。中間層装置１００は、記憶部１０１のうち、プロセスＢに割り当てられるプロセスメモリを使用してプロセスＢの処理を行う。プロセスメモリには、メタデータ格納領域１２０、トランザクション管理データ格納領域１２１、入力業務データ格納領域１２２、出力業務データ格納領域１２３、閾値格納領域１２４、コミット抑止状態格納領域１２５の各領域が設けられる。
【００１９】
メタデータ受信部１０２は、前段プロセス（プロセスＡ）からメタデータを受信して、プロセスメモリ上のメタデータ格納領域１２０に格納し、トランザクション管理部１０３に通知する。メタデータは、データＩＤ、データサイズ、ＮＡＳ３上のデータ格納パスの各情報を含む。データＩＤは、１以上の整数値であり、昇順に使用され、かつ以前使用されたデータＩＤが再度使用されることはないものとする。メタデータ格納領域１２０は、受信したメタデータを保持する領域であり、メタデータ及び未入力データ数を管理する。未入力データ数とは、処理待ちとなっているメタデータの数である。
【００２０】
トランザクション管理部１０３は、メタデータ格納領域１２０と閾値格納領域１２４を参照して、トランザクション管理データ格納領域１２１を参照・更新し、必要に応じて入力業務データ格納領域１２２及び出力業務データ格納領域１２３を初期化する。また、トランザクション管理部１０３は、コミット抑止・抑止解除通知送信部１０４が処理を実行した後に、トランザクション実行部１０５へのトランザクションの実行指示を行う。
【００２１】
次に閾値格納領域１２４、トランザクション管理データ格納領域１２１、コミット抑止状態格納領域１２５にて管理される各パラメータの説明を行う。
閾値格納領域１２４には、コミット下限値、コミット上限値、コミット抑止通知送信データ数、コミット抑止解除通知送信データ数の各パラメータが格納される。コミット下限値は、１つのトランザクションでコミットするデータ数の最低値であり、トランザクションが一度に入力するデータ数は、コミット下限値に設定されている。コミット上限値は１つのトランザクションでコミット可能な最大のデータ数であり、コミット下限値の倍数で設定されている。コミット抑止通知送信データ数は、前段プロセスへコミット抑止通知を送信するかどうかの判定に用いる閾値である。コミット抑止解除通知送信データ数は、前段プロセスへコミット抑止解除通知を送信するかどうかの判定に用いる閾値である。コミット抑止通知送信データ数及びコミット抑止解除通知送信データ数は、コミット抑止・抑止解除通知送信部１０４で使用されるパラメータである。
【００２２】
トランザクション管理データ格納領域１２１には、トランザクション実行状態、トランザクションＩＤ、開始データＩＤ、終了データＩＤの各パラメータが格納される。トランザクション実行状態は、トランザクションの状態を示す値であり、「未実行」、「実行中」、「入力待ち」のいずれかの値をとる。例えば、トランザクション実行指示を行う場合には「実行中」に更新される。トランザクションのコミットが延期され、かつ次の入力データがまだ存在しない場合には「入力待ち」に更新される。トランザクションが実行されていない場合には「未実行」に更新される。トランザクションＩＤはトランザクションの識別値である。開始データＩＤと終了データＩＤは、トランザクションが処理中のデータを区別するための識別値である。
【００２３】
コミット抑止状態格納領域１２５には、「コミット抑止状態」パラメータが格納される。コミット抑止状態は、トランザクションのコミット可否に影響するパラメータであり、「解除」または「抑止」のいずれかの値をとる。例えば、コミット抑止・抑止解除通知受信部１１１が後段プロセス（プロセスＣ）からのコミット抑止通知、コミット抑止解除通知を受信すると、コミット抑止状態はそれぞれ「抑止」、「解除」に更新される。
【００２４】
コミット抑止・抑止解除通知送信部１０４は、メタデータ格納領域１２０の未入力データ数と、閾値格納領域１２４に格納されているコミット抑止通知送信データ数と、コミット抑止解除通知送信データ数とを比較し、前段プロセス（プロセスＡ）宛てにコミット抑止通知またはコミット抑止解除通知を送信する。
【００２５】
トランザクション実行部１０５は、トランザクションを実行する機能であり、業務データ入力部１０６と、業務データ処理部１０７と、コミット可否判定部１０８と、コミット部１０９と、から構成される。
まず、トランザクション実行部１０５が使用するパラメータの説明を行う。
入力業務データ格納領域１２２は、前段プロセスから入力される業務データ毎のデータＩＤ、データサイズ、業務データ及びそのデータ数が格納される。
出力業務データ格納領域１２３には、後段プロセスへ出力する業務データ毎のデータＩＤ、データサイズ、業務データ及びデータ数が格納される。
【００２６】
業務データ入力部１０６は、トランザクション管理データ格納領域１２１に設定されている開始データＩＤ、終了データＩＤから処理対象のデータを判別する。業務データ入力部１０６は、メタデータ格納領域１２０のメタデータからＮＡＳ３に格納された処理対象の業務データを、プロセスメモリ上の入力業務データ格納領域１２２に読み込み、読み込んだ領域のアドレスとサイズを業務データ処理部１０７に渡す。
【００２７】
業務データ処理部１０７は、業務データを入力業務データ格納領域１２２から取得し、プロセスＢで実行すべき処理を行った結果のデータをプロセスメモリ上の出力業務データ格納領域１２３に書き込む。
コミット可否判定部１０８は、メタデータ格納領域１２０と、トランザクション管理データ格納領域１２１と、コミット抑止状態格納領域１２５を参照してコミット可否を判定する。コミット可能の場合、コミット可否判定部１０８は、コミット部１０９にコミットの実行指示を通知する。コミット延期の場合、コミット可否判定部１０８は、トランザクション管理部１０３にトランザクションの継続指示を通知する。
【００２８】
コミット部１０９は、出力業務データ格納領域１２３に格納されたデータを、ＮＡＳ３にまとめて書き込み、メタデータを生成してメタデータ送信部１１０に通知する。メタデータの通知後、コミット部１０９は、トランザクション管理部１０３にトランザクションのコミットを指示する通知を行う。
メタデータ送信部１１０は、トランザクション実行部１０５から渡されたメタデータを後段プロセス（プロセスＣ）宛てに送信する。プロセスＣは、送信されたメタデータの受信を契機として実行される。
【００２９】
（入力層の構成）
図４は、本発明の一実施形態に係る入力層の構成の一例を示す図である。
図４に入力層のプロセスＡを処理する入力層装置２００を示す。入力層のノードＸは、１台又は複数台の入力層装置２００によって構成される。
入力層装置２００は、記憶部２０１と、データ受信部２０２と、トランザクション管理部２０３と、トランザクション実行部２０５と、メタデータ送信部２１０と、コミット抑止・抑止解除通知受信部２１１と、を備える。トランザクション実行部２０５は、業務データ入力部２０６と、業務データ処理部２０７と、コミット可否判定部２０８と、コミット部２０９と、を備える。
【００３０】
これらの機能部の各々は、中間層装置１００における同様の名称が付された機能部と同様の機能を有している。トランザクション実行部２０５が備える機能部２０６〜２０９についても同様である。以下の説明では、中間層装置１００と同じ機能についての説明は省略し、異なる機能についてのみ説明を行う。
なお、入力層には前段プロセスが存在しないため、入力層装置２００は、コミット抑止・抑止解除通知送信部１０４に相当する機能部を有していない。
【００３１】
記憶部２０１は、入力層装置２００が備えるメモリである。入力層装置２００は、記憶部２０１のうち、プロセスＡに割り当てられるプロセスメモリを使用してプロセスＡの処理を行う。プロセスメモリには、受信データ格納領域２２０、トランザクション管理データ格納領域２２１、入力業務データ格納領域２２２、出力業務データ格納領域２２３、閾値格納領域２２４、コミット抑止状態格納領域２２５の各領域が設けられる。
【００３２】
データ受信部２０２は、データ入力装置２から業務データ、業務データのデータＩＤ及びデータサイズを受信する。データ受信部２０２は、受信データ格納領域２２０に受信したデータを格納する。受信データ格納領域２２０は、メタデータ格納領域１２０におけるＮＡＳ３の格納パスの代わりに業務データをプロセスメモリ上に保持する。
【００３３】
トランザクション管理部２０３は、トランザクション管理データ格納領域２２１を更新した後、トランザクション実行部２０５に処理対象のデータのアドレスとサイズを渡す。
トランザクション実行部２０５の業務データ入力部２０６は、トランザクション管理データ格納領域２２１の開始データＩＤと終了データＩＤから処理対象のデータを判別し、受信データ格納領域２２０の対応する業務データを入力業務データ格納領域２２２にコピーする。
【００３４】
（出力層の構成）
図５は、本発明の一実施形態に係る出力層の構成の一例を示す図である。
図５に出力層のプロセスＣを処理する出力層装置３００を示す。出力層のノードＺは、１台又は複数台の出力層装置３００によって構成される。
出力層装置３００は、記憶部３０１と、メタデータ受信部３０２と、トランザクション管理部３０３と、コミット抑止・抑止解除通知送信部３０４と、トランザクション実行部３０５と、を備える。トランザクション実行部３０５は、業務データ入力部３０６と、業務データ処理部３０７と、コミット可否判定部３０８と、コミット部３０９と、を備える。
【００３５】
これらの機能部の各々は、中間層装置１００における同様の名称が付された機能部と同様の機能を有している。以下の説明では、中間層装置１００で説明した機能についての説明は省略し、異なる機能についてのみ説明を行う。
記憶部３０１のうち、プロセスＣに割り当てられるプロセスメモリには、メタデータ格納領域３２０、トランザクション管理データ格納領域３２１、入力業務データ格納領域３２２、出力業務データ格納領域３２３、閾値格納領域３２４、コミット抑止状態格納領域３２５の各領域が設けられる。
なお、出力層には後段プロセスが存在しないため、出力層装置３００は、メタデータ送信部１１０、コミット抑止・抑止解除通知受信部１１１に相当する機能部を有していない。
【００３６】
出力層装置３００では、トランザクション実行部３０５のコミット部３０９が、データベース４のコミット処理を行う。
【００３７】
（トランザクション処理）
次に多段ＯＬＴＸシステム１の動作について説明する。
図６は、本発明の一実施形態に係る閾値格納領域のパラメータ値の一例を示す図である。
説明の便宜のため、図６には、入力層、中間層、出力層で共通する閾値を設定する例を示すが、各層ごとに異なる閾値を設定することができる。図示するようにコミット下限値に「１」、コミット上限値に「１０」、コミット抑止通知送信データ数に「２」、コミット抑止解除通知送信データ数に「１」が設定されている。これらの値は、入力層の閾値格納領域１２４、中間層の閾値格納領域２２４、出力層の閾値格納領域３２４に格納されている。
以下、各層で実行される処理とともに変化するパラメータ値の遷移を示しつつ、図６に例示する閾値に基づいて行われる前段プロセスへのコミット抑止および抑止解除について説明する。
【００３８】
（処理状況−０）
図７に入力層、中間層、出力層の各プロセスのプロセスメモリの初期状態を示す。プロセスＡは入力層のプロセス、プロセスＢは中間層のプロセス、プロセスＣは出力層のプロセスを表している。
【００３９】
（処理状況−１）
図８に、データ受信部２０２が、データ入力装置２から５つのデータを受信し、トランザクション管理部２０３がトランザクション実行部２０５にトランザクション実行指示を行った後の状態を示す。図７に示すパラメータ値が、図８に示す値となるまでの処理について説明する。
データ受信部２０２は、受信データ格納領域２２０に業務データを格納し、未入力データ数を「５」に更新する。その後、データ受信部２０２は、トランザクション管理部２０３にデータ受信を通知する。ここで、図９を参照する。図９は、データ受信通知受信時（中間層、出力層の場合にはメタデータ受信通知の受信時）かつトランザクション管理データ格納領域１２１，２２１，３２１のトランザクション実行状態が「未実行」の場合のトランザクション管理部１０３，２０３，３０３の処理フローである。
ここでは、図９を用いて、図７から図８の状態に遷移するときのトランザクション管理部２０３の処理を説明する。
【００４０】
まず、トランザクション管理部２０３が、受信データ格納領域２２０に保持しているデータのうち、最小のデータＩＤ（データＩＤ＝１）をトランザクション管理データ格納領域２２１の開始データＩＤに設定する（Ｓ１００）。
次に、トランザクション管理部２０３は、受信データ格納領域２２０の未入力データ数が、閾値格納領域２２４のコミット下限値以上であるかどうかをチェックする（Ｓ１０１）。コミット下限値以上である場合（Ｓ１０１；Ｙｅｓ）、トランザクション管理データ格納領域２２１の開始データＩＤに閾値格納領域２２４のコミット下限値を加算した値をトランザクション管理データ格納領域２２１の終了データＩＤに設定する（Ｓ１０２）。つまり、コミット下限値を単位としてトランザクションに入力するデータ数を決定する。例えば、本例では、未入力データ数（「１」）はコミット下限値（「１」）以上なので、プロセスＡの開始データＩＤ（「０」）に、コミット下限値（「１」）を加算する。
【００４１】
コミット下限値未満であった場合（Ｓ１０１；Ｎｏ）、トランザクション管理部２０３は、未入力データをすべて処理するようにトランザクション管理データ格納領域２２１の終了データＩＤを設定する（Ｓ１０３）。つまり、トランザクション管理データ格納領域２２１の開始データＩＤに未入力データの数を加算し、さらに１を減算した値を終了データＩＤに設定する。Ｓ１０１〜Ｓ１０３の処理が完了した後、トランザクション管理部２０３は、トランザクション管理データ格納領域２２１のトランザクションＩＤを更新してトランザクション実行状態「実行中」に更新する（Ｓ１０４）。次に入力層以外のプロセスであるかをチェックする（Ｓ１０５）。入力層以外のプロセスの場合（Ｓ１０５；Ｙｅｓ）、コミット抑止・抑止解除通知送信部２０４の処理を行う。この処理については後述する（図１４）。入力層のプロセスの場合（Ｓ１０５；Ｎｏ）、処理を終了する。本例の場合、この判定は「Ｎｏ」となるため処理を終了する。
【００４２】
なお、トランザクション実行状態が「実行中」の場合は何もせず、「入力待ち」の場合の処理については後述する（図２０）。トランザクション管理部２０３は、図９の処理を実行した後、トランザクション実行部２０５にトランザクションの実行を通知する。
【００４３】
（処理状況−２）
図１０に、トランザクション実行部２０５の処理が完了した後のパラメータの値を示す。図８に示すパラメータ値が、トランザクション実行部２０５等の処理によって、図１０に示すパラメータ値となるまでの処理を説明する。
まず、業務データ入力部２０６が、データＩＤがトランザクション管理データ格納領域２２１の開始データＩＤ（「１」）以上で終了データＩＤ（「１」）以下である受信データ格納領域２２０のデータ（データＩＤ＝１）について、入力業務データ格納領域２２２にコピーし、業務データのコピーが完了したことを業務データ処理部２０７に通知する。
次に業務データ処理部２０７は、入力業務データ格納領域２２２から業務データを読み込み、プロセスＡの処理を行って、後段プロセス（プロセスＢ）宛ての業務処理の出力を出力業務データ格納領域２２３に書き込む。ここでは、データＩＤ＝１のデータについて処理が行われ、１つの出力業務データが格納されたとする。この場合、出力業務データ格納領域のデータ数は「１」になる。業務データ処理部２０７は、処理が完了した後、コミット可否判定部２０８に処理完了を通知する。
【００４４】
次に図１１を参照して、コミット可否判定部２０８の処理について説明する。
図１１は、コミット可否判定部１０８、２０８、３０８の処理フローを示している。
まず、コミット可否判定部２０８は、処理済みデータ数がコミット上限値以上かどうかを判定する（Ｓ２００）。本例の場合、トランザクションの処理済みデータ数（終了データＩＤ−開始データＩＤ＋１）が１であり、閾値格納領域２２４のコミット上限値（「１０」）未満であるため、この判定は「Ｎｏ」となる。Ｓ２００の判定が「Ｙｅｓ」の場合、Ｓ２０２へ進む。Ｓ２００の判定が「Ｎｏ」の場合、コミット可否判定部２０８は、コミット抑止状態格納領域２２５のコミット抑止状態が「解除」かどうかを判定する（Ｓ２０１）。「解除」の場合（Ｓ２０１；Ｙｅｓ）、コミット部２０９にコミットを実行するよう通知する（Ｓ２０２）。「解除」ではない場合（Ｓ２０１；Ｎｏ）、トランザクション管理部２０３にトランザクションを継続するよう通知する（Ｓ２０３）。本例の場合、コミット抑止状態格納領域２２５のコミット抑止状態が「解除」であるためＳ２０１が「Ｙｅｓ」となり、コミット可否判定部２０８は、コミット部２０９にコミット実行指示を通知する。
【００４５】
コミット部２０９は、出力業務データ格納領域２２３のデータをＮＡＳ３に書き込み、メタデータを生成してメタデータ送信部２１０に通知する。メタデータ送信部２１０は、プロセスＢにメタデータを送信し、メタデータの送信後、トランザクション管理部２０３にトランザクションコミットを実行したことを通知する。
【００４６】
（処理状況−３）
図１２は、プロセスＡでトランザクション(トランザクションＩＤ＝１)がコミットし、トランザクション管理部２０３が次のトランザクション（トランザクションＩＤ＝２）の実行をトランザクション実行部２０５に指示した後の状態と、プロセスＢがプロセスＡからメタデータを受信し、トランザクション管理部１０３が、トランザクション実行部１０５にトランザクション実行指示を行った後の状態を示している。パラメータ値が図１０に示す値から図１２に示す値となるまでの処理について説明する。
【００４７】
図１３は、トランザクション管理部１０３，２０３，３０３がトランザクションコミット通知を受信した場合の処理フローである。図１３を用いて上記の状況でのプロセスＡの処理について説明する。
まず、トランザクション管理部２０３は、受信データ格納領域２２０から、トランザクション管理データ格納領域２２１に設定されている開始データＩＤ以上で、終了データＩＤ以下のデータＩＤを持つデータ(データＩＤ＝１)を削除し、受信データ格納領域２２０の未入力データ数（「５」）からトランザクション処理済みのデータ数（「１」）を減算する（Ｓ３００）。
【００４８】
次に、トランザクション管理部２０３は、入力業務データ格納領域２２２及び出力業務データ格納領域２２３をクリアする（Ｓ３０１）。次に、トランザクション管理部２０３は、未入力データ数と、閾値格納領域２２４のコミット下限値とを比較する（Ｓ３０２）。未入力データ数がコミット下限値以上の場合（Ｓ３０２；Ｙｅｓ）、トランザクション管理部２０３は、開始データＩＤにコミット下限値を加算した値を終了データＩＤに設定する（Ｓ３０３）。次にトランザクション管理部２０３は、トランザクションＩＤに１を加算し、トランザクション実行状態を「実行中」に更新する（Ｓ３０４）。本例の場合、未入力データ数（「４」）がコミット下限値（「１」）以上なので、Ｓ３０３、Ｓ３０４の処理を行う。
【００４９】
未入力データ数がコミット下限値未満であった場合（Ｓ３０２；Ｎｏ）、トランザクション管理部２０３は、未入力データ数が０かどうかをチェックし（Ｓ３０５）、０であった場合（Ｓ３０５；Ｙｅｓ）、トランザクション管理データ格納領域２２１のトランザクション実行状態を「未実行」に更新する（Ｓ３０７）。
【００５０】
０ではなかった場合（Ｓ３０５；Ｎｏ）、トランザクション管理部２０３は、開始データＩＤに未入力データ数を加算し、さらに１を減算した値を終了データＩＤに設定する（Ｓ３０６）。次にトランザクション管理部２０３は、トランザクションＩＤに１を加算し、トランザクション実行状態を「実行中」に更新する（Ｓ３０４）。
Ｓ３０２〜Ｓ３０７の処理を実行後、トランザクション管理部２０３は、入力層以外のプロセスかどうかを判定し（Ｓ３０８）、入力層以外のプロセスの場合（Ｓ３０８；Ｙｅｓ）、コミット抑止・抑止解除通知送信部１０４，３０４の処理を実行する（Ｓ３０９）。入力層のプロセスの場合（Ｓ３０８；Ｎｏ）、処理を終了する。本例では、入力層のプロセスＡが処理対象のため、Ｓ３０７でトランザクション管理部２０３がトランザクション実行状態を「未実行」に更新すると、トランザクション実行部２０５へのトランザクション実行指示は行わない。
【００５１】
次にプロセスＢの処理について図９を参照して説明する。
まず、トランザクション管理部１０３が、メタデータ格納領域１２０に保持しているデータのうち、最小のデータＩＤ（データＩＤ＝１）をトランザクション管理データ格納領域１２１の開始データＩＤに設定する（Ｓ１００）。次に、トランザクション管理部１０３は、メタデータ格納領域１２０の未入力データ数（「１」）が、閾値格納領域１２４のコミット下限値（「１」）以上であるかどうかをチェックする（Ｓ１０１）。コミット下限値以上なので、トランザクション管理データ格納領域１２１の開始データＩＤに閾値格納領域１２４のコミット下限値を加算した値（「１」）をトランザクション管理データ格納領域１２１の終了データＩＤに設定する（Ｓ１０２）。次にトランザクション管理部１０３は、トランザクション管理データ格納領域１２１のトランザクションＩＤを「１」に更新してトランザクション実行状態を「実行中」に更新する（Ｓ１０４）。プロセスＢは、入力層以外のプロセスであるため（Ｓ１０５；Ｙｅｓ）。コミット抑止・抑止解除通知送信部１０４の処理を実行する（Ｓ１０６）。先に図９を参照して説明したトランザクション管理部２０３による処理と比較して、業務データ入力部１０６はＮＡＳ３からデータを読み込んで入力業務データ格納領域１２２に書き込む違いがある。
【００５２】
図１４にコミット抑止・抑止解除通知送信部１０４、３０４の処理（図９のＳ１０６、図１３のS３０９に相当）を示す。まず、コミット抑止・抑止解除通知送信部１０４は、コミット抑止・抑止解除通知が未送信、又は前回コミット抑止解除通知が送信済みかどうかを判定する（Ｓ５００）。この判定が「Ｙｅｓ」の場合、コミット抑止・抑止解除通知送信部１０４は、未入力データ数がコミット抑止通知送信データ数以上かどうかを判定する（Ｓ５０１）。この判定が「Ｙｅｓ」の場合、コミット抑止・抑止解除通知送信部１０４は、前段プロセスへコミット抑止通知を送信する（Ｓ５０２）。Ｓ５０１の判定が「Ｎｏ」の場合、何もしない。
【００５３】
Ｓ５００の判定が「Ｎｏ」の場合、コミット抑止・抑止解除通知送信部１０４は、未入力データ数がコミット抑止解除通知送信データ数以上かどうかを判定する（Ｓ５０３）。この判定が「Ｙｅｓ」の場合、コミット抑止・抑止解除通知送信部１０４は、前段プロセスへコミット抑止解除通知を送信する（Ｓ５０４）。Ｓ５０３の判定が「Ｎｏ」の場合、何もしない。本例の場合、コミット抑止・抑止解除通知を未送信であるため、Ｓ５００の判定が「Ｙｅｓ」となる。次に、メタデータ格納領域の未入力データ数（「１」）が閾値格納領域１２４のコミット抑止通知送信データ数（「２」）以下であるため、Ｓ５０１の判定が「Ｎｏ」となり処理を終了する。
【００５４】
（処理状況−４）
図１５は、プロセスＡのトランザクション(トランザクションＩＤ＝２)、プロセスＢのトランザクション(トランザクションＩＤ＝１)がそれぞれコミットし、プロセスＣのトランザクション(トランザクションＩＤ＝１)が実行開始まで処理が進んだ状態を示している。プロセスＣは出力層のプロセスであるため、トランザクションコミット時はデータベース４のコミット処理が行われる。ここで、データベース４のコミット処理に時間がかかり、プロセスＣのトランザクションが遅延したとする。この場合の処理について以下で説明する。
【００５５】
（処理状況−５）
図１６は、プロセスＣのトランザクションが遅延している間にプロセスＡ、プロセスＢの処理が進み、プロセスＣのメタデータ格納領域３２０の未入力データ数が「３」になった状況を示している。ここで、すべてのプロセスはトランザクションを実行中の状態(コミット前)であるとする。
【００５６】
（処理状況−６）
図１７は、プロセスＣがトランザクションのコミットを完了し、トランザクション管理部３０３にトランザクションコミットを通知し、コミット抑止・抑止解除通知送信部３０４の処理が実行され、プロセスＢのコミット抑止・抑止解除通知受信部１１１が、コミット抑止・抑止解除通知送信部３０４によって送信されたコミット抑止通知を受信した状態を示している。図１４、図１８を参照して、コミット抑止通知送信〜受信の処理について説明する。
まず、図１４を参照してコミット抑止通知送信の処理について説明する。コミット抑止・抑止解除通知送信部３０４は、コミット抑止・抑止解除通知を送信していないのでＳ５００の判定は「Ｙｅｓ」となる。次にメタデータ格納領域３２０の未入力データ数（「２」）が閾値格納領域３２４のコミット抑止通知送信データ数（「２」）以上であるため、Ｓ５０１の判定は「Ｙｅｓ」となり、コミット抑止・抑止解除通知送信部３０４は、プロセスＢ（中間層装置１００宛に）にコミット抑止通知を送信する（Ｓ５０２）。
【００５７】
次に図１８を参照して、プロセスＢのコミット抑止・抑止解除通知受信部１１１の処理について説明する。コミット抑止・抑止解除通知受信部１１１，２１１の処理フローを図１８に示す。ここでは処理状況−５〜６におけるコミット抑止・抑止解除通知受信部１１１の処理を例に説明を行う。
まず、コミット抑止・抑止解除通知受信部１１１は、コミット抑止通知を受信すると、コミット抑止状態格納領域１２５のコミット抑止状態を「抑止」に更新する（Ｓ６００）。次にコミット抑止・抑止解除通知受信部１１１は、コミット抑止状態が「解除」かどうかを判定する（Ｓ６０１）。「解除」の場合（Ｓ６０１；Ｙｅｓ）、コミット抑止・抑止解除通知受信部１１１は、トランザクション管理部３０３にコミット抑止解除を通知する（Ｓ６０２）。「解除」ではない場合（Ｓ６０１；Ｎｏ）、何もしない。本例の場合、コミット抑止状態が「抑止」であるためＳ６０１の判定が「Ｎｏ」になり処理を終了する。
【００５８】
（処理状況−７）
図１９は、プロセスＡでトランザクション（トランザクションＩＤ＝５）がコミットし、プロセスＢのトランザクション（トランザクションＩＤ＝４）が継続して次のデータ（トランザクションＩＤ＝５）を処理した状態を示している。プロセスＡ，Ｂそれぞれの処理について説明する。
プロセスＡについて、トランザクション（トランザクションＩＤ＝５）がコミットし、データＩＤ＝５のメタデータが送信され、プロセスＢのメタデータ格納領域１２０の未入力データ数が「２」になる。
プロセスＢについて、トランザクション（トランザクションＩＤ＝４）が、図１１のフロー図に従って処理される。コミット可否判定部１０８は、処理済みデータ数（終了データＩＤ−開始データＩＤ＋１＝２）がコミット上限値（「１０」）未満（Ｓ２００；Ｎｏ）、コミット抑止状態格納領域１２５のコミット抑止状態が「抑止」であるため（Ｓ２０１；Ｎｏ）、トランザクション管理部１０３にトランザクション継続を通知する（Ｓ２０３）。
【００５９】
ここで、トランザクション管理部１０３，２０３，３０３におけるトランザクション継続通知受信時及びデータ受信時（トランザクション管理部２０３、３０３についてはメタデータ受信時）かつトランザクション実行状態が「入力待ち」である場合の処理フローを図２０に示す。図２０を用いて、トランザクション管理部１０３がトランザクション継続通知を受信したときの処理を説明する。
トランザクション管理部１０３は、トランザクションで未処理のデータ数（未入力データ数−処理済みデータ数）がコミット下限値以上かどうかを判定する（Ｓ４００）。コミット下限値以上の場合（Ｓ４００；Ｙｅｓ）、トランザクション管理部１０３は、終了データＩＤにコミット下限値を加算し、加算後の値を終了データＩＤに設定する（Ｓ４０１）。コミット下限値未満の場合（Ｓ４００；Ｎｏ）、トランザクション管理部１０３は、未入力データ数が０かどうかを判定する（Ｓ４０２）。未入力データ数が０ではない場合（Ｓ４０２；Ｎｏ）、トランザクション管理部１０３は、終了データＩＤに未入力データ数を加算した値から処理済みデータ数を減算し、さらに１を減算した値を終了データＩＤに設定する（Ｓ４０３）。Ｓ４０１またはＳ４０３の処理が完了すると、トランザクション管理部１０３は、トランザクション実行状態を「実行中」に更新する（Ｓ４０４）。
また、未入力データ数が０の場合（Ｓ４０２；Ｙｅｓ）、トランザクション管理部１０３は、トランザクション実行状態を「入力待ち」に更新する（Ｓ４０５）。
図１９の例では、トランザクションで未処理のデータ数、すなわちメタデータ格納領域１２０の未入力データ数（「２」）−処理済みデータ数（「１」）が１であり、閾値格納領域１２４のコミット下限値（「１」）以上であるため、Ｓ４００の判定は「Ｙｅｓ」になり、終了データＩＤを「５」に設定し（Ｓ４０１）、トランザクション実行状態を「実行中」に更新する（Ｓ４０４）。もし、全データを処理済みで、未入力データ数が０であった場合は、トランザクション管理部１０３は、トランザクション実行状態を「入力待ち」に更新する（Ｓ４０５）。トランザクション実行状態を「入力待ち」に更新した場合、トランザクション管理部１０３は、トランザクション実行指示を行わない。
【００６０】
（処理状況−８）
図２１は、プロセスＣでコミット部３０９が、データＩＤ＝２のデータの処理結果をコミットし、コミット抑止・抑止解除通知送信部３０４がコミット抑止解除通知を送信し、プロセスＢではコミット抑止・抑止解除通知受信部２１１がこれを受信し、プロセスＢのトランザクション（トランザクションＩＤ＝４）で、業務データ処理部１０７がデータＩＤ＝５の処理を完了した状態を示している。パラメータ値が図１９に示す状態から図２１に示す状態となるまでのプロセスＣ、プロセスＢの処理を説明する。
【００６１】
プロセスＣのトランザクションがコミットしたことにより、メタデータ格納領域３２０の未入力データ数が「1」になる。以降の処理については図１４を参照して説明する。前回コミット抑止通知を送信済み（Ｓ５００；Ｎｏ）、未入力データ数（「１」）が閾値格納領域３２４のコミット抑止解除通知送信データ数（「１」）以下になったため（Ｓ５０３；Ｙｅｓ）、コミット抑止・抑止解除通知送信部３０４は、前段プロセス(プロセスＢ)にコミット抑止解除通知を送信する（Ｓ５０４）。
【００６２】
プロセスＢについて、図１８を参照して説明する。コミット抑止・抑止解除通知受信部１１１は、コミット抑止状態格納領域１２５のコミット抑止状態を「解除」に更新する（Ｓ６００）。コミット抑止状態が「解除」であるため（Ｓ６０１；Ｙｅｓ）、コミット抑止・抑止解除通知受信部１１１は、トランザクション管理部１０３にコミット抑止解除を通知する（Ｓ６０２）。コミット抑止解除をトランザクション管理部１０３に通知するのは、トランザクション管理データ格納領域１２１のトランザクション実行状態が「入力待ち」でデータ入力を待ち合わせている可能性があるため、コミット抑止解除通知受信を契機としてコミットする必要があるためである。この場合、トランザクション管理部１０３は、コミット抑止・抑止解除通知受信部１１１からコミット抑止解除通知を受け、トランザクション実行状態が「入力待ち」の場合にトランザクション実行部１０５にトランザクションコミット指示を行い、トランザクション実行部１０５はコミット部１０９の処理だけを行う（後述するトランザクションコミット条件のコミット条件２）。
プロセスＢのトランザクションでは、同一トランザクションの２つ目のデータ(データＩＤ＝５)についての業務データ処理部１０７の処理が完了しており、出力業務データ格納領域データ数が２となる。
【００６３】
（処理状況−９）
図２２は、プロセスＢのトランザクション（トランザクションＩＤ＝４）のコミットが完了した状態を示している。図２１に示す状態から図２２に示す状態になるまでの処理について図１１を参照して説明する。処理済みデータ数（終了データＩＤ−開始データＩＤ＋１＝２）がコミット上限値（「１０」）未満で（Ｓ２００；Ｎｏ）、コミット抑止状態格納領域１２５のコミット抑止状態が「解除」になったため（Ｓ２０１；Ｙｅｓ）、コミット可否判定部１０８がコミット部１０９にコミットを通知し（Ｓ２０２）、コミット部１０９がコミット処理を行う。この例が示すように、後段プロセス（プロセスＣ）遅延により、プロセスＢでは、出力業務データ格納領域１２３の２つ分のデータ（ＩＤ＝４、５）をまとめてＮＡＳ３に書き込むことができる。そのためＮＡＳ３への書き込み回数を減らすことがでる。また、プロセスＣでのＮＡＳ３からのデータ読み込み時間の削減を見込むことができる。
【００６４】
（効果）
本実施形態の多段ＯＬＴＸシステム１によれば、前段プロセスのトランザクションのコミット時に後段プロセスのデータ処理状況に応じてコミットの可否を判定する。これにより、トランザクションが処理するデータ数を動的に調整しコミット回数を最小限に抑え、処理結果のＮＡＳ３への書き込み回数を低減し、ＮＡＳ３の負荷を軽減する。
【００６５】
ここで、トランザクションが処理するデータ数を増やすと全体のコミット回数を減らすことができる。しかし、多段ＯＬＴＸシステムでは、入力層、中間層、出力層の各プロセスが１つの入力データを処理する時間に偏りがあるため、各プロセス上のトランザクションで処理するデータ数を一律に決定すると、後段プロセスがデータ処理を完了しても前段プロセスのデータ処理が完了しておらず、後段プロセスで待ちが発生し、システム全体のスループットが悪化する可能性がある。また、各プロセスが１データを処理するのに要する時間は、単にＣＰＵ時間やメモリアクセス等のノード内の処理条件だけではなく、アクセス先の他システムのサーバやＤＢサーバの状態によって動的に変化する。
【００６６】
そのため、本実施形態では、入力層、中間層、出力層の各プロセスのトランザクションが処理するデータ数を、後段プロセスの処理状況に応じて動的に変更する。具体的には、トランザクションコミット後に滞留している入力待ちデータの数が閾値(図６のコミット抑止通知送信データ数)以上になった場合、前段プロセスにコミット抑止通知を送信する。前段プロセスはコミット抑止通知を受信するとコミット抑止状態となり、トランザクションが入力データの処理を完了してもコミットを延期し、同じトランザクションで次の入力データの処理を開始する（図１１のＳ２０３）。これにより、前段プロセスのトランザクションのコミットを抑止し、ＮＡＳ３への書き込み回数を減らすことができる。
【００６７】
また、後段プロセスは、トランザクションコミット後に滞留している入力待ちデータの数が閾値(図６のコミット抑止解除通知送信データ数)以下になった場合、前段プロセスにコミット抑止解除通知を送信する。前段プロセスはコミット抑止解除通知を受信するとコミット抑止解除状態となり、トランザクションが入力データの処理を完了するとトランザクションをコミットして後段プロセスにデータを出力する。これにより、前段プロセスでの書き込み回数を減らしつつ、後段プロセスで入力待ちの遅延が生じることを防ぐことができる。
【００６８】
前段プロセスのトランザクションコミット時、メタデータ送信部１１０，２１０が、データの出力先と出力データ数を後段プロセスに通知するため、後段プロセスでは、前段プロセスから通知されたデータ数から入力済みのデータ数を減算することで滞留データ数を計算可能である。そのため、コミット抑止通知・コミット抑止解除通知の送信にあたって、後段プロセスでは、ＮＡＳ３への追加的なアクセスが発生することはない。
【００６９】
後段プロセスが動作しているノードのリソースを無駄にすることなくトランザクションのコミット回数を最小限に抑えることができる一方で、後段プロセスのデータ処理時間よりも前段プロセスのデータ処理時間が長い場合、前段プロセスのトランザクションのコミットが頻発してＮＡＳ３の負荷が増大する可能性がある（課題ａ）。また、ノード間のネットワーク障害等で後段プロセスからのコミット抑止解除通知がロストし、トランザクションのサイズが肥大化してリソース不足が発生する可能性がある（課題ｂ）。これらの課題への対策として、本実施形態では、トランザクションの入力データ数の下限値・上限値（図６）を設定し、以下の３つのトランザクションコミット条件を導入している。
【００７０】
（コミット条件１）
コミット抑止解除状態かつ入力データ数がコミット下限値に到達済（図１１のＳ２００でＮｏ、Ｓ２０１でＹｅｓの場合）。
本実施形態では、データ入力時の最低量として、コミット下限値単位でデータ入力を行ってトランザクション処理を行うこととしているため（図９のＳ１０２、図１３のＳ３０３）、図１１の処理フローによってコミット可否を判定することでコミット条件１が満たされる。
【００７１】
（コミット条件２）
コミット抑止解除状態かつ滞留中の入力待ちデータなし（図１８のＳ６０２の説明）。
本実施形態では、コミット抑止通知を受信しておらず、処理待ちのデータが存在しない場合（入力待ち）、トランザクション処理で処理したデータ数に関わらずコミット処理を実行する。
【００７２】
（コミット条件３）
入力データ数がコミット上限値に到達済み（図１１のＳ２００でＹｅｓの場合）
【００７３】
本実施形態の多段ＯＬＴＸシステム１では、コミット条件１〜３の何れか１つの条件を満たせば、コミット処理を行うことができる。例えば、コミット条件１により、上記の課題ａに対し、コミット下限値に規定されたデータの単位でコミット処理を行うことが担保され、コミット処理の頻発によるＮＡＳ３へのアクセスを抑制することができる。例えば、コミット条件３により、上記の課題ｂに対処することができる。また、コミット条件２により、無駄な待ち時間による処理の遅延を防ぎ、速やかに後段プロセスへ処理結果を引き継ぎ、後段プロセスの処理を開始することができる。
【００７４】
上記説明したように本実施形態によれば、多段オンライントランザクションシステムにおいて、各層のプロセスが動作するサーバリソースを最大限に利用しつつ、トランザクションのコミット回数を最小限に抑えてＮＡＳ３へのアクセス負荷を軽減する。これにより、システム全体のスループットを最大化することができる。
【００７５】
なお、発明の実施例では、中間層のプロセスを1つにした３ノード構成で説明したが、中間層のプロセスは任意の数に拡張することができる。まや、本実施形態の多段ＯＬＴＸシステム１の適用先は、通信キャリアの利用料金計算システムに限定されない。
【００７６】
図２３は、本発明の一実施形態に係る情報処理システムの最小構成を示す図である。
情報処理システム３０は、第１装置３１と、第２装置３２と、記憶装置３３とを備える。
第１装置３１は、第１プロセスのトランザクション処理を行う。第２装置３２は、第１プロセスの次に実行する第２プロセスのトランザクション処理を行う。記憶装置３３は、前記第１プロセスのトランザクション処理に対するコミット処理が実行されるときに前記第２プロセスへ入力される前記第１プロセスの処理結果を保持する。
第２装置３２は、第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、遅延状況が基準より悪化している場合、コミット処理の保留を指示するコミット抑止通知を第１装置３１へ送信する。
情報処理システム３０によれば、後段の第２プロセスで処理遅延が発生している場合に前段の第１プロセスのトランザクションのコミットを抑止することにより、記憶装置３３への書き込み回数を減らすことができる。これにより、記憶装置３３へのアクセス競合が減り、システム全体のボトルネックになりやすい記憶装置３３へのアクセス時間を削減することができ、システム全体のスループットが向上する。
【００７７】
図２４は、本発明の一実施形態に係る情報処理システムのハードウェア構成の一例を示す図である。
コンピュータ９００は、ＣＰＵ９０１、主記憶装置９０２、補助記憶装置９０３、入出力インタフェース９０４、通信インタフェース９０５を備える。上述の中間層装置１００、入力層装置２００、出力層装置３００はそれぞれ、コンピュータ９００に実装される。そして、上述した各機能部の動作は、プログラムの方式で補助記憶装置９０３に記憶されている。ＣＰＵ９０１は、プログラムを補助記憶装置９０３から読み出して主記憶装置９０２に展開し、当該プログラムに従って上記処理を実行する。また、ＣＰＵ９０１は、プログラムに従って、記憶領域を主記憶装置９０２に確保する。また、ＣＰＵ９０１は、プログラムに従って、処理中のデータを記憶する記憶領域を補助記憶装置９０３に確保する。
【００７８】
なお、少なくとも１つの実施形態において、補助記憶装置９０３は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、入出力インタフェース９０４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ９００に配信される場合、配信を受けたコンピュータ９００が当該プログラムを主記憶装置９０２に展開し、上記処理を実行しても良い。また、当該プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、当該プログラムは、前述した機能を補助記憶装置９０３に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【００７９】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。
【符号の説明】
【００８０】
１・・・多段オンライントランザクションシステム（多段ＯＬＴＸシステム）
２・・・データ入力装置
３・・・ＮＡＳ
４・・・データベース
１００・・・中間層装置
２００・・・入力層装置
３００・・・出力層装置
１０１、２０１、３０１・・・記憶部
１０２、３０２・・・メタデータ受信部
２０２・・・データ受信部
１０３、２０３、３０３・・・トランザクション管理部
１０４、２０４、３０４・・・コミット抑止・抑止解除通知送信部
１０５、２０５、３０５・・・トランザクション実行部
１０６、２０６、３０６・・・業務データ入力部
１０７、２０７、３０７・・・業務データ処理部
１０８、２０８、３０８・・・コミット可否判定部
１０９、２０９、３０９・・・コミット部
１１０、２１０、３１０・・・メタデータ送信部
１１１、２１１、３１１・・・コミット抑止・抑止解除通知受信部
Ａ、Ｂ、Ｃ・・・プロセス
Ｘ、Ｙ、Ｚ・・・ノード
９００・・・コンピュータ
９０１・・・ＣＰＵ
９０２・・・主記憶装置
９０３・・・補助記憶装置
９０４・・・入出力インタフェース
９０５・・・通信インタフェース
【要約】
【課題】多段オンライントランザクションシステムにおいて全体のスループットを向上させる方法を提供する。
【解決手段】情報処理システムは、第１プロセスのトランザクション処理を行う第１装置と、前記第１プロセスの次に実行する第２プロセスのトランザクション処理を行う第２装置と、前記第１プロセスのトランザクション処理に対するコミット処理が実行されるときに前記第２プロセスへ入力される第１プロセスの処理結果が書き込まれる記憶装置と、を備え、第２装置が、第２プロセスのトランザクション処理の遅延状況を所定の基準に基づいて判定し、遅延状況が基準より悪化するとコミット処理の保留を指示するコミット抑止通知を第１装置へ送信する。
【選択図】図２【図１】
0006780760.tif 000002
【図２】
0006780760.tif 000003
【図３】
0006780760.tif 000004
【図４】
0006780760.tif 000005
【図５】
0006780760.tif 000006
【図６】
0006780760.tif 000007
【図７】
0006780760.tif 000008
【図８】
0006780760.tif 000009
【図９】
0006780760.tif 000010
【図１０】
0006780760.tif 000011
【図１１】
0006780760.tif 000012
【図１２】
0006780760.tif 000013
【図１３】
0006780760.tif 000014
【図１４】
0006780760.tif 000015
【図１５】
0006780760.tif 000016
【図１６】
0006780760.tif 000017
【図１７】
0006780760.tif 000018
【図１８】
0006780760.tif 000019
【図１９】
0006780760.tif 000020
【図２０】
0006780760.tif 000021
【図２１】
0006780760.tif 000022
【図２２】
0006780760.tif 000023
【図２３】
0006780760.tif 000024
【図２４】
0006780760.tif 000025