(57)【要約】【課題】紐付けサーバ等の通信負荷を抑えつつ、メッセージの紐付け処理を並列化する。【解決手段】本メッセージ紐付け処理方法は、プロトコル毎に当該プロトコルに係るメッセージに含まれ且つメッセージの紐付け処理で用いられる紐付けキーを格納するキー定義DBから各紐付けキーを抽出し、抽出した紐付けキーの各々に対応するノードと同一プロトコルに属する紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成する工程と、複数のリンクによって構造体中にループが形成されているか判断する工程と、構造体中にループが形成されていない場合、各々連携して紐付け処理を実施する複数の紐付け処理部の各々に対する紐付けキーの割り当ての組み合わせである割り当てパターンのうち、紐付け処理部間の通信負荷が最小となるパターンを特定し、特定された割り当てパターンに係る割り当てデータを記憶部に格納する工程とを含む。【選択図】図６
2010102683.tif 000002
【特許請求の範囲】
【請求項１】
プロトコル毎に当該プロトコルに係るメッセージに含まれ且つ前記メッセージの紐付け処理で用いられる紐付けキーを格納するキー定義データベースから各前記紐付けキーを抽出し、抽出した前記紐付けキーの各々に対応するノードと同一の前記プロトコルに属する前記紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成するステップと、
複数の前記リンクによって前記構造体中にループが形成されているか判断する判断ステップと、
前記構造体中にループが形成されていないと判断された場合、各々連携して前記紐付け処理を実施する複数の紐付け処理部の各々に対する前記紐付けキーの割り当ての組み合わせである割り当てパターンのうち、前記紐付け処理部間の通信負荷が最小であるという第１条件を含む所定の条件を満たすパターンを特定し、特定された前記割り当てパターンに係る割り当てデータをキー情報格納部に格納するパターン特定ステップと、
をコンピュータに実行させるためのメッセージ紐付け処理プログラム。
【請求項２】
前記構造体中にループが形成されていないと判断された場合、前記構造体において葉ノードとみなされる前記ノードのいずれかを開始ノードとして特定するステップと、
前記構造体において前記開始ノードから前記リンクを辿ることにより前記ノードを検出し、検出した順に連続する番号を当該ノードに対応する前記紐付けキーの優先度として付与し、優先度格納部に格納するステップと、
をさらにコンピュータに実行させるための請求項１記載のメッセージ紐付け処理プログラム。
【請求項３】
前記構造体中にループが形成されていると判断された場合、前記ループを形成する複数の前記リンクの各々について、当該リンクを切断したものとみなして、前記判断ステップ以降の処理を実施するステップ
をさらにコンピュータに実行させ、
前記パターン特定ステップが、
前記キー情報格納部に前記割り当てデータと前記通信負荷とが格納されていない場合、特定された前記割り当てパターンに係る前記割り当てデータと前記通信負荷とを前記キー情報格納部に格納するステップと、
前記キー情報格納部に前記割り当てデータと前記通信負荷とが既に格納されている場合、特定された前記割り当てパターンに係る前記通信負荷と前記キー情報格納部に格納されている前記通信負荷とを比較し、前記キー情報格納部に格納されている前記通信負荷より、特定された前記割り当てパターンに係る前記通信負荷の方が小さい場合、特定された前記割り当てパターンに係る前記割り当てデータと前記通信負荷とで前記キー情報格納部を更新するステップと、
を含む請求項１又は２記載のメッセージ紐付け処理プログラム。
【請求項４】
プロトコル毎に当該プロトコルに係るメッセージに含まれ且つ前記メッセージの紐付け処理で用いられる紐付けキーを格納するキー定義データベースから各前記紐付けキーを抽出し、抽出した前記紐付けキーの各々に対応するノードと同一の前記プロトコルに属する前記紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成するステップと、
複数の前記リンクによって前記構造体中にループが形成されているか判断する判断ステップと、
前記構造体中にループが形成されていないと判断された場合、各々連携して前記紐付け処理を実施する複数の紐付け処理部の各々に対する前記紐付けキーの割り当ての組み合わせである割り当てパターンのうち、前記紐付け処理部間の通信負荷が最小であるという第１条件を含む所定の条件を満たすパターンを特定し、特定された前記割り当てパターンに係る割り当てデータをキー情報格納部に格納するパターン特定ステップと、
を含み、コンピュータにより実行されるメッセージ紐付け処理方法。
【請求項５】
プロトコル毎に当該プロトコルに係るメッセージに含まれ且つ前記メッセージの紐付け処理で用いられる紐付けキーを格納するキー定義データベースから各前記紐付けキーを抽出し、抽出した前記紐付けキーの各々に対応するノードと同一の前記プロトコルに属する前記紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成する構造体処理手段と、
複数の前記リンクによって前記構造体中にループが形成されているか判断し、前記構造体中にループが形成されていないと判断された場合、各々連携して前記紐付け処理を実施する複数の紐付け処理手段の各々に対する前記紐付けキーの割り当ての組み合わせである割り当てパターンのうち、前記紐付け処理手段間の通信負荷が最小であるという第１条件を含む所定の条件を満たすパターンを特定し、特定された前記割り当てパターンに係る割り当てデータをキー情報格納部に格納するパターン特定手段と、
を有するメッセージ紐付け処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メッセージの紐付け処理を並列化するための技術に関する。
【背景技術】
【０００２】
例えば電子商取引など複数のサーバを有するシステムでは、クライアントからのリクエストを受け取ると、サーバ間でメッセージが交換され、処理が進行する。
【０００３】
一方、このようなシステムの挙動監視やリクエスト遅延問題を解析するために、メッセージをトランザクション毎に紐付ける処理（以下、紐付け処理と呼ぶ）が行われる。なお、１リクエストの応答に必要なメッセージについては、メッセージに含まれるキーワード等（以下、紐付けキーと呼ぶ）によって１つのトランザクションとして認識される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−５３３２３号公報
【特許文献２】特開平５−６１６９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、大量のメッセージを高速に処理するため、メッセージの紐付け処理を行う紐付けサーバ等を複数台並列に動作させる構成が考えられる。しかし、単に並列処理を行う場合、紐付けサーバ間において紐付け処理のための通信の回数が多くなる場合があり、通信負荷が、並列化による効率向上の妨げになるという問題がある。なお、従来技術では、紐付けサーバ等の通信負荷を抑えつつ、メッセージの紐付け処理を並列化することはできない。
【０００６】
従って、本技術の目的は、紐付けサーバ等の通信負荷を最小限に抑えつつ、メッセージの紐付け処理を並列化できるようにすることである。
【課題を解決するための手段】
【０００７】
本メッセージ紐付け処理方法は、プロトコル毎に当該プロトコルに係るメッセージに含まれ且つメッセージの紐付け処理で用いられる紐付けキーを格納するキー定義データベースから各紐付けキーを抽出し、抽出した紐付けキーの各々に対応するノードと同一のプロトコルに属する紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成するステップと、複数のリンクによって構造体中にループが形成されているか判断する判断ステップと、構造体中にループが形成されていないと判断された場合、各々連携して紐付け処理を実施する複数の紐付け処理部の各々に対する紐付けキーの割り当ての組み合わせである割り当てパターンのうち、紐付け処理部間の通信負荷が最小であるという第１条件を含む所定の条件を満たすパターンを特定し、特定された割り当てパターンに係る割り当てデータをキー情報格納部に格納するパターン特定ステップとを含む。
【発明の効果】
【０００８】
紐付けサーバ等の通信負荷を抑えつつ、メッセージ紐付け処理を並列化できるようになる。
【図面の簡単な説明】
【０００９】
【図１】本実施の形態の前提となるメッセージ紐付け処理を説明するための図である。
【図２】本実施の形態の前提となるメッセージ紐付け処理における問題点を説明するための図である。
【図３】本実施の形態の前提となるメッセージ紐付け処理を説明するための図である。
【図４】本実施の形態の前提となるメッセージ紐付け処理における問題点を説明するための図である。
【図５】本実施の形態の概要を説明するための図である。
【図６】本実施の形態に係るメッセージ紐付け処理装置の機能ブロック図である。
【図７】サーバＤＢに格納されるデータの一例を示す図である。
【図８】キー定義ＤＢに格納されるデータの一例を示す図である。
【図９】キー配置格納部に格納されるデータの一例を示す図である。
【図１０】キー優先度格納部に格納されるデータの一例を示す図である。
【図１１】本実施の形態におけるメインの処理フローを示す図である。
【図１２】構造体を示す図である。
【図１３】構造体を示す図である。
【図１４】処理量計算処理の処理フロー（第１の部分）を示す図である。
【図１５】構造体を示す図である。
【図１６】構造体を示す図である。
【図１７】（ａ）乃至（ｃ）は、処理量計算処理を再帰的に実施する場合を説明するための図である。
【図１８】処理量計算処理の処理フロー（第２の部分）を示す図である。
【図１９】割り当てパターンテーブルのテーブル例を示す図である。
【図２０】（ａ）乃至（ｃ）は、紐付けキー割り当てを示す図である。
【図２１】割り当てパターンテーブルのテーブル例を示す図である。
【図２２】（ａ）及び（ｂ）は、紐付けキーが３つの場合の処理を説明するための図である。
【図２３】コンピュータの機能ブロック図である。
【発明を実施するための形態】
【００１０】
まず、本実施の形態の前提となる、メッセージの紐付け処理について説明する。例えば図１に示すように、メッセージ振分部が、紐付けキーＫｃ及びＫｄが割り当てられている紐付けサーバ１に、プロトコルＯのメッセージ（Prot.O）とプロトコルＲのメッセージ（Prot.R）とを割り振り、紐付けキーＫａ及びＫｂが割り当てられている紐付けサーバ２に、プロトコルＰのメッセージ（Prot.P）とプロトコルＳのメッセージ（Prot.S）とを割り振るものとする。また、紐付けサーバ１及び２は、割り当てられている紐付けキー毎のハッシュテーブルを有しており、メッセージ振分部からメッセージを受け取ると、紐付けキーからハッシュ値を計算し、ハッシュ値に従ってメッセージをハッシュテーブルに格納するものとする。なお、Prot.Oには、紐付けキーＫｃ及びＫａが含まれ、Prot.Pには、紐付けキーＫａ及びＫｄが含まれ、Prot.Rには、紐付けキーＫｄ及びＫｂが含まれ、Prot.Sには、紐付けキーＫｂが含まれる。すなわち、Prot.OとProt.Pとは、紐付けキーＫａによって紐付けられる。また、Prot.PとProt.Rとは、紐付けキーＫｄによって紐付けられる。さらに、Prot.RとProt.Sとは、紐付けキーＫｂによって紐付けられる。従って、Prot.OとProt.PとProt.RとProt.Sとは、同一のトランザクションに係るメッセージとして紐付けられる。
【００１１】
例えば図２に示すように、メッセージの紐付け処理が行われる。具体的には、まず、紐付けサーバ１が、ハッシュテーブル（Ｋｃ）からProt.O（Ｋｃ＝ａ，Ｋａ＝１５）を取り出す。ここで、Prot.Oは、紐付けキーＫａによってProt.Pと紐付けられるが、Prot.Pを格納しているのは、紐付けサーバ２であるため、紐付けサーバ間で通信（１回目）が発生する。次に、紐付けサーバ２が、Prot.Oと紐付くProt.P（Ｋａ＝１５，Ｋｄ＝３７）をハッシュテーブル（Ｋａ）から取り出す。ここで、Prot.Pは、紐付けキーＫｄによってProt.Rと紐付けられるが、Prot.Rを格納しているのは、紐付けサーバ１であるため、再び紐付けサーバ間で通信（２回目）が発生する。そして、紐付けサーバ１が、Prot.Pと紐付くProt.R（Ｋｄ＝３７，Ｋｂ＝ｘ）をハッシュテーブル（Ｋｄ）から取り出す。ここで、Prot.Rは、紐付けキーＫｂによってProt.Sと紐付けられるが、Prot.Sを格納しているのは、紐付けサーバ２であるため、再び紐付けサーバ間で通信（３回目）が発生する。そして、紐付けサーバ２が、Prot.Rと紐付くProt.S（Ｋｂ＝ｘ）をハッシュテーブル（Ｋｂ）から取り出し、紐付け処理は完了となる。すなわち、図１に示すように紐付けキーを割り当てると、紐付け処理のために、紐付けサーバ間で３回の通信が必要となる。なお、図１及び図２では、紐付けキーの数が４つの例を示しているが、紐付けキーが多くなると、紐付けサーバ間の通信回数も多くなり、通信負荷が並列処理による効率化を妨げることになる。
【００１２】
また、図３に示すように、メッセージ振分部が、複数の紐付けキーを含むメッセージの振分けを行う際に、例えばメッセージ中において先に検出した紐付けキーに従ってメッセージの割り振りを行うと、図４に示すような問題が生じてしまう。なお、図３では、紐付けサーバ１には、紐付けキーＫｃ及びＫａが割り当てられ、紐付けサーバ２には、紐付けキーＫｄ及びＫｂが割り当てられているものとする。また、図３では、紐付けキーＫａより先に紐付けキーＫｄを検出し、紐付けキーＫｄに従ってProt.Pを紐付けサーバ２に割り振るものとする。
【００１３】
この状態で、メッセージの紐付け処理を行うと、図４に示すように、紐付けサーバ１は、紐付けキーＫｃのハッシュテーブルからProt.Oを取り出すが、紐付けサーバ１内の紐付けキーＫａのハッシュテーブルにProt.Pが登録されていないため、Prot.Oと紐付くはずのProt.Pを探し出すことができない。この場合、Prot.Pを紐付けキーＫａのハッシュテーブルにも登録することで、紐付け処理を行うことができるようになるが、ハッシュテーブルにおいて領域を余分に確保しなければならず、またメッセージコピーのための通信負荷がかかってしまい、並列化を妨げることになる。
【００１４】
そこで、本実施の形態では、紐付けキーの割り当てパターンのうち、所定の条件（例えば、各紐付けサーバの稼働率など）を満たし且つ紐付けサーバ間の通信負荷が最も少なくなるパターンを特定し、各紐付けサーバに対して割り当てる紐付けキーを最適化する。例えば図５に示すようなキー割り当てを行う。図５では、紐付けサーバ１には、紐付けキーＫｃ及びＫａが割り当てられ、紐付けサーバ２には、紐付けキーＫｄ及びＫｂが割り当てられている。さらに、複数の紐付けキーを含むメッセージを重複登録しなくても済むように、紐付けキーの優先度を決定する。例えば、Prot.O（Ｋｃ，Ｋａ）→Prot.P（Ｋａ，Ｋｄ）→Prot.R（Ｋｄ，Ｋｂ）→Prot.S（Ｋｂ）の順に紐付けが行われる場合、Ｋｃ（＝１），Ｋａ（＝２），Ｋｄ（＝３），Ｋｂ（＝４）の順に優先度を付与する。そして、メッセージ振分部において、優先度に従ってメッセージの振分けを行うようにすれば、例えばProt.Pは、ＫｄよりＫａの方が優先度が高いため、紐付けサーバ１に割り振られることとなる。これにより、重複登録しなくても、紐付け処理を行うことができるようになり、図２では３回だった通信回数が、１回まで減らすことができる。以下、本技術の一実施の形態について説明する。
【００１５】
まず、図６に本技術の一実施の形態に係るメッセージ紐付け処理装置のシステム概要を示す。本実施の形態におけるメッセージ紐付け処理装置は、各紐付け処理部の処理能力などを格納するサーバＤＢ１０１と、プロトコル毎に当該プロトコルに係るメッセージに含まれる紐付けキーを格納するキー定義ＤＢ１０３と、サーバＤＢ１０１及びキー定義ＤＢ１０３に格納されているデータに基づき、紐付けキーの割り当てパターンのうち、所定の条件を満たし且つ紐付け処理部（紐付けサーバ）間の通信負荷が最も少なくなるパターンを特定するキー配置最適化部１０５と、キー配置最適化部１０５により特定された割り当てパターンに係るキー配置を格納するキー配置格納部１０７と、キー配置格納部１０７に格納されているキー配置に基づき、各紐付けキーの優先度を決定するキー優先度決定部１０９と、キー優先度決定部１０９により決定された紐付けキーの優先度を格納するキー優先度格納部１１１と、各トランザクションに係るメッセージを受信するメッセージ受信部１１３と、キー配置格納部１０７に格納されているキー配置とキー優先度格納部１１１に格納されている優先度とに従ってメッセージ受信部１１３の受信したメッセージを、担当紐付け処理部に振分けるメッセージ振分部１１５と、担当する紐付けキー毎のハッシュテーブルを各々有し、各々連携してメッセージの紐付け処理を実施する紐付け処理部１１７乃至１２１とを有する。なお、紐付け処理部１１７乃至１２１は、例えば別サーバ上に構成されるものとする。
【００１６】
また、キー配置最適化部１０５は、キー定義ＤＢ１０３から各紐付けキーを抽出し、抽出した紐付けキーの各々に対応するノードと同一のプロトコルに属する紐付けキーのノード間を結ぶリンクとを含む構造体のデータに関連する処理を実施する構造体処理部１０５１と、紐付けキーの割り当てパターンのうち、所定の条件を満たし且つ紐付け処理部（紐付けサーバ）間の通信負荷が最も少なくなるパターンを特定するパターン特定部１０５３とを有する。
【００１７】
図７に、サーバＤＢ１０１に格納されるデータの一例を示す。図７の例では、サーバＤＢ１０１には、サーバ（紐付け処理部）ＩＤの列と、処理能力の列とが含まれる。処理能力の列には、各紐付けサーバ（紐付け処理部）の相対的な処理能力を表す値が格納される。
【００１８】
図８に、キー定義ＤＢ１０３に格納されるデータの一例を示す。図８の例では、キー定義ＤＢ１０３には、プロトコルの列と、キー（紐付けキー）の列とが含まれる。
【００１９】
図９に、キー配置格納部１０７に格納されるデータの一例を示す。図９の例では、キー配置格納部１０７には、サーバ（紐付け処理部）ＩＤの列と、キー（紐付けキー）の列とが含まれる。キーの列には、紐付けサーバ（紐付け処理部）に対して割り当てる紐付けキーが設定される。なお、キー配置格納部１０７には、キー配置に対応する構造体のデータと後で説明する最小通信負荷とが併せて格納される。
【００２０】
図１０に、キー優先度格納部１１１に格納されるデータの一例を示す。図１０の例では、キー優先度格納部１１１には、キー（紐付けキー）の列と、優先度の列とが含まれる。
【００２１】
次に、図１１乃至図２１を用いて、図６に示したメッセージ紐付け処理装置の処理内容を説明する。なお、本実施の形態では、３つの紐付けサーバ（１乃至３）が存在する場合を例に説明する。まず、構造体処理部１０５１が、キー定義ＤＢ１０３から各紐付けキーを抽出し、抽出した紐付けキーの各々に対応するノードと同一のプロトコルに属する紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成し、記憶装置に格納する（図１１：ステップＳ１）。例えば図８に示したようなデータ（Ｐ１乃至Ｐ１０）がキー定義ＤＢ１０３に格納されている場合に、本ステップの処理を実施すると、図１２に示すような構造体のデータが生成される。図１２に示す構造体には、キー定義ＤＢ１０３（図８）における紐付けキーＫｘ、Ｋａ、Ｋｂ、Ｋｃ、Ｋｄ、Ｋｅ、Ｋｆ、Ｋｇ、Ｋｙ及びＫｚの各ノードが含まれている。さらに、図１２に示す構造体には、キー定義ＤＢ１０３におけるプロトコルＰ１乃至Ｐ１０の各々に対応するリンクＰ１乃至Ｐ１０が含まれている。なお、リンクＰ１は、プロトコルＰ１に属する紐付けキーＫｘ及びＫａのノード間を結ぶリンクである。また、リンクＰ２は、プロトコルＰ２に属する紐付けキーＫａ及びＫｂのノード間を結ぶリンクである。さらに、リンクＰ３は、プロトコルＰ３に属する紐付けキーＫｂ及びＫｃのノード間を結ぶリンクである。また、リンクＰ４は、プロトコルＰ４に属する紐付けキーＫｃ及びＫｄのノード間を結ぶリンクである。さらに、リンクＰ５は、プロトコルＰ５に属する紐付けキーＫｄ及びＫｙのノード間を結ぶリンクである。また、リンクＰ６は、プロトコルＰ６に属する紐付けキーＫｃ及びＫｅのノード間を結ぶリンクである。さらに、リンクＰ７は、プロトコルＰ７に属する紐付けキーＫｅ及びＫｆのノード間を結ぶリンクである。また、リンクＰ８は、プロトコルＰ８に属する紐付けキーＫｆ及びＫｚのノード間を結ぶリンクである。さらに、リンクＰ９は、プロトコルＰ９に属する紐付けキーＫｅ及びＫｇのノード間を結ぶリンクである。また、リンクＰ１０は、プロトコルＰ１０に属する紐付けキーＫｂ及びＫｇのノード間を結ぶリンクである。
【００２２】
そして、構造体処理部１０５１は、単一のプロトコルに属する紐付けキーのノードを構造体から削除する（ステップＳ３）。なお、図８では、紐付けキーＫｘは、プロトコルＰ１にのみ含まれ、紐付けキーＫｙは、プロトコルＰ５にのみ含まれ、紐付けキーＫｚは、プロトコルＰ８にのみ含まれる。従って、図１２に示した構造体から紐付けキーＫｘ、Ｋｙ及びＫｚのノードが削除され、図１３の右側に示すような構造体となる。なお、図１３の右側の構造体には、紐付けキーＫａ、Ｋｂ、Ｋｃ、Ｋｄ、Ｋｅ、Ｋｆ及びＫｇのノードが含まれる。
【００２３】
そして、構造体処理部１０５１及びパターン特定部１０５３が、サーバＤＢ１０１に格納されているデータと記憶装置に格納されている構造体のデータとを用いて処理量計算処理を実施し、キー配置を特定してキー配置格納部１０７に格納する（ステップＳ５）。
【００２４】
処理量計算処理については、図１４乃至図２１を用いて説明する。まず、構造体処理部１０５１が、記憶装置に格納されている構造体のデータを解析し、構造体中にループがあるか否か判断する（図１４：ステップＳ１１）。例えば、構造体に含まれるリンクを辿って各ノードを検出し、検出したノードについてはフラグを立てる。そして、フラグの立てられたノードを再度検出した場合には、ループありと判断する。構造体中にループがないと判断された場合（ステップＳ１１：Ｎｏルート）、端子Ａを介してステップＳ２１（図１８）の処理に移行する。なお、図１８の処理は後で説明する。
【００２５】
一方、構造体中にループがあると判断された場合（ステップＳ１１：Ｙｅｓルート）、構造体処理部１０５１は、ループを構成するリンクを切断候補リンクとして抽出する（ステップＳ１３）。例えば、図１５に示すように、紐付けキーＫｂと紐付けキーＫｃとを結ぶリンクＰ３と、紐付けキーＫｃと紐付けキーＫｅとを結ぶリンクＰ６と、紐付けキーＫｅと紐付けキーＫｇとを結ぶリンクＰ９と、紐付けキーＫｇと紐付けキーＫｂとを結ぶリンクＰ１０とによってループが形成されている場合には、リンクＰ３、Ｐ６、Ｐ９及びＰ１０を切断候補リンクとして抽出する。
【００２６】
そして、構造体処理部１０５１は、抽出した切断候補リンクのうち未処理の切断候補リンクを特定する（ステップＳ１５）。ここでは、例えばリンクＰ１０が特定されたものとする。そして、構造体処理部１０５１は、特定された切断候補リンクを切断したものとみなして、再帰的に処理量計算処理を実施する（ステップＳ１７）。例えば、リンクＰ１０が切断されると、図１６の右側に示すような構造体となり、この構造体にて再度処理量計算処理を実施することとなる。なお、ステップＳ１７の処理が終了すると、特定された切断候補リンクは再接続したものとみなす。
【００２７】
なお、構造体中に形成されるループは１つとは限らない。例えば、図１７（ａ）に示すようにループが２つ形成されている場合、まず、リンクＰ３、Ｐ６、Ｐ９及びＰ１０によって形成されるループについて切断候補リンクを特定し（ここではリンクＰ１０が特定されたものとする）、リンクＰ１０を切断したものとみなして、処理量計算処理を実施する。なお、リンクＰ１０が切断されると、図１７（ｂ）に示すような構造体となる。次に、図１７（ｂ）の構造体において、リンクＰ１４、Ｐ１６、Ｐ１７及びＰ１５によって形成されるループについて切断候補リンクを特定し（ここではリンクＰ１７が特定されたものとする）、リンクＰ１７を切断したものとみなして、さらに処理量計算処理を実施する。なお、リンクＰ１７が切断されると、図１７（ｃ）に示すような構造体となる。図１７（ｃ）の構造体中には、ループは形成されていない。このように、構造体中のループがなくなるまで再帰的に処理量計算処理を実施する。
【００２８】
そして、構造体処理部１０５１は、全ての切断候補リンクについて処理が完了したか判断する（ステップＳ１９）。全ての切断候補リンクについて処理が完了していなければ（ステップＳ１９：Ｎｏルート）、ステップＳ１５の処理に戻る。一方、全ての切断候補リンクについて処理が完了した場合（ステップＳ１９：Ｙｅｓルート）、元の処理に戻る。
【００２９】
次に、端子Ａ以降の処理を図１８を用いて説明する。なお、図１６の右側に示した構造体について処理する場合を例として説明する。まず、パターン特定部１０５３は、構造体に含まれるノード（紐付けキー）の数とサーバＤＢ１０１に格納されている各紐付けサーバ（紐付け処理部）の処理能力とに基づき、各紐付けサーバ（紐付け処理部）の担当処理量を算出し、一旦記憶装置に格納する（図１８：ステップＳ２１）。具体的には、各紐付けサーバの処理能力を全て加算して全体の処理能力を算出し、「（ノードの総数）×（紐付けサーバｎの処理能力）／（全体の処理能力）」を、紐付けサーバｎの担当処理量（すなわち、紐付けサーバｎの担当する紐付けキーの数）として算出する。例えば、紐付けサーバ１乃至紐付けサーバ３について、図７に示したようなデータがサーバＤＢ１０１に格納されている場合、全体の処理能力は７（＝２＋２＋３）となる。また、図１６の右側に示した構造体には、７つのノード（紐付けキーＫａ、Ｋｂ、Ｋｃ、Ｋｄ、Ｋｅ、Ｋｆ及びＫｇの各々のノード）が含まれている。従って、紐付けサーバ１の担当処理量は、「７×２／７＝２」となり、紐付けサーバ２の担当処理量は、「７×２／７＝２」となり、紐付けサーバ３の担当処理量は、「７×３／７＝３」となる。
【００３０】
そして、パターン特定部１０５３は、割り当てパターンテーブルを生成し、記憶装置に格納する（ステップＳ２３）。具体的には、ステップＳ２１において算出された担当処理量に従って紐付けキーを各紐付けサーバに割り当てる場合における紐付けキーの組み合わせである割り当てパターンを全て抽出し、抽出した全ての割り当てパターンを含む割り当てパターンテーブルを生成する。図１９に、割り当てパターンテーブルの一例を示す。図１９の例では、割り当てパターンテーブルには、サーバ（紐付け処理部）ＩＤの列と、処理能力の列と、パターン１の列と、パターン２の列と、パターン３の列と、・・・とが含まれる。さらに、各パターンの列は、キー配置の列と、担当処理量の列と、通信負荷の列と、処理量の列と、稼働率の列とに分かれている。なお、処理能力の列には、サーバＤＢ１０１に格納されている当該紐付けサーバ（紐付け処理部）の処理能力が設定される。キー配置の列には、当該パターンにおける紐付けキーの組み合わせが設定される。担当処理量の列には、ステップＳ２１で算出した担当処理量が設定される。なお、通信負荷の列と処理量の列と稼働率の列との各列は、後で説明するステップＳ２７の処理によって設定される。
【００３１】
そして、パターン特定部１０５３は、割り当てパターンテーブルにおいて、未処理の割り当てパターンを特定する（ステップＳ２５）。そして、パターン特定部１０５３は、特定された割り当てパターンにおける各紐付けサーバの通信負荷と処理量と稼働率とを算出し、割り当てパターンテーブルに設定する（ステップＳ２７）。この処理については図２０を用いて説明する。
【００３２】
例えば、図１９に示した割り当てパターンテーブルにおけるパターン１の場合、図２０（ａ）に示すような割り当てとなる。図２０（ａ）では、紐付けサーバ１と紐付けサーバ２に跨っているリンクは１つ存在する（ノード（Ｋｂ）とノード（Ｋｃ）とを結ぶリンク）。ここで、紐付けサーバ１と紐付けサーバ２に跨っているリンクの数に所定の重み付け値（ここでは１とする）を乗じて紐付けサーバ１と紐付けサーバ２間の通信負荷（１×１＝１）を算出し、紐付けサーバ１と紐付けサーバ２との各々に均等に割り振る。すなわち、紐付けサーバ１と紐付けサーバ２とに０．５ずつ割り振る。また、図２０（ａ）では、紐付けサーバ２と紐付けサーバ３に跨っているリンクも１つ存在する（ノード（Ｋｃ）とノード（Ｋｅ）とを結ぶリンク）。同様に、紐付けサーバ２と紐付けサーバ３に跨っているリンクの数に所定の重み付け値（ここでは１とする）を乗じて紐付けサーバ２と紐付けサーバ３間の通信負荷（１×１＝１）を算出し、紐付けサーバ２と紐付けサーバ３との各々に均等に割り振る。すなわち、紐付けサーバ２と紐付けサーバ３とに０．５ずつ割り振る。結果として、パターン１の場合、紐付けサーバ１の通信負荷は０．５、紐付けサーバ２の通信負荷は１（＝０．５＋０．５）、紐付けサーバ３の通信負荷は０．５となる。なお、例えば、紐付けサーバ間の通信速度が遅い場合などは、通信負荷が高くなるような重み付け値を採用することもある。そして、紐付けサーバ毎に、担当処理量と通信負荷とを加算して処理量を算出する。すなわち、紐付けサーバ１の処理量は２．５（＝２＋０．５）、紐付けサーバ２の処理量は３（＝２＋１）、紐付けサーバ３の処理量は３．５（＝３＋０．５）となる。さらに、紐付けサーバ毎に、処理能力に対する処理量の比（＝処理量／処理能力）を稼働率として算出する。すなわち、紐付けサーバ１の稼働率は１２５％（＝２．５／２）、紐付けサーバ２の稼働率は１５０％（＝３／２）、紐付けサーバ３の稼働率は１１７％（≒３．５／３）となる。
【００３３】
また、図１９に示した割り当てパターンテーブルにおけるパターン２の場合、図２０（ｂ）に示すような割り当てとなる。図２０（ｂ）では、紐付けサーバ１と紐付けサーバ２に跨っているリンクは１つ存在する（ノード（Ｋｂ）とノード（Ｋｃ）とを結ぶリンク）。紐付けサーバ１と紐付けサーバ２に跨っているリンクの数に所定の重み付け値（ここでは１とする）を乗じて紐付けサーバ１と紐付けサーバ２間の通信負荷（１×１＝１）を算出し、紐付けサーバ１と紐付けサーバ２との各々に均等に割り振る。すなわち、紐付けサーバ１と紐付けサーバ２とに０．５ずつ割り振る。また、図２０（ｂ）では、紐付けサーバ２と紐付けサーバ３に跨っているリンクは３つ存在する（ノード（Ｋｃ）とノード（Ｋｄ）とを結ぶリンク、ノード（Ｋｅ）とノード（Ｋｆ）とを結ぶリンク、ノード（Ｋｅ）とノード（Ｋｇ）とを結ぶリンク）。紐付けサーバ２と紐付けサーバ３に跨っているリンクの数に所定の重み付け値（ここでは１とする）を乗じて紐付けサーバ２と紐付けサーバ３間の通信負荷（３×１＝３）を算出し、紐付けサーバ２と紐付けサーバ３との各々に均等に割り振る。すなわち、紐付けサーバ２と紐付けサーバ３とに１．５ずつ割り振る。結果として、パターン２の場合、紐付けサーバ１の通信負荷は０．５、紐付けサーバ２の通信負荷は２（＝０．５＋１．５）、紐付けサーバ３の通信負荷は１．５となる。そして、紐付けサーバ毎に、担当処理量と通信負荷とを加算して処理量を算出する。すなわち、紐付けサーバ１の処理量は２．５（＝２＋０．５）、紐付けサーバ２の処理量は４（＝２＋２）、紐付けサーバ３の処理量は４．５（＝３＋１．５）となる。さらに、紐付けサーバ毎に、処理能力に対する処理量の比（＝処理量／処理能力）を稼働率として算出する。すなわち、紐付けサーバ１の稼働率は１２５％（＝２．５／２）、紐付けサーバ２の稼働率は２００％（＝４／２）、紐付けサーバ３の稼働率は１５０％（＝４．５／３）となる。
【００３４】
さらに、図１９に示した割り当てパターンテーブルにおけるパターン３の場合、図２０（ｃ）に示すような割り当てとなる。図２０（ｃ）では、紐付けサーバ１と紐付けサーバ２に跨っているリンクは１つ存在する（ノード（Ｋｂ）とノード（Ｋｃ）とを結ぶリンク）。紐付けサーバ１と紐付けサーバ２に跨っているリンクの数に所定の重み付け値（ここでは１とする）を乗じて紐付けサーバ１と紐付けサーバ２間の通信負荷（１×１＝１）を算出し、紐付けサーバ１と紐付けサーバ２との各々に均等に割り振る。すなわち、紐付けサーバ１と紐付けサーバ２とに０．５ずつ割り振る。また、図２０（ｃ）では、紐付けサーバ２と紐付けサーバ３に跨っているリンクは３つ存在する（ノード（Ｋｃ）とノード（Ｋｄ）とを結ぶリンク、ノード（Ｋｃ）とノード（Ｋｅ）とを結ぶリンク、ノード（Ｋｆ）とノード（Ｋｅ）とを結ぶリンク）。紐付けサーバ２と紐付けサーバ３に跨っているリンクの数に所定の重み付け値（ここでは１とする）を乗じて紐付けサーバ２と紐付けサーバ３間の通信負荷（３×１＝３）を算出し、紐付けサーバ２と紐付けサーバ３との各々に均等に割り振る。すなわち、紐付けサーバ２と紐付けサーバ３とに１．５ずつ割り振る。結果として、パターン３の場合、紐付けサーバ１の通信負荷は０．５、紐付けサーバ２の通信負荷は２（＝０．５＋１．５）、紐付けサーバ３の通信負荷は１．５となる。そして、紐付けサーバ毎に、担当処理量と通信負荷とを加算して処理量を算出する。すなわち、紐付けサーバ１の処理量は２．５（＝２＋０．５）、紐付けサーバ２の処理量は４（＝２＋２）、紐付けサーバ３の処理量は４．５（＝３＋１．５）となる。さらに、紐付けサーバ毎に、処理能力に対する処理量の比（＝処理量／処理能力）を稼働率として算出する。すなわち、紐付けサーバ１の稼働率は１２５％（＝２．５／２）、紐付けサーバ２の稼働率は２００％（＝４／２）、紐付けサーバ３の稼働率は１５０％（＝４．５／３）となる。
【００３５】
そして、パターン特定部１０５３は、特定された割り当てパターンにおける通信負荷の合計を算出し、割り当てパターンテーブルに格納する（ステップＳ２８）。
【００３６】
そして、パターン特定部１０５３は、全ての割り当てパターンについて処理が完了したか判断する（ステップＳ２９）。全ての割り当てパターンについて処理が完了していなければ（ステップＳ２９：Ｎｏルート）、ステップＳ２５の処理に戻る。一方、全ての割り当てパターンについて処理が完了した場合（ステップＳ２９：Ｙｅｓルート）、ステップＳ３１の処理に移行する。なお、全ての割り当てパターンについて処理が完了すると、割り当てパターンテーブルには、図２１に示すようなデータが格納される。
【００３７】
ステップＳ３１の処理に移行して、パターン特定部１０５３は、稼働率が所定の条件を満たし且つ通信負荷の合計が最小となる割り当てパターンを特定する（ステップＳ３１）。ここで、所定の条件とは、例えば、割り当てパターンにおける紐付けサーバの稼働率が全て所定の基準値以内という条件である。なお、所定の条件を満たす割り当てパターンが１つも存在しない場合には、基準値との差が最も少ない割り当てパターンを選択する。
【００３８】
そして、パターン特定部１０５３は、キー配置格納部１０７にキー配置と最小通信負荷とが既に格納されているか判断する（ステップＳ３３）。キー配置格納部１０７にキー配置と最小通信負荷とが未だ格納されていないと判断した場合（ステップＳ３３：Ｎｏルート）、すなわち初回の処理の場合には、パターン特定部１０５３は、特定された割り当てパターンに係るキー配置をキー配置格納部１０７に格納すると共に、特定された割り当てパターンに係る通信負荷の合計を最小通信負荷としてキー配置格納部１０７に格納する（ステップＳ３５）。なお、現在の構造体のデータについてもキー配置格納部１０７に格納する。その後、端子Ｂを介して図１４に戻り、処理量計算処理を終了する。そして、元の処理に戻る。
【００３９】
一方、キー配置格納部１０７にキー配置と最小通信負荷とが既に格納されていると判断した場合（ステップＳ３３：Ｙｅｓルート）、すなわち２回目以降の処理の場合（再帰的に実行する際はこちらの場合がある）には、パターン特定部１０５３は、特定された割り当てパターンに係る通信負荷の合計とキー配置格納部１０７に格納されている最小通信負荷とを比較し、特定された割り当てパターンに係る通信負荷の合計がキー配置格納部１０７に格納されている最小通信負荷より小さいか判断する（ステップＳ３７）。特定された割り当てパターンに係る通信負荷の合計がキー配置格納部１０７に格納されている最小通信負荷以上と判断した場合（ステップＳ３７：Ｎｏルート）、端子Ｂを介して図１４に戻り、処理量計算処理を終了する。そして、元の処理に戻る。
【００４０】
一方、特定された割り当てパターンに係る通信負荷の合計がキー配置格納部１０７に格納されている最小通信負荷より小さいと判断した場合（ステップＳ３７：Ｙｅｓルート）、パターン特定部１０５３は、特定された割り当てパターンに係るキー配置と通信負荷の合計とで、キー配置格納部１０７に格納されているキー配置と最小通信負荷とを更新する（ステップＳ３９）。なお、さらに、現在の構造体のデータでキー配置格納部１０７に格納されている構造体のデータを更新する。その後、端子Ｂを介して図１４に戻り、処理量計算処理を終了する。そして、元の処理に戻る。
【００４１】
以上のような処理を実施することにより、所定の条件を満たし且つ通信負荷が最小となる割り当てパターンを特定することができる。なお、構造体中にループが形成されている場合には、ループを形成するリンクを切断したものとみなして、再帰的に処理量計算処理を実施するので、構造体中にループが形成されている場合でも、最適な割り当てパターンを特定することができる。なお、ステップＳ３において、単一のプロトコルに属する紐付けキーのノード（上の例では、Ｋｘ、Ｋｙ及びＫｚ）を削除しており、これらの紐付けキーは割り当てパターンに含まれていないが、メッセージの紐付け処理において、これらの紐付けキーを使用することはないので問題ない。
【００４２】
図１１の説明に戻って、処理量計算処理（ステップＳ５）を実施した後、キー優先度決定部１０９は、キー配置格納部１０７に格納されているデータに基づき、紐付けキーの優先度を決定し、キー優先度格納部１１１に格納する（ステップＳ７）。この処理については、例えば、図２１に示した割り当てパターンテーブルにおけるパターン１が、通信負荷が最小となる割り当てパターンとして特定された場合を例に説明する。まず、キー優先度決定部１０９は、構造体において葉ノードとみなされるノードを開始ノードとして特定する。例えば、パターン１の場合には、図２０（ａ）に示したような割り当てとなるが、図２０（ａ）では、ノード（Ｋａ）、ノード（Ｋｄ）、ノード（Ｋｆ）及びノード（Ｋｇ）が葉ノードとしてみなされる。ここでは、ノード（Ｋａ）を開始ノードとして特定したものとする。そして、キー優先度決定部１０９は、開始ノードからリンクを辿ることにより各ノードを検出する。例えば図２０（ａ）では、ノード（Ｋａ）→ノード（Ｋｂ）→ノード（Ｋｃ）→ノード（Ｋｄ）の順にノードを検出する。また、ノード（Ｋｃ）に戻って、ノード（Ｋｃ）→ノード（Ｋｅ）→ノード（Ｋｆ）の順にノードを検出する。さらに、ノード（Ｋｅ）に戻って、ノード（Ｋｅ）→ノード（Ｋｇ）の順にノードを検出する。そして、ノードを検出した順に連続する番号を当該ノードに対応する紐付けキーの優先度として付与する。従って、紐付けキーＫａの優先度（１）が最も高く、紐付けキーＫｂ、Ｋｃ、Ｋｄ、Ｋｅ、Ｋｆ及びＫｇの順に優先度（２から７まで）を付与する。なお、ノード（Ｋｃ）からノード（Ｋｄ）とノード（Ｋｅ）とが枝分かれになっているが、紐付けキーＫｄと紐付けキーＫｅとを両方含むプロトコルは存在しないため、紐付けキーＫｄと紐付けキーＫｅとに同じ優先度を付与してもよい。紐付けキーＫｆと紐付けキーＫｇについても同様である。その後、本処理を終了する。
【００４３】
以上のような処理を実施することにより、所定の条件を満たし且つ通信負荷が最小となる割り当てパターンを特定することができ、さらに紐付けキーの優先度を適切に決定することができるので、紐付け処理部１１７乃至１２１の通信負荷を抑えつつ、紐付け処理を並列化できるようになる。なお、紐付け処理部１１７乃至１２１では、キー配置格納部１０７に格納されているキー配置に従って紐付け処理を実施するようにすればよい。また、メッセージ振分部１１５では、キー配置格納部１０７に格納されているキー配置とキー優先度格納部１１１に格納されている優先度とに従ってメッセージの振分けを行うようにすればよい。
【００４４】
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、図６で示した構成については、複数のコンピュータで実現されることが前提であるが、どの構成要素をどのコンピュータに実装するかは任意である。例えば複数の紐付け処理部を１つのコンピュータで起動させるようにしても良い。なお、図６では、紐付け処理部の数が３つの例を示しているが、紐付け処理部の数は３つに限定されない。
【００４５】
また、上では、メッセージに紐付けキーが２つ含まれる場合を例に説明したが、紐付けキーが３つ以上含まれる場合もある。例えば紐付けキーが３つ含まれる場合の一例を図２２（ａ）に示す。この場合、図２２（ｂ）に示すような構造体に従って処理を実施するようにすればよい。なお、図２２（ｂ）の構造体におけるリンクＰ１は、２点を結ぶ一般的なリンクではなく、３点を結ぶ概念的なリンクを表している。すなわち、図２２（ｂ）において、ノード（Ｋａ）とノード（Ｋｂ）、ノード（Ｋｂ）とノード（Ｋｃ）、及びノード（Ｋａ）とノード（Ｋｃ）がリンクＰ１を介して接続されている。ただし、ノード（Ｋａ）、ノード（Ｋｂ）及びノード（Ｋｃ）によってループは形成されない。このように、３つ以上の紐付けキーを含む場合には、概念的なリンクを用いて構造体を表現する。このようにすれば、紐付けキーが３つ以上含まれる場合であっても対処できるようになる。
【００４６】
また、上で説明した各テーブルの構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。また、並列に実行させるようにしても良い。
【００４７】
以上本実施の形態をまとめると以下のようになる。
【００４８】
本メッセージ紐付け処理方法は、プロトコル毎に当該プロトコルに係るメッセージに含まれ且つメッセージの紐付け処理で用いられる紐付けキーを格納するキー定義データベースから各紐付けキーを抽出し、抽出した紐付けキーの各々に対応するノードと同一のプロトコルに属する紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成するステップと、複数のリンクによって構造体中にループが形成されているか判断する判断ステップと、構造体中にループが形成されていないと判断された場合、各々連携して紐付け処理を実施する複数の紐付け処理部の各々に対する紐付けキーの割り当ての組み合わせである割り当てパターンのうち、紐付け処理部間の通信負荷が最小であるという第１条件を含む所定の条件を満たすパターンを特定し、特定された割り当てパターンに係る割り当てデータをキー情報格納部に格納するパターン特定ステップとを含む。
【００４９】
このようにすれば、紐付け処理部間の通信負荷が最小となる割り当てパターンが特定されるので、紐付け処理部の通信負荷を抑えつつ、メッセージの紐付け処理を並列化できるようになる。
【００５０】
また、構造体中にループが形成されていないと判断された場合、構造体において葉ノードとみなされるノードのいずれかを開始ノードとして特定するステップと、構造体において開始ノードからリンクを辿ることによりノードを検出し、検出した順に連続する番号を当該ノードに対応する紐付けキーの優先度として付与し、優先度格納部に格納するステップとをさらに含むようにしてもよい。このようにすれば、リンク（すなわち、紐付けキーの繋がり）に沿って各紐付けキーに優先度が付与されるため、例えば複数の紐付けキーを含むメッセージを受信した場合に、優先度の高い紐付けキーに従ってメッセージを担当紐付け処理部に振分けるようにすれば、メッセージの紐付けを適切に並列処理できるようになる。
【００５１】
さらに、構造体中にループが形成されていると判断された場合、ループを形成する複数のリンクの各々について、当該リンクを切断したものとみなして、上記判断ステップ以降の処理を実施するステップをさらに含むようにしてもよい。そして、上で述べたパターン特定ステップが、キー情報格納部に割り当てデータと通信負荷とが格納されていない場合、特定された割り当てパターンに係る割り当てデータと通信負荷とをキー情報格納部に格納するステップと、キー情報格納部に割り当てデータと通信負荷とが既に格納されている場合、特定された割り当てパターンに係る通信負荷とキー情報格納部に格納されている通信負荷とを比較し、キー情報格納部に格納されている通信負荷より、特定された割り当てパターンに係る通信負荷の方が小さい場合、特定された割り当てパターンに係る割り当てデータと通信負荷とでキー情報格納部を更新するステップとを含むようにしてもよい。このようにすれば、構造体中にループが形成されている場合でも対処することができるようになる。
【００５２】
また、上で述べたパターン特定ステップが、割り当てパターン毎に、各紐付け処理部について、当該紐付け処理部における紐付けキーのノードと他の紐付け処理部における紐付けキーのノードとを結ぶリンクの数を計数し、当該リンクの数に所定の重み付け値を乗じて通信負荷を算出するステップを含むようにしてもよい。
【００５３】
さらに、上で述べた所定の条件が、紐付け処理部の稼働率に関する第２条件を含む場合もある。
【００５４】
また、上で述べたパターン特定ステップが、割り当てパターン毎に、各紐付け処理部について、通信負荷と当該紐付け処理部における紐付けキーの数とを加算して当該紐付け処理部の処理量を算出し、紐付け処理部の処理能力に対する処理量の比を稼働率として算出するステップを含むようにしてもよい。
【００５５】
さらに、紐付け処理部の稼働率に関する条件が、割り当てパターンにおける各紐付け処理部の稼働率が全て所定の基準値以内であるという条件である場合もある。これによって、例えば、ある１台の紐付け処理部に処理が集中するような割り当てパターンは通信負荷が少なくても採用されなくなり、より適切な並列処理を行うことができるようになる。
【００５６】
なお、上記装置を実現するためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。なお、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【００５７】
なお、図６で示した構成で用いられるコンピュータは、図２３に示すように、メモリ２５０１（記憶部）とＣＰＵ２５０３（処理部）とハードディスク・ドライブ（ＨＤＤ）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。ＯＳ及びＷｅｂブラウザを含むアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。必要に応じてＣＰＵ２５０３は、表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ２５０１に格納され、必要があればＨＤＤ２５０５に格納される。このようなコンピュータは、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００５８】
（付記１）
プロトコル毎に当該プロトコルに係るメッセージに含まれ且つ前記メッセージの紐付け処理で用いられる紐付けキーを格納するキー定義データベースから各前記紐付けキーを抽出し、抽出した前記紐付けキーの各々に対応するノードと同一の前記プロトコルに属する前記紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成するステップと、
複数の前記リンクによって前記構造体中にループが形成されているか判断する判断ステップと、
前記構造体中にループが形成されていないと判断された場合、各々連携して前記紐付け処理を実施する複数の紐付け処理部の各々に対する前記紐付けキーの割り当ての組み合わせである割り当てパターンのうち、前記紐付け処理部間の通信負荷が最小であるという第１条件を含む所定の条件を満たすパターンを特定し、特定された前記割り当てパターンに係る割り当てデータをキー情報格納部に格納するパターン特定ステップと、
をコンピュータに実行させるためのメッセージ紐付け処理プログラム。
【００５９】
（付記２）
前記構造体中にループが形成されていないと判断された場合、前記構造体において葉ノードとみなされる前記ノードのいずれかを開始ノードとして特定するステップと、
前記構造体において前記開始ノードから前記リンクを辿ることにより前記ノードを検出し、検出した順に連続する番号を当該ノードに対応する前記紐付けキーの優先度として付与し、優先度格納部に格納するステップと、
をさらにコンピュータに実行させるための付記１記載のメッセージ紐付け処理プログラム。
【００６０】
（付記３）
前記構造体中にループが形成されていると判断された場合、前記ループを形成する複数の前記リンクの各々について、当該リンクを切断したものとみなして、前記判断ステップ以降の処理を実施するステップ
をさらにコンピュータに実行させ、
前記パターン特定ステップが、
前記キー情報格納部に前記割り当てデータと前記通信負荷とが格納されていない場合、特定された前記割り当てパターンに係る前記割り当てデータと前記通信負荷とを前記キー情報格納部に格納するステップと、
前記キー情報格納部に前記割り当てデータと前記通信負荷とが既に格納されている場合、特定された前記割り当てパターンに係る前記通信負荷と前記キー情報格納部に格納されている前記通信負荷とを比較し、前記キー情報格納部に格納されている前記通信負荷より、特定された前記割り当てパターンに係る前記通信負荷の方が小さい場合、特定された前記割り当てパターンに係る前記割り当てデータと前記通信負荷とで前記キー情報格納部を更新するステップと、
を含む付記１又は２記載のメッセージ紐付け処理プログラム。
【００６１】
（付記４）
前記パターン特定ステップが、
前記割り当てパターン毎に、各前記紐付け処理部について、当該紐付け処理部における前記紐付けキーのノードと他の前記紐付け処理部における前記紐付けキーのノードとを結ぶ前記リンクの数を計数し、当該リンクの数に所定の重み付け値を乗じて前記通信負荷を算出するステップ
を含む付記１乃至３のいずれか１つ記載のメッセージ紐付け処理プログラム。
【００６２】
（付記５）
前記所定の条件が、前記紐付け処理部の稼働率に関する第２条件を含む
ことを特徴とする付記１乃至４のいずれか１つ記載のメッセージ紐付け処理プログラム。
【００６３】
（付記６）
前記パターン特定ステップが、
前記割り当てパターン毎に、各前記紐付け処理部について、前記通信負荷と当該紐付け処理部における前記紐付けキーの数とを加算して当該紐付け処理部の処理量を算出し、前記紐付け処理部の処理能力に対する前記処理量の比を前記稼働率として算出するステップ
を含む付記５記載のメッセージ紐付け処理プログラム。
【００６４】
（付記７）
前記第２条件が、前記割り当てパターンにおける前記紐付け処理部の稼働率が全て所定の基準値以内であるという条件である
ことを特徴とする付記５記載のメッセージ紐付け処理プログラム。
【００６５】
（付記８）
プロトコル毎に当該プロトコルに係るメッセージに含まれ且つ前記メッセージの紐付け処理で用いられる紐付けキーを格納するキー定義データベースから各前記紐付けキーを抽出し、抽出した前記紐付けキーの各々に対応するノードと同一の前記プロトコルに属する前記紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成するステップと、
複数の前記リンクによって前記構造体中にループが形成されているか判断する判断ステップと、
前記構造体中にループが形成されていないと判断された場合、各々連携して前記紐付け処理を実施する複数の紐付け処理部の各々に対する前記紐付けキーの割り当ての組み合わせである割り当てパターンのうち、前記紐付け処理部間の通信負荷が最小であるという第１条件を含む所定の条件を満たすパターンを特定し、特定された前記割り当てパターンに係る割り当てデータをキー情報格納部に格納するパターン特定ステップと、
を含み、コンピュータにより実行されるメッセージ紐付け処理方法。
【００６６】
（付記９）
プロトコル毎に当該プロトコルに係るメッセージに含まれ且つ前記メッセージの紐付け処理で用いられる紐付けキーを格納するキー定義データベースから各前記紐付けキーを抽出し、抽出した前記紐付けキーの各々に対応するノードと同一の前記プロトコルに属する前記紐付けキーのノード間を結ぶリンクとを含む構造体のデータを生成する構造体処理手段と、
複数の前記リンクによって前記構造体中にループが形成されているか判断し、前記構造体中にループが形成されていないと判断された場合、各々連携して前記紐付け処理を実施する複数の紐付け処理手段の各々に対する前記紐付けキーの割り当ての組み合わせである割り当てパターンのうち、前記紐付け処理手段間の通信負荷が最小であるという第１条件を含む所定の条件を満たすパターンを特定し、特定された前記割り当てパターンに係る割り当てデータをキー情報格納部に格納するパターン特定手段と、
を有するメッセージ紐付け処理装置。
【符号の説明】
【００６７】
１０１  サーバＤＢ    １０３  キー定義ＤＢ
１０５  キー配置最適化部    １０７  キー配置格納部
１０９  キー優先度決定部    １１１  キー優先度格納部
１１３  メッセージ受信部    １１５  メッセージ振分部
１１７，１１９，１２１  紐付け処理部
１０５１  構造体処理部    １０５３  パターン特定部
【図１】
2010102683.tif 000003
【図２】
2010102683.tif 000004
【図３】
2010102683.tif 000005
【図４】
2010102683.tif 000006
【図５】
2010102683.tif 000007
【図６】
2010102683.tif 000008
【図７】
2010102683.tif 000009
【図８】
2010102683.tif 000010
【図９】
2010102683.tif 000011
【図１０】
2010102683.tif 000012
【図１１】
2010102683.tif 000013
【図１２】
2010102683.tif 000014
【図１３】
2010102683.tif 000015
【図１４】
2010102683.tif 000016
【図１５】
2010102683.tif 000017
【図１６】
2010102683.tif 000018
【図１７】
2010102683.tif 000019
【図１８】
2010102683.tif 000020
【図１９】
2010102683.tif 000021
【図２０】
2010102683.tif 000022
【図２１】
2010102683.tif 000023
【図２２】
2010102683.tif 000024
【図２３】
2010102683.tif 000025