(57)【要約】      （修正有）【課題】複数ノードを集中的に管理及び制御する特定ノードを用いない分散処理環境において、過去の処理結果に関する情報や状態を必要とする新たな処理を効率よく実現する。【解決手段】情報送信部３１０は、オブジェクトデータ（ＯＤ）と、情報選択部３２０との接続情報と、ＯＤのデータ項目に関する情報とに基づいて特定の情報選択部３２０を選択して、ＯＤを送信する。複数の情報選択部３２０は、接続情報とＯＤのデータ項目に関する情報とに基づいて、情報送信部３１０から送信されるＯＤのうち自身が受信する可能性のあるＯＤに関係するルールを選択し、選択したルールに合致するＯＤを選択し、複数のルールと処理との組み合わせ情報を参照することにより、選択したルールに対応する処理を特定して、特定した処理、選択したルール、選択したＯＤ、及び処理手段の接続情報に基づいて、選択したＯＤの送り先となる処理手段３３０を決定する。【選択図】図１１
2012063832.tif 000002
【特許請求の範囲】
【請求項１】
情報送信手段と、その情報送信手段に接続された複数の情報選択手段と、それら情報選択手段に接続され、処理を行う複数の処理手段とを備える分散処理システムであって、
前記情報送信手段は、
オブジェクトデータと、接続されている前記複数の情報選択手段の接続情報と、該オブジェクトデータのデータ項目に関する情報とに基づいて、前記複数の情報選択手段の中から特定の情報選択手段を選択し、選択した特定の情報選択手段に該オブジェクトデータを送信し、
前記複数の情報選択手段は、
前記接続情報と、前記オブジェクトデータのデータ項目に関する情報とに基づいて、前記情報送信手段から送信されるオブジェクトデータのうち、自情報選択手段が受信する可能性のあるオブジェクトデータを選択すると共に、予め記憶されている複数のルールのうち、該選択したオブジェクトデータに関係するルールを選択する手段と、
前記選択したルールを、前記送信されるオブジェクトデータに適用することにより、該ルールに合致するオブジェクトデータを選択する手段と、
予め記憶されている前記複数のルールと処理との組み合わせ情報を参照することにより、前記選択したルールに対応する処理を特定する手段と、
前記特定した処理の識別子、前記選択したルールの識別子、前記選択したオブジェクトデータ、及び接続されている前記複数の処理手段の接続情報に基づいて、前記複数の処理手段のうち、前記選択したオブジェクトデータの送り先となる処理手段を決定する手段とを含む
ことを特徴とする分散処理システム。
【請求項２】
前記複数の情報選択手段は、
前記選択したオブジェクトデータと、前記特定した処理の識別子とを、前記送り先となる処理手段に送信する手段を更に含み、
前記複数の処理手段は、
自処理手段が実行可能な処理とその処理の識別子とを記憶する手段と、
前記選択したオブジェクトデータと、前記特定した処理の識別子とを前記送り先として受信するのに応じて、前記自処理手段が実行可能な処理の識別子に基づいて、前記特定した処理の識別子に対応する処理を自処理手段が実行可能と判断した場合に、その実行可能な処理を、前記選択したオブジェクトデータに対して実行する手段とを含む
ことを特徴とする請求項１に記載の分散処理システム。
【請求項３】
前記複数の処理手段は、
自処理手段が実行可能な処理に関して、その処理が少なくとも前回実行されたときの、処理結果及び内部状態の少なくとも何れかを記憶する手段を更に含み、
前記実行可能な処理を、前記選択したオブジェクトデータに対して実行するに際して、該実行可能な処理に関する前記処理結果及び内部状態の少なくとも何れかを参照する
ことを特徴とする請求項２に記載の分散処理システム。
【請求項４】
前記分散処理システムは、
前記情報送信手段を実行するノード、前記情報選択手段を実行するノード、及び前記手段を実行するノードによって構成されている
ことを特徴とする請求項１乃至請求項３の何れかに記載の分散処理システム。
【請求項５】
前記情報選択手段を実行するノードは、前記情報送信手段から送信されるオブジェクトデータを記憶する記憶するストレージである
ことを特徴とする請求項４に記載の分散処理システム。
【請求項６】
前記情報送信手段は、
入力データの少なくとも一部、或いはそれを加工したデータを、前記オブジェクトデータとする手段を更に含む
ことを特徴とする請求項１乃至請求項５の何れかに記載の分散処理システム。
【請求項７】
情報送信手段と、その情報送信手段に接続された複数の情報選択手段と、それら情報選択手段に接続され、処理を行う複数の処理手段とを利用した分散処理方法であって、
前記情報送信手段を用いて、
オブジェクトデータと、接続されている前記複数の情報選択手段の接続情報と、該オブジェクトデータのデータ項目に関する情報とに基づいて、前記複数の情報選択手段の中から特定の情報選択手段を選択し、選択した特定の情報選択手段に該オブジェクトデータを送信し、
前記複数の情報選択手段を用いて、
前記接続情報と、前記オブジェクトデータのデータ項目に関する情報とに基づいて、前記情報送信手段から送信されるオブジェクトデータのうち、自情報選択手段が受信する可能性のあるオブジェクトデータを選択すると共に、予め記憶した複数のルールのうち、該選択したオブジェクトデータに関係するルールを選択し、
前記選択したルールを、前記送信されるオブジェクトデータに適用することにより、該ルールに合致するオブジェクトデータを選択し、
予め記憶した前記複数のルールと処理との組み合わせ情報を参照することにより、前記選択したルールに対応する処理を特定し、
前記特定した処理の識別子、前記選択したルールの識別子、前記選択したオブジェクトデータ、及び接続されている前記複数の処理手段の接続情報に基づいて、前記複数の処理手段のうち、前記選択したオブジェクトデータの送り先となる処理手段を決定する
ことを特徴とする分散処理方法。
【請求項８】
前記複数の情報選択手段を用いて、
前記選択したオブジェクトデータと、前記特定した処理の識別子とを、前記送り先となる処理手段に送信し、
前記送り先となる処理手段を用いて、
自処理手段が実行可能な処理とその処理の識別子とを記憶しておき、
前記選択したオブジェクトデータと、前記特定した処理の識別子とを前記送り先として受信するのに応じて、前記自処理手段が実行可能な処理の識別子に基づいて、前記特定した処理の識別子に対応する処理を自処理手段が実行可能と判断した場合に、その実行可能な処理を、前記選択したオブジェクトデータに対して実行する
ことを特徴とする請求項７に記載の分散処理方法。
【請求項９】
前記複数の処理手段を用いて、
自処理手段が実行可能な処理に関して、その処理が少なくとも前回実行されたときの、処理結果及び内部状態の少なくとも何れかを記憶しておき、
前記実行可能な処理を、前記選択したオブジェクトデータに対して実行するに際して、該実行可能な処理に関する前記処理結果及び内部状態の少なくとも何れかを参照する
ことを特徴とする請求項８に記載の分散処理方法。
【請求項１０】
情報送信手段と、その情報送信手段に接続された複数の情報選択手段と、それら情報選択手段に接続され、処理を行う複数の処理手段とを備える分散処理システムの、該情報選択手段を、コンピュータによって実現するコンピュータプログラムであって、
前記情報送信手段に接続されている前記複数の情報選択手段の接続情報と、オブジェクトデータのデータ項目に関する情報とに基づいて、前記情報送信手段から送信されるオブジェクトデータのうち、自情報選択手段が受信する可能性のあるオブジェクトデータを選択すると共に、予め記憶されている複数のルールのうち、該選択したオブジェクトデータに関係するルールを選択する機能と、
前記選択したルールを、前記送信されるオブジェクトデータに適用することにより、該ルールに合致するオブジェクトデータを選択する機能と、
予め記憶されている前記複数のルールと処理との組み合わせ情報を参照することにより、前記選択したルールに対応する処理を特定する機能と、
前記特定した処理の識別子、前記選択したルールの識別子、前記選択したオブジェクトデータ、及び接続されている前記複数の処理手段の接続情報に基づいて、前記複数の処理手段のうち、前記選択したオブジェクトデータの送り先となる処理手段を決定する機能とを、コンピュータに実現させる
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理対象であるデータを複数のノードを用いて記憶し、或いは処理する分散処理の技術分野に関する。特に、本発明は、それら複数のノードを集中的に管理（制御）する特定ノードを用いない分散処理の技術分野に関する。
【背景技術】
【０００２】
所謂、分散処理システムにおいては、処理対象であるデータ（以下、「オブジェクトデータ」と称する）を、複数の記憶ノードに分散した状態で大量に記憶する。そして、係る分散処理システムは、記憶したオブジェクトデータを処理するに際して、複数の処理ノードを用いることにより、大量のオブジェクトデータを高速に処理する。ここで、記憶ノードは、ストレージなどのデータ記憶装置である。処理ノードは、クライアント、仮想マシン、サーバなどの演算環境である。
【０００３】
近年、このような分散処理システムにおいては、多数の記憶ノードが記憶したオブジェクトデータを、多数の処理ノードで処理する手法の一形態として、集中的に制御を行う固定的なノードを持たないシステム環境が提案されている。係るシステム環境では、制御のための処理が一台もしくは少数台の固定的なノードに集中することはないため、固定的なノードが正常動作するか否かに依存すること無く、多数の処理ノードによる効率的な分散処理を実現できる。
【０００４】
特許文献１及び参考文献１は、前述した如く、システム全体を集中的に制御する、固定的な特定ノードを用いること無く、多数の記憶ノードが記憶したオブジェクトデータを、多数の処理ノードによって処理する手法を提案する。
【０００５】
図１３は、本発明に関連する分散処理システムのシステム構成を例示する図である。図１２に示す分散処理システム１００は、上述した固定的な特定ノードを用いない分散処理システムを例示しており、システム全体を集中的に制御する固定的な特定ノードを持たない多数の記憶ノードが記憶したオブジェクトデータを、多数の処理ノードによって処理するシステムである。
【０００６】
即ち、分散処理システム１００は、マスターノード（記憶ノード）１０１と、複数のワーカーノード（処理ノード）１１０とを備える。マスターノード１０１は、ワーカーノード１１０に対して命令を出すノードであって、記憶しているオブジェクトデータを、データ分散処理部１０２が指定したワーカーノード１１０に分散配置する。複数のワーカーノード１１０は、マスターノード１０１から受信した命令に応じて処理を行うノードである。ワーカーノード１１０は、分散して送られてきたオブジェクトデータをデータ処理部１１１によって処理した後、処理結果をマスターノード１０１に送る。そして、マスターノード１０１は、個々のワーカーノード１１０から入手した処理結果としてのオブジェクトデータを、データ集約部１０３によって処理することにより、最終的な処理結果を得る。
【０００７】
ここで、図１３に示す分散処理システム１００において、例として、データベース（不図示）に含まれている特定の単語の数を数える処理を実行する場合について説明する。この処理では、まず、マスターノード１０１は、データベースを分割して、分割したデータベースを、データ分散処理部１０２の機能により、多数のワーカーノード１１０に分散配置する。ワーカーノード１１０は、マスターノード１０１から受信した分割状態のデータベースに含まれている特定単語の数をデータ処理部１１１の機能によって数え、その処理結果をマスターノード１０１へ返す。マスターノード１０１は、個々のワーカーノード１１０の処理結果（分割状態のデータベースに含まれる特定単語の数）を、データ集約部１０３の機能によって足し合わせる。この一連の処理により、分散処理システム１００は、係るデータベースに記憶されている特定単語の全体数を知ることができる。この処理では、ワーカーノード１１０の数が増えた場合、当該データベースの分割数をより増やすことにより、より並列的な処理が可能になるので、より高速な処理が実現できる。
【０００８】
また、上述した手法によれば、複数の独立したマスターノード１０１が存在する場合であっても、個々のマスターノードは、複数のワーカーノード１１０からなる分散処理環境を共有することができる。
【０００９】
このように、上述した手法は、マスターノード１０１が多数存在する場合であっても対応することができる。即ち、上述したシステム構成によれば、多数の記憶ノードが記憶したオブジェクトデータを、多数の処理ノードで処理することが可能になる。また、上述したシステム構成によれば、ワーカーノード１１０の数が変化した場合においても柔軟に対応することが可能である。更に、上述したシステム構成は、この柔軟な分散処理を行う際に、係る分散処理を全体的に集中管理する特定ノードを必要としない。
【００１０】
尚、本願出願に先だって存在する関連技術としては、例えば以下の特許文献がある。
【００１１】
即ち、特許文献２は、他の装置からデータ処理要求（命令）を受信した際に、自ノードが実行すべき処理であるか否かを、係る自ノード自身がハッシュ値に基づくルールマッピングを用いて判断する技術を提案する。
【００１２】
また、特許文献３は、プログラムモジュールが実行されるノードに関する配置情報を当該プログラムモジュールの外部に記述しておき、その配置情報が変更されるのに応じて、対応するネットワークノードをハッシュを用いて決定し、決定したノードにプログラムモジュールをダウンロードして実行することにより、ネットワークノードの機能を、ダウンロードしたプログラムモジュールによって動的に変更する技術を提案する。
【００１３】
また、本願出願に先だって存在する関連技術として、例えば、非特許文献２がある。非特許文献２には、複数のストレージにオブジェクトデータが分散配置された状態においてストレージが増減した際、そのストレージの増減に起因して生じる、個々のオブジェクトデータの移動を最小限に抑制しつつ再配置する技術が提案されている。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開昭５７−１４６３６１号公報
【特許文献２】特開２００４−１７９８７７号公報
【特許文献３】特開平１０−１８７４６８号公報
【非特許文献】
【００１５】
【非特許文献１】“ＭａｐＲｅｄｕｃｅ：  Ｓｉｍｐｌｉｆｉｅｄ  Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ  ｏｎ  Ｌａｒｇｅ  Ｃｌｕｓｔｅｒｓ”  Ｊｅｆｆｒｅｙ  Ｄｅａｎ  ａｎｄ  Ｓａｎｊａｙ  Ｇｈｅｍａｗａｔ
【非特許文献２】“Ｃｏｎｓｉｓｔｅｎｔ  ｈａｓｈｉｎｇ  ａｎｄ  ｒａｎｄｏｍ  ｔｒｅｅｓ：  ｄｉｓｔｒｉｂｕｔｅｄ  ｃａｃｈｉｎｇ  ｐｒｏｔｏｃｏｌｓ  ｆｏｒ  ｒｅｌｉｅｖｉｎｇ  ｈｏｔ  ｓｐｏｔｓ  ｏｎ  ｔｈｅ  Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ”，  Ｄａｖｉｄ  Ｋａｒｇｅｒ，  Ｅｒｉｃ  Ｌｅｈｍａｎ，  Ｔｏｍ  Ｌｅｉｇｈｔｏｎ，  Ｍａｔｔｈｅｗ  Ｌｅｖｉｎｅ，  Ｄａｎｉｅｌ  Ｌｅｗｉｎ，  Ｒｉｎａ  Ｐａｎｉｇｒａｈｙ，  １９９７
【発明の概要】
【発明が解決しようとする課題】
【００１６】
ところで、非特許文献１に記載された手法では、個々のオブジェクトデータを分類することなく記憶ノード（マスターノード）に記憶している。このため、係る記憶ノードには、全ての種類のオブジェクトデータが送られてくる。よって、係る記憶ノードは、全てのオブジェクトデータの種類に対するルールを実行することにより、処理を行うべきオブジェクトデータを判定しなければならず効率が悪い。この問題は、処理ノード（ワーカーノード）が多くなるほど顕著になる。
【００１７】
また、非特許文献１に記載された手法では、今回行われた処理が、次回も同じ処理ノード（ワーカーノード）で実行される保証がない。このため、以前の処理結果との関連性や継続性のある処理が必要とされる場合、係る手法では、今回処理を行う処理ノードに対して、過去に行われた処理に関する情報や状態を提供しないと、今回の処理は正確に行われない。換言すれば、係る手法において、処理ノードが実行可能な処理は限られており、特定の処理ノードにおいて過去に行われた処理に関する情報や状態を利用して新たな処理を当該特定の処理ノードで行うには、その情報や状態を改め当該特定の処理ノードに提供しなければ実現することはできない。
【００１８】
そこで、本発明は、複数ノードを集中的に管理及び制御する特定ノードを用いない分散処理環境において、過去の処理結果に関する情報や状態を必要とする新たな処理を、効率よく実現することができる分散処理システム等を提供することを主たる目的とする。
【課題を解決するための手段】
【００１９】
上記の目的を達成すべく、本発明に係る分散処理システムは、以下の構成を備えることを特徴とする。
【００２０】
即ち、情報送信手段と、その情報送信手段に接続された複数の情報選択手段と、それら情報選択手段に接続され、処理を行う複数の処理手段とを備える分散処理システムであって、
前記情報送信手段は、
オブジェクトデータと、接続されている前記複数の情報選択手段の接続情報と、該オブジェクトデータのデータ項目に関する情報とに基づいて、前記複数の情報選択手段の中から特定の情報選択手段を選択し、選択した特定の情報選択手段に該オブジェクトデータを送信し、
前記複数の情報選択手段は、
前記接続情報と、前記オブジェクトデータのデータ項目に関する情報とに基づいて、前記情報送信手段から送信されるオブジェクトデータのうち、自情報選択手段が受信する可能性のあるオブジェクトデータを選択すると共に、予め記憶されている複数のルールのうち、該選択したオブジェクトデータに関係するルールを選択する手段と、
前記選択したルールを、前記送信されるオブジェクトデータに適用することにより、該ルールに合致するオブジェクトデータを選択する手段と、
予め記憶されている前記複数のルールと処理との組み合わせ情報を参照することにより、前記選択したルールに対応する処理を特定する手段と、
前記特定した処理の識別子、前記選択したルールの識別子、前記選択したオブジェクトデータ、及び接続されている前記複数の処理手段の接続情報に基づいて、前記複数の処理手段のうち、前記選択したオブジェクトデータの送り先となる処理手段を決定する手段とを含む
ことを特徴とする。
【００２１】
また、例えば、前記複数の情報選択手段は、
前記選択したオブジェクトデータと、前記特定した処理の識別子とを、前記送り先となる処理手段に送信する手段を更に含み、
前記複数の処理手段は、
自処理手段が実行可能な処理とその処理の識別子とを記憶する手段と、
前記選択したオブジェクトデータと、前記特定した処理の識別子とを前記送り先として受信するのに応じて、前記自処理手段が実行可能な処理の識別子に基づいて、前記特定した処理の識別子に対応する処理を自処理手段が実行可能と判断した場合に、その実行可能な処理を、前記選択したオブジェクトデータに対して実行する手段とを含むとよい。
【００２２】
また、上記構成において、例えば前記複数の処理手段は、
自処理手段が実行可能な処理に関して、その処理が少なくとも前回実行されたときの、処理結果及び内部状態の少なくとも何れかを記憶する手段を更に含み、
前記実行可能な処理を、前記選択したオブジェクトデータに対して実行するに際して、該実行可能な処理に関する前記処理結果及び内部状態の少なくとも何れかを参照するとよい。
【００２３】
尚、同目的は、上記の各構成の分散処理システムに対応する分散処理方法によっても達成される。
【００２４】
また、同目的は、上記の各構成を有する分散処理システム、並びに対応する装置を、コンピュータによって実現するコンピュータ・プログラム、及びそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００２５】
上記の本発明によれば、複数ノードを集中的に管理及び制御する特定ノードを用いない分散処理環境において、過去の処理結果に関する情報や内部状態を必要とする新たな処理を、効率よく実現することができる分散処理システム等の提供が実現する。
【図面の簡単な説明】
【００２６】
【図１】本発明の模範的な第２の実施形態に係る分散処理システムの全体構成を概念的に説明する図である。
【図２】本発明の模範的な第２の実施形態に係る分散処理システムのうち、各ノードの内部構成を示すブロック図である。
【図３】第２の実施形態において記憶ノード２２０が実行する制御処理を示すフローチャートである。
【図４】第２の実施形態において処理ノード２３０が実行する制御処理を示すフローチャートである。
【図５Ａ】第２の実施形態において送信ノードが予め記憶している情報を説明する図である。
【図５Ｂ】第２の実施形態において記憶ノードが予め記憶している情報を説明する図である。
【図５Ｃ】第２の実施形態において処理ノードが予め記憶している情報を説明する図である。
【図６】ノードの識別子（ノードＩＤ）と、通信ネットワーク上におけるアドレスとがノード毎に関連付けされた接続情報を概念的に例示する図である。
【図７】図３に示すフローチャートのうち、ステップＳ３０２の詳細を示すフローチャートである。
【図８】図３に示すフローチャートのうち、ステップＳ３０３の詳細を示すフローチャートである。
【図９】図３に示すフローチャートのうち、ステップＳ３０４の詳細を示すフローチャートである。
【図１０】図４に示すフローチャートのうち、ステップＳ４０３の詳細を示すフローチャートである。
【図１１】本発明の模範的な第１の実施形態に係る分散処理システムの全体構成を概念的に説明する図である。
【図１２】本発明の模範的な実施形態及びその実施例に係る分散処理システム、或いはその分散処理システムを構成するノードを実行可能なハードウェア構成を例示的に説明する図である。
【図１３】本発明に関連する分散処理システムのシステム構成を例示する図である。
【発明を実施するための形態】
【００２７】
次に、本発明を模範的に実施する形態について図面を参照して詳細に説明する。尚、以下に説明する実施形態は、特許請求の範囲に係る発明を限定することはなく、また実施形態の中で説明されている構成の組み合わせの全てが発明の解決機能に必須であるとは限らない。
【００２８】
＜実施形態＞
図１１は、本発明の模範的な第１の実施形態に係る分散処理システムの全体構成を概念的に説明する図である。図１１に示すように、分散処理システム３００は、情報送信部３１０、その情報送信部３１０に接続された複数の情報選択部３２０、そして、それら情報選択部３２０に接続され、オブジェクトデータに対して処理を行う複数の処理部３３０を備える。
【００２９】
情報送信部３１０は、情報送信機能３１１を有する。この情報送信機能３１１は、オブジェクトデータと、接続されている複数の情報選択部３２０の接続情報と、該オブジェクトデータのデータ項目に関する情報とに基づいて、当該複数の情報選択部３２０の中から特定の情報選択部３２０を選択し、選択した特定の情報選択部３２０に該オブジェクトデータを送信する。
【００３０】
情報選択部３２０は、ルール選択機能３２１、オブジェクトデータ選択機能３２２、処理決定機能３２３、及び送り先決定機能３２４を有する。
【００３１】
即ち、ルール選択機能３２１は、情報送信部３１０に接続している複数の情報選択部３２０の接続情報と、前記オブジェクトデータのデータ項目に関する情報とに基づいて、情報送信部３１０から送信されるオブジェクトデータのうち、自ユニット（自情報選択部３２０）が受信する可能性のあるオブジェクトデータを選択する。そして、ルール選択機能３２１は、予め記憶されている複数のルールの中から、当該選択したオブジェクトデータに関係するルールを選択する。
【００３２】
オブジェクトデータ選択機能３２２は、ルール選択機能３２１によって選択したルールを、情報送信部３１０から送信されるオブジェクトデータに適用することにより、該ルールに合致するオブジェクトデータを選択する。
【００３３】
処理決定機能３２３は、予め記憶されている前記複数のルールと処理との組み合わせ情報を参照することにより、ルール選択機能３２１によって選択したルールに対応する処理を特定する。
【００３４】
そして、送り先決定機能３２４は、処理決定機能３２３によって特定した処理の識別子、ルール選択機能３２１によって選択したルールの識別子、オブジェクトデータ選択機能３２２によって選択したオブジェクトデータ、及び自ユニット（自情報選択部３２０）に接続されている複数の処理部３３０の接続情報に基づいて、それらの処理部３３０の中から、当該選択したオブジェクトデータの送り先となる処理部３３０を決定する。
【００３５】
処理部３３０は、上記特定の情報選択部３２０から受信したオブジェクトデータに、対応する処理を施す処理機能３３１を有する。
【００３６】
上述した構成を備える分散処理システム３００は、複数ノードを集中的に管理及び制御する特定ノードを用いない分散処理環境である。しかしながら、本実施形態に係る分散処理システム３００によれば、情報送信部３１０は、特定の情報選択部３２０にオブジェクトデータを送信する。そして、その特定の情報選択部３２０は、送られてくるオブジェクトデータの中からルールに基づいてオブジェクトデータを選択すると共に、選択したオブジェクトデータを実行すべき処理部３３０を決定することができる。このため、分散処理システム３００によれば、処理部が分散配置されていても、オブジェクトデータに応じて、そのオブジェクトデータを処理すべき処理部を的確に判断することができる。従って、過去の処理結果に関する情報や内部状態を必要とする新たな処理を、効率よく実現することができる
次に、上述した第１の実施形態に係る分散処理システム３００を基本とする第２の実施形態について説明する。
【００３７】
図１は、本発明の模範的な第２の実施形態に係る分散処理システムの全体構成を概念的に説明する図である。図２は、本発明の模範的な第２の実施形態に係る分散処理システムのうち、各ノードの内部構成を示すブロック図である。
【００３８】
図１及び図２に示す分散処理システム２００は、複数のオブジェクトデータ（５０）を分散配置された処理ノードにおいて処理するシステムである。但し、分散処理システム２００は、一旦記憶したオブジェクトデータをその後処理する分散処理システムではなく、送られてくるオブジェクトデータを記憶するのと並行して処理する分散処理システムである。
【００３９】
本実施形態においても、上述した背景技術と同様に、処理対象であるデータを、オブジェクトデータと称する。オブジェクトデータは、係るデータと、そのデータに固有な情報（メタデータ）とを含む。オブジェクトデータは、数値データ、或いは所定の処理（プロセス、機能、アルゴリズム）が記述されたソフトウェアプログラム（コンピュータプログラム）の少なくとも何れかを構成する。
【００４０】
図１に示すように、分散処理システム２００は、複数の送信ノード２１０、複数の記憶ノード２２０、複数の処理ノード２３０、及び複数の受信ノード２４０を備える。送信ノード２１０は、上述した情報選択部３１０に相当する機能を含む。上述した記憶ノード２２０は、情報選択部３２０に相当する機能を含む。そして処理ノード２３０は、上述した処理部３３０に相当する機能を含む。本実施形態に係る４種類の複数ノードは、互いに通信可能に接続されている。ここで、これら４種類のノードについて概説する。
【００４１】
送信ノード２１０は、外部から入力された入力データ４０に対して分類を行い、その分類によって特定した記憶ノード２２０に対して、入力データ４０のうち、処理対象となるデータセットとして、オブジェクトデータ５０を送る。即ち、本実施形態において、入力データ４０とオブジェクトデータ５０とは必ずしも一致しない。
【００４２】
記憶ノード２２０は、送信ノード２１０から送られてきたオブジェクトデータ５０を記憶すると共に、ルールに合致したオブジェクトデータのみを、そのルールに合致する処理ノード２３０に送る。ここで、ルールは、オブジェクトデータの内容及びオブジェクトデータに対して行いたい処理によって全く異なる。このため、本実施形態では、ルール自体がどのような情報であってどのような規則や規範を表すのかについては詳細な説明を省略する。
【００４３】
処理ノード２３０は、記憶ノード２２０から送られてきたオブジェクトデータに対して、そのオブジェクトデータに対応する処理を施すと共に、処理結果を受信ノード２４０に送る。処理ノード２３０にて実行される処理には、多種多用な処理が想定される。このため、本実施形態では、処理自体がどのような情報に対してどのような内容の処置を施すのかについては詳細な説明を省略する。
【００４４】
そして、受信ノード２４０は、処理ノード２３０から処理結果を受信する。本実施形態において、受信ノード２４０は、処理結果を受信できれば、その他に備えるべき機能は限定されない。例えば、受信ノード２４０は、図１３を参照して上述した分散処理システム１００におけるマスターノード１０１が備えるデータ集約部１０３の機能を有してもよい。或いは、分散処理システム２００は、例えば、受信ノード２４０を備えておらず、処理ノード２３０による処理結果を、はじめに入力データ４０を受信した送信ノード２１０に送るシステム構成であってもよい。即ち、受信ノード２４０は、説明の便宜上から設けたノードである。
【００４５】
上述したように、本実施形態では、分散処理システム２００を、説明の便宜上から、上記の如く４種類のノードによって構成した例を説明する。但し、本発明を実施する場合、図１及び図２に例示する構成には限定されず、例えば、所謂仮想マシン環境において、これらのノードの一部或いは全部の機能を実現してもよい。尚、係る分散処理システム２００を実現するハードウェア構成の例については、図１２を参照して後述する。
【００４６】
次に、主に図２以降の各図面を参照して、分散処理システム２００の詳細について説明する。
【００４７】
（送信ノード２１０）
送信ノード２１０は、記憶ノード状態記憶機能２１１、記憶ノード決定機能２１２、及び記憶データ情報記憶機能２１３を備える。
【００４８】
送信ノード２１０は、記憶ノード状態記憶機能２１１により、記憶ノード２２０の接続情報を記憶している。送信ノード２１０は、記憶データ情報記憶機能２１３により、記憶ノード２２０を決定する際に参照する、オブジェクトデータのデータ項目に関する情報（以下、「データ項目情報ＤＩＩ」と略称する場合がある）を記憶している。
【００４９】
即ち、図５Ａは、送信ノードが予め記憶している情報を説明する図である。図５Ａに示すように、記憶ノード２２０の接続情報とは、送信ノード２１０に接続されている記憶ノード２２０に関する情報である。この接続情報は、例えば分散処理システム２００を構成する各ノードがＩＰアドレスで特定される場合、図６に概念的に例示するように、ノードの識別子（ノードＩＤ）と、通信ネットワーク上におけるアドレスとがノード毎に関連付けされた情報である。一方、データ項目情報ＤＩＩは、オブジェクトデータを構成する情報項目のうち、そのオブジェクトデータを記憶すべき記憶ノード２２０を決定する際に参照するデータ項目を指定する情報である。
【００５０】
そして、記憶ノード決定機能２１２は、上記のデータ項目情報ＤＩＩと、接続情報とに基づいて、入力データ４０を参照することにより、所定のアルゴリズムを利用して、当該入力データを、オブジェクトデータ（５０）として分類することにより、そのオブジェクトデータを格納（記憶）すべき記憶ノード２２０を一意に（１つ）決定する。係る分類方法としては、オブジェクトデータを構成するところの、単数もしくは複数のデータ項目に含まれる情報を元に分類する方法などが考えられる。また、分類に使用するアルゴリズムとしては、例えば、非特許文献２に記載されているＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇなどを使用することができる。
【００５１】
送信ノード２１０において、記憶ノード決定機能２１２は、上記の如くオブジェクトデータ５０を格納すべき記憶ノード２２０を一意に（１つ）決定すると共に、決定した記憶ノード２２０に対して、当該分類されたオブジェクトデータ５０を送信する。
【００５２】
ところで、送信ノード２１０において、記憶ノード決定機能２１２による記憶ノードの決定アルゴリズムは、記憶ノード２２０が増減した際に、オブジェクトデータの記憶先を、記憶ノード２２０の増減に起因して変更された接続情報に応じて変更可能であることが求められる。また、係る決定アルゴリズムは、オブジェクトデータ、記憶データ情報記憶機能２１３によって記憶されている分類方法、そして記憶ノード状態記憶機能２１１によって記憶されている記憶ノードの接続情報に基づいて、記憶ノード２２０を一意に決定可能である必要がある。そして、係る決定アルゴリズムには、例えば、非特許文献２に記載されているＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇなどを使用することができる。但し、本実施形態に係る分散処理システム２００においては、本システムを構成している記憶ノード２２０及び処理ノード２３０の少なくとも何れかが正に動的に変化している最中には、以下に説明する動作を実現することはできず、係る動作は、各ノードに必要な各種の情報が構成変化後の各ノードに配置された後に実現することができる。
【００５３】
（記憶ノード２２０）
次に、記憶ノード２２０は、データ記憶機能２２１、ルール実行機能２２２、記憶ノード状態記憶機能２２３、実行ルール判断機能２２４、記憶データ状態記憶機能２２５、処理識別子記憶機能２２６、送り先判断機能２２７、処理ノード状態記憶機能２２８、及びルール記憶機能２２９を備える。
【００５４】
記憶ノード２２０は、データ記憶機能２２１を利用して、上述した如く送信ノード２１０から送られてきたオブジェクトデータ５０を記憶すると共に、記憶したオブジェクトデータを、ルール実行機能２２２へ送る。
【００５５】
記憶ノード２２０は、記憶ノード状態記憶機能２２３により、記憶ノード２２０の接続情報を記憶している。記憶ノード２２０は、記憶データ状態記憶機能２２５により、記憶ノード２２０を決定する際に参照するオブジェクトデータのデータ項目に関する情報（データ項目情報ＤＩＩ）を記憶している。記憶ノード２２０は、処理識別子記憶機能２２６により、ルール識別子と処理識別子との組み合わせ情報を記憶している。ここで、ルール識別子とは、記憶ノード２２０にて選択されるルールを識別（特定）する情報（識別子）である。処理識別子とは、処理ノード２３０にて実行されるべき処理を識別（特定）する情報（識別子）である。
【００５６】
記憶ノード２２０は、処理ノード状態記憶機能２２８により、処理ノード２３０の接続情報を記憶している。そして、記憶ノード２２０は、ルール記憶機能２２９により、処理ノード２３０に送るべきオブジェクトデータを決定するためのルールを保持している。係るルールは、ルールの識別子によって判別可能である。
【００５７】
即ち、図５Ｂは、記憶ノードが予め記憶している情報を説明する図である。図５Ｂに示すように、記憶ノード２２０の接続情報とは、送信ノード２１０に接続されている記憶ノード２２０に関する情報（図６）であり、送信ノード２１０が記憶ノード状態記憶機能２１１によって保持している情報と同じである。データ項目情報ＤＩＩについても、送信ノード２１０が記憶データ情報記憶機能２１３によって保持している情報と同じである。
【００５８】
本実施形態において、ルールとは、図５Ｂに定義するように、処理ノード２３０にて処理すべきオブジェクトデータを選択するためのルール（条件）であって、使用する可能性のある全てのルールが用意されている。ルールの識別子（ルール識別子、ルールＩＤ）とは、上記個々のルールに固有の識別子である。そして、ルール識別子と処理識別子との組み合わせ情報とは、ルールの識別子と、そのルールに対応する処理の処理識別子とが関連付けされた（組み合わされた）情報である。処理ノード２３０の接続情報とは、記憶ノード２２０に接続されている処理ノード２３０に関する情報であり、その実体は、上述した記憶ノード２２０の接続情報と同様に、通信ネットワーク上におけるアドレスがノード毎に関連付けされた情報（図６）である。
【００５９】
そして、実行ルール判断機能２２４は、上述したところの、記憶ノード２２０の接続情報と、データ項目情報ＤＩＩとに基づいて、所定のアルゴリズムを利用して、記憶ノード２２０に送られてくる可能性があるオブジェクトデータを選択する。そして、実行ルール判断機能２２４は、ルール記憶機能２２９によって記憶しているルールの中から、当該一意に選択したオブジェクトデータに関係するルールを選択（判断）する。そして、実行ルール判断機能２２４は、選択したルールと、そのルールのルール識別子とをルール実行機能２２２へ送る（図３及び図７を参照して後述する）。
【００６０】
ルール実行機能２２２は、実行ルール判断機能２２４によって選択されたルールを実行することにより、データ記憶機能２２１に記憶しているオブジェクトデータの中から、当該ルールに合致するオブジェクトデータを選択する（図３及び図８を参照して後述する）。このとき選択したオブジェクトデータは、処理ノード２３０に送るべきデータである。そこで、ルール実行機能２２２は、選択したオブジェクトデータと、そのオブジェクトデータを選択するときに利用したルールのルール識別子とを、送り先判断機能２２７に送る。
【００６１】
送り先判断機能２２７は、処理識別子記憶機能２２６によって保持されているルール識別子と処理識別子との組み合わせ情報の中から、ルール実行機能２２２から入手したルール識別子に対応する一意（１つ）の組み合わせ情報を選択する。次に、送り先判断機能２２７は、当該ルールによって選ばれたオブジェクトデータ、そのオブジェクトデータを選んだルールのルール識別子、処理識別子（当該一意に選択した組み合わせ情報に含まれる処理識別子）、処理ノード状態記憶機能２２８によって保持されている処理ノードの接続情報に基づいて、当該ルールによって選ばれたオブジェクトデータの処理を実行すべき処理ノード２３０を一意（１つ）に決定する。そして、送り先判断機能２２７は、当該一意に決定した処理ノード２３０（以下、「送り先処理ノード」と称する場合がある）に対して、当該選択されたオブジェクトデータと、処理識別子とを送る（図３及び図９を参照して後述する）。
【００６２】
本実施形態において、送り先判断機能２２７による処理ノード２３０（送り先処理ノード）の判断は、処理識別子と、処理ノード２３０の接続情報とが変化しない限り、常に同じ送り先処理ノードを選択する。
【００６３】
（処理ノード２３０）
処理ノード２３０は、処理記憶機能２３１、処理識別子生成機能２３２、処理識別子記憶機能２３３と、処理判断機能２３４、及びデータ処理機能２３５を備える。処理ノード２３０は、上記の如く記憶ノード２２０から受信したオブジェクトデータに対して、そのオブジェクトデータに必要な処理を施す。
【００６４】
即ち、図５Ｃは、処理ノードが予め記憶している情報を説明する図である。処理ノード２３０は、処理記憶機能２３１により、処理ノード２３０で実行される全ての処理（処理プログラム）を記憶している。更に、処理ノード２３０は、処理記憶機能２３１により、記憶している処理と関連付けて、その処理が少なくとも前回実行されたときの、処理結果を表す情報及び内部状態を表す情報を記憶することができる。即ち、処理記憶機能２３１は、係る処理の処理内容によっては、その処理が少なくとも前回実行されたときの、処理結果を表す情報及び内部状態を表す情報の少なくとも何れかを記憶している場合がある。
【００６５】
処理識別子生成機能２３２は、処理記憶機能２３１によって記憶されている処理に基づいて、その処理の処理識別子を生成する。一般に、ある処理の識別子として用いられる情報には、その処理のプログラムをハッシュした情報が採用される。そこで、本実施形態においても、係る処理識別子は、このような情報を採用することとする。処理ノード２３０は、処理識別子生成機能２３２によって生成された処理識別子を、処理識別子記憶機能２３３によって記憶している。
【００６６】
そして、処理判断機能２３４は、処理識別子記憶機能２３３によって記憶している処理識別子を参照することにより、記憶ノード２２０から受信したオブジェクトデータに付随する処理識別子とに合致する処理を、自処理ノードが実行すべき処理と判断する。そこで、処理判断機能２３４は、処理記憶機能２３１によって記憶している複数の処理の中から、当該実行すべきと判断した処理を選択し、選択した処理を、当該受信したオブジェクトデータと共にデータ処理機能２３５に送る（詳細は図４及び図１０を参照して後述する）。データ処理機能２３５は、処理判断機能２３４から入手したオブジェクトデータに対して、当該選択された処理を施す。そして、データ処理機能２３５は、処理結果を、受信ノード２４０に送信する。
【００６７】
次に、上述した記憶ノード２２０が実行する一連の処理について、図３、図７乃至図９を参照して説明する。
【００６８】
図３は、第２の実施形態において記憶ノード２２０が実行する制御処理を示すフローチャートである。図７は、図３に示すフローチャートのうち、ステップＳ３０２の詳細を示すフローチャートである。図８は、図３に示すフローチャートのうち、ステップＳ３０３の詳細を示すフローチャートである。図９は、図３に示すフローチャートのうち、ステップＳ３０４の詳細を示すフローチャートである。
【００６９】
ステップＳ３０１：記憶ノード２２０は、データ記憶機能２２１を利用して、送信ノード２１０から、分類された状態のオブジェクトデータ５０を受信し、受信したオブジェクトデータ５０を記憶すると共に、記憶したオブジェクトデータを、ルール実行機能２２２へ送る。
【００７０】
ステップＳ３０２：記憶ノード２２０は、ルール記憶機能２２９によって全てのルールを記憶している。本ステップにおいて、記憶ノード２２０は、記憶ノード２２０の接続情報と、データ項目情報ＤＩＩとに基づいて、所定のアルゴリズムを利用して、ルール記憶機能２２９によって記憶しているルールの中から、記憶ノード２２０に送られてくる可能性があるオブジェクトデータを一意に（１つ）選択する。そして、当該全てのルールの中から、当該一意に選択したオブジェクトデータに関係するルールを選択する（判断）する。ここで、ステップＳ３０２の詳細を図７を参照して説明する。
【００７１】
本実施形態において、ルール記憶機能２２９は、係る所定のアルゴリズムとして、受信情報算出アルゴリズムと、実行ルール判断アルゴリズムとを有する。受信情報算出アルゴリズム及び実行ルール判断アルゴリズムには、例えば、非特許文献２に記載されているＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇなどを使用することができる。
【００７２】
実行ルール判断機能２２４は、まず、記憶データ情報記憶機能２２５によって記憶しているデータ項目情報ＤＩＩと、記憶ノード状態記憶機能２２３によって記憶している記憶ノード２２０の接続情報とを読み込む（ステップＳ３０２１，Ｓ３０２２）。
【００７３】
そして、ルール記憶機能２２９は、ステップＳ３０２１，Ｓ３０２２にて読み込んだ情報を、係る受信情報算出アルゴリズムに入力し、該アルゴリズムを実行することにより、記憶ノード２２０（自ノード）に送られてくる情報が、その記憶ノードを記憶すべき記憶ノード２２０として決定する際に参照するオブジェクトデータのデータ項目の中に持つ、全パターンの情報を算出する（ステップＳ３０２３，Ｓ３０２４）。
【００７４】
そして、ルール記憶機能２２９は、ルール記憶機能２２９によって記憶している全てのルールの中から、ステップＳ３０２４にて求めた情報によって実行結果が変化するルールを、実行ルール判断アルゴリズムを実行することによって判断（選択）する（ステップＳ３０２５〜ステップＳ３０２７）。ステップＳ３０２７にて選択されたルールは、当該記憶ノード２２０（自ノード）において実行すべきルールである。
【００７５】
即ち、送信ノード２１０から送られてくるオブジェクトデータ５０は、送信ノード２１０が記憶ノード状態記憶機能２１１によって記憶している記憶ノード２２０の接続情報と、記憶データ情報記憶機能２１３によって記憶している分類方法によって決定した特定のデータのみである。これらの情報と同じ情報は、記憶ノード状態記憶機能２２３と、記憶データ情報記憶機能２２５とによって記憶ノード２２０においても記憶されている。このため、記憶ノード２２０は、送信ノード２１０から送られてくるオブジェクトデータ５０を判断することが可能であり、実行すべきルールを、そのオブジェクトデータが選択に影響を与える可能性があるルールに限定することができる。
【００７６】
実行ルール判断機能２２４は、選択したルールと、そのルールのルール識別子とをルール実行機能２２２へ送る。
【００７７】
ステップＳ３０３：ルール実行機能２２２は、データ記憶機能２２１によって送られてきたオブジェクトデータを、ステップＳ３０２にて選択されたルールに基づいて処理する（図８のステップＳ３０３１〜ステップＳ３０３３）。そして、ルール実行機能２２２は、処理ノード２４０で処理すべきオブジェクトデータと、そのオブジェクトデータを選んだルールのルール識別子とを、送り先判断機能２２７に送る（図８のステップＳ３０３４）。また、ルール実行機能２２２は、処理ノード状態記憶機能２２８によって記憶している処理ノード２３０の接続情報を、送り先判断機能２２７に送る。
【００７８】
ステップＳ３０４：送り先判断機能２２７は、ステップＳ３０３にて得られた処理識別子と、処理ノード２３０の接続情報とに基づいて、その処理識別子と関連付けされたルールによって選ばれたオブジェクトデータの処理が、どの処理ノード２３０（送り先処理ノード）で行われるか判定する。ここで、ステップＳ３０４の詳細を図９を参照して説明する。
【００７９】
即ち、送り先判断機能２２７は、Ｓ３０３にて得られたオブジェクトデータとルール識別子との組み合わせ情報と、処理識別子記憶機能２２６によって記憶している、ルール識別子と処理識別子との組み合わせ情報とを照合し（ステップＳ３０４１〜ステップＳ３０４３）、それら組み合わせ情報の中から、同じルール識別子を持ったオブジェクトデータと処理識別子との組み合わせを生成する（ステップＳ３０４４）。
【００８０】
そして、送り先判断機能２２７は、ステップＳ３０４４にて生成した組み合わせに含まれる処理識別子と、処理ノード状態記憶機能２２８に記憶されている処理ノード２４０の接続情報とに基づいて分散配置アルゴリズムを用いることにより（ステップＳ３０４５，ステップＳ３０４６）、当該オブジェクトデータの送り先処理ノードを決定する（ステップＳ３０４７）。係る分散配置アルゴリズムには、例えば、処理識別子と、処理ノード２４０で処理されるオブジェクトデータの送り先処理ノードの識別子のハッシュを元に、非特許文献２に記載されているＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇなどを採用することができる。
【００８１】
ステップＳ３０５：送り先判断機能２２７は、処理識別子とオブジェクトデータとを、ステップＳ３０４にて決定した送り先処理ノードに送る。
【００８２】
次に、上述した処理ノード２３０が実行する一連の処理について、図４及び図１０を参照して説明する。
【００８３】
図４は、第２の実施形態において処理ノード２３０が実行する制御処理を示すフローチャートである。図１０は、図４に示すフローチャートのうち、ステップＳ４０３の詳細を示すフローチャートである。
【００８４】
ステップＳ４０１：処理識別子生成機能２３２は、処理記憶機能２３１によって記憶されている処理に基づいて、処理を実行する処理ノード２３０を決定するために用いられる処理識別子を算出する。
【００８５】
ステップＳ４０２：処理識別子記憶機能２３３は、ステップＳ４０１にて算出した処理識別子を記憶する。
【００８６】
ステップＳ４０３：処理判断機能２３４は、記憶ノード２２０からオブジェクトデータを入手すると、処理識別子記憶機能２３３によって記憶されている処理識別子と、当該オブジェクトデータと共に記憶ノード２２０から今回入手した処理識別子とを利用して、当該記憶ノード２２０から今回入手した処理識別子に対応する処理を、自ノードにて実行すべき処理と判断する。
【００８７】
即ち、ステップＳ４０３において、処理判断機能２３４は、自ノードに今回入手したオブジェクトデータと処理識別子との組み合わせ情報と、処理識別子記憶機能２３３によって記憶している処理と処理識別子との組み合わせ情報とを照合する（図１０のステップＳ４０３１〜ステップＳ４０３３）。そして、処理判断機能２３４は、当該２種類の組み合わせ情報のうち、同じ処理識別子と組み合わされている、オブジェクトデータと処理とを新たに組み合わせて、データ処理機能２３５に送る（図１０のステップＳ４０３４）。
【００８８】
ステップＳ４０４：データ処理機能２３５は、処理判断機能２３４から入手したオブジェクトデータと処理とを組み合わせを対象として、そのオブジェクトデータに対して、当該処理を実行する。当該処理の実行に際しては、処理記憶機能２３１によって記憶されている当該処理の処理プログラムが読み出され、データ処理機能２３５にて実行される。その際、データ処理機能２３５は、当該処理プログラムと共に記憶されているところの、当該処理プログラムが少なくとも前回実行されたときの、処理結果を表す情報及び内部状態を表す情報の少なくとも何れかの情報を参照する。そして、データ処理機能２３５は、当該処理プログラムの今回の実行結果を表す情報及び内部状態を表す情報を表す情報の少なくとも何れかの情報を新たに記憶するように、処理記憶機能２３１に指示する。
【００８９】
ステップＳ４０５：データ処理機能２３５は、ステップＳ４０４にて得られた処理の実行結果を、受信ノード２４０に送る。
【００９０】
以上説明した処理を行う第２の実施形態に係る分散処理システム２００において、記憶ノード２２０にて処理識別子記憶機能２２６によって記憶している処理識別子は、処理ノード２３０にて処理識別子記憶機能２３３によって記憶している処理識別子に含まれている。そして、記憶ノード２２０にて処理ノード状態記憶機能２２８によって記憶している処理ノード２３０の接続情報は、全ての記憶ノード２２０において共有（共通）されている。また、処理ノード２３０（送り先処理ノード）を一意に判断する判断アルゴリズムは、全ての記憶ノード２２０において共有（共通）されている。このため、本実施形態に係る分散処理システム２００によれば、各ノードに必要な各種の情報にノードの増減に伴う変更が正確に反映された状況である限り、同じルールによって選ばれたオブジェクトデータであれば、何れの記憶ノード２２０においてルールによって選ばれた場合であっても、同じ送り先処理ノードにて実行することができる。
【００９１】
即ち、本実施形態によれば、全ての記憶ノード２２０において処理ノード状態記憶機能２２８によって記憶している処理ノード２３０の接続情報が同一の場合、同じ処理は、常に同じ処理ノード２３０において実行することができる。従って、本実施形態によれば、複数ノードを集中的に管理及び制御する特定ノードを用いない分散処理環境において、過去の処理情報に基づく新たな処理（即ち、過去の処理結果に関する情報や内部状態を必要とする新たな処理）を、効率よく実現することができる。
【００９２】
尚、上述した実施形態においては、説明の便宜上から、送信ノード２１０による記憶ノード２２０の選択、並びに選択された記憶ノードによる処理ノード２３０の選択に際して、何れの場合も１つのノードを選択した。しかしながら、本発明を実施する形態は１つのノードの選択には限定されない。即ち、記憶ノード２２０や処理ノード２３０が所謂ミラー構成である場合、上述した分散処理システム２００は、係るミラー構成を採る複数のノードを選択するように構成してもよい。但し、係る構成の場合には、選択されたミラー構成を採る複数のノードのうち、何れのノードが今回の動作時点におけるプライマリーノードであるかを判断可能な情報を、ノード間において共有する必要がある。
【００９３】
＜実施例＞
次に、上述した実施形態に係る分散処理システムの実施例について説明する。以下に説明する実施例では、本発明の模範的な実施形態に係る分散処理システムを、株式価格（株価情報）の値動きを解析する場合に適用する。
【００９４】
本実施例に係る分散処理システムは、複数の株式銘柄を対象として、オブジェクトデータとしての株価情報を分散して記憶ノード２２０に記憶し、選択した株式銘柄もしくは株式銘柄のグループに対して、対応する処理ノード２３０において所定の処理を行う。
【００９５】
即ち、送信ノード２１０は、入力データ４０として、各株式銘柄の価格情報をリアルタイムに受信している。送信ノード２１０は、記憶ノード状態記憶機能２１１により、記憶ノード２２０の識別子とネットワークアドレスとを記憶している。また、送信ノード２１０は、記憶データ情報記憶機能２１３により、記憶ノード２２０を決定する際に参照するオブジェクトデータのデータ項目に関する情報（データ項目情報ＤＩＩ）として、株式銘柄を記憶するカラム内の情報（銘柄名（株式銘柄の識別子など）を記憶している。記憶ノード決定機能２１２は、これらの情報に基づいて、株価情報を記憶すべき記憶ノード２２０を決定する。
【００９６】
送信ノード２１０は、まず、記憶データ情報記憶機能２１３によって記憶している、株式銘柄を記憶するカラム内の情報を元に、その情報に対応する株式銘柄の価格情報を、送信ノード２１０がリアルタイムに受信している各株式銘柄の価格情報の中から抽出する。
【００９７】
そして、送信ノード２１０は、当該抽出した株式銘柄の価格情報と、記憶ノード状態記憶機能２１１によって記憶している、記憶ノード２２０の識別子に基づいて、係るリアルタイムな価格情報（時価情報）を記憶すべき記憶ノード２２０を決定する。記憶ノード２２０の決定に際して記憶ノード決定機能２１２にて実行されるアルゴリズムには、記憶ノード２２０の識別子をハッシュした情報と、株式銘柄の価格情報をハッシュした情報とに基づいて、例えば、非特許文献２に記載されているＣｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇなどで処理するアルゴリズムが挙げられる。
【００９８】
送信ノード２１０から記憶ノード２２０に送られてくる株式価格は、それぞれの記憶ノード２２０において、送信ノード２１０の記憶ノード決定機能２１２によって決めた株式銘柄の価格情報のみである。このため、記憶ノード２２０で記憶しているオブジェクトデータから処理ノード２３０で処理するオブジェクトデータを抽出するルールを実行する際には、その記憶ノード２２０で記憶する株式銘柄が関係するルールのみを実行すればよい。
【００９９】
上述したように本実施例において、記憶データ情報記憶機能２２５は、株式銘柄を記憶するカラム内の情報を元にその株式銘柄に関する情報を提供すべき記憶ノード２２０が決定されることを認識可能である。このため、この記憶ノード２２０が価格情報を記憶する株式銘柄は、記憶ノード状態記憶機能２２３によって記憶している、オブジェクトデータを受信可能な記憶ノード２２０の識別子と、株式銘柄を記憶するカラムが記憶し得る情報とを元に、記憶ノード決定機能２１２と同様のアルゴリズムによって判断できる。
【０１００】
そして、実行ルール判断機能２２４は、ルール記憶機能２２９によって記憶している全ルールの中から、この記憶ノード２２０が価格情報を記憶している株式銘柄に関係するルールを選択し、選択したルールをルール実行機能２２２に送る。
【０１０１】
ルール実行機能２２２は、選択されたルールを、送信ノード２１０から送られてきてデータ記憶機能２２１によって記憶しているオブジェクトデータを対象として実行する。そして、ルール実行機能２２２は、処理ノード２３０に送る必要があると判断したオブジェクトデータを、そのオブジェクトデータを選んだルールの識別子と共に送り先判断機能２２７へ送る。
【０１０２】
本実施例において、ルールは、株式銘柄毎に株式価格の値動きを抽出するルール、業種毎に株式価格の値動きを抽出するルール、条件にあった株式銘柄のみについて株式価格の値動きを抽出するルールなどが考えられる。ルールによっては特定の記憶ノード２２０のみでそのルールを実行することにより、必要な全ての情報を処理ノード２３０（送り先処理ノード）へ送ることができるため、株式価格の値動きを抽出する負荷が軽減される。
【０１０３】
記憶ノード２２０において、処理識別子記憶機能２２６は、処理を識別するための処理識別子と、その処理で必要になるオブジェクトデータを集める（指定する）ために適用されるルールのルール識別子とを保存している。処理ノード状態記憶機能２２８は、記憶ノード２２０に接続されている処理ノード２３０の接続情報として、オブジェクトデータを送信可能な処理ノード２３０のノード識別子と、ネットワークアドレスとを保存している（図６参照）。
【０１０４】
送り先判断機能２２７は、処理識別子記憶機能２２６によって記憶している処理識別子、その処理識別子に対応する処理に必要なオブジェクトデータを集めるためのルールのルール識別子、そして、ルール実行機能２２２から送られてきたルール識別子とオブジェクトデータとを利用して、そのオブジェクトデータに対応する処理の処理識別子を求める。更に、送り先判断機能２２７は、求めた処理識別子、処理ノード状態記憶機能２２８によって記憶しているオブジェクトデータ、そして、送信可能な処理ノード２３０の識別子をアルゴリズムに入力し、そのオブジェクトデータの処理を実行する処理ノード２３０（送り先処理ノード）を判断する。係るアルゴリズムとしては、処理識別子とオブジェクトデータを送信可能な処理ノード２３０の識別子とをハッシュした情報を元に、非特許文献２に記載されている、Ｃｏｎｓｉｓｔｅｎｔ  Ｈａｓｈｉｎｇなどで処理するアルゴリズムが挙げられる。そして、送り先判断機能２２７は、係る処理識別子とオブジェクトデータとを、選択した処理ノード２３０（送り先処理ノード）に送る。
【０１０５】
処理ノード２３０の処理記憶機能２３１は、処理ノード２３０で実行される全ての処理を記憶している。本実施例の場合、処理識別子生成機能２３２は、処理記憶機能２３１によって記憶している株式価格の値動きに対する処理を元に、その処理を識別するための処理識別子を生成する。係る処理識別子の生成方法としては、当該処理の処理プログラムをハッシュする方法などが考えられるがこの限りではない。
【０１０６】
処理ノード２３０において処理識別子生成機能２３２が生成した処理識別子は、処理識別子記憶機能２３３によって記憶される。そして、記憶ノード２２０において処理識別子記憶機能２２６によって記憶している処理識別子は、係る処理識別子記憶機能２３３によって記憶している処理識別子に含まれる。
【０１０７】
処理ノード２３０において処理判断機能２３４は、まず、処理識別子記憶機能２３３によって記憶している処理識別子と、記憶ノード２２０から送られてきたオブジェクトデータに付随する処理識別子を用いて、自ノードが送り先処理ノードとして実行すべき処理を判断する。そして処理判断機能２３４は、係る実行すべき処理と、記憶ノード２２０から送られてきたオブジェクトデータとを、データ処理機能２３５に送る。
【０１０８】
データ処理機能２３５は、処理判断機能２３４から入手したオブジェクトデータに対して、係る実行すべき処理を行う。実行すべき処理としては、例えば、前回値と今回値との差分に基づく株式価格の増減率などの演算処理が想定される。そして、データ処理機能２３５は、当該処理の実行結果を、受信ノード２４０に送信する。
【０１０９】
本実施例において、各処理は、記憶ノード２２０がオブジェクトデータを送信可能な処理ノード２３０の接続状態に変化がない限り、必ず同じ処理ノードで継続して実行される。そのため、当該各処理は、過去の処理結果に関する情報や状態を保持することが可能であるので、過去の情報や状態を再送することなく、過去の株式価格の値動きなどの情報を元に、当該同一の処理の実行が可能になる。
【０１１０】
（ハードウェア構成例）
上述した実施形態及び実施例において図面に示した各機能は、ソフトウェアプログラムの機能単位（ソフトウェアモジュール）と捉えることができる。この場合のハードウェア環境の一例を、図１２を参照して説明する。
【０１１１】
図１２は、本発明の模範的な実施形態及びその実施例に係る分散処理システム、或いはその分散処理システムを構成するノードを実行可能なハードウェア構成を例示的に説明する図である。即ち、図１２は、図１１に示した分散処理システム３００、或いは、図１及び図２に示した分散処理システム２００の全体または一部のノードを実現可能なコンピュータの構成であって、上述した実施形態及びその実施例における各機能を実現可能なハードウェア環境を表す。
【０１１２】
図１２に示したハードウェアは、ＣＰＵ１１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１３、ハードディスク（記憶装置）１４、並びに外部装置との通信インタフェース（Ｉ／Ｆ）１５を備え、これらの構成がバス（通信線）１６を介して接続された一般的なコンピュータである。ここで、係るハードウェアが記憶ノード（ストレージ）２２０の場合、ハードディスク（ＨＤＤ）１４自体が上述した実施形態及びその実施例における記憶ノード２２０として機能する場合も想定される。
【０１１３】
そして、上述した実施形態及びその実施例を例に説明した本発明は、図１２に示したハードウェアに対して、その説明において参照したブロック構成図（図２、図１１）或いはフローチャート（図３、図４、図７乃至図１０）の機能を実現可能なコンピュータプログラムを供給した後、そのコンピュータプログラムを、当該ハードウェアのＣＰＵ１１に読み出して実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な一時記憶メモリ（１３）またはハードディスク装置（１４）等の記憶デバイスに格納すれば良い。
【０１１４】
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、ＣＤ−ＲＯＭ等の各種記録媒体を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等のように、現在では一般的な手順を採用することができる。そして、このような場合において、本発明は、係るコンピュータプログラムのコード或いは記憶媒体によって構成される。
【０１１５】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。そのような変更又は改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【符号の説明】
【０１１６】
１０  ノード
１１  ＣＰＵ
１２  ＲＡＭ
１３  ＲＯＭ
１４  ハードディスク装置（ＨＤＤ）
１５  通信インタフェース（Ｉ／Ｆ）
４０  入力データ
１００，２００，３００  分散処理システム
１０１  マスターノード
１０２  データ分散処理部
１０３  データ集約部
１１０  ワーカーノード
１１１  データ処理部
２１０  送信ノード
２１１  記憶ノード状態記憶機能
２１２  記憶ノード決定機能
２１３  記憶データ情報記憶機能
２２０  記憶ノード
２２１  データ記憶機能
２２２  ルール実行機能
２２３  記憶ノード状態記憶機能
２２４  実行ルール判断機能
２２５  記憶データ情報記憶機能
２２６  処理識別子記憶機能
２２７  送り先判断機能
２２８  処理ノード状態記憶機能
２２９  ルール記憶機能
２３０  処理ノード
２３１  処理記憶機能
２３２  処理識別子生成機能
２３３  処理識別子記憶機能
２３４  処理判断機能
２３５  データ処理機能
２４０  受信ノード
３１０  情報送信部
３１１  情報送信機能
３２０  情報選択部
３２１  ルール選択機能
３２２  オブジェクトデータ選択機能
３２３  処理決定機能
３２４  送り先決定機能
３３０  処理部
３３１  処理機能
【図１】
2012063832.tif 000003
【図２】
2012063832.tif 000004
【図３】
2012063832.tif 000005
【図４】
2012063832.tif 000006
【図５Ａ】
2012063832.tif 000007
【図５Ｂ】
2012063832.tif 000008
【図５Ｃ】
2012063832.tif 000009
【図６】
2012063832.tif 000010
【図７】
2012063832.tif 000011
【図８】
2012063832.tif 000012
【図９】
2012063832.tif 000013
【図１０】
2012063832.tif 000014
【図１１】
2012063832.tif 000015
【図１２】
2012063832.tif 000016
【図１３】
2012063832.tif 000017