(57)【要約】【課題】ＮＦＳに対する問題点を解消し、性能を改善する。【解決手段】所定操作単位に要求を送信するファイルクライアント１と、要求を受信するたびに応答結果を送信するファイルエージェント２とを備え、ファイルエージェント２は、トランザクション識別子のハッシュ値を用いてディレクトリ名を生成する通信制御部２０と、登録要求受信時に登録対象のファイルをファイル記憶装置３２に登録するファイルアクセス制御部２２と、登録要求受信時に登録対象のファイル情報を仮登録する仮登録リスト記憶部２５と、コミット要求受信時に仮登録したファイル情報をファイル情報ＤＢ３１に格納するファイル情報制御部２１とを有し、ファイルアクセス制御部２２、仮登録リスト記憶部２５およびファイル情報制御部２１は、ロールバック要求受信時に未完了のトランザクションに対応するファイル情報を削除する。【選択図】図１
2012194951.tif 000002
【特許請求の範囲】
【請求項１】
所定の操作単位に要求を送信するファイルクライアントと、
前記要求を受信するたびに、当該要求に対する結果を送信するファイルエージェントと、を備え、
前記ファイルエージェントは、
前記要求に対応するトランザクション識別子のハッシュ値を用いてディレクトリ名を生成する通信制御部と、
前記要求として登録要求を受信したときに、登録対象のファイルをファイル記憶装置に登録するファイルアクセス制御部と、
前記登録要求を受信したときに、登録対象のファイル情報を仮登録する仮登録リスト記憶部と、
前記要求としてコミット要求を受信したときに、仮登録したファイル情報をファイル情報ＤＢに格納するファイル情報制御部と、を有し、
前記ファイルアクセス制御部、前記仮登録リスト記憶部および前記ファイル情報制御部は、前記要求としてロールバック要求を受信したときに、未完了のトランザクションに対応するファイル情報を削除する、
ことを特徴とするトランザクション処理システム。
【請求項２】
所定の操作単位に要求を送信するファイルクライアントと、前記要求を受信するたびに、当該要求に対する結果を送信するファイルエージェントと、を備えるトランザクション処理システムを制御する方法であって、
前記ファイルエージェントが、
前記要求に対応するトランザクション識別子のハッシュ値を用いてディレクトリ名を生成するステップと、
前記要求として登録要求を受信したときに、登録対象のファイルをファイル記憶装置に登録するステップと、
前記登録要求を受信したときに、登録対象のファイル情報を仮登録するステップと、
前記要求としてコミット要求を受信したときに、仮登録したファイル情報をファイル情報ＤＢに格納するステップと、
前記要求としてロールバック要求を受信したときに、未完了のトランザクションに対応するファイル情報を削除するステップと、
を含むことを特徴とするトランザクション処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクション処理システムおよびトランザクション処理方法に関する。
【背景技術】
【０００２】
従来のトランザクション処理システム（Ｔ１０１）は、アプリケーションサーバ間でのデータの受け渡しや、データ保証、運用管理の目的から、データを格納するファイルの保存先としてＮＡＳ(Network Attached Storage)を採用し、ＮＦＳ(Network File System)を使用してアクセスする（例えば、下記特許文献１参照）。
【０００３】
ＮＦＳは、汎用的なファイルプロトコルであるが、トランザクション処理システム（Ｔ１０１）固有のファイルアクセスの方法とは相容れないものがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２６８５８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
トランザクション処理システム（Ｔ１０１）にとって、ＮＦＳには以下の（１）〜（４）の問題点がある。
【０００６】
（１）ハードマウントを用いた場合、ＮＦＳサーバ障害時にＮＦＳクライアントがハングアップしてしまう。ソフトマウントを用いることでハングアップを回避できるが、トランザクション処理システム（Ｔ１０１）では、ファイルの確証をファイル出力関数の成功終了としているため、ハードマウントによるデータ書き込み保証が必須となり、書き込み保証のないソフトマウントを用いることができない。
【０００７】
（２）１ディレクトリ内のリンク数に上限がある。トランザクション処理システム（Ｔ１０１）では、ディスク配置の構成、トランザクションのコミットを管理する目的、障害復旧時のファイル情報の取得などの目的で、出力先ごとや、その配下についてトランザクション単位にディレクトリを分割している。大規模なシステムであっても、出力先の数はあまり許容範囲であるが、出力先が障害で止まっている間に多数のトランザクションを実行してデータを出力すると、トランザクション単位のディレクトリ数が増えすぎて、ファイルを出力することができなくなってしまう。
【０００８】
（３）通信処理の冗長性。トランザクション処理システム（Ｔ１０１）のファイルアクセスは、例えば、データ出力の場合には、必要なディレクトリの作成、ファイルのオープン、データの書き込み、ファイルのクローズという一連の操作が決まっている。これに対して、ＮＦＳは、ファイルアクセスの要求（オープンやクローズなど）ごとに、ＮＦＳサーバとクライアントとの間で通信が行われ、実行結果を確認した後に、次の要求が行われるため、速度性能が低い。
【０００９】
（４）キャッシュの非効率性。トランザクション処理システム（Ｔ１０１）では、トランザクションが入力するファイルは順序性を維持するため、古いものから順にファイル読込を行う。これに対して、ディスクキャッシュは、一般的によく使うファイルや最新のファイルを優先する。したがって、回数としては均等にアクセスするファイルの中の最も古いものからアクセスするトランザクション処理システム（Ｔ１０１）に、ディスクキャッシュは適さない。
【００１０】
本発明は、上述した課題を解決するためになされたものであり、ＮＦＳに対する問題点を解消し、性能を改善することができるトランザクション処理システムおよびトランザクション処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明のトランザクション処理システムは、所定の操作単位に要求を送信するファイルクライアントと、前記要求を受信するたびに、当該要求に対する結果を送信するファイルエージェントと、を備え、前記ファイルエージェントは、前記要求に対応するトランザクション識別子のハッシュ値を用いてディレクトリ名を生成する通信制御部と、前記要求として登録要求を受信したときに、登録対象のファイルをファイル記憶装置に登録するファイルアクセス制御部と、前記登録要求を受信したときに、登録対象のファイル情報を仮登録する仮登録リスト記憶部と、前記要求としてコミット要求を受信したときに、仮登録したファイル情報をファイル情報ＤＢに格納するファイル情報制御部と、を有し、前記ファイルアクセス制御部、前記仮登録リスト記憶部および前記ファイル情報制御部は、前記要求としてロールバック要求を受信したときに、未完了のトランザクションに対応するファイル情報を削除する。
【００１２】
本発明のトランザクション処理方法は、所定の操作単位に要求を送信するファイルクライアントと、前記要求を受信するたびに、当該要求に対する結果を送信するファイルエージェントと、を備えるトランザクション処理システムを制御する方法であって、前記ファイルエージェントが、前記要求に対応するトランザクション識別子のハッシュ値を用いてディレクトリ名を生成するステップと、前記要求として登録要求を受信したときに、登録対象のファイルをファイル記憶装置に登録するステップと、前記登録要求を受信したときに、登録対象のファイル情報を仮登録するステップと、前記要求としてコミット要求を受信したときに、仮登録したファイル情報をファイル情報ＤＢに格納するステップと、前記要求としてロールバック要求を受信したときに、未完了のトランザクションに対応するファイル情報を削除するステップと、を含む。
【発明の効果】
【００１３】
本発明によれば、ＮＦＳに対する問題点を解消し、性能を改善することができる。
【図面の簡単な説明】
【００１４】
【図１】実施形態におけるトランザクション処理システムに適用可能なファイルプロトコルの構成を例示するブロック図である。
【図２】ファイル情報テーブルのデータ構成を示す図である。
【図３】ファイルエージェントの通信制御部の動作を説明するためのフローチャートである。
【図４】登録要求処理Ｂの処理手順を説明するためのフローチャートである。
【図５】取得要求処理Ｃの処理手順を説明するためのフローチャートである。
【図６】コミット要求処理Ｄの処理手順を説明するためのフローチャートである。
【図７】ロールバック要求処理Ｅの処理手順を説明するためのフローチャートである。
【図８】リスト要求処理Ｆの処理手順を説明するためのフローチャートである。
【図９】障害時の状態の一例を表す図である。
【図１０】トランザクション処理システムの構成を例示するブロック図である。
【発明を実施するための形態】
【００１５】
以下、添付図面を参照して、本発明に係るトランザクション処理システムおよびトランザクション処理方法の好適な実施形態について説明する。
【００１６】
本実施形態では、ＮＦＳを、図１に示すようなトランザクション処理システム(Ｔ１０１)に適用可能なファイルプロトコルに置き換える。
【００１７】
図１に示すように、ファイルプロトコルは、ファイルクライアント１と、ファイルエージェント２とを有する。ファイルクライアント１は、アプリケーションからの指示に従って動作する。ファイルエージェント２はファイルクライアント１の要求に従って動作する。
【００１８】
ファイルクライアント１は、通信制御部１０と、ファイル登録部１１と、ファイル取得部１２と、コミット部１３と、ロールバック部１４と、リスト取得部１５とを有する。
【００１９】
ファイル登録部１１は、通信制御部１０を用いてファイルエージェント２にファイルの登録を要求する。
【００２０】
ファイル取得部１２は、通信制御部１０を用いてファイルエージェント２にファイルの取得を要求する。
【００２１】
コミット部１３は、は通信制御部１０を用いてファイルエージェント２にトランザクション識別子を指定してコミットを要求する。
【００２２】
ロールバック部１４は、通信制御部１０を用いてファイルエージェント２にトランザクション識別子を指定してロールバックを要求する。
【００２３】
リスト取得部１５は、通信制御部１０を用いてファイルエージェント２にリスト取得を要求する。
【００２４】
ファイルエージェント２は、通信制御部２０と、ファイル情報制御部２１と、ファイルアクセス制御部２２と、キャッシュ制御部２３とを有する。
【００２５】
ファイル情報制御部２１は、通信制御部２０の指示に従って仮登録リスト記憶部２５とファイル情報ＤＢ３１にアクセスする。
【００２６】
ファイルアクセス制御部２２は、通信制御部２０の指示に従ってファイル記憶装置３２にアクセスする。
【００２７】
キャッシュ制御部２３は、通信制御部２０の指示に従ってキャッシュ記憶部２６にアクセスする。
【００２８】
仮登録リスト記憶部２５およびファイル情報ＤＢ３１は、図２に示すテーブル構造を有する。図２に示すファイル情報テーブルは、データ項目として、例えば、宛先、出力元、出力トランザクション識別子、ファイル名、入力トランザクション識別子、およびパスを有する。宛先、出力元、出力トランザクション識別子、ファイル名および入力トランザクション識別子がファイル情報であり、パスはファイル情報から生成される。
【００２９】
仮登録リスト記憶部２５は、アプリケーションがコミットを要求するまでに登録されるファイルの情報を記憶する。記憶したファイル情報は、コミットによりファイル情報ＤＢ３１に記憶され、ロールバックにより仮登録リスト記憶部２５から削除される。
【００３０】
キャッシュ記憶部２６は、ファイルの内容を記憶する。
【００３１】
ファイルクライアント１とファイルエージェント２は、それぞれ通信制御部１０と通信制御部２０でネットワークを介して相互に通信を行う。
【００３２】
図３を参照して、ファイルエージェント２の通信制御部２０の動作について説明する。
【００３３】
最初に、通信制御部２０は、ファイルクライアント１から要求を受信し（ステップＳ１０１）、受信した要求の種類を判定する(ステップＳ１０２)。
【００３４】
上記ステップＳ１０２の要求判定で要求が“登録要求”であると判定された場合には、後述する登録要求処理Ｂを実行してから、処理を上記ステップＳ１０１に移行する。
【００３５】
上記ステップＳ１０２の要求判定で要求が“取得要求”であると判定された場合には、後述する取得要求処理Ｃを実行してから、処理を上記ステップＳ１０１に移行する。
【００３６】
上記ステップＳ１０２の要求判定で要求が“コミット要求”であると判定された場合には、後述するコミット要求処理Ｄを実行してから、処理を上記ステップＳ１０１に移行する。
【００３７】
上記ステップＳ１０２の要求判定で要求が“ロールバック要求”であると判定された場合には、後述するロールバック要求処理Ｅを実行してから、処理を上記ステップＳ１０１に移行する。
【００３８】
上記ステップＳ１０２の要求判定で要求が“リスト要求”であると判定された場合には、後述するリスト要求処理Ｆを実行してから、処理を上記ステップＳ１０１に移行する。
【００３９】
図４を参照して、登録要求処理Ｂの処理手順について説明する。
【００４０】
最初に、通信制御部２０は、ファイルアクセス制御部２２にファイル登録要求を発行する（ステップＳ２０１）。これにより、ファイルアクセス制御部２２は、ファイル登録要求を受信し、ファイル記憶装置３２内の指定されたパスにファイルを作成して登録する。
【００４１】
ここで、通信制御部２０は、ファイルパスを指定する際に、トランザクション識別子の文字列に基づくハッシュ値を取得し、トランザクション識別子の代わりにハッシュ値をディレクトリ名とする。従来は、トランザクション識別子単位にディレクトリが設けられ、そのディレクトリの中にファイルを格納していた。これに対し、本発明では、ハッシュ値が同一となるトランザクション識別子単位にディレクトリを設け、そのディレクトリの中にファイルを格納することで、ディレクトリ数を節減することができる。
【００４２】
続いて、通信制御部２０は、キャッシュ制御部２３にキャッシュ登録要求を発行する（ステップＳ２０２）。
【００４３】
続いて、通信制御部２０は、ファイルアクセス制御部２２によるファイル登録の結果を判定する（ステップＳ２０３）。
【００４４】
この判定結果が、ファイル登録成功である場合、通信制御部２０は、ファイル情報制御部２１に対して、ファイルクライアント１から取得したファイル情報と、生成したファイルパスとを合わせてファイル情報仮登録要求を発行し（ステップＳ２０５）、仮登録が完了するまで待機する。続いて、通信制御部２０は、キャッシュ登録の結果を取得するまで待機し（ステップＳ２０６）、ファイルクライアント１に応答を送信する（ステップＳ２０７）。
【００４５】
一方、上記ステップＳ２０３の判定結果が、ファイル登録失敗である場合に、通信制御部２０は、キャッシュ登録の結果を取得するまで待機し（ステップＳ２０６）、ファイルクライアント１に応答を送信する（ステップＳ２０７）。
【００４６】
図５を参照して、取得要求処理Ｃの処理手順について説明する。
【００４７】
最初に、通信制御部２０は、ファイル情報制御部２１に対して、取得対象ファイルのファイル情報に入力トランザクション識別子を登録するように要求する（ステップＳ３０１）。
【００４８】
続いて、通信制御部２０は、上記ステップＳ３０１の要求に対する結果を判定する（ステップＳ３０２）。
【００４９】
この判定結果が、登録失敗、すなわち該当レコードが存在しない場合、通信制御部２０は、ファイルが存在しない旨の応答をファイルクライアント１に送信する(ステップＳ３０６)。
【００５０】
一方、上記ステップＳ３０２の判定結果が、登録成功である場合、通信制御部２０は、キャッシュ制御部２３にキャッシュ取得要求を発行する(ステップＳ３０３)。
【００５１】
続いて、通信制御部２０は、キャッシュ取得要求に対する結果を判定する（ステップＳ３０４）。
【００５２】
この判定結果が、取得成功である場合、通信制御部２０は、取得対象ファイルの内容としてキャッシュの内容を含む応答をファイルクライアント１に送信する（ステップＳ３０６）。
【００５３】
一方、上記ステップＳ３０４の判定結果が、取得失敗、つまりキャッシュが存在しなかった場合、通信制御部２０は、ファイルアクセス制御部２２に対してファイル取得要求を発行し(ステップＳ３０５)、その結果取得されたファイルの内容を含む応答をファイルクライアント１に送信する（ステップＳ３０６）。
【００５４】
図６を参照して、コミット要求処理Ｄの処理手順について説明する。
【００５５】
最初に、通信制御部２０は、ファイルクライアント１で指定された入力トランザクション識別子を有するファイル情報の一覧をファイル情報制御部２１から取得する(ステップＳ４０１)。
【００５６】
続いて、通信制御部２０は、ファイルアクセス制御部２２に対して、取得した一覧の全てのファイルを削除するように要求する（ステップＳ４０２）。
【００５７】
続いて、通信制御部２０は、ファイル情報制御部２１に対して、ファイルクライアント１で指定された入力トランザクション識別子を有するレコードをファイル情報ＤＢ３１から全て削除するように要求する（ステップＳ４０３）。
【００５８】
続いて、通信制御部２０は、ファイル情報制御部２１に対して、仮登録リスト記憶部２５に記憶されているファイル情報のうち、ファイルクライアント１で指定されたトランザクション識別子を有するファイル情報をファイル情報ＤＢ３１に登録するように要求する（ステップＳ４０４）。
【００５９】
続いて、通信制御部２０は、応答をファイルクライアント１に送信する（ステップＳ４０５）。
【００６０】
図７を参照して、ロールバック要求処理Ｅの処理手順について説明する。
【００６１】
最初に、通信制御部２０は、ファイル情報制御部２１に対して、ファイルクライアント１で指定された入力トランザクション識別子を有するファイル情報をファイル情報ＤＢ３１から削除するように要求する(ステップＳ５０１)。
【００６２】
続いて、通信制御部２０は、ファイルアクセス制御部２２に対して、仮登録リスト記憶部２５にある指定されたトランザクション識別子を有するファイルを、ファイル記憶装置３２から削除するように要求する(ステップＳ５０２)。
【００６３】
続いて、通信制御部２０は、ファイル情報制御部２１に対して、ファイルクライアント１で指定されたトランザクション識別子を有するファイル情報を仮登録リスト記憶部２５から削除するように要求する(ステップＳ５０３)。
【００６４】
続いて、通信制御部２０は、応答をファイルクライアント１に送信する（ステップＳ５０４）。
【００６５】
図８を参照して、リスト要求処理Ｆの処理手順について説明する。
【００６６】
最初に、通信制御部２０は、ファイル情報制御部２１に対して、ファイルクライアント１で指定された条件を満たすファイル情報をファイル情報ＤＢ３１から取得するように要求する（ステップＳ６０１）。
【００６７】
続いて、通信制御部２０は、取得したファイル情報を含む応答をファイルクライアント１に送信する（ステップＳ６０２）。
【００６８】
ここで、ファイルエージェント２が障害により再起動したとき、障害発生時にファイル情報ＤＢ３１が、図９に示す状態で更新されていた場合には、ファイル情報ＤＢ３１をロールバックする。その後、ファイルエージェント２の異常を検出したファイルクライアント１は、再度同じ処理、または、状況に応じてコミット部１３やロールバック部１４を機能させることで復旧を行う。
【００６９】
次に、図１０を参照して、上述したファイルプロトコルをトランザクション処理システムに適用した場合について説明する。
【００７０】
本トランザクション処理システムは、外部入力装置４からデータを入力し、最終的にデータベースＤＢ−Ｂ８およびＤＢ−Ｃ９を更新するシステムである。
【００７１】
アプリケーションＡ７は、外部入力装置４からデータを入力し、決められたルールに従ってアプリケーションＢ７またはアプリケーションＣ７宛にデータを出力する。アプリケーションＢ７は、アプリケーションＡ７からのデータを入力し、決められたルールに従って、データベースＤＢ−Ｂ８を更新するか、またはアプリケーションＣ７宛にデータを出力する。アプリケーションＣ７は、アプリケーションＡ７またはアプリケーションＢ７からのデータを入力し、データベースＤＢ−Ｃ９を更新する。
【００７２】
アプリケーションＡ７は、ファイルクライアントＡ１を複数有する。アプリケーションＢ７は、ファイルクライアントＢ１を複数有する。アプリケーションＣ７は、ファイルクライアントＣ１を複数有する。
【００７３】
ファイルサーバ６は、複数のファイルエージェントＡ２、Ｂ２、Ｃ２を有する。各ファイルエージェントＡ２、Ｂ２、Ｃ２は、ファイル記憶装置３２を共有する。
【００７４】
ファイルエージェントＡ２は、複数存在し、アプリケーションＡ７のファイルクライアントＡ１と通信を行う。ファイル情報ＤＢＡ３１は、複数のファイルエージェントＡ２が共有する。
【００７５】
ファイルエージェントＢ２は、複数存在し、アプリケーションＢ７のファイルクライアントＢ１と通信を行う。ファイル情報ＤＢＢ３１は、複数のファイルエージェントＢ２が共有する。
【００７６】
ファイルエージェントＣ２は、複数存在し、アプリケーションＣ７のファイルクライアントＣ１と通信を行う。ファイル情報ＤＢＣ３１は、複数のファイルエージェントＣ２が共有する。
【００７７】
最初に、アプリケーションＡ７が、データを出力する際、ファイルクライアントＡ１のファイル登録部１１を実行する。ファイルクライアントＡ１は、複数存在するので、複数のファイルを並行して出力することができる。
【００７８】
続いて、ファイルエージェントＢ２は、アプリケーションＡ７からアプリケーションＢ７宛のファイル登録要求を受信し、ファイル記憶装置３２にファイルを作成する。
【００７９】
続いて、ファイルエージェントＣ２は、アプリケーションＡ７からアプリケーションＣ７宛のファイル登録要求を受信し、ファイル記憶装置３２にファイルを作成する。
【００８０】
続いて、アプリケーションＡ７は、１つのトランザクションにおいて全てのファイルを出力したら、ファイルクライアントＡ１のコミット部１３を実行する。
【００８１】
続いて、ファイルエージェントＢ２は、アプリケーションＡ７からのコミット要求を受信し、ファイル情報ＤＢＢ３１にファイル情報を格納する。
【００８２】
続いて、ファイルエージェントＣ２は、アプリケーションＡ７からのコミット要求を受信し、ファイル情報ＤＢＣ３１にファイル情報を格納する。
【００８３】
続いて、アプリケーションＡ７は、登録したファイルの情報をアプリケーションＢ７とアプリケーションＣ７にネットワークを介して通知する。
【００８４】
続いて、アプリケーションＢ７は、アプリケーションＡ７から受信したファイル情報を元にファイルを入力するため、ファイルクライアントＢ１のファイル取得部１２を実行する。ファイルクライアントＢ１は、複数存在するので、複数のファイルを並行して入力することができる。
【００８５】
続いて、ファイルエージェントＢ２は、アプリケーションＢ７からのファイル取得要求を受信し、ファイル記憶装置３２あるいはキャッシュ記憶部２６からファイルを取得する。
【００８６】
続いて、アプリケーションＢ７は、取得したファイルのデータについて、データベースＤＢ−Ｂ８を更新し、アプリケーションＣ７へデータを出力する。
【００８７】
続いて、ファイルエージェントＣ２は、アプリケーションＢ７からアプリケーションＣ７宛のファイル登録要求を受け、ファイル記憶装置３２にファイルを作成する。
【００８８】
続いて、アプリケーションＢ７は、１つのトランザクションにおいて全てのファイルを出力したら、ファイルクライアントＢ１のコミット部１３を実行する。
【００８９】
続いて、ファイルエージェントＣ２は、アプリケーションＢ７からのコミット要求を受け、入力したファイルを削除し、ファイル情報ＤＢＣ３１にファイル情報を格納する。
【００９０】
続いて、アプリケーションＢ７は、登録したファイルの情報をアプリケーションＣ７にネットワークを介して通知する。
【００９１】
続いて、アプリケーションＣ７は、アプリケーションＡ７とアプリケーションＢ７から受信したファイル情報を元にファイルを入力するため、ファイルクライアントＣ１のファイル取得部１２を実行する。ファイルクライアントＣ１は、複数存在するので、複数のファイルを並行して入力することができる。
【００９２】
続いて、ファイルエージェントＣ２は、アプリケーションＢ７からのファイル取得要求を受信し、ファイル記憶装置３２あるいはキャッシュ記憶部２６からファイルを取得する。
【００９３】
続いて、アプリケーションＣ７は、取得したファイルからデータを処理し、データベースＤＢ−Ｃ９を更新する。
【００９４】
続いて、アプリケーションＣ７は、１つのトランザクションにおいて全てのファイルを入力したら、ファイルクライアントＣ１のコミット部１３を実行する。
【００９５】
ファイルエージェントＣ２は、アプリケーションＣ７からのコミット要求を受け、入力したファイルを削除する。
【００９６】
以上のようにして、各アプリケーション間でデータの受け渡しを行う。
【００９７】
障害時の動作については、以下の（１）〜（３）のようにして復旧を行う。
【００９８】
（１）アプリケーションＢ７がトランザクション中でファイル登録後、コミット前にＡＰサーバＢ５が障害になった場合。
【００９９】
ＡＰサーバＢ５が、復旧後、ロールバック部１４を実行し、ファイルエージェントＢ２およびファイルエージェントＣ２にロールバックを要求する。
【０１００】
ファイルエージェントＢ２は、ファイル情報ＤＢＢ３１から入力トランザクション識別子を削除する。
【０１０１】
ファイルエージェントＣ２は、ファイル記憶装置３２から該当するトランザクション識別子のファイルを削除し、ファイルエージェントＣ２の仮登録リスト記憶部２５から出力トランザクション識別子に該当するファイル情報を削除する。
【０１０２】
その後、アプリケーションＢ７は、ファイルクライアントＢ１のリスト取得部１５を実行し、ファイルエージェントＢ２が持っているファイル情報のリストを取得して、トランザクションを再開する。
【０１０３】
（２）アプリケーションＢ７がトランザクション中でファイル登録後、コミット中にＡＰサーバＢ５が障害になった場合。
【０１０４】
ＡＰサーバＢ５は、復旧してアプリケーションＢ７が再起動し、ファイルエージェントＡ２、ファイルエージェントＢ２およびファイルエージェントＣ２に対してリスト取得を行う。
【０１０５】
取得したファイル情報から、障害発生時に行っていたコミットが成功しているかどうかを判断（出力の場合は、トランザクション識別子のファイルが存在する場合に成功とし、入力の場合は、入力トランザクション識別子のファイルが存在していない場合に成功とする。）し、失敗しているものについては再度コミットを要求する。
【０１０６】
（３）アプリケーションＢ７がトランザクション中でファイル登録後、コミット中にファイルサーバ６が障害になった場合。
【０１０７】
ＡＰサーバＢ５のファイルクライアントＢ１は、コミットの応答を得ることができないため、ファイルエージェントの障害と判断し、通信パスの再確立後、再度コミット要求を行う。
【０１０８】
ファイルエージェントＢ２は、通常と同じコミット処理を行い、応答を返す。
【０１０９】
上述したように、本実施形態におけるトランザクション処理システムによれば、以下の（１）〜（４）の効果を奏する。
【０１１０】
（１）ファイルサーバ障害でアプリケーションをハングアップさせずに書き込みを保証することができる。
【０１１１】
これは、ＮＦＳを使用しないためである。ファイルエージェント２において、ファイルアクセス制御部２２がファイル記憶装置３２への書き込みを完了し、仮登録リスト記憶部２５にファイル情報が登録された時点で、データがファイルに保存されたことが確定する。ファイル記憶装置３２は、ファイルアクセス制御部２２からの書き込み要求について、書き込み完了時に書き込みが保証できるものである必要がある。
【０１１２】
（２）サーバ異常により入力側の処理が止まってしまったときに、出力側の処理を止めるまでの期間の長さの上限を引き上げることができる。
【０１１３】
これは、ファイル情報ＤＢ３１により、従来のファイル格納箇所の制限（同一トランザクションのファイルは一つのディレクトリに格納しなければならない）にとらわれる必要がなくなるためである。
【０１１４】
（３）ファイル滞留時のサーバ再起動の性能を改善することができる。
【０１１５】
これは、ファイル情報ＤＢ３１によって、ディスクアクセスなしにファイル一覧を取得することができるため、特に多数のファイルが存在する場合に、ファイル一覧取得の速度を改善することができるためである。
【０１１６】
（４）トランザクションの速度性能を改善することができる。
【０１１７】
これは、トランザクション性能のボトルネックの一つがファイルアクセスであることから、ファイルアクセスの性能を改善することで、トランザクション性能を改善することができるためである。まず、ｏｐｅｎ、ｒｅａｄ／ｗｒｉｔｅ、ｃｌｏｓｅを１回の要求／応答で行うため、ＮＦＳに比べて通信回数を減らすことができる。また、トランザクションの概念のファイルプロトコルとして含めることができるため、リネームや入力コンテナ削除など、トランザクション単位に複数のファイルをファイル名指定なしで処理することができる。さらに、最適なファイルキャッシュを提供することが可能となり、物理ディスクへのアクセスを減らすことができる。最適なファイルキャッシュとは、最後に書き込んだファイルではなく、サーバ単位に最も古いものをメモリに残しておくことである。
【０１１８】
[変形例]
なお、上述した実施形態は、単なる例示に過ぎず、実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
【０１１９】
例えば、上記の実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明を以下に限定するものではない。
【０１２０】
（付記１）  所定の操作単位に要求を送信するファイルクライアントと、前記要求を受信するたびに、当該要求に対する結果を送信するファイルエージェントと、を備え、前記ファイルエージェントは、前記要求に対応するトランザクション識別子のハッシュ値を用いてディレクトリ名を生成する通信制御部と、前記要求として登録要求を受信したときに、登録対象のファイルをファイル記憶装置に登録するファイルアクセス制御部と、前記登録要求を受信したときに、登録対象のファイル情報を仮登録する仮登録リスト記憶部と、前記要求としてコミット要求を受信したときに、仮登録したファイル情報をファイル情報ＤＢに格納するファイル情報制御部と、を有し、前記ファイルアクセス制御部、前記仮登録リスト記憶部および前記ファイル情報制御部は、前記要求としてロールバック要求を受信したときに、未完了のトランザクションに対応するファイル情報を削除する、ことを特徴とするトランザクション処理システム。
【０１２１】
（付記２）  所定の操作単位に要求を送信するファイルクライアントと、前記要求を受信するたびに、当該要求に対する結果を送信するファイルエージェントと、を備えるトランザクション処理システムを制御する方法であって、前記ファイルエージェントが、前記要求に対応するトランザクション識別子のハッシュ値を用いてディレクトリ名を生成するステップと、前記要求として登録要求を受信したときに、登録対象のファイルをファイル記憶装置に登録するステップと、前記登録要求を受信したときに、登録対象のファイル情報を仮登録するステップと、前記要求としてコミット要求を受信したときに、仮登録したファイル情報をファイル情報ＤＢに格納するステップと、前記要求としてロールバック要求を受信したときに、未完了のトランザクションに対応するファイル情報を削除するステップと、を含むことを特徴とするトランザクション処理方法。
【符号の説明】
【０１２２】
１…ファイルクライアント、２…ファイルエージェント、４…外部入力装置、５…ＡＰサーバ、６…ファイルサーバ、７…アプリケーション、８、９…データベース、１０…通信制御部、１１…ファイル登録部、１２…ファイル取得部、１３…コミット部、１４…ロールバック部、１５…リスト取得部、２０…通信制御部、２１…ファイル情報制御部、２２…ファイルアクセス制御部、２３…キャッシュ制御部、２５…仮登録リスト記憶部、２６…キャッシュ記憶部、３１…ファイル情報ＤＢ、３２…ファイル記憶装置。
【図１】
2012194951.tif 000003
【図２】
2012194951.tif 000004
【図３】
2012194951.tif 000005
【図４】
2012194951.tif 000006
【図５】
2012194951.tif 000007
【図６】
2012194951.tif 000008
【図７】
2012194951.tif 000009
【図８】
2012194951.tif 000010
【図９】
2012194951.tif 000011
【図１０】
2012194951.tif 000012