(57)【特許請求の範囲】
【請求項１】
処理資源を備えた第１のノードと、
処理資源を備えてかつ処理に用いるデータを記憶した第２のノードとを含み、
前記第１のノード又は第２のノードのいずれかに、
複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、
前記プログラム毎の前記処理後のデータ量と前記処理前のデータ量との比であるデータ量比を算出するデータ量比算出部と、
前記第２のノードに記憶されたデータを入力対象としてプログラムを実行し、その処理結果を前記第１のノードにて出力する際の前記プログラムを実行するノードとして、前記データ量比と前記プログラムに設定された閾値とを比較して、前記第１のノード又は第２のノードのいずれかを選択する制御部と、
を備える処理ノード選択システム。
【請求項２】
前記データ量記憶部、前記データ量比算出部および制御部が、前記第１のノードに備えられ、
前記第１のノードにおいて、前記データ量比と所定の閾値とを比較して、前記第２のノードにデータを要求して第１のノードでプログラムを実行するか、前記第２のノードにプログラムの実行を要求するかを決定する請求項１の処理ノード選択システム。
【請求項３】
前記データ量記憶部、前記データ量比算出部および制御部が、前記第２のノードに備えられ、
前記第２のノードにおいて、前記データ量比と所定の閾値とを比較して、前記第１のノードにデータを送信してプログラムの実行を要求するか、第２のノードでプログラムを実行するか、を決定する請求項１の処理ノード選択システム。
【請求項４】
処理資源を備えてかつ処理に用いるデータを記憶した第２のノードと接続され、
複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、
前記プログラム毎の前記処理後のデータ量と前記処理前のデータ量との比であるデータ量比を算出するデータ量比算出部と、
前記第２のノードに記憶されたデータを入力対象としてプログラムを実行する際に、前記データ量比と前記プログラムに設定された閾値とを比較して、前記第２のノードに前記プログラムを実行させてその処理結果を受け取るか、前記第２のノードから前記データを受信して自装置で前記プログラムを実行するかのいずれかを決定する制御部と、
を備える情報処理ノード。
【請求項５】
処理資源を備えた第１のノードと接続され、
複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、
前記プログラム毎の前記処理後のデータ量と前記処理前のデータ量との比であるデータ量比を算出するデータ量比算出部と、
前記第１のノードから自装置に記憶するデータを入力対象とするプログラムによる処理要求を受けた際に、前記データ量比と前記プログラムに設定された閾値とを比較して、前記第１のノードに前記処理に用いるデータを送信して前記処理を実行させるか、自装置で前記処理を実行しその処理結果を前記第１のノードに送信するかのいずれかを選択する情報処理ノード。
【請求項６】
処理資源を備えた第１のノードおよび処理資源を備えてかつ処理に用いるデータを記憶した第２のノードと接続され、
複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、
前記プログラム毎の前記処理後のデータ量と前記処理前のデータ量との比であるデータ量比を算出するデータ量比算出部と、
前記データ量比とプログラムに設定された閾値とを比較して、前記第２のノードに前記プログラムを実行させて前記第１のノードがその処理結果を受け取るか、前記第１のノードが前記第２のノードから前記データを受信して前記プログラムを実行するかのいずれかを決定する制御部と、を備え、
前記第１、第２のノードに対し、前記決定結果を通知する情報処理ノード。
【請求項７】
処理資源を備えた第１のノードと、処理資源を備えてかつ特定の処理に用いるデータを記憶した第２のノードとのいずれかで処理を実行するノードを決定する処理ノード決定方法であって、
複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、
前記プログラム毎の前記処理後のデータ量と前記処理前のデータ量との比であるデータ量比を算出するデータ量比算出部と、を備えた前記第１、第２のノードを含むいずれかの情報処理ノードが、
前記プログラム毎に処理前後のデータ量の比を算出し、前記データ量比と前記プログラムに設定された閾値とを比較するステップと、
前記比較結果に基づいて、前記第１のノードに前記第２のノードに記憶されたデータを送信し前記第１のノードで前記プログラムを実行するか、第２のノードで前記プログラムを実行しその処理結果を前記第１のノードに送信するかのいずれかを選択するステップと、
を含む処理ノード決定方法。
【請求項８】
処理資源を備えた第１のノードと、処理資源を備えてかつ特定の処理に用いるデータを記憶した第２のノードとのいずれかで処理を実行する情報処理システムに含まれる、前記第１、第２のノードを含むいずれかの情報処理ノードであって、複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、を備える情報処理ノードに搭載されたコンピュータに実行させるプログラムであって、
前記プログラム毎に処理前後のデータ量の比を算出し、前記データ量比と前記プログラムに設定された閾値とを比較する処理と、
前記比較結果に基づいて、前記第１のノードに前記第２のノードに記憶されたデータを送信し前記第１のノードで前記プログラムを実行するか、第２のノードで前記プログラムを実行しその処理結果を前記第１のノードに送信するかのいずれかを選択する処理と、
を前記コンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願についての記載］
本発明は、日本国特許出願：特願２００９−１４８０４６号（２００９年６月２２日出願）の優先権主張に基づくものであり、同出願の全記載内容は引用をもって本書に組み込み記載されているものとする。
本発明は、処理ノード選択システム、情報処理ノード、処理実行方法およびプログラムに関し、特に、複数の情報処理ノード（以下、単に「処理ノード」または「ノード」とも称する。）を有し、クライアントからの処理要求を処理する処理ノードを選択する処理ノード選択システム、情報処理ノード、処理実行方法およびプログラムに関する。
【背景技術】
【０００２】
クライアント−サーバモデルにおいて、サーバに相当するシステムが複数のアプリケーションノードと複数のストレージノードより構成されている例が知られている。アプリケーションノードは、例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とメモリからなる処理実行資源を備えたノードであり、ストレージノードは、例えばハードディスクドライブからなる記憶媒体を備え、処理の実行に用いるデータを記憶しているノードである。【０００３】
このようなシステムにおける動作について図２７を用いて説明する。クライアントがネットワークを介してアプリケーションノードに処理要求Ｖ１を送信すると、アプリケーションノードはストレージノードにデータ要求Ｖ２を送信する。次に、ストレージノード２はアプリケーションノードにデータＶ３を送信し、アプリケーションノードはこのデータを用いて要求された処理の実行を行い、処理結果Ｖ４をクライアントに送信する。【０００４】
また、このようなシステムにおいて、ストレージノードに処理資源を付加したり、ストレージノードが記憶処理のために用いている処理資源を利用して、アプリケーションノードが実行していた処理の一部を、ストレージノードに委譲してストレージノードで実行する技術が知られている。例えば、非特許文献１には、データベース再編成をストレージシステムで行う技術が記載されている。【０００５】
図２８は、上記ストレージノードに処理を委譲するシステムの動作を示した図である。クライアントがアプリケーションノードに処理要求Ｗ１を送信すると、アプリケーションノードはストレージノードに処理要求Ｗ２を送信する。次に、ストレージノードはアプリケーションノードに処理結果Ｗ３を送信し、アプリケーションノードは処理結果Ｙ４をクライアントに送信する。【０００６】
ストレージノードについて言及している特許文献としては、特表２００５−５１２２３２号公報がある。同文献によると、このシステムは、上記非特許文献１のように処理の委譲を行うものではないが、システム管理サーバがネットワークストレージのアプリケーションの使用をモニターし、最適な物理的ストレージ資源に、仮想的セグメントをトランスペアレントかつ動的に再割り当てするとされている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００５−５１２２３２号公報
【非特許文献】
【０００８】
【非特許文献１】合田和生、  喜連川優、“データベース再編成機能を有するストレージシステムの構築”、信学技報、Ｖｏｌ．１０４、Ｎｏ．５３７，ｐｐ．６１−６６
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記特許文献１及び非特許文献１の全開示内容はその引用をもって本書に繰込み記載する。以下に本発明による関連技術の分析を与える。
上記した構成のシステムでは、アプリケーションノードで処理を実行する場合にもストレージノードで処理を実行する場合にも処理結果またはデータを送信する必要があるため、クライアントからの処理要求数が多くなると、上記アプリケーションノードとストレージノードとの間の内部ネットワークにおいて輻輳が生じ、処理要求に対する応答遅延が発生することがある（図１の内部ネットワーク８参照）。【００１０】
図２７と図２８を参照すると、１回の処理要求で発生する内部ネットワークにおける通信量は、図２７の場合、データ要求Ｖ２とデータＶ３のデータ量の和であり、図２８の場合処理要求Ｗ２と処理結果Ｗ３のデータ量の和となる。一般にデータ要求Ｖ２や処理要求Ｗ２のデータ量は数バイトから数１００バイト程度であるのに対し、データＶ３や処理結果Ｗ３のデータ量は数キロバイトからギガバイトを超える量となる。すなわち、内部ネットワークの通信量は、ストレージノードからアプリケーションノードへの通信であるデータＶ３もしくは処理結果Ｗ３の寄与が大きい。【００１１】
図２７のように処理実行をアプリケーションノードで行う場合と、図２８のように処理実行をストレージノードで行う場合とを比較した場合、どちらがストレージノードからアプリケーションノードへの通信量が少ないか、すなわちクライアントからの同じ処理要求に対してデータＶ４と処理結果Ｗ３のデータ量のどちらが小さいかは一意には決まらない。これは、処理の種類によって処理前後のデータ量の大小関係の特性が異なるためである。すなわち、処理前のデータ量の方が大きい場合と処理後（処理結果）のデータ量の方が大きい場合と２通りのケースがあるためである。【００１２】
例えば、データ圧縮処理においては処理前のデータ量の方が大きく、圧縮データの解凍処理においては処理後のデータ量の方が大きいことが一般的である。このため、処理前後のデータ量の大小関係の特性が異なる処理が混在するシステムにおいては、図２７の処理実行をアプリケーションノードで行う方法を採用するか、図２８の処理実行をストレージノードで行う方法のいずれを選択しても、ストレージノードからアプリケーションノードへの通信量を低減することができない状況が発生してしまうという問題点がある。【００１３】
従って、本発明の目的とするところは、２つのノードのうちの一方のノードのデータを用いていずれかのノードが処理を実行し、他方のノードを出力先とする構成において、処理内容に拘らず、所要の応答性能を確保することのできる処理ノード決定システム、情報処理ノード、処理ノード決定方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
本発明の第１の視点によれば、処理資源を備えた第１のノードと、処理資源を備えてかつ処理に用いるデータを記憶した第２のノードとを含み、前記第１のノード又は第２のノードのいずれかに、複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、前記プログラム毎の前記処理後のデータ量と前記処理前のデータ量との比であるデータ量比を算出するデータ量比算出部と、前記第２のノードに記憶されたデータを入力対象としてプログラムを実行し、その処理結果を前記第１のノードにて出力する際の前記プログラムを実行するノードとして、前記データ量比と前記プログラムに設定された閾値とを比較して、前記第１のノード又は第２のノードのいずれかを選択する制御部と、を備える処理ノード選択システムが提供される。
【００１５】
本発明の第２の視点によれば、上記した処理ノード選択システムにおいて、ノード選択処理を行う情報処理ノードが提供される。【００１６】
本発明の第３の視点によれば、処理資源を備えた第１のノードと、処理資源を備えてかつ特定の処理に用いるデータを記憶した第２のノードとのいずれかで処理を実行するノードを決定する処理ノード決定方法であって、複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、前記プログラム毎の前記処理後のデータ量と前記処理前のデータ量との比であるデータ量比を算出するデータ量比算出部と、を備えた前記第１、第２のノードを含むいずれかの情報処理ノードが、前記プログラム毎に処理前後のデータ量の比を算出し、前記データ量比と前記プログラムに設定された閾値とを比較するステップと、前記比較結果に基づいて、前記第１のノードに前記第２のノードに記憶されたデータを送信し前記第１のノードで前記プログラムを実行するか、第２のノードで前記プログラムを実行しその処理結果を前記第１のノードに送信するかのいずれかを選択するステップと、を含む処理ノード決定方法が提供される。なお、本方法は、前記処理ノードを決定する情報処理ノードという、特定の機械に結びつけられている。
【００１７】
本発明の第４の視点によれば、処理資源を備えた第１のノードと、処理資源を備えてかつ特定の処理に用いるデータを記憶した第２のノードとのいずれかで処理を実行する情報処理システムに含まれる、前記第１、第２のノードを含むいずれかの情報処理ノードであって、複数種のプログラム毎に、当該プログラムの入力対象となった処理前のデータ量と、当該プログラムにより出力された処理後のデータ量とを対応付けて記憶するデータ量記憶部と、を備える情報処理ノードに搭載されたコンピュータに実行させるプログラムであって、前記プログラム毎に処理前後のデータ量の比を算出し、前記データ量比と前記プログラムに設定された閾値とを比較する処理と、前記比較結果に基づいて、前記第１のノードに前記第２のノードに記憶されたデータを送信し前記第１のノードで前記プログラムを実行するか、第２のノードで前記プログラムを実行しその処理結果を前記第１のノードに送信するかのいずれかを選択する処理と、を前記コンピュータに実行させるプログラムが提供される。なお、このプログラムは、コンピュータが読み取り可能な記憶媒体に記録することができる。即ち、本発明は、コンピュータプログラム製品として具現することも可能である。
【発明の効果】
【００１８】
本発明によれば、２つのノードのうちの一方のノードのデータを用いていずれかのノードが処理を実行し、他方のノードを出力先とする構成において、処理前後のデータ量の大小関係が異なる特性を持つ処理によって生じ得る応答性能の低下を防止することが可能になる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１、第２の実施形態におけるシステム全体の構成を示すブロック図である。
【図２】本発明の第１の実施形態におけるアプリケーションノードの構成を示すブロック図である。
【図３】本発明の第１、第３の実施形態におけるストレージノードの構成を示すブロック図である。
【図４】本発明の第１、第３の実施形態におけるデータ情報記憶部の構造を示す図である。
【図５】本発明の第１、第３の実施形態におけるデータ量記憶部の構造を示す図である。
【図６】本発明の第１の実施形態におけるデータ量比記憶部の構造を示す図である。
【図７】本発明の第１、第３の実施形態におけるアプリケーションノードの動作を示すフローチャートである。
【図８】本発明の第１、第３の実施形態におけるストレージノードの動作を示すフローチャートである。
【図９】本発明の第１の実施形態の具体的動作を説明するための模式的な構成を表したブロック図である。
【図１０】本発明の第１の実施形態の具体的動作を説明するための図（データ情報記憶部に記憶される情報の具体例）である。
【図１１】本発明の第１の実施形態の具体的動作を説明するための図（データ量記憶部に記憶される情報の具体例）である。
【図１２】本発明の第１の実施形態の具体的動作を説明するための図（データ量記憶部に記憶される情報の具体例）である。
【図１３】本発明の第１の実施形態の具体的動作を説明するための図（データ量記憶部に記憶される情報の具体例）である。
【図１４】本発明の第１の実施形態の具体的動作を説明するための図（データ量比記憶部に記憶される情報の具体例）である。
【図１５】本発明の第１の実施形態の具体的動作を説明するための図（データ量比記憶部に記憶される情報の具体例）である。
【図１６】本発明の第１の実施形態の具体的動作を説明するための図（データ量比記憶部に記憶される情報の具体例）である。
【図１７】本発明の第２の実施形態におけるアプリケーションノードの構成を示すブロック図である。
【図１８】本発明の第２の実施形態におけるストレージノードの構成を示すブロック図である。
【図１９】本発明の第２の実施形態におけるデータ情報記憶部の構造を示す図である。
【図２０】本発明の第２の実施形態におけるデータ量記憶部の構造を示す図である。
【図２１】本発明の第２の実施形態におけるデータ量比記憶部の構造を示す図である。
【図２２】本発明の第２の実施形態におけるアプリケーションノードの動作を示すフローチャートである。
【図２３】本発明の第２の実施形態におけるストレージノードの動作を示すフローチャートである。
【図２４】本発明の第３の実施形態におけるシステム全体の構成を示すブロック図である。
【図２５】本発明の第３の実施形態におけるアプリケーションノードの構成を示すブロック図である。
【図２６】本発明の第３の実施形態におけるデータ量比記憶部の構造を示す図である。
【図２７】アプリケーションノードとストレージノードがクライアントから要求された処理を実行する動作を説明する図である。
【図２８】アプリケーションノードとストレージノードがクライアントから要求された処理を実行する動作を説明する別の図である。
【発明を実施するための形態】
【００２０】
はじめに、本発明の概要について説明する。本発明の処理ノード選択システムは、処理資源を備えた第１のノードと、処理資源を備えてかつ処理に用いるデータを記憶した第２のノードと、第１のノード、第２のノードのいずれかで実行すべき処理を、前記第１のノードまたは第２のノードのどちらに実行させるかを選択する第３のノード（第１、第２のノードいずれかであってもよい。）によって構成される。
【００２１】
前記第３のノード（第１、第２のノードいずれかであってもよい。）は、前記第１、第２のノード間でやり取りするデータ量の和が少なくなる方のノードを選択する。
【００２２】
ごく簡単には、前記処理の処理前、処理後のデータ量の比を用いて前記ノードの選択を行うことができる。つまり、先に述べたデータ圧縮処理のように、処理前のデータ量が処理後のデータ量よりも大きい場合には、データを保持している第２のノードで処理を実行した方が前記第１、第２のノード間でやり取りするデータ量の和を少なくすることができる。反対に、先に述べたデータ解凍処理のように、処理前のデータ量が処理後のデータ量よりも小さい場合には、第１のノードで処理前のデータを受け取って処理を実行した方が前記第１、第２のノード間でやり取りするデータ量の和を少なくすることができる。以上により、本発明の目的を達成することができる。
【００２３】
［第１の実施形態］
続いて、本発明の第１の実施形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施形態におけるシステム全体の構成を示すブロック図である。図１を参照すると、本発明の第１の実施形態は、複数のアプリケーションノード１と、複数のストレージノード２と、複数のクライアント３と、内部ネットワーク８と、外部ネットワーク９とから構成されている。
【００２４】
アプリケーションノード１とストレージノード２は内部ネットワーク８を介して接続されている。
【００２５】
アプリケーションノード１とクライアント３は外部ネットワーク９を介して接続されている。
【００２６】
アプリケーションノード１は、クライアント３から処理要求を受信して、ストレージノード２に対して処理要求もしくはデータ要求を行い、ストレージノード２に対して処理要求を行った場合はストレージノード２から受信した処理結果をクライアント３に送信し、ストレージノード２に対してデータ要求を行った場合は受信したデータに対して処理を実行し、処理結果をクライアント３に送信する。
【００２７】
ストレージノード２は、処理に使われるデータを格納しており、アプリケーションノード１から処理要求を受信した場合は処理を実行して処理結果をアプリケーションノード１に送信し、アプリケーションノード１からデータ要求を受信した場合はデータをアプリケーションノード１に送信する。
【００２８】
クライアント３は、アプリケーションノード１に対して処理要求を行ない、アプリケーションノード１から処理結果を受け取る。
【００２９】
内部ネットワーク８は、アプリケーションノード１とストレージノード２の間の通信経路を提供する。
【００３０】
外部ネットワーク９は、アプリケーションノード１とクライアント３の間の通信経路を提供する。
【００３１】
［アプリケーションノード１の構成］
続いて、図２および図４〜図６を用いてアプリケーションノード１の構成を詳細に説明する。
【００３２】
図２は、本実施形態のアプリケーションノード１の構成を示すブロック図である。図２を参照すると、アプリケーションノード１は、制御部１１と、処理実行部１２と、データ量比算出部１３と、記憶部１４と、システム通信部１８と、クライアント通信部１９とを含んで構成されている。
【００３３】
制御部１１は、アプリケーションノード１の全体の動作を制御する。処理実行部１２は、プログラム記憶部１４１に格納されたプログラムを読み出して実行する。この制御部１１、処理実行部１２、プログラム記憶部１４１および図示省略するメモリが処理資源として位置付けられる。
【００３４】
データ量比算出部１３は、データ量記憶部１４３に格納された処理前および処理後のデータ量から処理前後のデータ量比の平均値をプログラム毎に算出して、データ量比記憶部１４４に格納する。
【００３５】
制御部１１と、処理実行部１２と、データ量比算出部１３は、ソフトウェアまたはハードウェアにて適宜実現することができる。例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とプログラムを格納したメモリにより構成された計算機システムであってもよいし、専用の電子回路であってもよい。また、制御部１１と、処理実行部１２と、データ量比算出部１３のうち２つ以上が独立している必要は無く、例えば、物理的に同一のシステムや回路構成であってもよい。
【００３６】
記憶部１４は、プログラム記憶部１４１と、データ情報記憶部１４２と、データ量記憶部１４３と、データ量比記憶部１４４とが設けられている。記憶部１４は、例えば、ハードディスクドライブにより実現することができる。
【００３７】
プログラム記憶部１４１は、処理実行部１２が実行可能なプログラムを記憶する。プログラム記憶部１４１は複数のプログラムを記憶可能である。以降、アプリケーションノード１で処理を実行するという表現は、アプリケーションノード１の処理実行部１２で処理に対応づけられたプログラムを実行することと同義のものとして使用する。
【００３８】
データ情報記憶部１４２は、ストレージノード２に記憶されているデータに関する情報を記憶する。図４は、データ情報記憶部１４２のデータ構造を表した図である。図４の例では、データ情報記憶部１４２は、データ識別子列１４２１と、ストレージノード識別子列１４２２と、データ量列１４２３とからなる表構造となっている。データ識別子とは、全てのストレージノード２が有するデータの中から、データを特定するための識別子であり、例えば、重複しないように付けられた番号や名前である。ストレージノード識別子とは、ストレージノード２の中からひとつのストレージノード２を特定するための識別子である。ストレージノード識別子列には、同じ行のデータ識別子列１４２１のデータ識別子を有するストレージノード２のストレージノード識別子を格納する。データ量とは、データのサイズをバイト数で表したものである。データ量列１４２３には、同じ行のデータ識別子列１４２１のデータ識別子に対応するデータのデータ量を格納する。データ識別子列１４２１において、データ識別子が重複することは無い。すなわち、データ識別子を指定すると行が一意に特定される。
【００３９】
データ量記憶部１４３は、処理前のデータ量と処理後のデータ量を記憶する。図５は、データ量記憶部１４３のデータ構造を表した図である。図５の例では、データ量記憶部１４３は、プログラム名列１４３１と、処理前データ量列１４３２と、処理後データ量列１４３３とからなる表構造となっている。プログラム名とは、プログラム記憶部１４１に記憶されている複数のプログラムの中からひとつを特定するための名前である。処理前データ量とは、プログラムの入力となるデータのデータ量である。処理後データ量とは、プログラムの出力となるデータのデータ量である。例えば、データＡを圧縮処理プログラムにより圧縮し、データＢが生成された場合、処理前データ量はデータＡのデータ量であり、処理後データ量はデータＢのデータ量である。データ量記憶部１４３にはプログラムが実行されるたびに追記的に行が追加され、プログラム名列１４３１には同じプログラム名が複数回重複して記憶されうる。
【００４０】
データ量比記憶部１４４は、処理前後のデータ量の比を記憶する。図６は、データ量比記憶部１４４のデータ構造を表した図である。図６の例では、データ量比記憶部１４４は、プログラム名列１４４１と、データ量比列１４４２とからなる表構造となっている。データ量比とは、処理後データ量を処理前データ量で割った値のプログラム名毎の平均値である。データ量比が１より大きい事は、該当プログラムについて、処理前データ量よりも処理後データ量の方が大きい傾向にあることを意味する。一方、データ量比が１より小さい事は、処理前データ量よりも処理後データ量の方が小さいか傾向にあることを意味する。プログラム名列１４４１において、プログラム名が重複することは無い。すなわち、プログラム名を指定すると行、即ち、そのプログラムのデータ量比が一意に特定される。
【００４１】
システム通信部１８は、アプリケーションノード１内部と内部ネットワーク８とのインターフェイスとして機能する。
【００４２】
クライアント通信部１９は、アプリケーションノード１内部と外部ネットワーク９とのインターフェイスとして機能する。
【００４３】
［ストレージノード２の構成］
続いて、ストレージノード２の構成を詳細に説明する。図３は、本実施形態のストレージノード２の構成を示すブロック図である。図３を参照すると、ストレージノード２は、制御部２１と、処理実行部２２と、記憶部２４と、システム通信部２８とを含んで構成されている。
【００４４】
制御部２１は、ストレージノード２の全体の動作を制御する。処理実行部２２は、プログラム記憶部２４１に格納されたプログラムを読み出して実行する。この制御部２１、処理実行部２２、プログラム記憶部２４１および図示省略するメモリが処理資源として位置付けられる。
【００４５】
制御部２１と、処理実行部２２は、ソフトウェアまたはハードウェアにて適宜実現することができる。例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とプログラムを格納したメモリにより構成された計算機システムであってもよいし、専用の電子回路であってもよい。また、制御部２１と、処理実行部２２とが独立している必要は無く、例えば、物理的に同一のシステムや回路構成であってもよい。
【００４６】
記憶部２４は、プログラム記憶部２４１と、データ記憶部２４５とが設けられている。記憶部２４は、例えば、ハードディスクドライブにより実現することができる。
【００４７】
プログラム記憶部２４１は、処理実行部２２が実行可能なプログラムを記憶する。プログラム記憶部２４１は、複数のプログラムを記憶可能である。以降、ストレージノード２で処理を実行するという表現は、ストレージノード２の処理実行部２２で処理に対応づけられたプログラムを実行することと同義のものとして使用する。
【００４８】
データ記憶部２４５は、処理の入力となるデータを記憶する。
【００４９】
システム通信部２８は、ストレージノード２内部と内部ネットワーク８とのインターフェイスとして機能する。
本実施の形態では、クライアント３からの処理要求に必要なすべてのプログラムは、すべてのアプリケーションノード１のプログラム記憶部１４１と、すべてのストレージノード２のプログラム記憶部２４１にはあらかじめ同じプログラム群が記憶されているものとする。また、クライアント３からの処理要求に必要なすべてのデータは、ストレージノード２のうちのいずれかに記憶されているものとし、どのデータがどのストレージ２に記憶されているかの情報は、すべてのアプリケーションノード１のデータ情報記憶部１４２にあらかじめ記憶されているものとする。
【００５０】
［クライアント３の動作］
次に、本実施の形態のクライアント３の動作について説明する。
【００５１】
クライアント３はアプリケーションノード１のいずれか１つに対して、処理要求を送信し、処理結果を待ち受ける。処理要求にはプログラム名とデータ識別子の指定を含める。処理要求の内容や送信するタイミングは、例えば、クライアント３を操作する人間からの指示や、クライアント３の内部に設定されたスケジュールに従って行う。
【００５２】
［アプリケーションノード１の動作］
続いて、図７のフローチャートを参照して本実施形態のアプリケーションノード１の動作について説明する。
【００５３】
まず、アプリケーションノード１はクライアント３からの処理要求の受信を待ち受け（図７のステップＡ１）、クライアント３から処理要求を受信すると（ステップＡ２）、データ量比記憶部１４４のプログラム名列１４４１から、処理要求に含まれるプログラム名に一致する行を探索し、該当する行のデータ量比列１４４２に格納されたデータ量比の値が１より大きいか、１以下であるかを調べる（ステップＡ３）。
【００５４】
ステップＡ３において、処理要求にて指定されたプログラムのデータ量比が１より大きい場合、アプリケーションノード１は、ストレージノード２に対してデータ要求を送信する（ステップＡ４）。ステップＡ４においてデータ要求を送信する対象のストレージノード２は、データ情報記憶部１４２のデータ識別子列１４２１の値が処理要求に含まれるデータ識別子に一致する行のストレージノード識別子列１４２２に格納されたストレージノード識別子に該当するストレージノード２とする。また、データ要求にはクライアントから受信した処理要求に含まれるデータ識別子を含める。
【００５５】
次に、アプリケーションノード１は、ストレージノード２から、前記データ要求したデータを受信し（ステップＡ５）、受信したデータを入力として処理実行部１２にて該当プログラムを実行する（ステップＡ６）。
【００５６】
次に、アプリケーションノード１は、データ量記憶部１４３の新たな行を確保し、プログラム名列１４３１には実行したプログラム名を、処理前データ量列１４３２にはストレージノード２から受信したデータのデータ量を、処理後データ量列１４３３には処理結果のデータ量をそれぞれ格納する（ステップＡ７）。
【００５７】
ステップＡ７において、データ量記憶部１４３の記憶容量が少ないために新たな行を確保できない場合は、データ量記憶部１４３の表の行数をプログラム名毎にカウントし、最も多いプログラム名の行の最も古い行を削除し、新しい行のための記憶領域とする。また、プログラム毎に、予め決められた行数を確保しておき、古いデータ行から順次消していく構成としてもよい。
【００５８】
次に、アプリケーションノード１は、上記のように自装置側で実行した処理結果を処理要求の送信元であるクライアント３に送信する（ステップＡ８）。次に、アプリケーションノード１のデータ量比算出部１３はデータ量記憶部１４３のプログラム名列１４３１が該当プログラム名を持つすべての行について処理後データ量を処理前データ量で割った値を算出し、それらの平均値をデータ量比とする（ステップＡ９）。
【００５９】
次に、アプリケーションノード１は、データ量比記憶部１４４のプログラム名列１４４１に該当プログラム名が格納された行のデータ量比列１４４２を、算出したデータ量比の値に更新する（ステップＡ１０）。その後、アプリケーションノード１は、ステップＡ１に戻ってクライアントからの処理要求待ち受け状態に遷移する。
【００６０】
ステップＡ３において、処理要求にて指定されたプログラムのデータ量比が１以下である場合、アプリケーションノード１は、ストレージノード２に対して処理要求を送信する（ステップＡ１１）。
【００６１】
ステップＡ１１において処理要求を送信する対象のストレージノード２はデータ情報記憶部１４２のデータ識別子列１４２１の値が処理要求に含まれるデータ識別子に一致する行のストレージノード識別子列１４２２に格納されたストレージノード識別子に該当するストレージノード２とする。なお、送信する処理要求にはクライアント３から受信した処理要求に含まれるプログラム名とデータ識別子を含める。
【００６２】
次に、ストレージノード２から処理結果を受信すると（ステップＡ１２）、アプリケーションノード１は、データ量記憶部１４３の新たな行を確保し、プログラム名列１４３１には処理要求が含むプログラム名を、処理前データ量列１４３２にはデータ情報記憶部１４２のデータ識別子列１４２１の値が処理要求に含まれるデータ識別子に一致する行のデータ量列１４２３に格納された値を、処理後データ量列１４３３にはストレージノード２から受信した処理結果のデータ量をそれぞれ格納する（ステップＡ１３）。
【００６３】
なお、ステップＡ１３において、データ量記憶部１４３の記憶容量が少ないために新たな行を確保できない場合は、データ量記憶部１４３の表の行数をプログラム名毎にカウントし、最も多いプログラム名の行の最も古い行を削除し、新しい行のための記憶領域とする。また、プログラム毎に、予め決められた行数を確保しておき、古いデータ行から順次消していく構成としてもよい。
【００６４】
その後は、処理要求にて指定されたプログラムのデータ量比が１より大きい場合と同様に、クライアント３への処理結果の送信、データ量比の算出、データ量比の更新が行われる（ステップＡ８〜Ａ１０）。
【００６５】
［ストレージノード２の動作］
続いて、図８のフローチャートを参照して本実施形態のストレージノード２の動作について説明する。
【００６６】
まず、ストレージノード２はアプリケーションノード１からデータ要求もしくは処理要求のいずれかの要求を待ち受け（図８のステップＢ１）、アプリケーションノード１から要求を受信すると（ステップＢ２）、要求の内容がデータ要求であるか処理要求であるかを判別する（ステップＢ３）。
【００６７】
ステップＢ３において要求の内容がデータ要求である場合、ストレージノード２はデータ要求に含まれるデータ識別子に該当するデータをデータ記憶部２４５から読み出して、データ要求の送信元であるアプリケーションノード１に送信する（ステップＢ４）。その後、ストレージノード２はステップＢ１に戻ってアプリケーションノード１からの要求待ち受け状態に遷移する。
【００６８】
一方、ステップＢ３において要求の内容が処理要求である場合、ストレージノード２は処理要求が含むデータ識別子に該当するデータを入力として処理実行部２２にて該当プログラムを実行する（ステップＢ５）。次に、ストレージノード２は、処理要求の送信元であるアプリケーションノード１に対し処理結果を送信する（ステップＢ６）。その後、ストレージノード２はステップＢ１に戻ってアプリケーションノード１からの要求待ち受け状態に遷移する。
【００６９】
［具体例１］
次に、簡単な事例を用いて上記本発明の第１の実施形態の具体的な動作を説明する。
【００７０】
図９は、図１をさらに模式化したシステム構成図である。図９の例では、アプリケーションノード１としてアプリケーションノード１ａとアプリケーションノード１ｂの２つを有し、ストレージノード２としてストレージノード２ａとストレージノード２ｂの２つを有し、クライアント３としてクライアント３ａとクライアント３ｂの２つを有する。
【００７１】
図１０は、アプリケーションノード１ａのデータ情報記憶部１４２であるデータ情報記憶部１４２ａのデータ情報の例である。ストレージノード識別子列１４２２ａの値はストレージノード２を識別する添え字に該当するものとする。例えば、データ識別子ｄａｔａ１のデータのストレージノード識別子列１４２２の値はａである。この場合、当該データはストレージノード２ａに格納されていることになる。
【００７２】
図１１〜図１３は、アプリケーションノード１ａのデータ量記憶部１４３であるデータ量記憶部１４３ａの状態の遷移を表した図である。図１１〜図１３のｃｏｍｐｒｅｓｓは、プログラム記憶部１４１または２４１に記憶されたデータを圧縮するプログラムを示し、ｕｎｃｏｍｐｒｅｓｓは、圧縮されたデータを解凍するプログラムを示すものとする。クライアント３がプログラム名ｃｏｍｐｒｅｓｓを指定して処理要求を行った場合、アプリケーションノード１は処理結果として圧縮したデータをクライアント３に返すものとする。また、クライアント３がプログラム名ｕｎｃｏｍｐｒｅｓｓを指定して処理要求を行った場合、アプリケーションノード１は処理結果として解凍したデータをクライアント３に返すものとする。なお、開始時点ではデータ量記憶部１４３ａは図１１の状態であるものとする。図１２は、図１１の状態から、プログラムｕｎｃｏｍｐｒｅｓｓが一回実行され、ｕｎｃｏｍｐｒｅｓｓの処理前後のデータ量が追加された状態を示している。図１３は、図１２の状態から、プログラムｃｏｍｐｒｅｓｓが一回実行され、ｃｏｍｐｒｅｓｓの処理前後のデータ量が追加された状態を示している。
【００７３】
図１４〜図１６は、本実施例におけるアプリケーションノード１ａのデータ量比記憶部１４４であるデータ量比記憶部１４４ａの状態の遷移を表した図である。なお、開始時点ではデータ量比記憶部１４４ａは図１４の状態であるものとする。図１４のデータ量比列１４４２ａには、図１１のプログラムｃｏｍｐｒｅｓｓとプログラムｕｎｃｏｍｐｒｅｓｓについて、それぞれデータ量比を算出した値が記憶されている。すなわち図１４のｃｏｍｐｒｅｓｓの行には、図１１の（６，０００，０００／１０，０００，０００）＝０．６０と（４００，０００／１，０００，０００）＝０．４０と（５，０００／１０，０００）＝０．５０の平均値である０．５０が記憶されている。また図１４のｕｎｃｏｍｐｒｅｓｓの行には、図１１の（１，０００，０００／５００，０００）＝２．００と（３０，０００，０００／１０，０００，０００）＝３．００の平均値である２．５０が記憶されている。
【００７４】
図１５は、図１４の状態から、プログラムｕｎｃｏｍｐｒｅｓｓが一回実行され、図１２の処理前後のデータ量から再計算されたデータ量比記憶部１４４ａの状態を示している。図１６は、図１５の状態から、図１３の処理前後のデータ量から再計算されたデータ量比記憶部１４４ａの状態を示している。
【００７５】
以下、データ情報記憶部１４２ａ、データ量記憶部１４３ａおよびデータ量比記憶部１４４ａが、それぞれ図１０、図１１、図１４の状態にあり、クライアント３ａおよび３ｂからそれぞれ処理要求を受信した場合の動作について図７、図８を参照して説明する。
【００７６】
クライアント３ａがアプリケーションノード１ａに対してデータ識別子ｄａｔａ１、プログラム名ｕｎｃｏｍｐｒｅｓｓを指定して処理要求を行った場合、アプリケーションノード１ａはデータ量比記憶部１４４ａのプログラム名列１４４１ａがｕｎｃｏｍｐｒｅｓｓである行のデータ量比列１４４２ａの値を参照する。この場合、データ量比は２．５０であり１よりも大きいので（図７のステップＡ３）、アプリケーションノード１ａは、データ情報記憶部１４２ａのデータ識別子列１４２１ａの値がｄａｔａ１である行のストレージノード識別子列１４４２ａを参照する。この場合ストレージノード識別子がａであるので、アプリケーションノード１ａは、ストレージノード２ａに対してデータ要求を行う（図７のステップＡ４）。データｄａｔａ１を受信すると（図７のステップＡ５）、アプリケーションノード１ａは、ｄａｔａ１を入力としてｕｎｃｏｍｐｒｅｓｓ処理を行う（図７のステップＡ６）。
【００７７】
ストレージノード２ａから受信したｄａｔａ１のデータ量は１００，０００バイトであり、処理後のデータ量は４００，０００バイトであったとする。アプリケーションノード１ａはデータ量記憶部１４３ａに行を追加して、プログラム名列１４３１ａにｕｎｃｏｍｐｒｅｓｓ、処理前データ量列１４３２ａには１００，０００、処理後データ量列１４３３ａには４００，０００を記憶する（図７のステップＡ７）。
【００７８】
図１２は、この時点のデータ量記憶部１４３ａの状態を示している。次に、アプリケーションノード１ａはクライアント３ａに処理結果を送信し（図７のステップＡ８）、図１２の状態のデータ量記憶部１４３ａのプログラム名列１４３１ａの値がｕｎｃｏｍｐｒｅｓｓである行のデータ量比の平均値を算出し（図７のステップＡ９）、データ量比記憶部１４４ａのプログラム名列１４４１ａがｕｎｃｏｍｐｒｅｓｓである行のデータ量比列１４４２ａの値を更新する（図７のステップＡ１０）。図１５は、この時点のデータ量比記憶部１４４ａの状態を示している。
【００７９】
続いて、クライアント３ｂがアプリケーションノード１ａに対してデータ識別子ｄａｔａ２、プログラム名ｃｏｍｐｒｅｓｓを指定して処理要求を行った場合について説明する。
【００８０】
アプリケーションノード１ａはデータ量比記憶部１４４ａのプログラム名列１４４１ａがｃｏｍｐｒｅｓｓである行のデータ量比列１４４２ａの値を参照する。この場合、データ量比は０．５０であり１以下であるので（図７のステップＡ３）、アプリケーションノード１ａは、データ情報記憶部１４２ａのデータ識別子列１４２１ａの値がｄａｔａ２である行のストレージノード識別子列１４４２ａを参照する。この場合、ストレージノード識別子がｂであるので、アプリケーションノード１ａは、ストレージノード２ｂに対して処理要求を行う（図７のステップＡ１１）。
【００８１】
次に、ストレージノード２ｂから処理結果を受信すると（図７のステップＡ１２）、アプリケーションノード１ａは処理結果のデータのデータ量を調べる。ここでは、処理結果のデータ量は３００，０００バイトであったとする。処理前のデータであるｄａｔａ２のデータ量はデータ情報記憶部１４２ａのデータ識別子列１４２１ａがｄａｔａ２である行のデータ量列１４２３ａを参照して１，０００，０００バイトであることがわかるので、アプリケーションノード１ａは、データ量記憶部１４３ａに行を追加して、プログラム名列１４３１ａにｃｏｍｐｒｅｓｓ、処理前データ量列１４３２ａには１，０００，０００、処理後データ量列１４３３ａには３００，０００を記憶する（図７のステップＡ１３）。
【００８２】
図１３は、この時点のデータ量記憶部１４３ａの状態を示している。次に、アプリケーションノード１ａはクライアント３ａに処理結果を送信し（図７のステップＡ８）、図１３の状態のデータ量記憶部１４３ａのプログラム名列１４３１ａの値がｃｏｍｐｒｅｓｓである行のデータ量比の平均値を算出し（図７のステップＡ９）、データ量比記憶部１４４ａのプログラム名列１４４１ａがｃｏｍｐｒｅｓｓである行のデータ量比列１４４２ａの値を更新する（図７のステップＡ１０）。図１６は、この時点のデータ量比記憶部１４４ａの状態を示している。
【００８３】
これらの２つのクライアント３ａ、３ｂからの処理要求に対する処理において、ストレージノード２からアプリケーションノード１への通信量は、ｕｎｃｏｍｐｒｅｓｓ処理前データのデータ量である１００，０００バイトと、ｃｏｍｐｒｅｓｓ処理結果のデータ量である３００，０００バイトの合計である４００，０００バイトである。
【００８４】
ところで、冒頭に図２７を用いて説明したように、すべての処理要求についてアプリケーションノード１がストレージノード２にデータ要求を行った場合、ストレージノード２とアプリケーションノード１間でやりとりされるデータ量は、ｕｎｃｏｍｐｒｅｓｓ処理前データのデータ量である１００，０００バイトとｕｎｃｏｍｐｒｅｓｓ処理前データのデータ量である１，０００，０００バイトの合計である１１００，０００バイトとなる。
【００８５】
また、冒頭に図２８を用いて説明したように、すべての処理要求についてアプリケーションノード１がストレージノード２に処理要求を行った場合、ストレージノード２とアプリケーションノード１間でやりとりされるデータ量は、ｕｎｃｏｍｐｒｅｓｓ処理結果のデータ量である４００，０００バイトと、ｃｏｍｐｒｅｓｓ処理結果のデータ量である３００，０００バイトの合計である７００，０００バイトとなる。
【００８６】
以上のように、本発明によれば、ストレージノード２とアプリケーションノード１間でやり取りするデータ量を、大きく削減することができる。
【００８７】
その理由は、プログラム毎に処理前後のデータ量の履歴を記録し、処理前後のデータ量の比を算出して、データ量の比に応じて処理をアプリケーションノードで行うかストレージノードで行うかを決定する構成を採用しているためである。もちろん、上記データ量の比に代えて、アプリケーションノード１およびストレージノード２で処理を実行した場合に、両ノード間でやり取りするデータ量をそれぞれ試算し、両ノードの間を流れるデータ量の和を削減できる方のノードに処理を実行させる方法であれば、その他の方法も採用することが可能である。
【００８８】
また例えば、上記第１の実施形態では、データ量比が１より大きいか１以下であるかで判断したが、その他の値を基準に判断を行っても良い。例えば、アプリケーションノード１とストレージノード２のいずれで処理を実行するかにより、アプリケーションノード１がストレージノード２に要求を送信するために要する通信のデータ量が異なる場合はその分の補正を加えた値を用いることができる。
【００８９】
また、上記第１の実施形態では、あらかじめアプリケーションノードとストレージノードが同じプログラム群を有しているものとして説明したが、例えば、必要に応じてアプリケーションノード１からストレージノード２にプログラムを送信するような形態でもよい。この場合、処理ノードを決定するために、処理前後のデータ量比をそのまま用いるのではなく、プログラムを送信することにより発生するデータ量を加味して補正するようにしてもよい。
【００９０】
また、上記第１の実施形態では、各々のアプリケーションノード１が個別に処理前後のデータ量の記憶やデータ量比の算出を行う形態について説明したが、例えば、複数のアプリケーションノード間で処理前後のデータ量やデータ量比の情報を共有してもよい。
【００９１】
また、上記第１の実施形態では、処理が実行される毎に処理前後のデータ量の記憶やデータ量比の算出を行うものとして説明したが、例えば、数回の処理を実行する度に、処理前後のデータ量の記憶を行うようにしたり、処理前後のデータ量が一定量以上追加記憶された後にデータ量比の算出を行うようにしてもよい。
【００９２】
［第２の実施の形態］
続いて、本発明の第２の実施形態について図面を参照して詳細に説明する。
【００９３】
本実施形態の全体構成は、上記本発明の第１の実施形態と同じく図１に示す通りであり、アプリケーションノード１とストレージノード２の詳細構成を異にしている。以下、本発明の第１の実施形態と相違する部分について説明する。
【００９４】
［アプリケーションノード１の構成］
図１７は、本実施形態のアプリケーションノード１の構成を示す図である。本発明の第１の実施形態のアプリケーションノード１の構成を示す図２との相違点は、アプリケーションノード１が、データ量比算出部１３と、データ量記憶部１４３と、データ量比記憶部１４４とを有しない点である。また、本実施形態のアプリケーションノード１のデータ情報記憶部１４２は、図４に示した第１の実施形態のデータ情報記憶部１４２とデータ構造が異なっている。
【００９５】
図１９は、本発明の第２の実施形態のデータ情報記憶部１４２の構造を示す図である。図４に示した第１の実施形態のデータ情報記憶部１４２とは、データ量列１４２３を有しない点で異なっている。
【００９６】
［ストレージノード２の構成］
図１８は、本実施形態のストレージノード２の構成を示す図である。本発明の第１の実施形態のストレージノード２の構成を示す図３との相違点は、ストレージノード２が、データ量比算出部２３、データ量記憶部２４３、データ量比記憶部２４４を有する点である。
【００９７】
データ量比算出部２３は、第１の実施形態のアプリケーションノード１のデータ量比算出部１３に相当し、同様の動作を行う。
【００９８】
図２０は、本発明の第２の実施形態のデータ量記憶部２４３の構造を示す図である。図５に示した第１の実施形態のデータ量記憶部１４３と同等の構造となっている。
【００９９】
図２１は、本発明の第２の実施形態のデータ量比記憶部２４４の構造を示す図である。図６に示した第１の実施形態のデータ量比記憶部１４４と同等の構造となっている。
【０１００】
［アプリケーションノード１の動作］
続いて、次に、図２２のフローチャートを参照して本実施形態のアプリケーションノード１の動作について説明する。
【０１０１】
まず、アプリケーションノード１はクライアント３からの処理要求の受信を待ち受け（図２２のステップＣ１）、クライアント３から処理要求を受信すると（ステップＣ２）、ストレージノード２に対して処理要求を送信する（ステップＣ３）。
【０１０２】
ステップＣ３において処理要求を送信する対象となるストレージノード２は、データ情報記憶部１４２のデータ識別子列１４２１の値が処理要求に含まれるデータ識別子に一致する行のストレージノード識別子列１４２２に格納されたストレージノード識別子に該当するストレージノード２とする。なお、送信する処理要求にはクライアント３から受信した処理要求に指定されたプログラム名とデータ識別子とを含める。
【０１０３】
次に、ストレージノード２からの返信を受信すると（ステップＣ４）、アプリケーションノード１は、返信内容がデータであるか、処理結果であるかを判別する（ステップＣ５）。ステップＣ５において返信内容がデータである場合、アプリケーションノード１は、受信したデータを入力として処理実行部１２にて該当プログラムを実行し（ステップＣ６）、処理結果のデータ量を、データを返信したストレージノード２に送信する（ステップＣ７）。次に、アプリケーションノード１は、処理結果を処理要求の送信元であるクライアント３に送信する（ステップＣ８）。その後、アプリケーションノード１は、ステップＣ１に戻ってクライアントからの処理要求待ち受け状態に遷移する。
【０１０４】
一方、ステップＣ５において、返信内容が処理結果である場合、アプリケーションノード１は、処理結果を処理要求の送信元であるクライアント３に送信する（ステップＣ８）。その後、アプリケーションノード１は、ステップＣ１に戻ってクライアントからの処理要求待ち受け状態に遷移する。
【０１０５】
［ストレージノード２の動作］
続いて、図２３のフローチャートを参照して本実施形態のストレージノード２の動作について説明する。
【０１０６】
まず、ストレージノード２はアプリケーションノード１から処理要求を待ち受け（図２３のステップＤ１）、アプリケーションノード１から処理要求を受信すると（ステップＤ２）、データ量比記憶部２４４のプログラム名列２４４１から、処理要求に含まれるプログラム名に一致する行を探索し、該当する行のデータ量比列２４４２に格納されたデータ量比の値が１より大きいか、１以下であるかを調べる（ステップＤ３）。
【０１０７】
ステップＤ３においてデータ量比が１より大きい場合、ストレージノード２は、データ要求に含まれるデータ識別子に該当するデータをデータ記憶部２４５から読み出して、データおよびデータであることを示す情報を、処理要求の送信元であるアプリケーションサーバ１に送信し（ステップＤ４）、アプリケーションサーバ１から処理後データ量を受信するのを待つ。
【０１０８】
アプリケーションサーバ１から処理後データ量を受信すると（ステップＤ５）、ストレージノード２は、データ量記憶部２４３の新たな行を確保し、プログラム名列２４３１には処理要求が含むプログラム名を、処理前データ量列２４３２にはステップＤ４にてアプリケーションサーバ１に送信したデータのデータ量を、処理後データ量列２４３３にはステップＤ５においてアプリケーションサーバ１から受信した処理後データ量をそれぞれ格納する（ステップＤ６）。次に、データ量比算出部２３はデータ量記憶部２４３のプログラム名列２４３１が該当プログラム名を持つすべての行について処理後データ量を処理前データ量で割った値を算出し、それらの平均値をデータ量比とする（ステップＤ７）。次に、ストレージノード２は、データ量比記憶部２４４のプログラム名列２４４１に該当プログラム名が格納された行のデータ量比列２４４２を、算出したデータ量比の値に更新する（ステップＤ８）。その後、ストレージノード２は、ステップＤ１に戻ってアプリケーションノード１からの処理要求待ち受け状態に遷移する。
【０１０９】
一方、ステップＤ３においてデータ量比が１以下の場合、ストレージノード２は、処理要求に含まれるデータ識別子に該当するデータを入力として処理実行部２２にて該当プログラムを実行し（ステップＤ９）、処理結果および処理結果であることを示す情報を処理要求の送信元であるアプリケーションサーバ１に送信する（ステップＤ１０）。
【０１１０】
次に、ストレージノード２は、データ量記憶部２４３の新たな行を確保し、プログラム名列２４３１には処理要求が含むプログラム名を、処理前データ量列２４３２にはステップＤ９にて処理実行の入力としたデータのデータ量を、処理後データ量列１４３３にはステップＤ９における処理結果のデータのデータ量をそれぞれ格納する（ステップＤ１１）。その後、ストレージノード２は、先のデータ量比が１より大きい場合と同様に、ステップＤ７以降の処理を行う。
【０１１１】
なお、ステップＤ６もしくはステップＤ１１において、データ量記憶部２４３の記憶容量が少ないために新たな行を確保できない場合は、データ量記憶部２４３の表の行数をプログラム名毎にカウントし、最も多いプログラム名の行の最も古い行を削除し、新しい行のための記憶領域とする。また、プログラム毎に、予め決められた行数を確保しておき、古いデータ行から順次消していく構成としてもよい。
【０１１２】
以上のように、ストレージノード側に処理ノードを選択する処理を行わせる構成でも、第１の実施形態と同様に、アプリケーションノード１とストレージノード２の間でやりとりするデータ量を低減することができる。その理由は、上記第１の実施形態と同様に、プログラム毎に処理前後のデータ量の履歴を記録し、処理前後のデータ量の比を算出して、データ量の比に応じて処理をアプリケーションノードで行うかストレージノードで行うかを決定するよう構成したためである。
【０１１３】
なお、本実施形態では、アプリケーションノード１で処理を行った場合に、アプリケーションノードからストレージノードへ処理結果のデータ量を送信する通信が加わるが、この通信量は数バイトから数１００バイト程度で実現可能であるので、処理前後のデータ量の差が数キロバイトを越えるシステムにおいては、影響は極めて軽微であり、両ノード間でやり取りするデータ量の総量を削減することが可能である。
【０１１４】
［第３の実施形態］
次に、上記第１の実施形態に変更を加えた本発明の第３の実施形態について図面を参照して説明する。
【０１１５】
図２４は、本実施形態のシステム全体の構成を示す図である。図２４を参照すると、本実施形態は、図１の第１の実施形態の構成に、コンソール４を追加した点で異なっている。
【０１１６】
コンソール４は、アプリケーションノード１の内部状態を表示したり、オペレータ（操作者）がアプリケーションノード１の設定変更を行ったりするためのインターフェイス装置である。
【０１１７】
［アプリケーションノード１の構成］
図２５は、本実施形態のアプリケーションノード１の構成を示す図である。図２に示した第１の実施形態のアプリケーションノード１とは、コンソール通信部１７を有する点と、データ量比記憶部１４４の構造において異なっている。
【０１１８】
コンソール通信部１７は、アプリケーションノード１内部とコンソール４とのインターフェイスとして機能する。
【０１１９】
図２６は、本実施形態のデータ量比記憶部１４４の構造を示す図である。図６に示した第１の実施形態のデータ量比記憶部１４４との相違点は、閾値列１４４３を有する点である。ここで、閾値とは、データ量比と比較して、処理実行をアプリケーションノード１で行うかストレージノード２で行うかを判別するための基準値である。
【０１２０】
閾値は０以上の数値であり、値が大きいほど処理実行がストレージノード２で行われやすくなる。また、閾値は数値のみではなく、処理実行を強制的にアプリケーションノード１で行う、もしくは処理実行を強制的にストレージノード２で行うような識別記号を設定できるようにしてもよい。閾値を用いた具体的なノードの選択方法については後述する。
【０１２１】
［コンソール４の動作｝
コンソール４は、オペレータ（操作者）の操作に応じて、アプリケーションノード１に閾値設定要求を行う。閾値設定要求にはプログラム名と閾値を含める。オペレータ（操作者）は、必ずしも閾値を数値で指定しなくてもよい。例えば、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）のトラックバーやプルダウンメニューによる指定を行い、コンソール４内で数値に変換して閾値として扱うようにしてもよい。
【０１２２】
［アプリケーションノード１の動作］
アプリケーション１は、コンソール４から閾値設定要求を受信すると、データ量比記憶部１４４のプログラム名列１４４１の値が閾値設定要求に含まれるプログラム名に一致する行の閾値列１４４３に、閾値設定要求に含まれる閾値を記憶する。
【０１２３】
アプリケーションノード１のその他の動作は、第１の実施形態の動作を表した図７のステップＡ３を除いて同一であるので、以下、図７を用いて説明する。
【０１２４】
図７のステップＡ３では、データ量比が１より大きいか１以下であるかで判断したが、本実施形態においては、該当プログラムの閾値列１４４３に値が設定されている場合は、設定されている閾値を決定基準とする。すなわち、データ量比が閾値より大きい場合、もしくは強制的にアプリケーションノード１で処理実行を行う設定であった場合は、ストレージノード２に対してデータ要求を送信してアプリケーションノード１で処理実行を行う。また、データ量比が閾値より小さい場合、もしくは強制的にストレージノード２で処理実行を行う設定であった場合は、ストレージノード２に対して処理要求を送信する。
【０１２５】
以上のように、本実施形態では、第１の実施の形態の効果に加え、処理内容毎にアプリケーションノード１で処理を行うかストレージノード２で処理を行うかの基準を変えることができる。これは、例えばアプリケーションノード１の処理実行部がストレージノードの処理実行部に比べて、特定の処理Ｐについて高速な処理ができるような構成であった場合、処理Ｐを行うプログラムはアプリケーションノードでのみ行うようにするといったことが可能である。
【０１２６】
なお、上記発明の第３の実施形態にて追加されたプログラム毎に処理実行ノードの判断基準を設定できる機能は、第２の実施形態に付加することも可能である。
【０１２７】
以上、本発明の実施形態を説明したが、本発明は、上記した実施形態に限定されるものではなく、本発明の基本的技術的思想を逸脱しない範囲で、更なる変形・置換・調整を加えることができる。
【０１２８】
上記第１の実施の形態および第３の実施の形態ではアプリケーションノードが処理前後のデータ量の記憶およびデータ量比の算出および処理ノードの決定を行う形態、第２の実施の形態ではストレージノードが処理前後のデータ量の記憶およびデータ量比の算出および処理ノードの決定を行う形態について説明したが、本発明はこの形態のみに限定されるものではない。
【０１２９】
例えば、処理前後のデータ量の記憶およびデータ量比の算出および処理ノードの決定を行う専用のノード（第３のノード）を設置して、アプリケーションノードやストレージノードが専用ノードと通信を行い同等の処理を行うようにしてもよい。この場合、アプリケーションノードやストレージノードと専用ノードとの間の通信が発生するが、この通信量は数バイトから数１００バイト程度で実現可能であるので、処理前後のデータ量の差が数キロバイトを越えるシステムにおける通信量の総量を削減できる点において変わりはない。
【０１３０】
また、第１の実施の形態から第３の実施の形態では、クライアントとアプリケーションノードとストレージノードの３階層によるシステムについて説明したが、本発明はこの構成に限定されない。本発明は、処理を実行可能な資源を有する２つのノードにおいて片方が処理データを有するようなシステムにおいて、いずれのノードで処理を実行するかを決定するようなシステム一般に対して適用することができる。例えば、携帯端末とサーバ間で、サーバがデータを持つ場合、携帯端末とサーバのいずれにおいて処理を実行するかを決定するようなシステムにも適用することが可能である。
【産業上の利用可能性】
【０１３１】
本発明によれば、分散コンピューティングといった用途に適用できる。また、携帯端末とサーバ間での分散処理といった用途にも適用可能である。
なお、上記の特許文献の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１３２】
１、１ａ、１ｂ        アプリケーションノード
１１      制御部
１２      処理実行部
１３      データ量比算出部
１４      記憶部
１４１    プログラム記憶部
１４２、１４２ａ      データ情報記憶部
１４２１、１４２１ａ  データ識別子列
１４２２、１４２２ａ  ストレージノード識別子列
１４２３，１４２３ａ  データ量列
１４３、１４３ａ      データ量記憶部
１４３１、１４３１ａ  プログラム名列
１４３２、１４３２ａ  処理前データ量列
１４３３、１４３３ａ  処理後データ量列
１４４、１４４ａ      データ量比記憶部
１４４１、１４４１ａ  プログラム名列
１４４２、１４４２ａ  データ量比列
１４４３              閾値列
１７      コンソール通信部
１８      システム通信部
１９      クライアント通信部
２、２ａ、２ｂ        ストレージノード
２１      制御部
２２      処理実行部
２３      データ量比算出部
２４      記憶部
２４１    プログラム記憶部
２４３    データ量記憶部
２４３１  プログラム名列
２４３２  処理前データ量列
２４３３  処理後データ量列
２４４    データ量比記憶部
２４４１  プログラム名列
２４４２  データ量比列
２４５    データ記憶部
２８      システム通信部
３、３ａ、３ｂ  クライアント
４  コンソール
８  内部ネットワーク
９  外部ネットワーク
Ａ１〜Ａ１３、Ｂ１〜Ｂ６、Ｃ１〜Ｃ８、Ｄ１〜Ｄ１１  処理ステップ
Ｖ１〜Ｖ４、Ｗ１〜Ｗ４  通信
【図１】
0005565412.tif 000002
【図２】
0005565412.tif 000003
【図３】
0005565412.tif 000004
【図４】
0005565412.tif 000005
【図５】
0005565412.tif 000006
【図６】
0005565412.tif 000007
【図７】
0005565412.tif 000008
【図８】
0005565412.tif 000009
【図９】
0005565412.tif 000010
【図１０】
0005565412.tif 000011
【図１１】
0005565412.tif 000012
【図１２】
0005565412.tif 000013
【図１３】
0005565412.tif 000014
【図１４】
0005565412.tif 000015
【図１５】
0005565412.tif 000016
【図１６】
0005565412.tif 000017
【図１７】
0005565412.tif 000018
【図１８】
0005565412.tif 000019
【図１９】
0005565412.tif 000020
【図２０】
0005565412.tif 000021
【図２１】
0005565412.tif 000022
【図２２】
0005565412.tif 000023
【図２３】
0005565412.tif 000024
【図２４】
0005565412.tif 000025
【図２５】
0005565412.tif 000026
【図２６】
0005565412.tif 000027
【図２７】
0005565412.tif 000028
【図２８】
0005565412.tif 000029