(57)【要約】【課題】ＮＡＳへのアクセスを軽減し、処理におけるボトルネックを解消して処理速度を向上することを可能とする多段オンライントランザクションシステムなどを提供する。【解決手段】複数のサーバ３１，３２，４１を含む複数のノード２０〜５０と、複数のノード間で共有される１つ以上のＮＡＳ７０〜８０とが接続され、ノードのうち少なくとも１つ以上が、同一ノードに属するサーバの各々がデータの読み書きが可能な共有メモリ３３を備え、共有メモリを備えるノードに属する２つ以上のサーバが各々、入力データを処理した出力データの出力先がサーバと同一ノードに属するサーバか否かを判別するノード判定手段１５１と、出力先が同一ノードに属するサーバであれば共有メモリ上に該出力データの格納領域を確保するデータ格納メモリ取得手段１５５と、入力データを処理すると共に出力データを格納領域に格納するデータ処理部１６１とを備える。【選択図】図１
2010262355.tif 000002
【特許請求の範囲】
【請求項１】
入力データを処理するサーバを含む複数のノードと、前記複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）とがネットワークによって相互に接続されて構成される多段オンライントランザクションシステムであって、
前記ノードのうち少なくとも１つ以上が、同一ノードに属する前記サーバの各々がデータの読み書きが可能な共有メモリを備え、
前記共有メモリを備えるノードに属する２つ以上の前記サーバが各々、前記入力データを処理した出力データの出力先が前記サーバと同一ノードに属するサーバか否かを判別するノード判定手段と、前記出力先が前記同一ノードに属するサーバであれば前記共有メモリ上に該出力データの格納領域を確保するデータ格納メモリ取得手段と、前記入力データを処理すると共に前記出力データを前記格納領域に格納するデータ処理部とを備えたことを特徴とする多段オンライントランザクションシステム。
【請求項２】
前記サーバが各々、前記出力先が前記同一ノードに属するサーバであれば前記共有メモリに格納されたデータを取得するデータ格納メモリ参照手段を備えたことを特徴とする、請求項１に記載の多段オンライントランザクションシステム。
【請求項３】
前記サーバが各々、他のサーバからのデータの読み書きが不可能なプロセスメモリと、他のサーバに対してデータを出力するデータ送信手段とを備えると共に、
前記サーバが各々、前記出力先が前記同一ノードに属するサーバでなければ該出力データを前記プロセスメモリに対して出力し、これと並行してファイルアクセス手段に前記出力データを前記ＮＡＳに出力させるデータ出力手段を備えることを特徴とする、請求項１に記載の多段オンライントランザクションシステム。
【請求項４】
前記サーバが各々、前記ファイルアクセス手段が前記ＮＡＳに対してファイルの出力を完了することを待ち合わせてから前記データのファイル位置およびサイズについての情報を含むデータ情報を前記出力先サーバに送信するファイルコミット手段を備えたことを特徴とする、請求項３に記載の多段オンライントランザクションシステム。
【請求項５】
前記サーバが各々、前記ＮＡＳに対して前記入力データの削除要求を発行し、これと並行してこの入力データが記憶されている前記共有メモリもしくは前記プロセスメモリの記憶領域を解放するデータ削除手段を備えたことを特徴とする、請求項３に記載の多段オンライントランザクションシステム。
【請求項６】
前記データ格納メモリ取得手段が、前記共有メモリ上に該出力データの格納領域を確保できなかった場合に該出力データを前記プロセスメモリに対して格納領域を確保する機能を備えたことを特徴とする、請求項１に記載の多段オンライントランザクションシステム。
【請求項７】
複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）とネットワークを介して相互に接続されるサーバであって、
入力データを処理して出力データを生成し、同一の前記ノードに属するコンピュータの各々がデータの読み書きが可能な共有メモリに対して前記出力データを出力可能であるデータ処理部を備えると共に、
入力データを処理した出力データの出力先が前記サーバと同一ノードに属するサーバか否かを判別するノード判定手段と、前記出力先が前記同一ノードに属するサーバであれば前記共有メモリ上に該出力データの格納領域を確保するデータ格納メモリ取得手段とを備え、
前記データ処理部が、前記出力データを前記格納領域に格納することを特徴とするサーバ。
【請求項８】
複数のサーバと前記サーバの各々がデータの読み書きが可能な共有メモリとを含む複数のノードと、前記複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）とがネットワークによって相互に接続されて構成される多段オンライントランザクションシステムにあって、前記入力データを処理して出力データを出力するトランザクションデータの入出力方法であって、
前記入力データをデータ処理部が処理して出力データを生成し、
前記出力データの出力先が前記サーバと同一ノードに属するサーバか否かをノード判定手段が判別し、
前記出力先が前記同一ノードに属するサーバであればデータ格納メモリ取得手段が前記共有メモリ上に該出力データの格納領域を確保し、
前記出力データを前記データ処理部が前記格納領域に格納することを特徴とするトランザクションデータの入出力方法。
【請求項９】
複数のサーバと前記サーバの各々がデータの読み書きが可能な共有メモリとを含む複数のノードと、前記複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）とがネットワークによって相互に接続されて構成される多段オンライントランザクションシステムにあって、
前記ノードが備えるコンピュータに、
前記入力データを処理して出力データを生成する手順と、
前記出力データの出力先が前記サーバと同一ノードに属するサーバか否かを判別する手順と、
前記出力先が前記同一ノードに属するサーバであれば前記共有メモリ上に該出力データの格納領域を確保する手順と、
前記出力データを前記データ処理部が前記格納領域に格納する手順と
を実行させることを特徴とするトランザクションデータの入出力プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はオンライントランザクションシステムに関し、特に該システムにおけるボトルネックの解消と処理速度の向上に関する。
【背景技術】
【０００２】
オンライントランザクションシステムは、たとえば金融機関のＡＴＭ（Auto Teller Machine）システム、鉄道の座席指定などのような、公共性の強い情報システムにおいて多く使われている。そのため、高い信頼性と処理の迅速さとの両立が常に求められており、特にデータの消失、システム稼働の遅延や停止などがあってはならない。
【０００３】
図８は、データをファイルにより入出力する形の一般的な多段オンライントランザクションシステム９０１の構成の一例を示す説明図である。多段オンライントランザクションシステム９０１は、ＮＡＳ（Network Attached Storage、ネットワーク接続ストレージ）を共有した複数のノードがネットワークによって相互に接続されることで構成される。
【０００４】
システム全体としては、外部のデータ入力装置から入力されたデータについて最終的にデータベースを更新することが目的であるが、データベースにアクセスしない中間の処理を行うサーバ（プロセス）は、トランザクションごとにデータをＮＡＳ上のファイルに対して記録・読み出しを行う。ＮＡＳ上のファイルに記録されるデータは各サーバ上で異なるデータ処理を行うアプリケーションにとって中間データであり、ＮＡＳ上のファイルは特定のサーバで処理が停止した場合にデータを保証するという役目を持っている。
【０００５】
データ入力装置９１０から入力されたデータは、ノード９２０、９３０、９４０、９５０という複数のノードを通って加工され、最終的にはデータベース９６０に入力される。また、ノード９２０と９３０の間ではＮＡＳ９７０が、ノード９３０、９４０と９５０の間ではＮＡＳ９８０が、各々データの共有に使用される。
【０００６】
各々のノードは、１つ以上のサーバによって構成される。ノード９２０はサーバ９２１〜９２ｎ（ｎは自然数）というｎ台のサーバによって構成され、ノード９５０はサーバ９５１〜９５ｍ（ｍは自然数、ｍ＝ｎであってもｍ≠ｎであってもよい）というｍ台のサーバによって構成される。これに対してノード９３０はサーバ９３１および９３２という２台のみ、ノード９４０はサーバ９４１という１台のみのサーバによって構成されている。
【０００７】
多段オンライントランザクションシステムを構成するサーバには３種類の形態があり、一つはシステム全体の入力となるサーバで、データ入力装置からデータを入力して中間データをＮＡＳ上のファイルとして出力するもの（ノード９２０を構成するサーバ９２１〜９２ｎが該当する）、一つはＮＡＳ上のファイルからデータを読み込んで、さらにＮＡＳ上の別のファイルにデータを出力するもの（ノード９３０および９４０を構成するサーバ９３１，９３２，９４１が該当する）、一つはＮＡＳ上のファイルからデータを読み込んで、データベースを更新するもの（ノード９５０を構成するサーバ９５１〜９５ｍが該当する）である。
【０００８】
上記のうち、データをファイルに出力する形態のサーバでは、トランザクションコミット時に出力したデータについてのファイル位置やサイズなどのデータ情報を出力先のサーバに通知する。データ情報は、ファイルを読み込むためのパスになるほか、どのデータについてトランザクションを行うかという条件になる順序性や優先度を決定するためにも利用される。データ情報はデータに比べてサイズが小さいので、通常はファイルという形とはせず、ネットワークにて直接送信する。図８では、実線の折れ線はネットワークの接続関係を表し、実線の矢印はデータの流れを、点線の矢印はデータ情報の流れを表す。データもデータ情報も、実際には全てネットワークを介して交換されるので、矢印は全て観念的にデータ情報の流れを表すものである。
【０００９】
図９は、図８に示したノード９３０，９４０の内部構成を示す説明図である。ノード９３０，９４０は、いずれも一般的なコンピュータ装置であり、コンピュータプログラムを実行する主体であるＣＰＵ（Central Processing Unit）１０００と、ＣＰＵ１０００が実行するコンピュータプログラムおよび処理する対象であるデータが記憶されているＨＤＤと、ＣＰＵがＨＤＤから読み込んだプログラムおよびデータが一時的に記憶されるＲＡＭ（Random Access Memory）と、通信回線を通じて他のコンピュータおよびＮＡＳと通信を行う通信インターフェイスとを備える。
【００１０】
そして、サーバ９３１，９３２，９４１の備える、図９に示す各サーバプロセスが、各ノードの備えるＣＰＵ１０００によって実行される。ここでいうサーバプロセスには、ユーザアプリケーション１００１、データ処理部１００２、コミット処理部１００３、ファイルアクセス管理部１００４、ファイルアクセス手段１００５、ファイル入力手段１００６、ファイル検索手段１００７、入力データ管理部１００８、通信処理部１００９、データ格納メモリ取得手段１０１０、データ出力手段１０１１、ファイルコミット手段１０１２、データ削除手段１０１３、および構成管理部１０１４がある。
【００１１】
ＲＡＭ上には、各サーバごとにプロセスメモリとしての記憶領域が割り当てられる。各サーバは、入出力されるデータを先入れ先出しの順番で管理する実行キュー１１０１や、ファイルの入出力の際にデータを一時的に記憶するバッファ１１０２としてプロセスメモリを利用する。プロセスメモリ９３１ｍ，９３２ｍ，９４１ｍは、それぞれサーバ９３１，９３２，９４１に用意されたプロセスメモリにあたる。バッファ１１０２、および実行キュー１１０１は、サーバプロセスではないが、表記の便宜上図９上にも記載している。
【００１２】
データ処理を行う段階では、まずデータ処理部１００２がユーザアプリケーション１００１を呼び出す。ユーザアプリケーション１００１は、データ処理部１００２から入力データを受け、このアプリケーションに固有のデータ処理を行い、出力先を伴った出力データをデータ処理部１００２に渡す。データ処理部１００２はデータ格納メモリ取得手段１０１０を実行して、プロセスメモリからデータを格納するバッファ１１０２を取得し、そこにデータをコピーする。データ出力手段１０１１は、このデータのＮＡＳ９８０へのファイル出力を開始する。データ出力手段１０１１は、このファイル出力の完了を待ち合わせず、他のデータ出力を受け付ける。
【００１３】
出力したデータを確定させる（これをコミットという）段階では、ユーザアプリケーション１００１が全データについて処理を完了したら、コミット処理部１００３がファイルコミット手段１０１２を実行する。ファイルコミット手段１０１２はデータ出力手段１０１１によるＮＡＳ９８０へのファイル出力完了を待ち合わせてからファイルの確定を行い、データ情報を出力先サーバに送信し、データが格納されたバッファ１１０２を解放する。
【００１４】
全ての出力データに対してファイルコミット手段１０１２の実行を終えたら、コミット処理部１００３は処理を行った全ての入力データについてデータ削除手段１０１３を実行し、ＮＡＳ９８０で入力データが格納されたファイルについてファイル削除を行いつつ、該当データが格納されたプロセスメモリを解放し、ファイルの削除完了を待ち合わせる。
【００１５】
他サーバからデータ情報を受信した通信処理部１００９は、このデータ情報を入力データ管理部１００８に渡す。入力データ管理部１００８は、このデータ情報から次にトランザクションを行うデータをスケジュールし、対象となるデータについてファイル入力手段１００６を実行し、データ情報が示すファイルからデータを読み込み、バッファ１１０２に格納する。１回のトランザクションで処理する対象となる全ての入力データがプロセスメモリに格納されたら、入力データ管理部１００８はデータ処理部１００２に全ての入力データの格納先を渡し、そこからデータ処理部は前述のトランザクションを開始する。
【００１６】
図１０は、図８〜９に示した多段オンライントランザクションシステム９０１の動作例を示す説明図である。ここでは、サーバ９３１の入力データとして、サーバ９３１上のプロセスメモリにデータ１が既に格納されている状態からデータ処理を開始する。なお、データ１はサーバ９２１〜９２ｎのいずれか、もしくはサーバ９３１ないし９４１から出力されたものであるが、説明上どのサーバから出力されたものであっても構わない。
【００１７】
サーバ９３１では、プロセスメモリに展開されたデータ１を入力として読み込んで処理する（ステップＳ１２０１）。サーバ９３１は、データ１を処理してデータ２とデータ３を生成する。データ２はサーバ９４１に、データ３はサーバ９３２に出力される。サーバ９４１は受け取ったデータ２を処理してデータ４を生成し、サーバ９３２は受け取ったデータ３とデータ４とからデータ５を生成する。
【００１８】
サーバ９３１は、データ２およびデータ３を自らのプロセスメモリ９３１ｍ上にバッファしてからＮＡＳ９８０に出力する。まずデータ２について同プロセスメモリ９３１ｍ上にバッファ１１０２を確保し（ステップＳ１２０２）、それからデータ２を該領域に出力し（ステップＳ１２０３）、その後に該データをＮＡＳ９８０に出力する（ステップＳ１２０４）。ファイル出力は非同期に行われるので、ここではこの結果は確認しない。データ３についても同様に、同プロセスメモリ９３１ｍ上に記憶領域を確保してから（ステップＳ１２０５）該領域に出力し（ステップＳ１２０６）、ＮＡＳ９８０に出力する（ステップＳ１２０７）。
【００１９】
データ１の処理が完了し、データ２および３がＮＡＳ９８０に出力される際に、その出力結果が確認される。出力結果確認の後、データ２およびデータ３のデータ情報が、出力先のサーバ（サーバ９３２および９４１）に送信され（ステップＳ１２０８〜１２０９）、プロセスメモリ上からデータ２およびデータ３の領域が開放される（ステップＳ１２１０〜１２１１）。また、サーバ９３１はＮＡＳ９８０上のデータ１のファイルを削除し（ステップＳ１２１２）、処理が終了して不要となったデータ１のメモリを解放する（ステップＳ１２１３）。
【００２０】
サーバ９４１は、ステップＳ１２０８でサーバ９３１から送信されたデータ２のデータ情報を受信し、自らのプロセスメモリ９４１ｍ上にバッファ１１０２を確保した後に（ステップＳ１２１４）ＮＡＳ９８０からこのデータ２を読み込む（ステップＳ１２１５）。サーバ９４１はデータ２を参照してデータ４を生成する処理を開始し（ステップＳ１２１６）、自らのプロセスメモリ９４１ｍ上にデータ４のバッファ１１０２を確保し（ステップＳ１２１７）、データ４を該領域に出力し（ステップＳ１２１８）、ＮＡＳ９８０に出力する（ステップＳ１２１９）。
【００２１】
データ４がＮＡＳ９８０に出力される際に、その出力結果が確認される。出力結果確認の後、サーバ９４１はサーバ９３２にデータ４のデータ情報を送信し（ステップＳ１２２０）、プロセスメモリ上からデータ４の領域を開放し（ステップＳ１２２１）、ＮＡＳ９８０上のデータ２のファイルを削除し（ステップＳ１２２２）、さらにプロセスメモリ上からデータ２の領域を開放する（ステップＳ１２２３）。
【００２２】
サーバ９３２は、ステップＳ１２０９でサーバ９３１から送信されたデータ３のデータ情報を受信し、さらにステップＳ１２２０でサーバ９４１から送信されたデータ４のデータ情報を受信してから、自らのプロセスメモリ９３２ｍ上にデータ３のバッファ１１０２を確保した後に（ステップＳ１２２４）ＮＡＳ９８０からデータ３を読み込む（ステップＳ１２２５）。さらに同プロセスメモリ９３２ｍ上にデータ４のバッファ１１０２を確保し（ステップＳ１２２６）、ＮＡＳ９８０からデータ４を読み込む（ステップＳ１２２７）。
【００２３】
サーバ９３２はデータ３およびデータ４を参照してデータ５を生成する処理を開始し（ステップＳ１２２８）、自らのプロセスメモリ９３２ｍ上にデータ５のバッファ１１０２を確保し（ステップＳ１２２９）、データ５を該領域に出力し（ステップＳ１２３０）、ＮＡＳ９８０に出力する（ステップＳ１２３１）。
【００２４】
データ５がＮＡＳ９８０に出力される際に、その出力結果が確認される。出力結果確認の後、サーバ９３２はサーバ９３１にデータ５のデータ情報を送信し（ステップＳ１２３２）、プロセスメモリ９３２ｍ上からデータ５のバッファ１１０２を開放する（ステップＳ１２３３）。続いてサーバ９３２は、ＮＡＳ９８０上のデータ３のファイルを削除し（ステップＳ１２３４）、さらにプロセスメモリ９３２ｍ上からデータ３のバッファ１１０２を開放する（ステップＳ１２３５）。そしてＮＡＳ９８０上のデータ４のファイルを削除し（ステップＳ１２３６）、さらにプロセスメモリ９３２ｍ上からデータ４のバッファ１１０２を開放する（ステップＳ１２３７）。
【００２５】
これに関連する技術文献として、以下の各々の特許文献がある。特許文献１には、データの振り分け処理とアプリケーション処理とを並列に実行することによって、高速に処理を実行するという並列バッチ処理システム、特にディスク装置へのアクセス以外のデータ処理中に次のトランザクションの入力データを先読みするという技術についてについて記載されている。特許文献２には、トランザクション処理を複数の実行手段に振り分けて実行することによって実行を高速化するという一括処理システムについて記載されている。
【００２６】
特許文献３には、ディスクを二重化し、リードアクセスが実行中であれば二重化処理を中止し一方を更新し、リードアクセスが終了した時点で二重化処理を再開するという構成によって、システムの負荷を軽減するというオンライントランザクションシステムについて記載されている。
【先行技術文献】
【特許文献】
【００２７】
【特許文献１】特開２００６−２５９９８１号公報
【特許文献２】特開平０６−３４８７４０号公報
【特許文献３】特許第４１０４２８１号公報
【発明の概要】
【発明が解決しようとする課題】
【００２８】
データをファイルにより入出力する構造を持つ多段オンライントランザクションシステム９０１では、ＮＡＳがトランザクション性能のボトルネックの大きな要因となる。ＮＡＳにおいて発生する処理待ちが、システム全体における処理のボトルネックとなりうる。
【００２９】
図８〜１０で説明した例として示した動作よりも、実際には非常に多数のサーバが非同期に多数のデータに対してトランザクションを行う。そのため、ＮＡＳに対して多数のファイルアクセスが発生する。一つのサーバによるトランザクションによって発生したＮＡＳに対する負荷が、他のサーバに対して処理待ちを発生させ、結果としてシステム全体のトランザクションを遅延させることになってしまう。即ち、ＮＡＳの存在がボトルネックとなりうるのである。
【００３０】
そのようなボトルネックを解消するために、ＮＡＳにディスク装置を複数使用して負荷を分散することがまず考えられるが、これには多くのリソースが必要となり、装置が高価なものとなる。
【００３１】
ＮＡＳをディスク装置ではなくオンメモリ型のデータベースに置き換えることは、前述のようにＮＡＳはデータ保証の役目も兼ねているので、オンライントランザクションシステムにおける処理の性質上、困難である。また、オンメモリ型のデータベースでは、取り扱い可能なデータ数がメモリの容量に依存するので、ディスク装置ほどの容量を確保することも困難である。これをハイブリッド型のデータベースに置き換えたとしても、中間データの性質上、データ更新時にはテーブル内の全てのレコードが更新されることになり、データの永続性の保証のためには従来のファイルと同等以上の大量のログを保存する必要があるので、実用的ではない。
【００３２】
また、前述の特許文献１の技術では、入力データの先読みによってファイル入力時間を節約してスループットを改善しているが、これはディスク装置に対する負荷そのものを軽減しているのではない。特許文献２の技術では、トランザクション処理を複数の実行手段に振り分けて実行するが、ディスク装置へのアクセスを軽減するものではない。特許文献３の技術も、ディスク装置の二重化処理を行ってはいるが、やはりディスク装置へのアクセス自体を少なくするものではない。即ち、前述の特許文献１〜３のいずれも、ディスク装置（ＮＡＳ）に対する負荷を軽減していない。
【００３３】
本発明の目的は、ＮＡＳ（共有ストレージ）へのアクセスを軽減し、信頼性を維持しつつ処理におけるボトルネックを解消して処理速度を向上することを可能とする多段オンライントランザクションシステム、サーバ、トランザクションデータの入出力方法とそのプログラムを提供することにある。
【課題を解決するための手段】
【００３４】
上記目的を達成するため、本発明に係る多段オンライントランザクションシステムは、入力データを処理する複数のサーバを含む複数のノードと、複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）とがネットワークによって相互に接続されて構成される多段オンライントランザクションシステムであって、ノードのうち少なくとも１つ以上が、同一ノードに属するサーバの各々がデータの読み書きが可能な共有メモリを備え、共有メモリを備えるノードに属する２つ以上のサーバが各々、入力データを処理した出力データの出力先がサーバと同一ノードに属するサーバか否かを判別するノード判定手段と、出力先が同一ノードに属するサーバであれば共有メモリ上に該出力データの格納領域を確保するデータ格納メモリ取得手段と、入力データを処理すると共に出力データを格納領域に格納するデータ処理部とを備えたことを特徴とする。
【００３５】
上記目的を達成するため、本発明に係るサーバは、複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）とネットワークを介して相互に接続されるサーバであって、入力データを処理して出力データを生成し、同一のノードに属するコンピュータの各々がデータの読み書きが可能な共有メモリに対して出力データを出力可能であるデータ処理部を備えると共に、入力データを処理した出力データの出力先がサーバと同一ノードに属するサーバか否かを判別するノード判定手段と、出力先が同一ノードに属するサーバであれば共有メモリ上に該出力データの格納領域を確保するデータ格納メモリ取得手段とを備え、データ処理部が、入力データを処理すると共に出力データを格納領域に格納することを特徴とする。
【００３６】
上記目的を達成するため、本発明に係るトランザクションデータの入出力方法は、複数のサーバとサーバの各々がデータの読み書きが可能な共有メモリとを含む複数のノードと、複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）とがネットワークによって相互に接続されて構成される多段オンライントランザクションシステムにあって、入力データを処理して出力データを出力するトランザクションデータの入出力方法であって、入力データをデータ処理部が処理して出力データを生成し、出力データの出力先がサーバと同一ノードに属するサーバか否かをノード判定手段が判別し、出力先が同一ノードに属するサーバであればデータ格納メモリ取得手段が共有メモリ上に該出力データの格納領域を確保し、出力データをデータ処理部が格納領域に格納することを特徴とする。
【００３７】
上記目的を達成するため、本発明に係るトランザクションデータの入出力プログラムは、複数のサーバとサーバの各々がデータの読み書きが可能な共有メモリとを含む複数のノードと、複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）とがネットワークによって相互に接続されて構成される多段オンライントランザクションシステムにあって、ノードが備えるコンピュータに、入力データを処理して出力データを生成する手順と、出力データの出力先がサーバと同一ノードに属するサーバか否かを判別する手順と、出力先が同一ノードに属するサーバであれば共有メモリ上に該出力データの格納領域を確保する手順と、出力データをデータ処理部が格納領域に格納する手順とを実行させることを特徴とする。
【発明の効果】
【００３８】
本発明は、上述したように、同一ノードに属するサーバ同士でデータを交換することが可能な共有メモリを備えたので、信頼性を維持しつつＮＡＳ（共有ストレージ）へのアクセスを軽減することができる。これによって、処理におけるボトルネックを解消して処理速度を向上することが可能であるという、優れた特徴を持つ多段オンライントランザクションシステム、サーバ、トランザクションデータの入出力方法とそのプログラムを提供することができる。
【図面の簡単な説明】
【００３９】
【図１】本発明の実施形態に係る多段オンライントランザクションシステムの構成の一例を示す説明図である。
【図２】図１に示したサーバの内部構成を示す説明図である。
【図３】図２に示したＣＰＵで実行される各サーバプロセスの構成を示す説明図である。
【図４】図３に示すサーバプロセスの中で主要なものの動作を示すフローチャートである。図４（ａ）〜（ｂ）は、各々データ格納メモリ取得手段、データ出力手段の動作をそれぞれ表す。
【図５】図４の続きである。図５（ｃ）〜（ｄ）は、各々ファイルコミット手段、データ格納メモリ参照手段の動作をそれぞれ表す。
【図６】図４〜５の続きである。図６（ｅ）はデータ削除手段の動作を表す。
【図７】図１で示した多段オンライントランザクションシステムの動作例を示す説明図である。
【図８】データをファイルにより入出力する形の一般的な多段オンライントランザクションシステムの構成の一例を示す説明図である。
【図９】図８に示したサーバの内部構成を示す説明図である。
【図１０】図８〜９に示した多段オンライントランザクションシステムの動作例を示す説明図である。
【発明を実施するための形態】
【００４０】
以下、本発明の第１の実施形態の構成について添付図１〜３に基づいて説明する。
最初に、本実施形態の基本的な内容について説明し、その後でより具体的な内容について説明する。
本実施形態に係る多段オンライントランザクションシステム１は、入力データを処理する複数のサーバを含む複数のノード２０〜５０と、複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）７０、８０とがネットワークによって相互に接続されて構成される多段オンライントランザクションシステムである。
【００４１】
ノードのうち少なくとも１つ以上が、同一ノードに属するサーバ３１、３２の各々がデータの読み書きが可能な共有メモリ３３を備える。そして共有メモリを備えるノードに属する２つ以上のサーバ３１、３２が各々、入力データを処理した出力データの出力先がサーバと同一ノードに属するサーバか否かを判別するノード判定手段１５１と、出力先が同一ノードに属するサーバであれば共有メモリ上に該出力データの格納領域を確保するデータ格納メモリ取得手段１５５と、入力データを処理すると共に出力データを格納領域に格納するデータ処理部１６１とを備える。
【００４２】
サーバ３１、３２は各々、さらに出力先が同一ノードに属するサーバであれば共有メモリ、同一ノードでない場合は後述のプロセスメモリからデータが格納された領域を取得するデータ格納メモリ参照手段１５４を備える。
【００４３】
そしてサーバ３１、３２は各々、他のサーバからのデータの読み書きが不可能なプロセスメモリ１１１と、他のサーバに対してデータを送信するデータ送信手段１５２とを備え、
出力先が同一ノードに属するサーバでなければ該出力データをプロセスメモリ１１１に対して出力し、これと並行してファイルアクセス手段１６４に出力データをＮＡＳ８０に出力させるデータ出力手段１５６を備える。
【００４４】
また、サーバ３１、３２は各々、ファイルアクセス手段１６４がＮＡＳ８０に対してファイルの出力を完了することを待ち合わせてからデータ情報を出力先サーバに送信するファイルコミット手段１５７も備える。そして、ＮＡＳ８０に対して入力データの削除要求を発行し、これと並行してこの入力データが記憶されている共有メモリ３３もしくはプロセスメモリ１１１の記憶領域を解放するデータ削除手段１５８も備える。
【００４５】
ここで、データ格納メモリ取得手段１５５は、共有メモリ３３上に該出力データの格納領域を確保できなかった場合にプロセスメモリ１１１に格納領域を確保する機能を備える。
【００４６】
以上の構成を備えることにより、ＮＡＳへのアクセスを有効に軽減することができる。
以下、これをより詳細に説明する。
【００４７】
図１は、本発明の実施形態に係る多段オンライントランザクションシステム１の構成の一例を示す説明図である。多段オンライントランザクションシステム１は、ＮＡＳ（Network Attached Storage、ネットワーク接続ストレージ）を共有した複数のノードがネットワークによって相互に接続されることで構成される。
【００４８】
ここでは、例としてごく簡易なシステム構成の例を示す。データ入力装置１０から入力されたデータは、ノード２０、３０、４０、５０という複数のノードを通って加工され、最終的にはデータベース６０に入力される。また、ノード２０と３０の間ではＮＡＳ７０が、ノード３０、４０と５０の間ではＮＡＳ８０が、各々データの共有に使用される。ちなみに、以上で示したノードおよびＮＡＳの接続関係は、背景技術の欄で示したものと同一である。
【００４９】
各々のノードは、１つ以上のサーバによって構成される。ノード２０はサーバ２１〜２ｎ（ｎは自然数）というｎ個のサーバによって構成され、ノード５０はサーバ５１〜５ｍ（ｍは自然数、ｍ＝ｎであってもｍ≠ｎであってもよい）というｍ個のサーバによって構成される。これに対してノード３０はサーバ３１および３２という２個のみ、ノード４０はサーバ４１という１個のみのサーバによって構成されている。
【００５０】
ノード３０にはサーバ３１および３２によって共有され、それらのサーバのいずれからも参照および読み書きが可能な共有メモリ３３が設けられている。これに対して、各サーバのみがデータの参照および読み書きが可能なメモリを、プロセスメモリという。サーバ３１はプロセスメモリ３１ｍ、サーバ３２はプロセスメモリ３２ｍ、サーバ４１はプロセスメモリ４１ｍを各々備えている。
【００５１】
同一のノード３０に属するサーバ３１と３２の間では、通常時にはＮＡＳ８０を介することなく共有メモリ３３を介してデータの交換を行い、ＮＡＳ８０に対してはファイルを出力するのみとなる。これによってＮＡＳ８０に対するデータアクセスの回数を減らすことができる。なお、障害などによってデータの滞留が発生した時にはＮＡＳ８０に出力されたこのデータを読み込んで、従来通りにトランザクション処理の中間データの保証を行うこともできる。
【００５２】
図１では、実線の折れ線はネットワークの接続関係を表し、実線の矢印はデータの流れを、点線の矢印はデータ情報の流れを、破線の矢印はデータとデータ情報を合わせた情報の流れを、そして２点鎖線の矢印はデータの滞留などが発生した時のデータの流れを各々表す。データもデータ情報も、実際には全てネットワークを介して交換されるので、矢印は全て観念的にデータ情報の流れを表すものである。
【００５３】
図２は、図１に示したノード３０の内部構成を示す説明図である。ノード３０は一般的なコンピュータ装置であり、コンピュータプログラムを実行する主体であるＣＰＵ１０１と、ＣＰＵ１０１が実行するコンピュータプログラムが記憶されているＨＤＤ１０２と、ＣＰＵ１０１がＨＤＤ１０２から読み込んだプログラムおよびデータが一時的に記憶されるＲＡＭ１０３と、通信回線を通じて他のノードおよびＮＡＳと通信を行う通信インターフェイス１０４とを備える。
【００５４】
ＣＰＵ１０１では、それぞれ別個のプロセスであるサーバ３１および３２が動作する。ＲＡＭ１０３には、前述のプロセスメモリ１１１としての領域と、各サーバで共有される共有メモリ３３としての領域とが確保されている。共有メモリ３３は、サーバ３１および３２が共通してデータ入出力およびファイル出力のためのバッファ１０６として利用される。プロセスメモリ１１１は、各サーバそれぞれごとに、ファイル入出力のためのバッファ１０５としてや、入出力されるデータを先入れ先出しの順番で管理する実行キュー１１２として利用される。 
【００５５】
ノード４０の構成は、ＣＰＵ１０１ではサーバ４１のみが動作し、ＲＡＭ１０３が共有メモリ３３としての領域を備えていないという点を除けば、図２で示す構成と同一である。
【００５６】
図３は、図２に示したサーバ３１および３２として動作する各サーバプロセスの構成を示す説明図である。ここでいうサーバプロセスには、ノード判定手段１５１、データ送信手段１５２、データ受信手段１５３、データ格納メモリ参照手段１５４、データ格納メモリ取得手段１５５、データ出力手段１５６、ファイルコミット手段１５７、データ削除手段１５８、通信処理部１５９、ユーザアプリケーション１６０、データ処理部１６１、コミット処理部１６２、ファイルアクセス管理部１６３、ファイルアクセス手段１６４、ファイル入力手段１６５、ファイル検索手段１６６、入力データ管理部１６７、および構成管理部１７０がある。これらの各機能部の動作については後述する。ＣＰＵ１０１は、これらのプロセスをコンピュータプログラムとしてＨＤＤ１０２から読み出してきてＲＡＭ１０３に一時的に記憶し、それから実行する。なお、前述のバッファ１０５および１０６、および実行キュー１１２は、サーバプロセスではないが、表記の便宜上図３上にも記載している。
【００５７】
図４〜６は、図３に示すサーバプロセスの中で主要なものの動作を示すフローチャートである。図４（ａ）〜（ｂ）は、各々データ格納メモリ取得手段１５５、データ出力手段１５６の動作をそれぞれ表す。図５（ｃ）〜（ｄ）は、ファイルコミット手段１５７、データ格納メモリ参照手段１５４の動作をそれぞれ表す。図６（ｅ）は、データ削除手段１５８の動作を表す。
【００５８】
ノード判定手段１５１は、データの出力先サーバ、あるいはデータの出力元サーバが自ノードと同一のノードに存在するか否かを構成管理部１７０が管理する構成情報１７１に従って判断する。データ送信手段１５２は、他のサーバにデータを送信する。データ受信手段１５３は、他のサーバからデータを受信し、これを自らのプロセスメモリに格納する。
【００５９】
データ格納メモリ参照手段１５４については、図５（ｄ）に該手段の動作のフローチャートを示す。ノード判定手段１５１による出力元のサーバについての判定結果に応じて、該当データの参照先を決定する（ステップＳ６０１）。出力元のサーバが自サーバと同一ノード上に所在する場合は、データの格納先として共有メモリを選択してバッファ１０６を取得し（ステップＳ６０２）、別ノードの場合はプロセスメモリを選択して格納領域を取得する（ステップＳ６０４）。また、出力元のサーバが自サーバと同一ノード上であっても、共有メモリからバッファ１０６の取得が失敗した場合にはプロセスメモリからバッファ１０５を取得する（ステップＳ６０３〜４）。
【００６０】
データ格納メモリ取得手段１５５については、図４（ａ）に該手段の動作のフローチャートを示す。ノード判定手段１５１による出力先のサーバについての判定結果に応じて、該当データを取得するメモリを決定する（ステップＳ３０１）。出力先のサーバが自サーバと同一ノード上に所在する場合は、共有メモリを選択してデータを取得し（ステップＳ３０２）、別ノードの場合はプロセスメモリを選択してデータを取得する（ステップＳ３０４）。また、出力先のサーバが自サーバと同一ノード上であっても、共有メモリからのデータ取得が失敗した場合にはプロセスメモリからデータを取得する（ステップＳ３０３〜４）。
【００６１】
データ出力手段１５６については、図４（ｂ）に該手段の動作のフローチャートを示す。ファイルアクセス管理部１６３に対してデータのファイル書き込み要求を発行してファイル出力をさせつつ（ステップＳ４０１）、データがプロセスメモリに格納されている場合にはこれと並行して、データ送信手段１５２に該データを出力先のサーバへ直接送信させる（ステップＳ４０２〜４０３）。
【００６２】
ファイルコミット手段１５７については、図５（ｃ）に該手段の動作のフローチャートを示す。データ出力手段１５６によってファイルを出力した後、そのファイルの出力完了を待ち合わせ（ステップＳ５０１）、さらに出力先が他ノードにあるサーバであればそのデータ送信完了を待ち合わせて（ステップＳ５０２〜５０３）、その上でデータ情報を送信する（ステップＳ５０４）。そして、データの格納先バッファがプロセスメモリである場合に限って、そのプロセスメモリ上のそのバッファを解放する（ステップＳ５０５〜５０６）。これは、データの格納先バッファが共有メモリである場合には該バッファの解放処理を行わないということを意味する。
【００６３】
データ削除手段１５８については、図６（ｅ）に該手段の動作のフローチャートを示す。まず入力データに該当するファイルの削除要求を発行し（ステップＳ７０１）、このファイル削除と並行して該当する入力データ格納先が共有メモリかプロセスメモリかを判断し（ステップＳ７０２）、これに該当する共有メモリまたはプロセスメモリのバッファを解放して（ステップＳ７０３または７０４）、ファイル削除の完了を待ち合わせる（ステップＳ７０５）。
【００６４】
通信処理部１５９は、データを受信する際にはデータ受信手段１５３を呼び出す。データ情報を受信する際には従来と同じく入力データ管理部１６７にデータ情報を渡す。ユーザアプリケーション１６０は、入力されたデータに対する実際のデータ処理を行う。データ処理部１６１は、ユーザアプリケーション１６０を呼び出し、またこれに対するデータの入出力を行う。
【００６５】
コミット処理部１６２は、ファイルコミット手段１５７を実行して後述のデータをコミットする動作を行う。ファイルアクセス管理部１６３は、データのＮＡＳへのファイル出力を行う。ファイルアクセス手段１６４は、実行キュー１１２を監視し、そこに格納されたファイル出力要求を取り出して非同期に実行する。ファイル入力手段１６５は、ＮＡＳのファイルからデータを読み込む。ファイル検索手段１６６は、ＮＡＳに出力されたファイルの検索を行う。入力データ管理部１６７は、後述のデータ受信に係る動作を行う。
【００６６】
構成管理部１７０は、多段オンライントランザクションシステム１全体の構成情報１７１、より具体的にはノードのマシン名、ネットワークアドレスなどを含む位置情報や、サーバの位置情報などについて、最新情報を管理し、他の処理部からの情報要求に対して情報提供を行う。ノード判定手段１５１は、構成管理部１７０から提供された構成情報１７１に基づいて、出力元もしくは出力先が自らと同一ノード上かそうでないかを判断する。
【００６７】
データ処理を行う段階では、まず、データ処理部１６１がユーザアプリケーション１６０を呼び出す。ユーザアプリケーション１６０は、データ処理部１６１から入力データを受け、このアプリケーションに固有のデータ処理を行い、出力先を伴った出力データをデータ処理部１６１に渡す。
【００６８】
データ処理部１６１は出力先サーバについてデータ格納メモリ取得手段１５５を実行して図４（ａ）に示す動作を行い、その結果に従って共有メモリまたはプロセスメモリからデータを格納するバッファを取得し、データをコピーする。もし共有メモリの領域不足などでバッファの取得ができなかった場合は、プロセスメモリからバッファを取得する。そして、データ出力手段１５６によりデータのファイル出力を開始する。また、データの格納先がプロセスメモリであった場合は、出力先のサーバに対してデータ送信手段１５２によるデータ送信を開始する。データ出力手段１５６はファイル出力とデータ送信の完了を待ち合わせず、他のデータ出力を受け付ける。
【００６９】
出力したデータをコミットする段階では、ユーザアプリケーション１６０が全データについて処理を完了したら、コミット処理部１６２がファイルコミット手段１５７を実行する。ファイルコミット手段１５７は図５（ｃ）に示す通り、データ出力手段１５６によるファイル出力を待ち合わせてファイルの確定を行い、またデータ送信を行っていた場合はデータ送信の完了を待ち合わせ、データ情報を出力先サーバに送信する。また、データの格納先がプロセスメモリだった場合はバッファを解放する。
【００７０】
全ての出力データに対してファイルコミット手段１５７の動作が終了したら、コミット処理部１６２は処理を行った全ての入力データについてデータ削除手段１５８を実行して図６（ｅ）に示す動作を行い、入力データが格納されたファイルについてファイル削除を行いつつ、該当データの格納先に応じて共有メモリもしくはプロセスメモリを該当するバッファを解放し、ファイルの削除完了を待ち合わせる。
【００７１】
通信処理部１５９が他サーバから送信された出力データを受信すると、データ受信手段１５３を呼び出す。データ受信手段１５３はプロセスメモリからデータを格納する領域を確保して、この受信データを格納する。もしメモリ不足などによって領域の確保に失敗した場合は、この受信データを破棄する。
【００７２】
また、通信処理部１５９はデータ情報を受信すると、データ情報を入力データ管理部１６７に渡す。入力データ管理部１６７は、受信したデータ情報から次にトランザクションを行うデータをスケジュールし、対象となるデータについてデータ格納メモリ参照手段１５４を実行する。
【００７３】
データ格納メモリ参照手段１５４は図５（ｄ）に示す動作を行い、データの出力元サーバについてノード判定手段１５１を実行し、出力元サーバが別ノード上で動作するものであった場合は、プロセスメモリを検索して該当データの格納先バッファ領域を参照取得する。出力元サーバが同一ノード上で動作するものであった場合は、共有メモリを検索して該当データの格納先バッファ領域を参照取得する。
【００７４】
その場合に、該データが共有メモリに存在しない場合はプロセスメモリを同様に検索する。該データがプロセスメモリにも存在しない場合は、図８〜１０に示した例と同様に、ファイル入力手段１６５を実行し、データ情報が示すファイルからデータを読み込み、プロセスメモリのバッファに格納する。
【００７５】
１回のトランザクションで処理する全ての入力データがプロセスメモリに格納されたら、入力データ管理部１６７はデータ処理部１６１に全ての入力データの格納領域を渡し、データ処理部１６１はトランザクションを開始する。
【００７６】
以上で説明した構成を取ることにより、多段オンライントランザクションシステム１は、ＮＡＳへのファイル書き込み・読み込みの回数を減らし、これに伴うボトルネックを軽減することができる。
【００７７】
より具体的には、図８〜１０に説明した一般的な多段オンライントランザクションシステムでは、データの出力側はネットワークによる送信１回とファイル書き込み１回、データの入力側はファイル読み込み１回とネットワークによる受信１回とファイル削除１回が必要だった。これに対して、本実施例のシステムでは通常、データの出力側はネットワークによる送信１回とディスク書き込み１回と、出力先が他ノードのサーバである場合はこれと並行してネットワークによる送信１回となり、データの入力側はファイル削除１回のみとなる。即ち、ファイル読み込み１回分と、さらに出力と入力が同一ノード上のサーバの場合にはネットワーク送信１回分に係る動作を減らしたことになる。
【００７８】
図７は、図１で示した多段オンライントランザクションシステム１の動作例を示す説明図である。ここでは、背景技術の欄で示した図８〜１０の例と同様に、サーバ３１の入力データとして、サーバ３１のプロセスメモリ上のバッファにデータ１が既に格納されている状態からデータ処理を開始する。なお、データ１はサーバ２１〜２ｎのいずれか、もしくはサーバ４１から出力されたものであるが、説明上どのサーバから出力されたものであっても構わない。
【００７９】
サーバ３１では、プロセスメモリに展開されたデータ１を入力として読み込んで処理する（ステップＳ８０１）。背景技術の欄で示した例と同様に、サーバ３１はデータ１を処理してデータ２とデータ３を生成する。データ２はサーバ４１に、データ３はサーバ３２に出力される。サーバ４１は受け取ったデータ２を処理してデータ４を生成し、サーバ３２は受け取ったデータ３とデータ４とからデータ５を生成する。
【００８０】
サーバ３１は、データ２を自らのプロセスメモリ３１ｍ上にバッファしてからＮＡＳ８０に出力する。まずデータ２についてデータ格納メモリ取得手段１５５が、図４（ａ）の動作によってデータ２の出力先のサーバ４１が別ノードＮ２上にあるものと判断したので、同プロセスメモリ３１ｍ上にバッファを確保し（ステップＳ３０４，８０２）、データ２を該領域に格納する（ステップＳ８０３）。
【００８１】
その後にデータ出力手段１５６が、ファイルアクセス管理部１６３にデータ２のファイル出力を要求する（ステップＳ４０１）。このファイル出力要求は、実行キュー１１２に格納され、実行キュー１１２を監視して格納された要求を取り出して実行するファイルアクセス手段１６４によって非同期に実行される。ファイルアクセス手段１６４が該データをＮＡＳ８０に出力して（ステップＳ８０４）、データ送信手段１５２がデータをサーバ４１に送信する（ステップＳ４０３，８０５）。このデータ送信手段１５２は非同期で動作し、データ出力手段１５６は送信の完了を待たない。
【００８２】
データ３については、データ格納メモリ取得手段１５５が図４（ａ）の動作によってデータ３の出力先のサーバ３２が同一ノード上にあるので、共有メモリ３３上にバッファを確保してから（ステップＳ３０２，８０６）、データ処理部１６１がデータ３を該バッファに出力する（ステップＳ８０７）。
【００８３】
その後にデータ出力手段１５６が、ファイルアクセス管理部１６３にデータ３のファイル出力を要求する（ステップＳ４０１）。ファイルアクセス手段１６４は該データをＮＡＳ８０に出力する（ステップＳ８０８）。
【００８４】
このファイル出力要求は実行キュー１１２に格納され、実行キュー１１２を監視して格納された要求を取り出して実行するファイルアクセス手段１６４によって非同期に実行される。データ出力手段１５６はファイル出力の完了を待たない。ファイル出力の結果はコミット処理部１６２が、図５（ｃ）の動作によって確認する。
【００８５】
データ２は他ノードのサーバ４１に送信されるので、ファイル出力完了を待ち合わせてから（ステップＳ５０１）サーバ４１にデータ情報を送信し（ステップＳ８０９）、さらに自らのプロセスメモリ３１ｍ上のデータ２の格納バッファを開放する（ステップＳ５０６，８１０）。データ３は共有メモリ３３上に格納されるので、サーバ３２に対するデータ送信は行われず、コミット処理部１６２はそのデータ送信完了を待ち合わせずにサーバ３２にデータ情報を送信し（ステップＳ５０４，８１１）、また共有メモリ３３上のバッファを解放することもない。
【００８６】
コミット処理部１６２は、さらにデータ削除手段１５８を実行する。データ削除手段１５８は、図６（ｅ）の動作によって、処理の済んだデータ１が格納されたファイルを削除するためにファイルアクセス管理部１６３にファイル削除を要求し（ステップＳ６０１，８１２）、データ１が格納されたプロセスメモリ３１ｍ上のバッファを解放する（ステップＳ７０４，８１３）。
【００８７】
サーバ４１は、ステップＳ８０５で送信されたデータ２の受信要求を通信処理部１５９が受け、データ受信手段１５３がプロセスメモリ４１ｍにバッファを確保し、受信したデータ２を確保したバッファに格納する（ステップＳ８１４）。その後、ステップＳ８０９で送信されたデータ２のデータ情報を通信処理部１５９が受け、これに反応した入力データ管理部１６７がデータ格納メモリ参照手段１５４を実行する。データ格納メモリ参照手段１５４は図５（ｄ）の動作によって、データ情報に該当するデータ２がプロセスメモリ４１ｍに格納されているのを確認し、その領域を取得する（ステップＳ６０４，８１５）。
【００８８】
ここから、サーバ４１はデータ２について処理を開始してデータ４を生成し、サーバ３２に出力する。データ処理部１６１は生成されたデータ４について、データ格納メモリ取得手段１５５の図４（ａ）の動作によって、ノード判定手段１５１が出力先のサーバ３２が別ノードにあると判断したので、プロセスメモリ４１ｍ上に必要なサイズのバッファを確保し、そこにデータ処理部１６１がデータを格納する（ステップＳ３０４，８１６〜７）。
【００８９】
データ処理部１６１は、その後データ出力手段１５６を実行する。データ出力手段１５６はファイルアクセス管理部１６３にファイル出力を要求する（ステップＳ４０１，８１８）。その出力先は別ノードのサーバ３２であるので、このファイル出力要求が実行キュー１１２に格納され、実行キュー１１２を監視して格納された要求を取り出して実行するファイルアクセス手段１６４によって非同期に実行される。データ出力手段１５６はファイル出力の完了を待たない。
【００９０】
データ出力手段１５６は、データ４がプロセスメモリ４１ｍに格納されているので、データ送信手段１５２によりデータ４を出力先サーバ３２に送信する（ステップＳ８１９）。データ送信手段１５２は非同期で動作し、データ出力手段１５６は送信の完了を待たない。
【００９１】
データ処理部１６１が一トランザクションで処理するデータ２を全て処理すると、コミット処理部１６２は出力されたデータ４についてファイルコミット手段１５７を実行する。ファイルコミット手段１５７は図５（ｃ）の動作によって、まずファイルアクセス管理部１６３にデータ出力手段１５６によるデータ４の出力要求が完了したかどうかを問い合わせ、未完了の場合は完了を待ち合わせる（ステップＳ５０１）。また、データ４の出力先が他ノードのサーバ３２であるので、データ送信の完了も待ち合わせる（ステップＳ５０３）。
【００９２】
そして、ファイル出力とデータ送信が完了したら、ファイルコミット手段１５７は出力先サーバ３２にデータ情報としてデータ数やファイルサイズなどを通知する（ステップＳ５０４，８２０）。そして、データ４の格納バッファがプロセスメモリ４１ｍであるので、そのバッファを解放する（ステップＳ５０５，８２１）。
【００９３】
コミット処理部１６２はさらにデータ削除手段１５８を実行する。データ削除手段１５８は図６（ｅ）の動作によって、データ２が格納されたファイルについてファイルアクセス管理部１６３にファイル削除を要求する（ステップＳ７０１，８２２）。さらにデータ２が格納されたプロセスメモリ４１ｍのバッファを解放する（ステップＳ７０４，８２３）。
【００９４】
サーバ３２は、ステップＳ８１１で送信されたサーバ３１からのデータ３のデータ情報を通信処理部１５９が受けたことに反応して、入力データ管理部１６７がデータ格納メモリ参照手段１５４を実行する。データ格納メモリ参照手段１５４は図５（ｄ）の動作によって、このデータ情報に該当するデータ３が共有メモリ３３に格納されているのを確認し、そのバッファを取得する（ステップＳ６０２）。
【００９５】
サーバ３２はさらに、ステップＳ８１９で送信されたサーバ４１からのデータ４の受信要求を受けて、データ受信手段１５３がプロセスメモリ３２ｍにバッファを確保し（ステップＳ８２４）、受信したデータ４を確保した記憶領域に格納する（ステップＳ８２５）。その後、通信処理部１５９はステップＳ８２０で送信されたデータ４のデータ情報を受信し、入力データ管理部１６７がデータ格納メモリ参照手段１５４を実行する。
【００９６】
データ格納メモリ参照手段１５４は図５（ｄ）の動作によって、このデータ情報に該当するデータ４がプロセスメモリ３２ｍに格納されているのを確認し、そのバッファを取得する（ステップＳ６０４）。そしてサーバ３２はデータ３とデータ４を参照し（ステップＳ８２６〜８２７）、これらのデータ３およびデータ４についてデータ処理を開始して、データ５をサーバ３１に出力する。
【００９７】
データ処理部１６１はデータ５について、出力先のサーバ３１が同一ノード上にあるので、データ格納メモリ取得手段１５５の図４（ａ）の動作によって、共有メモリ３３上にバッファを確保して（ステップＳ３０２，８２８）、そこにデータ処理部１６１がデータ５を格納する（ステップＳ８２９）。
【００９８】
データ処理部１６１はその後、データ出力手段１５６を実行する。データ出力手段１５６は、図４（ｂ）の動作によって、ファイルアクセス管理部１６３にファイル出力を要求する（ステップＳ４０１）。このファイル出力要求は実行キュー１１２に格納され、実行キュー１１２を監視して格納された要求を取り出して実行するファイルアクセス手段１６４によって非同期に実行される（ステップＳ８３０）。データ出力手段１５６はファイル出力の完了を待たない。ファイル出力の結果はコミット処理部１６２にて確認される。
【００９９】
さらにデータ出力手段１５６は、データ５が共有メモリ３３に格納されているので、データ送信手段１５２によりデータ５を出力先サーバ３１に送信する。データ送信手段１５２は非同期で動作し、データ出力手段１５６は送信の完了を待たない。
【０１００】
データ処理部１６１が一トランザクションで処理するデータ３とデータ４を全て処理すると、コミット処理部１６２は出力されたデータ５についてファイルコミット手段１５７を実行する。ファイルコミット手段１５７は、図５（ｃ）の動作によって、ファイルアクセス管理部１６３にデータ出力手段１５６によるデータ５の出力要求が完了したかどうかを問い合わせ、未完了の場合は完了を待ち合わせる（ステップＳ５０１）。そして、ファイル出力が完了したら、出力先サーバ３１にデータ情報としてデータ数やファイルサイズなどを通知する（ステップＳ５０４，８３１）。
【０１０１】
コミット処理部１６２はさらにデータ削除手段１５８を実行する。データ削除手段は、図６（ｅ）の動作によって、既に処理が完了したデータ３とデータ４が格納されたファイルを削除するためにファイルアクセス管理部１６３にファイル削除を要求する（ステップＳ７０１，８３２，８３４）。また、データ３が格納された共有メモリ３３（ステップＳ７０３，８３３）と、データ４が格納されたプロセスメモリ３２ｍ（ステップＳ７０４，８３５）の各バッファも解放する。
【０１０２】
（第１の実施形態の全体的な動作）
次に、上記の実施形態の全体的な動作について説明する。本発明に係るトランザクションデータの入出力方法は、複数のサーバ３１、３２、４１とサーバの各々がデータの読み書きが可能な共有メモリとを含む複数のノード２０〜５０と、複数のノード間で共有される１つ以上のＮＡＳ（共有ストレージ）７０、８０とがネットワークによって相互に接続されて構成される多段オンライントランザクションシステム１にあって、入力データを処理して出力データを出力するトランザクションデータの入出力方法である。まず入力データをデータ処理部が処理して出力データを生成し、出力データの出力先がサーバと同一ノードに属するサーバか否かをノード判定手段が判別し（図４（ａ）：ステップＳ３０１）、出力先が同一ノードに属するサーバであればデータ格納メモリ取得手段が共有メモリ上に該出力データのバッファを確保し（図４（ａ）：ステップＳ３０２）、出力データをデータ処理部がバッファに格納する。
【０１０３】
ここで、上記各動作ステップについては、これをコンピュータで実行可能にプログラム化し、これらを前記各ステップを直接実行する主体であるノード３０および４０に実行させるようにしてもよい。
この構成および動作により、本実施形態は以下のような効果を奏する。
【０１０４】
本実施形態では、共有メモリ３３を利用することによって、同一ノード間であるサーバ３１とサーバ３２との間のデータ交換ではＮＡＳ８０からファイルを読み込まなくてもよくなっている。このため、ＮＡＳ８０に対する負荷を軽減し、ＮＡＳ８０へのデータの読み書きに伴う処理のボトルネックを少なくすることができる。
【０１０５】
また本実施形態では、構成管理部１７０に記録された構成情報１７１を利用して、ノード判定手段がデータの送信元もしくは送信先が同一ノードであるか否かの判断を行っている。この構成管理部１７０および構成情報１７１は、本発明のために改変する必要は特にない。このため、動的な構成の変更があった場合でも、本発明のために特別な運用を行うことなく、ノード判定手段１５１が最新の構成で判定を行うことができるという副次的な利点もある。
【０１０６】
これまで本発明について図面に示した特定の実施形態をもって説明してきたが、本発明は図面に示した実施形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができる。
【産業上の利用可能性】
【０１０７】
多段オンライントランザクションシステムに幅広く適用することができる。
【符号の説明】
【０１０８】
１  多段オンライントランザクションシステム
１０  データ入力装置
２０、３０、４０、５０  ノード
２１、２ｎ、３１、３２、４１、５１、５ｍ  サーバ
３３  共有メモリ
３１ｍ、３２ｍ、４１ｍ、１１１  プロセスメモリ
６０  データベース
７０、８０  ＮＡＳ
１０１  ＣＰＵ
１０２  ＨＤＤ
１０３  ＲＡＭ
１０４  通信インターフェイス
１１２  実行キュー
１５１  ノード判定手段
１５２  データ送信手段
１５３  データ受信手段
１５４  データ格納メモリ参照手段
１５５  データ格納メモリ取得手段
１５６  データ出力手段
１５７  ファイルコミット手段
１５８  データ削除手段
１５９  通信処理部
１６０  ユーザアプリケーション
１６１  データ処理部
１６２  コミット処理部
１６３  ファイルアクセス管理部
１６４  ファイルアクセス手段
１６５  ファイル入力手段
１６６  ファイル検索手段
１６７  入力データ管理部
１７０  構成管理部
１７１  構成情報
【図１】
2010262355.tif 000003
【図２】
2010262355.tif 000004
【図３】
2010262355.tif 000005
【図４】
2010262355.tif 000006
【図５】
2010262355.tif 000007
【図６】
2010262355.tif 000008
【図７】
2010262355.tif 000009
【図８】
2010262355.tif 000010
【図９】
2010262355.tif 000011
【図１０】
2010262355.tif 000012