(57)【特許請求の範囲】
【請求項１】
ユーザ端末と、該ユーザ端末からの処理実行リクエストに対する処理を実行する複数の情報処理装置と、前記複数の情報処理装置に対して前記処理実行リクエストを振り分けて前記処理を分散させる中継装置とを有する情報処理システムにおいて、
前記ユーザ端末は、
前記複数の情報処理装置に対して前記処理実行リクエストを実行する情報処理装置の識別情報の生成リクエストを前記中継装置に送信する識別情報要求手段と、
前記識別情報要求手段により得られる前記識別情報を前記処理実行リクエストに付加して前記中継装置に送信する処理要求手段とを有し、
前記情報処理装置は、
前記中継装置から前記生成リクエストを受信した際、自己の識別情報と処理識別情報とを生成する識別情報生成手段と、
前記中継装置から前記処理実行リクエストを受信した際、前記処理実行リクエストに含まれる識別情報が、自己の識別情報であるか否かを判定する処理対象判定手段と、
前記処理対象判定手段による判定結果、前記自己の識別情報でない場合に、対象の情報処理装置に前記処理実行リクエストを送信する処理実行手段とを有することを特徴とする情報処理システム。
【請求項２】
前記処理実行手段は、
前記対象の情報処理装置からの実行結果を取得し、取得した結果を前記中継装置を介して前記ユーザ端末に送信することを特徴とする請求項１に記載の情報処理システム。
【請求項３】
前記処理実行手段は、
前記処理対象判定手段による判定結果、前記自己の識別情報である場合に、前記処理実行リクエストを実行することを特徴とする請求項１又は２に記載の情報処理システム。
【請求項４】
前記処理要求手段は、前記処理実行リクエストに処理番号を付加して送信し、
前記処理実行手段は、前記処理番号に対応させた順序で、前記処理実行リクエストを実行することを特徴とする請求項１乃至３の何れか１項に記載の情報処理システム。
【請求項５】
前記処理実行リクエストは、
データベースに対するトランザクション処理又はリソースに対する処理を含むことを特徴とする請求項１乃至４の何れか１項に記載の情報処理システム。
【請求項６】
中継装置から得られるユーザ端末からの処理実行リクエストに対する処理を実行する情報処理装置において、
前記中継装置から自己の識別情報の生成リクエストを受信した場合に、自己の識別情報と処理識別情報とを生成する識別情報生成手段と、
前記中継装置から前記処理実行リクエストを受信した際、前記処理実行リクエストに含まれる識別情報が、自己の識別情報であるか否かを判定する処理対象判定手段と、
前記処理対象判定手段による判定結果、前記自己の識別情報でない場合に、対象の情報処理装置に前記処理実行リクエストを送信する処理実行手段とを有することを特徴とする情報処理装置。
【請求項７】
中継装置から得られるユーザ端末からの処理実行リクエストに対する処理を実行する情報処理装置における処理制御方法において、
前記中継装置から自己の識別情報の生成リクエストを受信した場合に、自己の識別情報と処理識別情報とを生成する識別情報生成ステップと、
前記中継装置から前記処理実行リクエストを受信した際、前記処理実行リクエストに含まれる識別情報が、自己の識別情報であるか否かを判定する処理対象判定ステップと、
前記処理対象判定ステップによる判定結果、前記自己の識別情報でない場合に、対象の情報処理装置に前記処理実行リクエストを送信する処理実行ステップとを有することを特徴とする処理制御方法。
【請求項８】
中継装置から得られるユーザ端末からの処理実行リクエストに対する処理を実行する処理制御プログラムにおいて、
コンピュータを、
前記中継装置から自己の識別情報の生成リクエストを受信した場合に、自己の識別情報と処理識別情報とを生成する識別情報生成手段、
前記中継装置から前記処理実行リクエストを受信した際、前記処理実行リクエストに含まれる識別情報が、自己の識別情報であるか否かを判定する処理対象判定手段、及び、
前記処理対象判定手段による判定結果、前記自己の識別情報でない場合に、対象の情報処理装置に前記処理実行リクエストを送信する処理実行手段として機能させるための処理制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置、処理制御方法、及び処理制御プログラムに関する。
【背景技術】
【０００２】
従来では、多数のデータを迅速に処理したり、１台のサーバ（情報処理装置）に係る処理負荷を軽減するため、複数の処理サーバと、その複数のサーバに処理を分散させる分散サーバとを備えた情報処理システムが存在する（例えば、特許文献１参照）。上述したシステムでは、分散サーバがそれぞれの処理サーバの稼働状況を監視し、監視結果に応じて処理を分散することで、処理サーバにおける負荷の平均化を図っている。
【０００３】
また、特許文献１では、到達したトランザクションの順序と受付順序との間に順序の入れ替わりが発生することのないように、ルータが入力されるパケットに対してタイムスタンプを付与し、受付サーバが同一識別子を有する複数のパケットに分割されて伝送されたトランザクションに対し、複数のパケットに付与したタイムスタンプの最も遅い時刻を当該トランザクションのタイムスタンプとして付与している。処理サーバは、複数の受付サーバから受信した複数のトランザクションのうち、予め設定した最大遅延時間を経過したトランザクションに対して付与されたトランザクションのタイムスタンプに従ってソートすることで、データ順序を保証している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−１２９８５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来手法では、例えば複数のサーバ間でデータベース（ＤＢ）に対する単一のトランザクション（ＤＢトランザクション）を扱うことはできない。従来手法のような分散システムの環境においては、リクエスト毎に処理するサーバが変化するため、複数リクエストに跨るトランザクションを利用することは困難である。
【０００６】
例えば、所定のデータベースからデータを読み取り、リクエストされた１又は複数の処理を行い、その結果をデータベースにアップロードしてコミットする場合に、それぞれの処理を異なる処理サーバで分散してしまうと、読み取ったデータに対して途中の処理結果が反映されていなかったり、次の処理の入力データに更新前のデータを用いてしまう等の問題が生じる。そのため、コミット又はロールバックするまでの一連のトランザクション処理は、１つの処理サーバ内で処理されるのが好ましい。
【０００７】
また、特許文献１では、処理サーバが、予め設定した最大遅延時間を経過したトランザクションに対して付与されたトランザクションのタイムスタンプに従ってソートし、データ順序を保証する処理の修正が必要となるが、処理サーバの負担や修正の手間がかかるため、その前段階のサーバ等での処理の修正のみで１つの処理サーバ内で処理されるようにするのが好ましい。また、特許文献1に示すように処理順序に対するタイムスタンプを設定する場合には、そのタイムスタンプを付与して管理する処理の負荷がかかってしまうという問題が生じる。
【０００８】
本発明は、上述した課題に鑑みてなされたものであって、複数の情報処理装置を用いた場合であっても適切なトランザクション処理を実現するための情報処理システム、情報処理装置、処理制御方法、及び処理制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の１つの態様としての情報処理システムは、ユーザ端末と、該ユーザ端末からの処理実行リクエストに対する処理を実行する複数の情報処理装置と、前記複数の情報処理装置に対して前記処理実行リクエストを振り分けて前記処理を分散させる中継装置とを有する情報処理システムにおいて、前記ユーザ端末は、前記複数の情報処理装置に対して前記処理実行リクエストを実行する情報処理装置の識別情報の生成リクエストを前記中継装置に送信する識別情報要求手段と、前記識別情報要求手段により得られる前記識別情報を前記処理実行リクエストに付加して前記中継装置に送信する処理要求手段とを有し、
前記情報処理装置は、前記中継装置から前記生成リクエストを受信した際、自己の識別情報と処理識別情報とを生成する識別情報生成手段と、前記中継装置から前記処理実行リクエストを受信した際、前記処理実行リクエストに含まれる識別情報が、自己の識別情報であるか否かを判定する処理対象判定手段と、前記処理対象判定手段による判定結果、前記自己の識別情報でない場合に、対象の情報処理装置に前記処理実行リクエストを送信する処理実行手段とを有する。
【発明の効果】
【００１０】
本発明によれば、複数の情報処理装置を用いた場合であっても適切なトランザクション処理を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】情報処理システムの概略構成の一例を示す図である。
【図２】ユーザ端末の機能構成例を示す図である。
【図３】アプリケーションサーバの機能構成の一例を示す図である。
【図４】ハードウェア構成の一例を示す図である。
【図５】本実施形態におけるＤＢトランザクション処理の第１の実施例を示すシーケンス図である。
【図６】本実施形態におけるＤＢトランザクション処理の第２の実施例を示すシーケンス図である。
【図７】アプリケーションサーバ又はＤＢ内で管理されるテーブルの一例を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面に基づいて実施形態を説明する。
【００１３】
＜情報処理システムの概略構成例＞
図１は、情報処理システムの概略構成の一例を示す図である。図１に示す情報処理システム１０は、ユーザ端末１１と、分散サーバ１２と、複数のアプリケーションサーバ１３−１〜１３−ｎ（以下、必要に応じて「アプリケーションサーバ１３」という）と、記憶装置の一例としてのデータベース（以下、必要に応じて「ＤＢ」という）とを有する。ユーザ端末１１と、分散サーバ１２とは、インターネットやＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）等に代表される通信ネットワーク１５−１によりデータの送受信が可能な状態で接続されている。また、分散サーバ１２とアプリケーションサーバ１３とは、同様の通信ネットワーク１５−２によりデータの送受信が可能な状態で接続されている。通信ネットワーク１５−１及び通信ネットワーク１５−２は、同一のネットワークでもよい。
【００１４】
ユーザ端末１１は、ＤＢ１４に対して何らかのトランザクション処理の実行を指示するユーザが使用する端末である。ユーザ端末１１は、ユーザからの指示により、通信ネットワーク１５−１を介して分散サーバ１２にアクセスして、１又は複数のトランザクション処理の実行を指示する。
【００１５】
なお、ＤＢ１４に対するトランザクション処理とは、例えばＤＢ１４にデータを書き込んだり、ＤＢ１４に格納されたデータを検索して対象のデータを抽出したり、アプリケーションサーバ１３により抽出したデータに対してデータの修正や更新等を行ったり、その結果に対してＤＢをアップデートする等の処理又は、これらの一連の処理であるが、処理内容については、これに限定されるものではない。また、トランザクション処理は、トランザクション処理の結果が正常であればコミット処理（トランザクションによるＤＢ１４の更新内容を有効にする処理）、又は正常でない場合には、ロールバック処理（トランザクションによるＤＢ１４の更新内容を無効にする処理）を含んでもよい。
【００１６】
分散サーバ１２は、ユーザ端末１１からのリクエストに応じて、ＤＢ１４を処理する複数のアプリケーションサーバ１３の少なくとも１つにリクエスト（例えば、ＤＢトランザクションの生成リクエスト等）を振り分けて送信する。例えば、分散サーバ１２は、定期的に各アプリケーションサーバ１３から現時点での稼働情報を取得する。なお、分散サーバ１２は、定期的ではなく、ユーザ端末１１からのリクエスト要求があった場合に、各アプリケーションサーバ１３へ稼働情報の問い合わせを行って、稼働情報を取得してもよい。
【００１７】
また、分散サーバ１２は、取得した稼働情報に基づいて、各アプリケーションサーバ１３の負荷のバランスが均等になるように調整してリクエストを送信する。ここで、稼働情報とは、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）使用率や、処理待ちのリクエスト数等であるが、これに限定されるものではない。
【００１８】
分散サーバ１２は、例えば稼働情報から、ＣＰＵ負荷の最も少ないアプリケーションサーバ１３又は処理待ちリクエストの最も少ないアプリケーションサーバ１３に対してリクエストを割り当てて出力する。割り当て手法については、これに限定されるものではなく、例えば分散サーバ１２は、上述したＣＰＵ使用率及び処理待ちリクエスト数の両方の情報に基づいてリクエストを送信してもよい。また、分散サーバ１２は、稼働情報に関係なく、所定の順序で順番に処理を振り分けてもよく、リクエスト内容に基づいて、対応する処理が実行可能なアプリケーションがインストールされたアプリケーションサーバ１３に処理を振り分けてもよい。
【００１９】
アプリケーションサーバ１３は、例えば、Ｊａｖａ（登録商標）等のプログラムを実行したり、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）等によりＤＢ１４に対して処理の処理を実行したりするための各種アプリケーションプログラムがインストールされたサーバである。アプリケーションサーバ１３は、それぞれが同一のアプリケーションをインストールしてもよく、異なるアプリケーションを含めてインストールしてもよい。
【００２０】
アプリケーションサーバ１３は、通信ネットワーク１５−２を介して分散サーバ１２から取得した識別情報リクエスト（例えば、ＤＢトランザクションの生成リクエスト等）に対して、予め設定されたアプリケーションサーバ１３を識別する識別情報を返信する。また、アプリケーションサーバ１３は、分散サーバ１２から得られたリクエスト情報を取得し、取得したリクエスト情報に含まれる識別情報が、自己の識別情報であるか否かを判定し、自己の識別情報である場合には、対応する処理を実行する。
【００２１】
また、アプリケーションサーバ１３は、自己の識別情報でない場合には、通信ネットワーク１５−２を介して識別情報に対応する他のアプリケーションサーバ１３に送信する。ＤＢ１４には、ユーザ端末１１からの指示に対応する処理を行う各種データが格納されている。ＤＢ１４に格納されるデータ例としては、例えば、シングルテナントシステムやマルチテナントシステム等における各ＥＣ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｍｍｅｒｃｅ）サイト等で管理されるユーザ情報、商品情報、利用履歴、ネットショッピング等における課金情報等の各種データであるが、データの内容については、これに限定されるものではない。
【００２２】
なお、上述したユーザ端末１１は、例えばＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）、スマートフォン、タブレット端末等の情報処理装置であるが、これに限定されるものではない。また、分散サーバ１２は、例えば汎用のサーバ、ＰＣ等の中継装置であるが、これに限定されるものではない。また、アプリケーションサーバ１３は、例えば汎用のサーバ、ＰＣ等の情報処理装置であるが、これに限定されるものではなく、例えば１又は複数の情報処理装置からなるクラウドコンピューティングにより構成されたクラウドサーバであってもよい。また、図１に示す情報処理システム１０においては、１つのユーザ端末１１及び１つの分散サーバ１２を有しているが、これに限定されるものではなく、複数のユーザ端末１１及び複数の分散サーバ１２を有していてもよい。
【００２３】
本実施形態では、上述した各アプリケーションサーバ１３に対応する識別情報（例えば、装置ＩＤ等）や処理識別情報（例えば、トランザクションＩＤ）から、そのトランザクションを処理しているアプリケーションサーバ（担当サーバ）を特定し、担当サーバ以外のサーバにリクエストが送信された場合には、そのリクエストを担当サーバに送り、その結果をクライアントに返す処理を行うことで、一連のトランザクション処理を１つのサーバで実施することができるため、適切なトランザクション処理を実現することができる。
【００２４】
次に、上述した情報処理システム１０におけるユーザ端末１１及びアプリケーションサーバ１３の機能構成例について、図を用いて説明する。
【００２５】
＜ユーザ端末１１の機能構成例＞
図２は、ユーザ端末の機能構成例を示す図である。図２の例において、ユーザ端末１１は、入力手段２１と、出力手段２２と、記憶手段２３と、識別情報要求手段２４と、識別情報取得手段２５と、処理要求手段２６と、処理結果取得手段２７と、通信手段２８と、制御手段２９とを有する。
【００２６】
入力手段２１は、ユーザ端末１１を使用するユーザ等から各種指示の入力を受け付ける。入力手段２１は、例えばキーボードやマウス等のポインティングデバイス等からなる。
【００２７】
出力手段２２は、入力手段２１により入力された内容や、その入力内容に基づいて実行された内容等の表示や出力を行う。出力手段２２は、ディスプレイやスピーカ等からなる。なお、入力手段２１と出力手段２２とは、例えばタッチパネル等のように一体型の入出力手段であってもよい。この場合には、ユーザの指やタッチペン等を用いて画面上の所定の位置をタッチして入力を行うことができる。
【００２８】
記憶手段２３は、本実施形態におけるＤＢトランザクション処理を提供するための各種処理に必要な各種データを記憶する。例えば、記憶手段２３は、分散サーバ１２にアクセスするためのアドレス情報等や実行要求、実行結果等の履歴情報等を記憶するが、記憶する情報はこれに限定されるものではない。また、記憶手段２３は、必要に応じて記憶された各種データを読み出したり、各種データを書き込んだりすることができる。
【００２９】
識別情報要求手段２４は、１又は複数の処理を有するトランザクション処理を実行する前に、トランザクション生成リクエストを通信ネットワーク１５−１を介して分散サーバ１２に送信する。識別情報取得手段２５は、識別情報要求手段２４により要求した結果として、トランザクションを実行するアプリケーションサーバ１３から、そのアプリケーションサーバ１３の識別情報を取得する。識別情報取得手段２５は、取得した識別情報を記憶手段２３に記憶してもよい。
【００３０】
処理要求手段２６は、ユーザ等からの指示により、ＤＢ１４に対する１又は複数のトランザクション処理のリクエスト（処理実行リクエスト）を分散サーバ１２に出力する。このとき、処理要求手段２６は、識別情報取得手段２５により取得した識別情報（例えば、トランザクションＩＤ）を付加したリクエスト情報を生成し、生成したリクエスト情報を通信ネットワーク１５−１を介して分散サーバ１２に送信する。なお、処理要求手段２６は、複数のトランザクション処理を１つずつリクエストを送信してもよく、複数のトランザクション処理を纏めて送信してもよい。リクエストする処理の一例としては、トランザクションＩＤを指定してＤＢ１４に対する所定の操作（データの取得、編集、作成、削除、更新、トランザクションのコミット、ロールバック等）であるが、これに限定されるものではない。
【００３１】
また、処理要求手段２６は、複数のリクエストを纏めて送信する場合に、リクエストに処理番号を付加して送信し、アプリケーションサーバ１３に処理番号に対応させた順序で、リクエストを実行させてもよい。これにより、リクエストの順番が通信経路の違い及び通信時間等により入れ替われることがなく、処理の順序でリクエストに対する処理を実行させることができる。
【００３２】
処理結果取得手段２７は、処理要求手段２６により要求した処理の結果を取得する。処理結果取得手段２７は、取得した情報を記憶手段２３等に記憶する。
【００３３】
通信手段２８は、通信ネットワーク１５−１を介して分散サーバ１２にＤＢトランザクション処理の生成リクエストや実行リクエストを送信したり、分散サーバ１２から取得した情報を抽出することができるが、これに限定されるものではない。
【００３４】
制御手段２９は、ユーザ端末１１の各構成全体を制御する。制御手段２９は、例えば、入力手段２１によるデータ入力、出力手段２２によるデータ出力、識別情報要求手段２４による識別情報の要求、識別情報取得手段２５による識別情報の取得、処理要求手段２６による処理要求、処理結果取得手段２７による処理結果の取得、通信手段２８によるデータ通信等を行う。
【００３５】
なお、制御手段２９による制御内容については、これに限定されるものではない。例えば、制御手段２９は、ＤＢトランザクション処理の実行の開始や終了を制御したり、エラー発生時の処理等を制御する。
【００３６】
＜アプリケーションサーバ１３の機能構成例＞
次に、上述した情報処理システム１０におけるアプリケーションサーバ１３機能構成例について、図を用いて説明する。図３は、アプリケーションサーバの機能構成の一例を示す図である。図３の例において、アプリケーションサーバ１３は、入力手段３１と、出力手段３２と、記憶手段３３と、識別情報生成手段３４と、処理対象判定手段３５と、処理実行手段３６と、通信手段３７と、制御手段３８とを有する。
【００３７】
入力手段３１は、アプリケーションサーバ１３を使用するユーザ等から各種指示の入力を受け付ける。入力手段３１は、例えばキーボードやマウス等のポインティングデバイス等からなる。
【００３８】
出力手段３２は、入力手段３１により入力された内容や、その入力内容に基づいて実行された内容等の表示や出力を行う。出力手段３２は、ディスプレイやスピーカ等からなる。なお、入力手段３１と出力手段３２とは、例えばタッチパネル等のように一体型の入出力手段であってもよい。この場合には、ユーザの指やタッチペン等を用いて画面上の所定の位置をタッチして入力を行うことができる。
【００３９】
記憶手段３３は、本実施形態におけるＤＢトランザクション処理を提供するための各種処理に必要な各種データを記憶する。例えば、記憶手段３３は、分散サーバ１２又は他のアプリケーションサーバ１３にアクセスするためのアドレス情報、処理を実行するための各種アプリケーション（例えば、プログラム、ソフトウェア等を含む）、実行要求や実行結果等の履歴情報等を記憶するが、記憶する情報はこれに限定されるものではない。また、記憶手段３３は、必要に応じて記憶された各種データを読み出したり、各種データを書き込んだりすることができる。
【００４０】
識別情報生成手段３４は、通信ネットワーク１５−２を介して分散サーバ１２から得られるＤＢトランザクション生成リクエスト（生成リクエスト）に対して自己（アプリケーションサーバ１３）の識別情報等を付加する。例えば、識別情報生成手段３４は、予め設定された自己を特定する情報（例えば、端末ＩＤ、ＩＰアドレス等）と、任意の数値（シーケンス番号、乱数等）とを組み合わせて、トランザクションＩＤを生成する。また、識別情報生成手段３４は、トランザクションＩＤに基づいて、一連のＤＢトランザクションの処理内容を管理し、上述したトランザクションＩＤとＤＢトランザクションとをテーブルに保存する。また、識別情報生成手段３４は、生成したトランザクションＩＤを分散サーバ１２を介してユーザ端末１１に送信する。
【００４１】
なお、識別情報生成手段３４は、例えば分散サーバ１２から取得したリクエスト情報にトランザクションＩＤが付与されていない場合に、そのリクエストは識別情報を生成するリクエストであると判断してトランザクションＩＤを生成してもよい。
【００４２】
処理対象判定手段３５は、分散サーバ１２から取得したリクエストにトランザクションＩＤが含まれている場合、そのトランザクションＩＤから処理対象のトランザクションＩＤであるか否かを判定する。処理対象判定手段３５は、判定した結果、処理対象のトランザクションＩＤである場合には、処理実行手段３６により対象のリクエストに対応する処理を実行させる。また、処理対象判定手段３５は、判定した結果、処理対象のトランザクションＩＤに含まれる端末ＩＤからアプリケーションサーバ１３を特定し、特定したアプリケーションサーバ１３に、ユーザ端末１１からのリクエストと同一のリクエストを送信する。なお、処理対象判定手段３５は、通信ネットワーク１５−２を介して対象のアプリケーションサーバ１３に直接送信してもよく、分散サーバ１２を介して送信してもよい。
【００４３】
処理実行手段３６は、処理対象判定手段３５により自己が行うと判定されたリクエストに対応するＤＢトランザクション処理を実行する。処理実行手段３６は、例えばトランザクション生成処理で登録したデータ（例えば、テーブル等）に基づいて、トランザクションＩＤからＤＢトランザクションを特定する。また、処理実行手段３６は、そのトランザクションを用いて、例えばＤＢ１４に格納されたデータや、ユーザ端末１１から入力されたデータに対して、ユーザ端末１１からのリクエストを処理し、その結果を出力する。
【００４４】
なお、処理実行手段３６は、リクエストに処理番号が含まれている場合には、その順序で、リクエストを実行することができる。また、この順序に関する情報又は実行結果は、記憶手段３３に記憶されたテーブル等に記憶して管理することができる。
【００４５】
通信手段３７は、通信ネットワーク１５−２を介して分散サーバ１２とデータの送受信を行ったり、ＤＢ１４に対してデータの書き込みや読み込み等を行う。
【００４６】
制御手段３８は、アプリケーションサーバ１３の各構成全体を制御する。制御手段３８は、例えば入力手段３１によるデータ入力、出力手段３２によるデータ出力、識別情報生成手段３４による識別情報の生成、処理対象判定手段３５による処理対象リクエストの判定、処理実行手段３６による処理実行、通信手段３７によるデータ通信等を行う。
【００４７】
なお、制御手段３８による制御内容については、これに限定されるものではない。例えば、制御手段３８は、ＤＢトランザクション処理の実行の開始や終了を制御したり、エラー発生時の処理等を制御する。
【００４８】
＜ハードウェア構成例＞
次に、上述したユーザ端末１１及びアプリケーションサーバ１３におけるハードウェア構成例について図を用いて説明する。図４は、ハードウェア構成の一例を示す図である。図４の例において、ユーザ端末１１及びアプリケーションサーバ１３等に適用される情報処理装置（コンピュータ）は、入力装置４１と、出力装置４２と、ドライブ装置４３と、補助記憶装置４４と、主記憶装置４５と、ＣＰＵ４６と、通信制御装置４７とを有し、これらはシステムバスＢで相互に接続されている。
【００４９】
入力装置４１は、ユーザ等が操作するキーボード及びマウス等のポインティングデバイスや、マイクロフォン等の音声入力デバイスを有しており、ユーザ等からのプログラムの実行指示、各種操作情報、ソフトウェア等を起動するための情報等の入力を受け付ける。
【００５０】
出力装置４２は、本実施形態における処理を行うためのコンピュータ本体（ユーザ端末１１、アプリケーションサーバ１３）を操作するのに必要な各種ウィンドウやデータ等を表示するディスプレイ等を有する。出力装置４２は、ＣＰＵ４６が有する制御プログラムによりプログラムの実行経過や結果等を表示することができる。
【００５１】
ここで、本実施形態において、例えばコンピュータ本体にインストールされる実行プログラムは、記録媒体４８等により提供される。記録媒体４８は、ドライブ装置４３にセット可能である。ＣＰＵ４６からの制御信号に基づき、記録媒体４８に格納された実行プログラムが、記録媒体４８からドライブ装置４３を介して補助記憶装置４４にインストールされる。
【００５２】
補助記憶装置４４は、例えばＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等のストレージ手段等である。補助記憶装置４４は、ＣＰＵ４６からの制御信号に基づき、本実施形態における実行プログラム（処理制御プログラムの一例としてのＤＢトランザクション処理プログラム）や、コンピュータに設けられた制御プログラム等を記憶し、必要に応じて入出力を行う。補助記憶装置４４は、ＣＰＵ４６からの制御信号等に基づいて、記憶された各情報から必要な情報を読み出したり、書き込むことができる。
【００５３】
主記憶装置４５は、ＣＰＵ４６により補助記憶装置４４から読み出された実行プログラム等を格納する。主記憶装置４５は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。
【００５４】
ＣＰＵ４６は、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）等の制御プログラム、及び主記憶装置４５に格納されている実行プログラムに基づいて、各種演算や各ハードウェア構成部とのデータの入出力等、コンピュータ全体の処理を制御して各処理を実現する。プログラムの実行中に必要な各種情報等は、補助記憶装置４４から取得することができ、また実行結果等を格納することもできる。
【００５５】
具体的には、ＣＰＵ４６は、例えば入力装置４１から得られるプログラムの実行指示等に基づき、補助記憶装置４４にインストールされたプログラムを実行させることにより、主記憶装置４５上でプログラムに対応する処理を行う。
【００５６】
例えば、図４に示すハードウェア構成が、ユーザ端末１１である場合、ＣＰＵ４６は、入力手段２１によるデータ入力、出力手段２２によるデータ出力、識別情報要求手段２４による識別情報の要求、識別情報取得手段２５による識別情報の取得、処理要求手段２６による処理要求、処理結果取得手段２７による処理結果の取得、通信手段２８によるデータ通信等の処理を実行する。また、図４に示すハードウェア構成が、アプリケーションサーバ１３である場合、ＣＰＵ４６は、入力手段３１によるデータ入力、出力手段３２によるデータ出力、識別情報生成手段３４による識別情報の生成、処理対象判定手段３５による処理対象リクエストの判定、処理実行手段３６による処理実行、通信手段３７によるデータ通信等の処理を行う。
【００５７】
なお、ＣＰＵ４６における処理内容は、これに限定されるものではない。ＣＰＵ４６により実行された内容は、必要に応じて補助記憶装置４４等に記憶される。
【００５８】
通信制御装置４７は、上述した通信ネットワーク１５を介して、他の外部装置との通信を行う。通信制御装置４７は、ＣＰＵ４６からの制御信号に基づき、通信ネットワーク１５等と接続することにより、実行プログラムやソフトウェア、設定情報等を外部装置等から取得する。また、通信制御装置４７は、プログラムを実行することで得られた実行結果を他の外部装置等に提供したり、本実施形態における実行プログラム自体を外部装置等に提供してもよい。
【００５９】
記録媒体４８は、上述したように実行プログラム等が格納されたコンピュータで読み取り可能な記録媒体である。記録媒体４８は、例えばフラッシュメモリ等の半導体メモリやＣＤ−ＲＯＭ、ＤＶＤ等の可搬型の記録媒体であるが、これに限定されるものではない。
【００６０】
図３に示すハードウェア構成に実行プログラム（例えば、処理制御プログラムの一例としてのＤＢトランザクション処理プログラム等）をインストールすることで、ハードウェア資源とソフトウェアとが協働して本実施形態におけるＤＢトランザクション処理等を実現することができる。
【００６１】
＜ＤＢトランザクション処理＞
次に、本実施形態におけるＤＢトランザクション処理について、シーケンス図を用いて説明する。
【００６２】
＜第１の実施例＞
図５は、本実施形態におけるＤＢトランザクション処理の第１の実施例を示すシーケンス図である。図５の例においては、説明の便宜上、ユーザ端末１１と、分散サーバ１２と、２つのアプリケーションサーバ１３−１，１３−２を用いて説明するが、アプリケーションサーバの数等については、これに限定されるものではない。
【００６３】
図５の例では、予め定期的にアプリケーションサーバ１３−１，１３−２の稼働情報が分散サーバ１２に入力されているものとする（Ｓ０１，Ｓ０２）。
【００６４】
ユーザ端末は、ＤＢトランザクションの生成リクエストを生成し（Ｓ０３）、通信ネットワーク１５−１を介して分散サーバ１２に送信する（Ｓ０４）。次に、分散サーバ１２は、リクエストを受信した時点において、アプリケーションサーバ１３−１，１３−２のそれぞれの稼働情報（例えば、ＣＰＵ使用率、待機中のトランザクションの数（未処理件数））等に基づいて、リクエストの振り分け先を決定し（Ｓ０５）、振り分け先にリクエスト情報を送信する（Ｓ０６）。なお、図５の例では、アプリケーションサーバ１３−１を振り分け先に決定した場合の処理を示す。
【００６５】
アプリケーションサーバ１３−１は、分散サーバ１２からのＤＢトランザクション生成リクエストに対してトランザクションＩＤを生成し（Ｓ０７）、生成したトランザクションＩＤとＤＢトランザクションとを関連付けて保存する（Ｓ０８）。また、アプリケーションサーバ１３−１は、トランザクションＩＤを分散サーバ１２に送信する（Ｓ０９）。分散サーバ１２は、取得したトランザクションＩＤをユーザ端末１１に送信する（Ｓ１０）。
【００６６】
ユーザ端末１１は、ＤＢトランザクションの処理内容を設定し（Ｓ１１）、その内容（リクエスト）にトランザクションＩＤを付与して分散サーバ１２に送信する（Ｓ１２）。分散サーバ１２は、リクエストに対して、Ｓ０１、Ｓ０２の処理で得られた稼働情報に基づいて振り分け先のアプリケーションサーバ１３を決定し（Ｓ１３）、決定したアプリケーションサーバ１３にリクエストを送信する（Ｓ１４）。なお、図５の例では、アプリケーションサーバ１３−２を振り分け先とした場合の例を示す。
【００６７】
アプリケーションサーバ１３−２は、受信したリクエストに対して処理対象判定を行う（Ｓ１５）。処理判定では、リクエストに付加されたトランザクションＩＤが、自己で生成したトランザクションＩＤであるか否かを判断し、自己のトランザクションでない場合、対象のアプリケーションサーバ１３−１に送信する（Ｓ１６）。なお、図５の例では、説明の便宜上、処理対象判定の結果として、自己のトランザクションＩＤでない場合を示している。
【００６８】
アプリケーションサーバ１３−１は、アプリケーションサーバ１３−２からリクエストを受け取り、所定のタイミングでリクエストに対応するトランザクション処理を実行する（Ｓ１７）。また、アプリケーションサーバ１３−２は、実行結果をアプリケーションサーバ１３−１に送信する（Ｓ１８）。アプリケーションサーバ１３−１は、実行結果をユーザ端末１１に送信する（Ｓ１９）。
【００６９】
＜第２の実施例＞
図６は、本実施形態におけるＤＢトランザクション処理の第２の実施例を示すシーケンス図である。図６の例においても、図５と同様にユーザ端末１１と、分散サーバ１２と、２つのアプリケーションサーバ１３−１，１３−２を用いて説明するが、アプリケーションサーバの数等については、これに限定されるものではない。
【００７０】
ここで、図６の例において、Ｓ２１〜Ｓ３３の処理は、図５に示すＳ０１〜Ｓ１３の処理と同様であるため、ここでの説明は省略する。
【００７１】
第２の実施例では、Ｓ３３の分散サーバ１２による振り分け処理において、トランザクション処理のリクエストの振り分け先をアプリケーションサーバ１３−１に決定し（Ｓ３３）、決定したアプリケーションサーバ１３−１にリクエストを送信する（Ｓ３４）。
【００７２】
アプリケーションサーバ１３−１は、受信したリクエストに対して処理対象判定を行う（Ｓ３５）。処理判定では、リクエストに付加されたトランザクションＩＤが、自己で生成したトランザクションＩＤであるか否かを判断し、自己のトランザクションであるため、所定のタイミングでリクエストに対応するトランザクション処理を実行する（Ｓ３６）。また、アプリケーションサーバ１３−１は、実行結果をユーザ端末１１に送信する（Ｓ３７）。
【００７３】
なお、上述した図５，図６の例では、Ｓ１５，Ｓ２５の処理において、アプリケーションサーバ１３−１が割り振られているが、アプリケーションサーバ１３−２が割り振られた場合にも、上述した図５，図６の例に示すように、処理対象判定が行われて、自己のトランザクションＩＤがリクエストに含まれている場合に、そのリクエスト処理を実行する。
【００７４】
上述した処理シーケンスにより、適切なトランザクション処理を実現することができる。また、本実施形態において、分散サーバ１２は、従来の振り分け処理と、ユーザ端末１１及びアプリケーションサーバ１３間のデータの送受信のみを行うだけであるため、例えば分散サーバ１２が外部機関が提供する装置であり、本実施形態に対する機種変更やバージョンアップ等を行うことができない状態であっても、既存の分散サーバのままで、本実施形態を実現することができる。
【００７５】
＜ＤＢトランザクション処理の具体例＞
ここで、上述した本実施形態におけるＤＢトランザクション処理の具体例について、説明する。
【００７６】
ユーザ端末１１は、ＤＢ１４に対して何らかの処理を実行する場合、トランザクションの生成を行う。また、ユーザ端末１１は、生成したトランザクションにて、以下のＳＱＬ（処理実行リクエスト）を実行するものとする。
「SELECT ZAIKO_COUNT FROM ITEM WHERE ITEM_ID=1 FOR UPDATE」（処理Ａ）
また、生成したトランザクションにて、以下のＳＱＬを実行するものとする。
「UPDATE ITEM SET ZAIKO_COUNT = 99 WHERE ITEM_ID=1」（処理Ｂ）
更に、ユーザ端末は、生成したトランザクションをコミットする（処理Ｃ）。ここで、アプリケーションサーバ１３として、２つのアプリケーションサーバ１３−１，１３−２を有する場合、例えば以下のような順序で処理が行われる。
（１）アプリケーションサーバ１３−１が、トランザクション生成リクエストを受け取る。アプリケーションサーバ１３−１は、ＤＢ１４とのトランザクションを生成し、それを表すＩＤ（トランザクションＩＤ）として「ＴＸ１」を割り当てる。また、アプリケーションサーバ１３−１は、自己の装置を表す文字列（ＡＰＰ１）と、トランザクションＩＤとを、自己のテーブル（記憶手段３３又はＤＢ１４）に保存する。また、アプリケーションサーバ１３−１は、装置識別情報の文字列（ＡＰＰ１）と、トランザクションＩＤとを結合した「ＡＰＰ１＿ＴＸ１」をユーザ端末１１に送信する。なお、「ＡＰＰ１＿ＴＸ１」は、装置の識別情報を含めたトランザクションＩＤと言い換えることもでき、トランザクションＩＤを含めた装置の識別情報と言い換えることもできる。
（２）次に、ユーザ端末１１は、上述した「ＡＰＰ１＿ＴＸ１」を取得し、トランザクションにてＳＱＬ（例えば、上述の処理Ａ）を実行するリクエストに、取得した「ＡＰＰ１＿ＴＸ１」を付加して、分散サーバ１２に送信する。
【００７７】
ここで、分散サーバ１２による振り分け処理により、上記のリクエストがアプリケーションサーバ１３−２に割り当てられたとする。アプリケーションサーバ１３−２は、リクエストに含まれる「ＡＰＰ１＿」の部分を見てアプリケーションサーバ１３−１の担当であると判断し、ユーザ端末１１から受け取ったリクエストと同一のリクエストをアプリケーションサーバ１３−１に送信する。
（３）アプリケーションサーバ１３−１は、アプリケーションサーバ１３−２から受け取ったリクエストに含まれる「ＡＰＰ１＿」の部分を見て自分の処理対象のリクエストであると判断し、「ＴＸ１」を割り当てたトランザクションにてＳＱＬを実行し、その結果をアプリケーションサーバ１３−２に返す。
（４）その後、アプリケーションサーバ１３−２は、アプリケーションサーバ１３−１からのレスポンス（処理実行結果）をユーザ端末１１へのレスポンスとして、分散サーバ１２を介して、対象のユーザ端末１１に送信する。
（５）次に、ユーザ端末１１は、トランザクションにてＳＱＬ（例えば、上述の処理Ｂ）を実行するリクエストに「ＡＰＰ１＿ＴＸ１」を付加して分散サーバ１２に送信する。分散サーバ１２による振り分け処理により、このリクエストを、例えばアプリケーションサーバ１３−１が受け取ったとする。アプリケーションサーバ１３−１は、リクエストに含まれる「ＡＰＰ１＿」の部分を見て自分の担当であることを判断し、「ＴＸ１」を割り当てたトランザクションにてＳＱＬを実行し、そのレスポンスを分散サーバ１２を介してユーザ端末１１に送信する。
（６）次に、ユーザ端末１１は、トランザクションをコミットするリクエスト（例えば、上述の処理Ｃ）に、「ＡＰＰ１＿ＴＸ１」を含めて分散サーバ１２に送信する。分散サーバ１２による振り分け処理により、このリクエストを、例えばアプリケーションサーバ１３−２が受け取ったとする。この場合、上述した処理Ａのときの処理と同様、アプリケーションサーバ１３−２は、これがアプリケーションサーバ１３−１の担当であると判断し、同じリクエストをアプリケーションサーバ１３−１に送信する。アプリケーションサーバ１３−１は「ＴＸ１」に割り当てたトランザクションをコミットし、その結果をアプリケーションサーバ１３−２に送信する。その後、アプリケーションサーバ１３−２は、アプリケーションサーバ１３−１から受け取った結果（レスポンス）を分散サーバ１２を介してユーザ端末１１に送信する。なお、上述した処理Ｃにおいて、レスポンスの結果から処理Ａ又は処理Ｂのトランザクションが正常に終了しなかった場合には、コミットではなく、ロールバックする処理を行ってもよい。
【００７８】
上述した処理により、コミット又はロールバックするまでの一連のトランザクション処理を、１つのアプリケーションサーバ内で処理することができる。したがって、複数のアプリケーションサーバを用いた場合であっても適切なトランザクション処理を実現することができる。
【００７９】
＜アプリケーションサーバ１３又はＤＢ１４内で管理されるテーブル例（データ例）＞
次に、アプリケーションサーバ１３又はＤＢ１４に保存して、管理されるテーブル例（データ例）について、図を用いて説明する。図７は、アプリケーションサーバ又はＤＢ内で管理されるテーブルの一例を示す図である。図７の例において、アプリケーションサーバ１３又はＤＢ１４内で管理されるテーブルの項目としては、例えば「装置ＩＤ」、「トランザクションＩＤ」、「処理番号」、「フラグ」等であるがこれに限定されるものではない。
【００８０】
「装置ＩＤ」は、上述したアプリケーションサーバ１３を識別するための識別情報である。「トランザクションＩＤ」は、トランザクションを識別するための識別情報である。「処理番号」は、複数のトランザクションを所定の順序で行う場合、処理番号を含めて管理するための情報である。番号順に処理を行うことで、所望する順序で複数のトランザクション処理を実行することができる。
【００８１】
「フラグ」は、対象のトランザクション処理を実行したか否かを判別するための情報である。図６の例では、処理済みのトランザクション処理の場合には「１」をセットし、未処理の場合には、「０」を設定する。これにより、処理実行手段３６は、連続するトランザクションにおいて、所定の順序で処理を行う場合に、後の処理リクエストが、先に担当のアプリケーションサーバ１３に届く場合であっても、所定の順序で実行することができる。
【００８２】
上述した「処理番号」は、ユーザ端末１１で付与されるため、分散サーバ１２は、従来通りの処理を行えばよく、分散サーバ１２の処理負担が増加することはない。
【００８３】
なお、上述したテーブル例においては、「処理番号」、「フラグ」の項目を有していなくてもよい。
【００８４】
＜他の実施形態＞
上述したトランザクション処理は、ＤＢ１４を対象にしているが、本実施形態では、これに限定されるものではない。例えば、ＤＢトランザクションに限らず、特定のサーバでしかアクセスできないリソース（例えば、ファイル）に関するリクエストを処理したい場合等にも適用することができる。
【００８５】
上述の例の場合には、ＤＢトランザクション処理の場合と同様の構成を適用してアプリケーションサーバを特定して処理を実行することができる。この場合、ユーザ端末１１の識別情報要求手段２４は、トランザクション生成処理の代わりにリソースＩＤ生成処理のリクエストを行う。分散サーバ１２は、振り分け先のアプリケーションサーバ１３にそのリクエストを送信し、アプリケーションサーバ１３上において、そのアプリケーションサーバ１３でしかアクセスできないリソースを生成した際に、そのリソースを特定するＩＤを発行する。その際、トランザクションＩＤと同様の方法で、該当サーバを特定する情報（例えば、端末ＩＤ等）をリソースＩＤに含めておく。
【００８６】
なお、リソースＩＤは、例えばユーザ端末１１へのレスポンスに含めてもよく、アプリケーションサーバ１３がユーザ端末１１を呼び出す際の引数に含めてもよいが、これに限定されるものではない。
【００８７】
これにより、ユーザ端末は、リソースＩＤをリクエストに付加して送信することで、各アプリケーションサーバ１３は、自己が担当するリソースに対する処理を受信した場合に、リソースＩＤを元に該当リソースを特定し、対応する処理を行い、その結果をユーザ端末１１に送信することができる。
【００８８】
＜まとめ＞
上述したように、本発明によれば、複数の情報処理装置を用いた場合であっても適切なトランザクション処理（例えば、ＤＢに対するトランザクション処理又はリソースに対する処理を含む）を実現することができる。また、上述した本実施形態によれば、既存の分散サーバ１２やＤＢ１４のプログラムは修正せずに、アプリケーションサーバ１３の機能を追加することで、適切なトランザクション処理を実現することができる。
【００８９】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。また、上述した実施形態で述べたフローチャートは、矛盾の無い限り順序を入れ替えてもよい。また、上述した実施形態の全部又は一部を組み合わせることができる。
【符号の説明】
【００９０】
１０  情報処理システム
１１  ユーザ端末（情報処理装置の一例）
１２  分散サーバ（中継装置の一例）
１３  アプリケーションサーバ（情報処理装置の一例）
１４  ＤＢ
１５  通信ネットワーク
２１，３１  入力手段
２２，３２  出力手段
２３，３３  記憶手段
２４  識別情報要求手段
２５  識別情報取得手段
２６  処理要求手段
２７  処理結果取得手段
２８，３７  通信手段
２９，３８  制御手段
３４  識別情報生成手段
３５  処理対象判定手段
３６  処理実行手段
４１  入力装置
４２  出力装置
４３  ドライブ装置
４４  補助記憶装置
４５  主記憶装置
４６  ＣＰＵ
４７  通信制御装置
４８  記録媒体
【図１】
0006563807.tif 000002
【図２】
0006563807.tif 000003
【図３】
0006563807.tif 000004
【図４】
0006563807.tif 000005
【図５】
0006563807.tif 000006
【図６】
0006563807.tif 000007
【図７】
0006563807.tif 000008