(57)【要約】【課題】ネットワークを構成する各ノードがデータの転送先の判定に用いる情報に関するメモリ消費量と計算コストとの偏りを平準化させること。【解決手段】データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置は、複数のノードのそれぞれについて、データ種別ごとに当該ノードによる転送回数を記憶した記憶部と、前記ノードごとに、当該ノードに関して前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、転送先の判定のための計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する。【選択図】図３
2015228611.tif 000002
【特許請求の範囲】
【請求項１】
データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置であって、
複数のノードのそれぞれについて、データ種別ごとに当該ノードによる転送回数を記憶した記憶部と、
前記ノードごとに、当該ノードに関して前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、転送先の判定のための計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する、
ことを特徴とする情報生成装置。
【請求項２】
前記第一の転送先情報は、データ種別ごとに、転送先のノードを示す値を含むエントリを有し、
前記第二の転送先情報は、転送先のノードごとに、当該ノードを転送先とする１以上の種別のそれぞれのハッシュ値に基づく値が合成されたエントリを含む、
ことを特徴とする請求項１記載の情報生成装置。
【請求項３】
前記複数のノードのそれぞれから、データ種別ごとの当該ノードによる転送回数を受信する受信部を有し、
前記記憶部は、前記受信部によって受信される転送回数を記憶する、
ことを特徴とする請求項１又は２記載の情報生成装置。
【請求項４】
データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置であって、
データ種別ごとに、転送先の変更回数を記憶する記憶部と、
前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、生成に要される計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する、
ことを特徴とする情報生成装置。
【請求項５】
データ種別に応じてデータの転送経路が異なるネットワークシステムであって、
当該ネットワークシステムを構成する複数のノードのそれぞれについて、データ種別ごとに当該ノードによる転送回数を記憶した記憶部と、
前記ノードごとに、当該ノードに関して前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、各ノードがデータの転送先のノードの判定に利用する転送先情報について、転送先の判定のための計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する、
ことを特徴とするネットワークシステム。
【請求項６】
データ種別に応じてデータの転送経路が異なるネットワークシステムであって、
データ種別ごとに、転送先の変更回数を記憶する記憶部と、
前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、当該ネットワークシステムを構成する各ノードがデータの転送先のノードの判定に利用する転送先情報について、生成に要される計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する、
ことを特徴とするネットワークシステム。
【請求項７】
データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置が、
複数のノードのそれぞれについて、データ種別ごとに当該ノードによる転送回数を記憶部に記憶し、
前記ノードごとに、当該ノードに関して前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、転送先の判定のための計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する、
処理を実行する情報生成方法。
【請求項８】
データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置が、
データ種別ごとに、転送先の変更回数を記憶部に記憶し、
前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、生成に要される計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する、
処理を実行する情報生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報生成装置、ネットワークシステム、及び情報生成方法に関する。
【背景技術】
【０００２】
機器において発生するイベントやセンサ等において検知されるイベントを、ネットワークを介して収集して各種のサービスに活用するセンサネットワークシステムが実現され始めている。例えば、機器に内蔵されたセンサで検出された機器の動作状況を示すログデータをクラウド側に収集し、当該ログデータに基づいて自動的にリモートメンテナンスが行われたり、電力センサで検出された機器の使用電力を示す電力データをクラウド側に収集し、当該電力データに基づいて自動的に省電力制御が行われたりする。
【０００３】
イベントの発生元となる機器又はセンサ等（以下、「センサノード」という。）が多くなればなるほど、有用な情報を得ることができる。一方で、センサノードの増加は、ネットワーク帯域の逼迫や、イベントが収集されるルートノードの負荷の増大を引き起こす原因となる。
【０００４】
そこで、ルートノードで行われるイベントのフィルタリング処理やイベントの集約処理等のイベントの加工処理を、センサノードや、イベントを中継するＧＷ（gateway）ノード等の前線のノード（以下、「下位ノード」という。）において実行することで、ネットワークトラフィック及びルートノードの負荷を低下させる方法が考案されている（例えば、特許文献１参照）。イベントのフィルタリング処理とは、例えば、不要なイベントを破棄する処理である。また、イベントの集約処理とは、複数のイベントを集約して、当該複数のイベントに基づいて得られるイベントを出力する処理である。例えば、電力を示すイベントを１時間ごとに集約し、電力量を示すイベントを出力する処理が、集約処理の一例として挙げられる。フィルタリング処理や集約処理等が、下位ノードで行われることで、上位のノードやルートノードに到達するイベントの数を削減することができる。その結果、ネットワークトラフィックやルートノードの負荷の低下させることができる。
【０００５】
上記の方法において、フィルタリング処理や集約処理等の加工処理は、正しい順序で実行される必要が有る。また、特定のノードの負荷の増加を抑制するために、各処理はできるだけ各ノードに分散されるのが望ましい。更に、イベントの種別によって、適用される加工処理は異なる。例えば、機器の動作状況を示すログデータに対して適用されるべき加工処理と、機器の使用電力を示す電力データに対して適用されるべき加工処理とは異なる。したがって、イベントの種別に応じて、ノード間の転送経路は異なる。そこで、各ノードには、イベントの種別ごとに、転送先のノードを示す情報（以下、「転送先情報」という。）が設定される。各ノードは、イベントを受信すると、当該イベントの種別を転送先情報に当てはめて転送先のノードを判定し、当該ノードに対してイベントを転送する。そうすることで、各イベントに対して正しい順序で加工処理が実行され、１以上の加工処理の実行結果が、最終的にルートノードに収集される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１３−４７９２２号公報
【特許文献２】特開２０１２−１４６１１３号公報
【特許文献３】特開２０１３−１５２５６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、センサノードやＧＷノード等の下位ノードの数が膨大となり、イベントの種別や実行すべき加工処理の数も膨大となる大規模センサネットワークにおいては、各ノードに設定する転送先情報が肥大化し、各ノードの記憶容量を逼迫させる虞が有る。
【０００８】
転送先情報の肥大化に対する対策として、ハッシュ関数を用いることでメモリ効率を向上させることが可能な、ブルームフィルタ（Bloom Filter）や、ブルームフィルタを改良したカウンティングフィルタ（Counting Filter）等が用いられる。
【０００９】
例えば、ブルームフィルタ用いる場合、イベントの転送先のノードごとに数ビットのビット列（例えば、１６ビットのビット列）が設けられる。また、イベントの種別ごとに、例えば３種類のハッシュ値が計算される。そして、イベントの種別に対応するビット列において、３種類のハッシュ値に対応するビットの値が「１」に設定される。イベントの転送時には、当該イベントに対して３種類のハッシュ値が計算され、当該３種類のハッシュ値に対応するビットの値が「１」であるビット列に係るノードが、転送先であると判定される。したがって、転送先のノードが共通する複数の種別のイベントの転送先情報を、１つのビット列に統合することができる。その結果、ブルームフィルタによれば、転送先情報の情報量は、当該ノードに接続しているノード数×ビット列のビット数となる。一方、イベントの種別ごとに転送先ノードを示す転送先情報の場合、イベントの種別×ノードの識別情報の情報量となる。したがって、イベントの種別が膨大である場合に、ブルームフィルタを用いることで、メモリの消費量を削減することができる。
【００１０】
しかし、ブルームフィルタやカウンティングフィルタを用いる場合、各ノードがイベントを転送するたびに、ハッシュ値の計算が必要とされる。したがって、大量のイベントが処理されるセンサネットワークシステムにおいては、ハッシュ値の計算コストが各ノードのＣＰＵの処理能力を逼迫させ、イベントの転送性能の劣化させる可能性がある。
【００１１】
また、センサネットワークシステムのネットワーク構成が変化したり、転送すべきイベントの種別が増減したりした場合、膨大な数のノードに関して、ハッシュ値の再計算が行われる必要が有る。大規模なセンシングネットワークシステムにおいては、このような再計算のコストも無視できないほど大きくなる可能性が有る。
【００１２】
そこで、一側面では、ネットワークを構成する各ノードがデータの転送先の判定に用いる情報に関するメモリ消費量と計算コストとの偏りを平準化させることを目的とする。
【課題を解決するための手段】
【００１３】
一つの案では、データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置は、複数のノードのそれぞれについて、データ種別ごとに当該ノードによる転送回数を記憶した記憶部と、前記ノードごとに、当該ノードに関して前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、転送先の判定のための計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する。
【発明の効果】
【００１４】
一態様によれば、ネットワークを構成する各ノードがデータの転送先の判定に用いる情報に関するメモリ消費量と計算コストとの偏りを平準化させることができる。
【図面の簡単な説明】
【００１５】
【図１】第一の実施の形態におけるセンサネットワークシステムの構成例を示す図である。
【図２】第一の実施の形態におけるルートノードのハードウェア構成例を示す図である。
【図３】第一の実施の形態におけるルートノードの機能構成例を示す図である。
【図４】モジュール記憶部の構成例を示す図である。
【図５】モジュール定義記憶部の構成例を示す図である。
【図６】イベント記憶部の構成例を示す図である。
【図７】イベント発生情報記憶部の構成例を示す図である。
【図８】配備先情報記憶部の構成例を示す図である。
【図９】第一の実施の形態におけるセンサノードの機能構成例を示す図である。
【図１０】第一の実施の形態におけるＧＷノードの機能構成例を示す図である。
【図１１】第一の実施の形態のルートノードが実行する転送先情報の生成処理の処理手順の一例を説明するためのフローチャートである。
【図１２】第一のセンサノードに関するイベント発生情報のソート結果の一例を示す図である。
【図１３】第一のセンサノードに関する第一転送先情報の一例を示す図である。
【図１４】第一のセンサノードに関するカウンティングフィルタの一例を示す図である。
【図１５】第二のセンサノードに関するイベント発生情報のソート結果の一例を示す図である。
【図１６】第二のセンサノードに関する第一転送先情報の一例を示す図である。
【図１７】第二のセンサノードに関するカウンティングフィルタの一例を示す図である。
【図１８】センサノードが実行する処理手順の一例を説明するためのフローチャートである。
【図１９】ＧＷノードが実行する処理手順の一例を説明するためのフローチャートである。
【図２０】第二の実施の形態におけるルートノードの機能構成例を示す図である。
【図２１】第二の実施の形態のルートノードが実行する転送先情報の生成処理の処理手順の一例を説明するためのフローチャートである。
【図２２】変更回数記憶部の構成例を示す図である。
【図２３】第二の実施の形態におけるイベント発生情報のソート結果の一例を示す図である。
【図２４】第二の実施の形態において生成される第一転送先情報の一例を示す図である。
【図２５】第二の実施の形態において生成される第二転送先情報の一例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面に基づいて第一の実施の形態を説明する。図１は、第一の実施の形態におけるセンサネットワークシステムの構成例を示す図である。図１において、センサネットワークシステム１は、センサノード３０ａ、３０ｂ、３０ｃ、及び３０ｄ等の１以上のセンサノード３０、ＧＷノード２０ａ、２０ｂ、及び３０ｃ等の１以上のＧＷノード２０、及び１つのルートノード１０等を含む。これらのノードのうち、センサノード３０及びＧＷノード２０は、ビルＡ内に設置されている。ルートノード１０は、クラウドサービスを提供する事業者によって管理されている。但し、各ノードの配置位置は、所定のものに限定されない。
【００１７】
センサノード３０は、例えば、センサを内蔵する通信機器又はセンサに接続された通信機器である。センサノード３０は、特定の又は専用の通信機器に限定されない。例えば、ＰＣ（Personal Computer）、周辺機器、ＡＶ機器、携帯端末、家電製品等がセンサノード３０であってもよい。センサノード３０は、センサによって計測又は検知された１次的なイベントデータ、又は１次的なイベントデータに関して加工処理が実行された２次的なイベントデータを、いずれかのＧＷノード２０に送信する。
【００１８】
イベントデータとは、センサによって計測される計測値、又はセンサによって検知される事象等のイベントを示すデータである。イベントデータには、当該計測値や当該事象を示す値が含まれる。
【００１９】
また、加工処理とは、フィルタリング処理又は集約処理等である。フィルタリング処理とは、例えば、不要なイベントを破棄する処理である。集約処理とは、複数のイベントを集約することにより得られるイベントを出力する処理である。
【００２０】
本実施の形態において、各センサノード３０は、各センサノード３０に接続される機器の電力を計測する電力センサに接続される。センサノード３０は、計測された電力を示すイベントデータ（以下、「電力データ」という。）を、ＧＷノード２０に送信する。また、本実施の形態では、集約処理の一例として、１時間分の電力を示すイベントデータに基づいて、機器の種別ごとに電力量を示すイベントデータ（以下、「電力量データ」という。）を生成する処理が実行される。
【００２１】
ＧＷノード２０は、センサノード３０からのイベントデータを、他のＧＷノード２０又はルートノード１０に転送する通信機器である。ＧＷノード２０も特定の機器又は専用の通信機器に限定されない。ＧＷノード２０は、必要に応じて、受信したイベントデータに対して加工処理を行うことにより得られるイベントデータを転送する。
【００２２】
ルートノード１０は、イベントデータが収集されるノードである。ルートノード１０に収集されるイベントデータに基づいて、各種のサービスが提供される。ルートノード１０は、また、イベントデータに対する加工処理を、各ノードに分散して配備させるための処理（以下、「分散配備処理」という。）をも実行する。分散配備処理が実行される前は、ルートノード１０には１次的なイベントデータが収集される。この場合、ルートノード１０が、収集されたイベントデータに対して加工処理を実行する。分散配備処理が実行された後は、ルートノード１０には、２次的なイベントデータが収集される。ルートノード１０は、２次的なイベントデータを利用して、又は２次的なイベントデータに対して更に加工処理を行うことにより得られるデータを利用して、各種のサービスを提供する。
【００２３】
なお、２次的なイベントデータとは、１回以上の加工処理が行われることにより出力されるベントデータをいう。すなわち、２回以上の加工処理が行われたイベントデータについても、２次的なイベントデータという。
【００２４】
また、本実施の形態において、ルートノード１０から見て、センサノード３０及びＧＷノード２０を区別しない場合、これらのノードを「下位ノード」という。また、センサノード３０から見て、ＧＷノード２０及びルートノード１０を区別しない場合、これらのノードを「上位ノード」という。
【００２５】
また、図１では、イベントデータの転送に関する論理的なネットワーク構成が示されている。イベントデータやその他の通信データを構成するパケット等の転送は、別途配置されるルータ等を介して行われる。したがって、例えば、各センサノード３０とルートノード１０とがＧＷノード２０を介さずに通信することも可能である。
【００２６】
なお、図１には、各ノードのノードＩＤが示されている。ノードＩＤは、ノードごとの識別情報の一例である。本実施の形態において、各ノードのノードＩＤには、図１に示される値が用いられる。
【００２７】
図２は、第一の実施の形態におけるルートノードのハードウェア構成例を示す図である。図２のルートノード１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００２８】
ルートノード１０での処理を実現するプログラムは、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２９】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってルートノード１０に係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００３０】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００３１】
なお、センサノード３０及びＧＷノード２０も、図２に示されるようなハードウェアを有していてもよい。
【００３２】
図３は、第一の実施の形態におけるルートノードの機能構成例を示す図である。図３において、ルートノード１０は、モジュール登録部１１、イベント受信部１２、モジュール実行部１３、イベント発生情報受信部１４、配備先決定部１５、モジュール送信部１６、転送先情報生成部１７、及び転送先情報送信部１８等を有する。これら各部は、ルートノード１０にインストールされたプログラムが、ＣＰＵ１０４に実行させる処理により実現される。
【００３３】
ルートノード１０は、また、モジュール記憶部１１１、モジュール定義記憶部１１２、イベント記憶部１１３、イベント発生情報記憶部１１４、配備先情報記憶部１１５、及び転送先情報記憶部１１６等を利用する。これら各記憶部は、補助記憶装置１０２、又はルートノード１０にネットワークを介して接続される記憶装置等を用いて実現可能である。
【００３４】
モジュール登録部１１は、各ノードに加工処理を実行させるプログラムモジュール（以下、単に「モジュール」という。）に関する情報を、モジュール記憶部１１１及びモジュール定義記憶部１１２に登録する。例えば、モジュール登録部１１は、モジュールの開発者が利用する端末装置からモジュールのアップロードを受け付け、当該モジュールをモジュール記憶部１１１に登録する。モジュール登録部１１は、また、アップロードされたモジュールに関する定義情報を、モジュールの開発者が利用する端末装置から受け付け、当該定義情報をモジュール定義記憶部１１２に登録する。
【００３５】
図４は、モジュール記憶部の構成例を示す図である。図４において、モジュール記憶部１１１は、モジュール識別子に対応付けて、モジュールの実体であるバイナリコードを記憶する。モジュール識別子は、モジュールごとの識別情報である。例えば、Ｃ言語でプログラミングされたモジュールについては関数名がモジュール識別子とされてもよい。また、Ｊａｖａ（登録商標）言語でプログラミングされたモジュールについてはクラス名がモジュール識別子とされてもよい。本実施の形態において、モジュール識別子が、「電力量集計」であるモジュール（以下、「電力量集計モジュール」という。）は、電力データを集約して、電力量データを生成する処理（以下、「電力量集計処理」という。）を、当該モジュールが配備されたノードに実行させるモジュールである。
【００３６】
なお、モジュール記憶部１１１には、モジュールに関してバイナリコード以外のデータが記憶されてもよい。例えば、モジュールがスクリプト言語で実装される場合には、スクリプトが記述されたテキストデータが、モジュール識別子に対応付けられて記憶されてもよい。また、コンパイル前のソースコードがモジュール識別子に対応付けられて記憶されてもよい。ソースコードがモジュール記憶部１１１に記憶される場合、モジュールが配備される段階においてルートノード１０又は配備先のノードでコンパイル等が実行されてもよい。
【００３７】
図５は、モジュール定義記憶部の構成例を示す図である。図５において、モジュール定義記憶部１１２は、モジュール記憶部１１１に記憶されたモジュールごとに、モジュール識別子、入力イベント型名、出力イベント型名、及び集約属性名等を対応付けて記憶する。
【００３８】
入力イベント型名は、モジュールに対して入力データとなるイベントデータのイベント型の名前である。イベント型とは、イベントデータのデータ型である。又は、イベント型は、イベントデータによって示されるイベントの型若しくは種別であるともいえる。例えば、電力データのイベント型名は、「電力」である。電力量データのイベント型名は、「電力量」である。
【００３９】
出力イベント型名は、モジュールによって出力されるイベントデータのイベント型名である。集約属性名は、モジュールによって実行される処理が集約処理である場合に、イベントデータに含まれる属性項目のうちイベントデータを集約する単位を識別するための属性項目の項目名である。仮に、モジュールによって実行される処理がフィルタリング処理であり、イベントデータを集約する必要が無い場合、当該モジュールに関して、集約属性名の項目は空であってもよい。
【００４０】
図５の例では、電力量集計モジュールは、電力データを入力し、電力量データを出力することが示されている。また、電力データに含まれている機器種別ＩＤが共通する単位で、電力データが集約され、電力量データが生成されることが示されている。
【００４１】
なお、機器種別ＩＤとは、センサノード３０によって電力が計測される機器の種別に対する識別子である。本実施の形態では、以下の機器種別ＩＤが有ることとする。
・デスクトップＰＣ
・サーバＰＣ
・ノートＰＣ
・液晶モニタ
・充電器
・プリンタ
・ネットワーク機器
・照明器具
・空調機器
・その他
なお、本実施の形態において、機器種別ＩＤは、各機器の個体（機体）を識別する情報ではない。したがって、例えば、複数台のデスクトップＰＣがビルＡに配置されている場合、各デスクトップＰＣに係る電力データを区別することなく、電力量集計処理が実行される。
【００４２】
イベント受信部１２は、下位ノードからイベントデータを受信する。ルートノード１０にいずれかのモジュールが配備されている場合、イベント受信部１２によって受信されたイベントデータは、当該モジュールによって処理される。ルートノード１０にモジュールが配備されていない場合、イベント受信部１２によって受信されたイベントデータは、イベント記憶部１１３に記憶される。なお、分散配備処理の実行前は、１次的なイベントデータが受信される。分散配備処理の実行後は、２次的なイベントデータも受信される。
【００４３】
モジュール実行部１３は、ルートノード１０に配備されたモジュールの実行制御を行う。例えば、モジュール実行部１３は、イベント受信部１２によってイベントデータが受信されると、当該イベントデータのイベント型名を入力イベント型名とするモジュールがルートノード１０に配備されているか否かを配備先情報記憶部１１５を参照して判定する。当該モジュールがルートノード１０に配備されている場合、モジュール実行部１３は、当該モジュールを実行することによって当該イベントデータに対する加工処理をルートノード１０に実行させる。モジュール実行部１３は、加工処理によって出力されたイベントデータを、イベント記憶部１１３に記憶する。
【００４４】
なお、分散配備処理の実行前は、全てのモジュールが、ルートノード１０に配備されている。すなわち、必要とされるすべての加工処理が、ルートノード１０によって実行される。したがって、モジュール実行部１３は、或るイベントデータに対して２以上の加工処理を実行する必要が有る場合は、当該２以上の加工処理に係る２以上のモジュールを、順番に実行する。
【００４５】
図６は、イベント記憶部の構成例を示す図である。図６において、イベント記憶部１１３は、イベントデータごとに、イベント型名、イベント発生時刻、及びイベント属性等を対応付けて記憶する。イベント発生時刻は、１次的なイベントデータであれば、当該イベントデータに係るイベントが発生又は検知された時刻である。２次的なイベントデータであれば、当該イベントデータが、いずれかのモジュールによって生成された時刻である。イベント属性は、イベントデータの属性項目ごとに、項目名と値との組を含む情報である。
【００４６】
本実施の形態では、センサノード３０から送信されるイベントデータは、電力データであり、ルートノード１０も含めていずれかのノードにおいて電力量集計処理が実行されることにより電力量データが生成される。したがって、イベント記憶部１１３には、電力量データが記憶される。電力量集計処理では、機器種別ＩＤごとに電力データが集約されるため、図６では、１時間間隔で、機器種別ＩＤごとの電力量を示す電力量データが記憶された例が示されている。
【００４７】
また、図６には、電力量データの属性項目には、機器種別ＩＤ及び電力量が含まれることが示されている。
【００４８】
イベント発生情報受信部１４は、各センサノード３０及び各ＧＷノード２０におけるイベントデータの発生状況を示す統計情報（以下、「イベント発生情報」という。）を、各下位ノードから受信する。イベント発生情報は、例えば、所定時間あたり、又はこれまでの累積のイベントデータの発生回数を示す情報である。したがって、イベント発生情報は、頻繁に発生するイベントデータとは異なり、通信負荷に与える影響は小さい。また、イベント発生情報は、直接的に、各下位ノードからルートノード１０に送信されてもよい。すなわち、イベント発生情報は、後述の転送先情報に基づく経路制御は行われなくてよい。イベント発生情報受信部１４は、受信されたイベント発生情報を、イベント発生情報記憶部１１４に記憶する。
【００４９】
なお、本実施の形態では、電力データのみが記憶されるが、複数のイベント型のイベントデータが、イベント記憶部１１３に記憶されてもよい。すなわち、一つのセンサネットワークシステム１において、複数のイベント型のイベントデータが並行して扱われてもよい。
【００５０】
図７は、イベント発生情報記憶部の構成例を示す図である。図７において、イベント発生情報記憶部１１４は、イベント発生情報受信部１４によって受信されたイベント発生情報を記憶する。図７に示されるように、イベント発生情報は、発生ノードＩＤ、発生イベント型名、集約属性、及びイベント発生回数等を含む。
【００５１】
発生ノードＩＤは、イベント発生情報の送信元のノードＩＤである。発生イベント型名は、イベント発生情報において集計対象とされているイベントデータのイベント型名である。集約属性は、イベント発生情報の集計単位を示す、集約属性名とその属性値（以下、「集約属性値」という。）との組み合わせである。イベント発生回数は、集約属性に当てはまるイベントデータについて、ノードＩＤに係るノードにおける発生回数である。発生回数は、当該ノードからのイベントデータの転送回数に該当する。
【００５２】
なお、ルートノード１０は、分散配備処理の実行前に、モジュール定義記憶部１１２に記憶されている各集約属性名を、各下位ノードに通知するようにしてもよい。各下位ノードは、通知された集約属性名に係る属性値ごとに、イベント発生回数を集計してもよい。
【００５３】
配備先決定部１５は、分散配備処理を制御する。すなわち、配備先決定部１５は、モジュール記憶部１１１及びモジュール定義記憶部１１２に記憶されたモジュールの配備先のノードを決定する。配備される単位は、厳密には、モジュールと、当該モジュールの集約属性名に対する集約属性値との組み合わせごととなる。例えば、電力量集計モジュールには電力量集計処理を実行するためのロジックが実装されているが、当該モジュール自体には、いずれの集約属性値ごとに電力量の集計を行うかは特定されていない。電力集計モジュールについて、いずれの集約属性値ごとに集計を行うかが決定されることにより、当該電力集計モジュールが実行すべき具体的な処理内容が決まる。したがって、配備先決定部１５は、モジュールと集約属性値との組み合わせごとに、当該組み合わせの配備先を決定する。以下、モジュールと集約属性値との組み合わせを、「インスタンス」という。
【００５４】
最初に分散配備処理が実行される前は、全てのインスタンスの配備先は、ルートノード１０である。すなわち、全ての１次的なイベントデータがルートノード１０に収集される状態で、センサネットワークシステム１の運用が開始される。センサネットワークシステム１の運用の開始に応じて、各ノードにおけるイベントデータの発生状況が明らかになる。すなわち、イベント発生情報記憶部１１４に、イベント発生情報が記憶される。そこで、配備先決定部１５は、例えば、イベント発生情報記憶部１１４が記憶するイベント発生情報等に基づいて、インスタンスを配備することによりイベントデータの流通量の削減効果が高いと予測されるノードを、当該インスタンスの配備先として決定する。但し、本実施の形態において、インスタンスの配備先の決定方法は、所定のものに限定されない。例えば、特開２０１３−４７９２２号公報に記載された方法で、配備先が決定されてもよいし、他の方法で配備先が決定されてもよい。配備先決定部１５は、分散配備処理によって得られる情報を、配備先情報記憶部１１５に記憶する。なお、分散配備処理は、センサネットワークシステム１のトポロジが変化するたびに行われてもよい。
【００５５】
図８は、配備先情報記憶部の構成例を示す図である。図８において、配備先情報記憶部１１５は、配備先が決定されたインスタンスごとに、モジュール識別子、入力イベント型名、集約属性名、集約属性値、及び配備先ノードＩＤ等を記憶する。
【００５６】
モジュール識別子は、当該インスタンスに用いられるモジュールのモジュール識別子である。入力イベント型名は、当該モジュールの入力イベント型名である。集約属性名は、当該モジュールの集約属性名である。集約属性値は、当該インスタンスの集約属性値である。配備先ノードＩＤは、当該インスタンスの配備先のノードのノードＩＤである。なお、或るモジュール識別子に対する入力イベント型及び集約属性名は、当該モジュール識別子に対してモジュール定義記憶部１１２に記憶されている情報に基づいて特定可能である。
【００５７】
例えば、図８の最初のレコードには、ノードＩＤが「ＧＷ−２Ｆ」であるＧＷノード２０に対して、集約属性値が「デスクトップＰＣ」である電力集計処理のインスタンスが配備されることが示されている。すなわち、当該ＧＷノード２０は、機器種別ＩＤの値が「デスクトップＰＣ」である電力イベントデータに関して、電力集計処理を実行することが示されている。
【００５８】
モジュール送信部１６は、配備先情報記憶部１１５に記憶された配備先情報に基づいて、各イベントに係るモジュールのバイナリコードを、当該イベントの配備先のノード宛に送信する。なお、モジュールのバイナリコードと共に、当該モジュールを用いるインスタンスの集約属性名及び集約属性値も、各ノードに送信される。
【００５９】
転送先情報生成部１７は、イベント発生情報記憶部１１４に記憶されたイベント発生情報と、配備先情報記憶部１１５に記憶された配備先情報とに基づいて、各ノードの転送先情報を生成する。転送先情報とは、イベント型名及び集約属性ごとに、当該イベント型名及び当該集約属性に係るイベントデータの転送先の判定に利用される情報である。すなわち、或る下位ノードが、イベントデータを受信すると、当該下位ノードは、転送先情報に基づいて、当該イベントデータを次に転送すべきノードを判定する。したがって、本実施の形態では、イベント型名及び集約属性ごとに、イベントデータの転送経路が異なる。転送先情報生成部１７による処理は、例えば、配備先情報記憶部１１５に配備先情報が記憶された後の任意のタイミングで行われる。
【００６０】
転送先情報記憶部１１６は、転送先情報生成部１７によって生成される転送先情報をノードごとに記憶する。転送先情報送信部１８は、転送先情報記憶部１１６に転送先情報が記憶されたノードに対して、当該転送先情報を送信する。
【００６１】
図９は、第一の実施の形態におけるセンサノードの機能構成例を示す図である。図９において、センサノード３０は、モジュール受信部３１、転送先情報受信部３２、センサ情報受信部３３、モジュール実行部３４、イベント送信部３５、及びイベント発生情報送信部３６等を有する。これら各部は、センサノード３０にインストールされたプログラムが、センサノード３０のＣＰＵに実行させる処理により実現される。センサノード３０は、また、モジュール情報記憶部３１１及び転送先情報記憶部３１２等を有する。これら各記憶部は、例えば、センサノード３０が有する補助記憶装置又はメモリ装置等を用いて実現可能である。
【００６２】
モジュール受信部３１は、当該センサノード３０がインスタンスの配備先として決定された場合にルートノード１０から当該センサノード３０宛に送信される、当該インスタンスのモジュール、集約属性名、及び集約属性値等を受信する。モジュール受信部３１は、受信されたモジュール、集約属性名、及び集約属性値等を相互に対応付けて、モジュール情報記憶部３１１に記憶する。
【００６３】
転送先情報受信部３２は、ルートノード１０から当該センサノード３０宛に送信される転送先情報を受信する。転送先情報受信部３２は、受信された転送先情報を、転送先情報記憶部３１２に記憶する。なお、初期状態において、転送先情報記憶部３１２には、全てのイベントについて、ルートノード１０を転送先とすることを示す転送先情報が記憶されていてもよい。
【００６４】
センサ情報受信部３３は、センサによって検知又は計測されるイベントデータを受信する。本実施の形態では、電力センサによって計測される電力が、センサ情報受信部３３によって受信される。
【００６５】
モジュール実行部３４は、受信されたイベントデータに適用されるべきモジュール等（インスタンス）がモジュール情報記憶部３１１に記憶されている場合に、当該イベントデータに対して、当該モジュールを実行する。
【００６６】
イベント送信部３５は、センサ情報受信部３３によって受信された１次的なイベントデータ、又はモジュール実行部３４によって生成される２次的なイベントデータを、転送先情報記憶部３１２に記憶されている転送先情報に基づいて特定されるノードへ転送する。
【００６７】
イベント発生情報送信部は、当該センサノード３０において発生するイベントデータの発生回数を、集約属性値ごとに集計し、所定のタイミングで、集計結果を含むイベント発生情報を、ルートノード１０宛に送信する。
【００６８】
図１０は、第一の実施の形態におけるＧＷノードの機能構成例を示す図である。図１０において、ＧＷノード２０は、モジュール受信部２１、転送先情報受信部２２、イベント受信部２３、モジュール実行部２４、イベント送信部２５、及びイベント発生情報送信部２６等を有する。これら各部は、ＧＷノード２０にインストールされたプログラムが、ＧＷノード２０のＣＰＵに実行させる処理により実現される。ＧＷノード２０は、また、モジュール情報記憶部２１１及び転送先情報記憶部２１２等を有する。これら各記憶部は、例えば、ＧＷノード２０が有する補助記憶装置又はメモリ装置等を用いて実現可能である。
【００６９】
イベント受信部２３は、他ノードから転送されるイベントデータを受信する。その他の各部については、センサノード３０が有する同名の各部と同様である。
【００７０】
以下、センサネットワークシステム１における各ノードが実行する処理手順について説明する。
【００７１】
図１１は、第一の実施の形態のルートノードが実行する転送先情報の生成処理の処理手順の一例を説明するためのフローチャートである。図１１の処理は、例えば、分散配備処理の過程において、配備先情報記憶部１１５に配備先情報が記憶された後に行われる。また、分散配備処理が完了した後に、定期的に実行されてもよい。
【００７２】
ステップＳ１０１において、転送先情報生成部１７は、イベント発生情報記憶部１１４の更新を待機する。イベント発生情報記憶部１１４の更新は、イベント発生情報受信部１４が、いずれかの下位ノードからイベント発生情報を受信し、当該イベント発生情報をイベント発生情報記憶部１１４に記憶することによって発生する。
【００７３】
イベント発生情報記憶部１１４が更新されると（Ｓ１０１でＹｅｓ）、転送先情報生成部１７は、ステップＳ１０２以降の処理を開始する。但し、更新が発生するたびにステップＳ１０２以降が実行されなくてもよい。例えば、一定期間ごとに、当該一定期間においてイベント発生情報記憶部１１４に対する更新の有無が確認され、更新が有った場合に、ステップＳ１０２以降が実行されてもよい。又は、更新量が所定量に達したタイミングでステップＳ１０２以降が実行されてもよい。
【００７４】
ステップＳ１０２において、転送先情報生成部１７は、未処理のノードの有無を判定する。未処理のノードとは、イベント発生情報記憶部１１４に、当該ノードのノードＩＤを含むイベント発生情報が記憶されているノードのうち、今回の図１１の処理において未処理のノードをいう。したがって、今回の処理において最初にステップＳ１０２が実行される場合、イベント発生情報記憶部１１４にイベント発生情報が記憶されているノードの全てが未処理のノードとなる。
【００７５】
未処理のノードが有る場合（Ｓ１０２でＹｅｓ）、転送先情報生成部１７は、未処理のノードのうちの一つのノードを処理対象とする（Ｓ１０３）。以下、処理対象とされたノードを「対象ノード」という。例えば、図７に示されるイベント発生情報記憶部１１４には、センサノード３０ａ、センサノード３０ｂ、センサノード３０ｃ、又はセンサノード３０ｄのノードＩＤをノードＩＤに含むイベント発生情報が記憶されている。例えば、これら４つのセンサノード３０のうち、ノードＩＤが、「電力センサＡ」であるセンサノード３０ａが対象ノードとされる。
【００７６】
続いて、転送先情報生成部１７は、対象ノードのノードＩＤを含むイベント発生情報を、イベント発生情報記憶部１１４から抽出する（Ｓ１０４）。続いて、転送先情報生成部１７は、抽出されたイベント発生情報を、イベント発生回数の降順にソートする（Ｓ１０５）。
【００７７】
図１２は、第一のセンサノードに関するイベント発生情報のソート結果の一例を示す図である。図１２では、図７に示されているイベント発生情報のうち、センサノード３０ａのイベント発生情報が、イベント発生回数の降順にソートされた例が示されている。
【００７８】
続いて、転送先情報生成部１７は、変数ｉに１を代入する（Ｓ１０６）。変数ｉは、ソートされたイベント発生情報のうち、処理対象とされるイベント発生情報の順番を示す変数である。ソート結果においてｉ番目のイベント発生情報を、以下、「イベント発生情報（ｉ）」という。
【００７９】
続いて、転送先情報生成部１７は、イベント発生情報（ｉ）のイベント型名及び集約属性に対応する配備先ノードＩＤを、配備先情報記憶部１１５から取得する（Ｓ１０７）。具体的には、配備先情報記憶部１１５において、イベント発生情報（ｉ）のイベント型名に一致する入力イベント型名を含み、かつ、イベント発生情報（ｉ）の集約属性に一致する集約属性名及び集約属性値を含むレコードに記憶されている配備先ノードＩＤが取得される。
【００８０】
例えば、図１２において１番目のイベント発生情報のイベント型名及び集約属性は、それぞれ、「電力」、「機器種別ＩＤ＝"ノートＰＣ"」である。図８において、入力イベント型名が「電力」であり、集約属性名が「機器種別ＩＤ」であり、集約属性値が「ノートＰＣ」であるレコードは、３番目のレコードである。したがって、この場合、「ＧＷ−３Ｆ」が取得される。
【００８１】
続いて、転送先情報生成部１７は、変数ｉの値が閾値α以下であるか否かを判定する（Ｓ１０８）。閾値αは、固定的に定められていてもよいし、ステップＳ１０４において抽出されたイベント発生情報の数に応じて算出されてもよい。例えば、ステップＳ１０４において抽出されたイベント発生情報の数を２で除した結果が、閾値αとされてもよい。ここでは、閾値αの値は、「２」であるとする。
【００８２】
変数ｉの値が閾値α以下である場合（Ｓ１０８でＹｅｓ）、転送先情報生成部１７は、イベント発生情報（ｉ）のイベント型名及び集約属性のそれぞれの値に、ステップＳ１０７で取得された配備先ノードＩＤを対応付けた転送先情報を生成し、当該転送先情報を対象ノードのノードＩＤに対応付けて転送先情報記憶部１１６に記憶する（Ｓ１０９）。
【００８３】
続いて、転送先情報生成部１７は、変数ｉの値が、ステップＳ１０４において抽出されたイベント発生情報の個数を示すＮ以上であるか否かを判定する（Ｓ１１２）。すなわち、対象ノードに関する全てのイベント発生情報に関して、転送先情報の生成が完了したか否かが判定される。変数ｉの値がＮ未満である場合（Ｓ１２２でＮｏ）、転送先情報生成部１７は、変数ｉに１を加算して（Ｓ１１３）、ステップＳ１０７以降を繰り返す。
【００８４】
すなわち、イベント発生回数が上位α番目までのイベント型名及び集約属性については、イベント型名及び集約属性ごとに、ノードＩＤが対応付けられたエントリを有する転送先情報が生成される。なお、ステップＳ１０９において生成される転送先情報を、以下、「第一転送先情報」という。
【００８５】
図１３は、第一のセンサノードに関する第一転送先情報の一例を示す図である。図１３に示されるように、第一転送先情報は、イベント型名及び集約属性に対応付けて、転送先ノードＩＤを含む。なお、ステップＳ１０７において取得された配備先ノードＩＤは、転送先ノードＩＤとして、第一転送先情報に含まれる。
【００８６】
図１３において、１番目のエントリ（又はレコード）は、図１２における１番目のイベント発生情報に基づく第一転送先情報である。２番目のエントリは、図１２における２番目のエントリに基づく第一転送先情報である。
【００８７】
一方、ステップＳ１０８において、変数ｉの値が閾値αを超える場合（Ｓ１０８でＮｏ）、転送先情報生成部１７は、イベント発生情報（ｉ）のイベント型名及び集約属性に関して以下のＡ〜Ｃに示されるような３種類のハッシュ値を計算する（Ｓ１１０）。
【００８８】
Ａ）イベント型名及び集約属性の文字列の末尾に "Ａ"を付加した文字列のＳＨＡ−２５６ハッシュ値Ａ
Ｂ）イベント型名及び集約属性の文字列の末尾にさらに"Ｂ"を付加した文字列のＳＨＡ−２５６ハッシュ値Ｂ
Ｃ）イベント型名及び集約属性の文字列の末尾にさらに"Ｃ"を付加した文字列のＳＨＡ−２５６ハッシュ値Ｃ
なお、ＳＨＡ−２５６以外のハッシュ関数が用いられてもよい。また、イベント型名及び集約属性の文字列の末尾に付加される文字は、上記と異なっていてもよい。
【００８９】
続いて、転送先情報生成部１７は、ハッシュ値Ａ〜Ｃを、ステップＳ１０７において取得された配備先ノードＩＤに対応するカウンティングフィルタに適用する（Ｓ１１１）。本実施の形態において、カウンティングフィルタの幅(ブルームフィルタで言うところのビット数)は、１６桁であるとする。したがって、ハッシュ値Ａ〜Ｃのそれぞれを１６で除した場合の剰余が、配備先ノードＩＤに対応するカウンティングフィルタに適用される。剰余をカウンティングフィルタに適用するとは、カウンティングフィルタにおいて、当該剰余が示す値の桁に１が加算されることをいう。
【００９０】
続いて、ステップＳ１１２以降が実行される。すなわち、イベント発生回数が上位α番目より後のイベント型名及び集約属性については、転送先のノードごとにエントリを含むカウンティングフィルタが、転送先情報として生成される。生成された転送先情報（カウンティングフィルタ）は、対象ノードのノードＩＤに対応付けられて転送先情報記憶部１１６に記憶される。以下、ステップＳ１１１において生成される転送先情報を、「第二転送先情報」という。
【００９１】
例えば、図１２の３番目以降のイベント発生情報に関しては、ステップＳ１１１において、次のような値が、カウンティングフィルタに適用される。以下の括弧内の３つの数値は、ハッシュ値Ａを１６で除した剰余、ハッシュ値Ｂを１６で除した剰余、ハッシュ値Ｃを１６で除した剰余である。
【００９２】
電力：機器種別ＩＤ＝"液晶モニタ"：        （１５，１２，７）
電力：機器種別ＩＤ＝"充電器"：        （９，６，４）
電力：機器種別ＩＤ＝"その他"：        （１３，１４，５）
電力：機器種別ＩＤ＝"サーバＰＣ"：        （６，１１，５）
電力：機器種別ＩＤ＝"プリンタ"：        （１３，１２，１２）
電力：機器種別ＩＤ＝"空調機器"：        （７，３，７）
電力：機器種別ＩＤ＝"照明器具"：        （２，８，０）
電力：機器種別ＩＤ＝"ネットワーク機器"：    （１３，１０，２）
上記に基づいて、図１４に示されるようなカウンティングフィルタが生成される。図１４は、第一のセンサノードに関するカウンティングフィルタの一例を示す図である。
【００９３】
図１４に示されるように、カウンティングフィルタは、転送先のノードごとにエントリを有する。各エントリは１６桁の幅を有する。各エントリには、当該ノードへ転送されるイベントのイベント型名及び集約属性が合成されて含まれる。
【００９４】
対象ノードに関する全てのイベント発生情報について、転送先情報の生成が完了すると（Ｓ１１２でＹｅｓ）、転送先情報送信部１８は、対象ノードの第一転送先情報及び第二転送先情報を、対象ノード宛に送信する（Ｓ１１４）。その結果、対象ノードに対して、第一転送先情報及び第二転送先情報が設定される。例えば、対象ノードがセンサノード３０ａであれば、図１３に示される第一転送先情報と、図１４に示される第二転送先情報とが送信される。
【００９５】
転送先情報生成部１７は、未処理のノードが無くなるまで、ステップＳ１０３以降を繰り返す（Ｓ１０２）。未処理のノードが無くなると（Ｓ１０３でＮｏ）、転送先情報生成部１７は、図１１の処理を終了させる。
【００９６】
例えば、ノードＩＤが「電力センサＢ」であるセンサノード３０ｂに関しては、ステップＳ１０５において、図１５に示されるようなソート結果が得られる。
【００９７】
図１５に示されるイベント発生情報のうち、上位の二つについては、図１６に示される第一転送先情報が生成される。一方、３番目以降のイベント発生情報については、図１７に示されるカウンティングフィルタが、第二転送先情報として生成される。したがって、センサノード３０ｂには、図１６に示される第一転送先情報と、図１７に示される第二転送先情報とが送信される。
【００９８】
続いて、各センサノード３０が実行する処理について説明する。図１８は、センサノードが実行する処理手順の一例を説明するためのフローチャートである。
【００９９】
転送先情報受信部３２は、ルートノード１０から送信された第一転送先情報及び第二転送先情報を受信すると（Ｓ２０１でＹｅｓ）、当該転送先情報を、転送先情報記憶部３１２に記憶する（Ｓ２０２）。
【０１００】
モジュール受信部３１は、モジュール、集約属性名、及び集約属性値を受信すると（Ｓ２０３でＹｅｓ）、当該集約属性名及び当該集約属性値に対応付けて、当該モジュールをモジュール情報記憶部３１１に記憶する（Ｓ２０４）。
【０１０１】
センサ情報受信部３３が、センサからセンサ情報に係るイベントデータを受信すると（Ｓ２０５でＹｅｓ）、モジュール実行部３４は、当該イベントデータの属性項目の属性名及び属性値が、モジュール情報記憶部３１１に記憶されているいずれかのモジュールに対応付けられているか否かを判定する（Ｓ２０６）。当該属性名及び当該属性値が、いずれかのモジュールに対応付けられている場合（Ｓ２０６でＹｅｓ）、モジュール実行部３４は、受信されたイベントデータに対して、当該モジュールに係る処理を実行する（Ｓ２０７）。
【０１０２】
ステップＳ２０６でＮｏの場合又はステップＳ２０７に続いて、イベント送信部３５は、センサ情報受信部３３によって受信されたイベントデータ、又はモジュール実行部１３による処理の結果として出力されるイベントデータを、転送先情報に基づいて特定される転送先のノードに転送する（Ｓ２０８）。
【０１０３】
転送先情報に基づく転送先のノードの特定は、例えば、次のように行われる。まず、イベント送信部３５は、第一転送先情報の中で、送信対象のイベントデータのイベント型名及び集約属性に一致するエントリを検索する。該当するエントリが有れば、当該エントリの転送先ノードＩＤに係るノードが、転送先のノードとして特定される。
【０１０４】
該当するエントリが無い場合、イベント送信部３５は、イベントデータに関して、ハッシュ値Ａ、Ｂ、及びＣを計算し、各ハッシュ値を１６で除した剰余を求める。その結果、３つの値が得られる。イベント送信部３５は、第二転送先情報であるカウンティングフィルタにおいて、当該３つの値が示す桁に１以上の値が記録されているエントリに対応するノードを、転送先ノードとして特定する。
【０１０５】
続いて、イベント発生情報送信部３６は、イベント送信部３５によって転送されたイベントデータに係るイベント型名及び集約属性に対応するイベント発生回数に１を加算する（Ｓ２０９）。なお、イベント発生回数は、例えば、メモリ装置に記憶される。
【０１０６】
イベント発生情報送信部３６は、イベント発生情報の送信時期の経過を検知すると（Ｓ２１０）、イベント型名及び集約属性ごとにメモリ装置に記憶されているイベント発生回数を、ルートノード１０宛に送信する（Ｓ２１１）。イベント発生情報の送信時期は、例えば、一定期間ごとであってもよい。
【０１０７】
続いて、ＧＷノード２０が実行する処理について説明する。図１９は、ＧＷノードが実行する処理手順の一例を説明するためのフローチャートである。ステップＳ３０１〜Ｓ３０４は、図１８のステップＳ２０１〜Ｓ２０４と同様であるため、その説明は省略する。
【０１０８】
イベント受信部２３が、他ノードから転送されたイベントデータを受信すると（Ｓ３０５でＹｅｓ）、ステップＳ３０６〜Ｓ３０９において、図１８のステップＳ２０６〜Ｓ２０９と同様の処理が実行される。また、ステップ３１０及びＳ３１１は、図１８のステップＳ２１０及びＳ２１１と同様である。
【０１０９】
なお、上記において、カウンティングフィルタの代わりにブルームフィルタが用いられてもよい。
【０１１０】
また、本実施の形態では、センサによって検知されるデータが転送対象である例について説明したが、例えば、各コンピュータによって生成されるログデータやその他のデータの転送に関して、本実施の形態が適用されてもよい。
【０１１１】
また、転送先情報は、ルートノード１０以外のコンピュータが生成してもよい。
【０１１２】
上述したように、第一の実施の形態によれば、センサノード３０又はＧＷノード２０がイベントを転送する際、発生回数の多いイベント（つまり、多くの転送処理を行う必要があるイベント）に関しては、第二転送先情報よりも必要とされる計算量が少ない第一転送先情報に基づいて転送先が判定される。すなわち、発生回数の多いイベントに関しては、ハッシュ値の計算が不要となり、ハッシュ値の計算のための処理コストを削減することができる。一方、発生回数の少ないイベント（つまり、転送処理を行う必要があまりないイベント）に関しては、第一転送先情報よりも空間効率の良い第二転送先情報に基づいて転送先が判定される。したがって、このようなイベントに対する転送先情報については、転送先情報記憶部１１６の消費量を抑制することができる。その結果、各ノードでのイベントの発生状況に応じて、イベントの転送処理に要されるメモリ消費量の削減と、処理コストの削減とを両立させることができる。すなわち、ネットワークを構成する各ノードがデータの転送先の判定に用いる情報に関するメモリ消費量と計算コストとの偏りを平準化させることができる。
【０１１３】
次に、第二の実施の形態について説明する。第二の実施の形態では第一の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第一の実施の形態と同様でもよい。
【０１１４】
図２０は、第二の実施の形態におけるルートノードの機能構成例を示す図である。図２０中、図３と同一部分には同一符号を付し、その説明は省略する。
【０１１５】
図２０では、変更回数更新部１９及び変更回数記憶部１１７が追加されている。変更回数記憶部１１７は、各インスタンスについて、配備先の変更回数を、変更回数記憶部１１７に記憶する。例えば、変更回数更新部１９は、配備先情報記憶部１１５の変更前後の情報に基づいて、配備先のノードが変更されたインスタンスを特定し、当該インスタンスの変更回数を変更回数記憶部１１７に記憶する。なお、変更回数更新部１９は、ルートノード１０にインストールされたプログラムが、ＣＰＵ１０４に実行させる処理により実現される。また、変更回数記憶部１１７は、補助記憶装置１０２、又はルートノード１０にネットワークを介して接続される記憶装置等を用いて実現可能である。
【０１１６】
また、第二の実施の形態において、転送先情報生成部１７は、変更回数記憶部１１７に記憶されている情報に基づいて、各ノードの転送先情報を生成する。
【０１１７】
図２１は、第二の実施の形態のルートノードが実行する転送先情報の生成処理の処理手順の一例を説明するためのフローチャートである。図２１中、図１１と同一ステップには同一ステップ番号を付し、その説明は適宜省略する。
【０１１８】
ステップＳ４０１において、変更回数更新部１９は、配備先情報記憶部１１５の変更を待機する。配備先情報記憶部１１５のいずれかのレコードが更新されると（Ｓ４０１でＹｅｓ）、変更回数更新部１９は、当該レコードに係るインスタンスに関して変更回数記憶部１１７に記憶されている変更回数に１を加算する（Ｓ４０２）。
【０１１９】
図２２は、変更回数記憶部の構成例を示す図である。図２２において、変更回数記憶部１１７は、配備先情報記憶部１１５に記憶されているレコードごとに、当該レコードに係る配備先ＩＤの変更回数を記憶する。
【０１２０】
続いて、転送先情報生成部１７は、イベント発生情報記憶部１１４に記憶されている全てのイベント発生情報を取得する（Ｓ４０３）。なお、取得されたイベント発生情報は、発生イベント型名及び集約属性ごとに、集約又は統合される。すなわち、発生ノードＩＤの相違は無視される。図２１の説明に関して、以下におけるイベント発生情報は、集約又は統合された後のイベント発生情報をいう。
【０１２１】
続いて、転送先情報生成部１７は、各イベント発生情報の発生イベント型名及び集約属性に対応する変更回数を、変更回数記憶部１１７から取得する（Ｓ４０４）。イベント発生情報の発生イベント型名及び集約属性に対応する変更回数とは、変更回数記憶部１１７において、当該発生イベント型名と集約属性とに一致する入力イベント型名、集約属性名、及び集約属性値を含むレコードに記憶されている変更回数をいう。なお、変更回数と共に配備先ノードＩＤが取得されてもよい。この場合、ステップＳ１０７は実行されなくてもよい。
【０１２２】
続いて、転送先情報生成部１７は、イベント発生情報を、ステップＳ４０４において取得された変更回数の降順にソートする（Ｓ４０５）。
【０１２３】
図２３は、第二の実施の形態におけるイベント発生情報のソート結果の一例を示す図である。図１２では、図７に示されているイベント発生情報が、変更回数の降順にソートされた例が示されている。
【０１２４】
続いて、図２３に示されるソート結果が用いられて、各イベント発生情報に関して、図１１において説明したステップＳ１０６〜Ｓ１１１が実行される。その結果、図２４及び図２５に示されるような転送先情報が生成される。なお、第二の実施の形態におけるαの値と、第一の実施の形態におけるαの値とは、異なっていてもよい。
【０１２５】
図２４は、第二の実施の形態において生成される第一転送先情報の一例を示す図である。図２４に示されるように、第二の実施の形態では、変更回数が上位α番目までのイベント型名及び集約属性に関して、第一転送先情報が生成される。
【０１２６】
図２５は、第二の実施の形態において生成される第二転送先情報の一例を示す図である。図２５に示されるように、第二の実施の形態では、変更回数がα番目より下位のイベント型名及び集約属性に関して、カウンティングフィルタが生成される。
【０１２７】
全てのイベント情報に関して、Ｓ１０６〜Ｓ１１１が実行されると（Ｓ１１２でＹｅｓ）、転送先情報送信部１８は、生成された第一転送先情報及び第二転送先情報を、各ノード宛に送信する（Ｓ４１４）。その結果、各ノードに対して、第一転送先情報及び第二転送先情報が設定される。すなわち、第二の実施の形態では、各ノードに対して同一の転送先情報が設定される。第二の実施の形態では、イベント型名及び集約属性ごとに転送先情報が生成されるからである。
【０１２８】
上述したように、第二の実施の形態によれば、センサノード３０又はＧＷノード２０がイベントを転送する際、転送先ノードの変更頻度が高いイベントは、第一転送先情報に基づいて転送先が判定される。したがって、斯かるイベントに関して転送先ノードが変更されるたびに、ハッシュ値を再計算することによる処理コストの発生を抑制することができる。一方、転送先ノードの変更があまり発生しないイベントに関しては、第二転送先情報に基づいて転送先が判定される。したがって、このようなイベントに関して、転送先情報記憶部１１６の消費量を抑制することができる。その結果、各ネットワークを構成する各ノードがデータの転送先の判定に用いる情報に関するメモリ消費量と計算コストとの偏りを平準化させることができる。
【０１２９】
なお、上記各実施の形態において、ルートノード１０は、情報生成装置の一例である。イベントデータは、データの一例である。イベントデータのイベント型名及び集約属性は、データ種別の一例である。転送先情報生成部１７は、生成部の一例である。イベント発生情報記憶部１１４は、請求項１における記憶部の一例である。変更回数記憶部１１７は、請求項４における記憶部の一例である。
【０１３０】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１３１】
以上の説明に関し、更に以下の項を開示する。
（付記１）
データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置であって、
複数のノードのそれぞれについて、データ種別ごとに当該ノードによる転送回数を記憶した記憶部と、
前記ノードごとに、当該ノードに関して前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、転送先の判定のための計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する、
ことを特徴とする情報生成装置。
（付記２）
前記第一の転送先情報は、データ種別ごとに、転送先のノードを示す値を含むエントリを有し、
前記第二の転送先情報は、転送先のノードごとに、当該ノードを転送先とする１以上の種別のそれぞれのハッシュ値に基づく値が合成されたエントリを含む、
ことを特徴とする付記１記載の情報生成装置。
（付記３）
前記複数のノードのそれぞれから、データ種別ごとの当該ノードによる転送回数を受信する受信部を有し、
前記記憶部は、前記受信部によって受信される転送回数を記憶する、
ことを特徴とする付記１又は２記載の情報生成装置。
（付記４）
データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置であって、
データ種別ごとに、転送先の変更回数を記憶する記憶部と、
前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、生成に要される計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する、
ことを特徴とする情報生成装置。
（付記５）
データ種別に応じてデータの転送経路が異なるネットワークシステムであって、
当該ネットワークシステムを構成する複数のノードのそれぞれについて、データ種別ごとに当該ノードによる転送回数を記憶した記憶部と、
前記ノードごとに、当該ノードに関して前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、各ノードがデータの転送先のノードの判定に利用する転送先情報について、転送先の判定のための計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する、
ことを特徴とするネットワークシステム。
（付記６）
前記第一の転送先情報は、データ種別ごとに、転送先のノードを示す値を含むエントリを有し、
前記第二の転送先情報は、転送先のノードごとに、当該ノードを転送先とする１以上の種別のそれぞれのハッシュ値に基づく値が合成されたエントリを含む、
ことを特徴とする付記５記載の情報生成装置。
（付記７）
前記複数のノードのそれぞれから、データ種別ごとの当該ノードによる転送回数を受信する受信部を有し、
前記記憶部は、前記受信部によって受信される転送回数を記憶する、
ことを特徴とする付記５又は６記載のネットワークシステム。
（付記８）
データ種別に応じてデータの転送経路が異なるネットワークシステムであって、
データ種別ごとに、転送先の変更回数を記憶する記憶部と、
前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、当該ネットワークシステムを構成する各ノードがデータの転送先のノードの判定に利用する転送先情報について、生成に要される計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する生成部とを有する、
ことを特徴とするネットワークシステム。
（付記９）
データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置が、
複数のノードのそれぞれについて、データ種別ごとに当該ノードによる転送回数を記憶部に記憶し、
前記ノードごとに、当該ノードに関して前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、転送先の判定のための計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する、
処理を実行する情報生成方法。
（付記１０）
前記第一の転送先情報は、データ種別ごとに、転送先のノードを示す値を含むエントリを有し、
前記第二の転送先情報は、転送先のノードごとに、当該ノードを転送先とする１以上の種別のそれぞれのハッシュ値に基づく値が合成されたエントリを含む、
ことを特徴とする付記９記載の情報生成方法。
（付記１１）
前記記憶する処理は、複数のノードのそれぞれから、データ種別ごとの当該ノードによる転送回数を受信して、当該転送回数を前記記憶部に記憶する、
ことを特徴とする付記９又は１０記載の情報生成方法。
（付記１２）
データ種別に応じてデータの転送経路が異なるネットワークにおける各ノードがデータの転送先のノードの判定に利用する転送先情報を生成する情報生成装置が、
データ種別ごとに、転送先の変更回数を記憶部に記憶し、
前記記憶部に記憶されている転送回数が上位の一部のデータ種別に関しては、生成に要される計算量が第二の転送先情報よりも少ない第一の転送先情報を生成し、前記一部以外のデータ種別に関しては、前記第一の転送先情報よりも空間効率の良い前記第二の転送先情報を生成する、
処理を実行する情報生成方法。
【符号の説明】
【０１３２】
１０          ルートノード
１１          モジュール登録部
１２          イベント受信部
１３          モジュール実行部
１４          イベント発生情報受信部
１５          配備先決定部
１６          モジュール送信部
１７          転送先情報生成部
１８          転送先情報送信部
１９          変更回数更新部
２０          ＧＷノード
２１          モジュール受信部
２２          転送先情報受信部
２３          イベント受信部
２４          モジュール実行部
２５          イベント送信部
２６          イベント発生情報送信部
３０          センサノード
３１          モジュール受信部
３２          転送先情報受信部
３３          センサ情報受信部
３４          モジュール実行部
３５          イベント送信部
３６          イベント発生情報送信部
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１１１        モジュール記憶部
１１２        モジュール定義記憶部
１１３        イベント記憶部
１１４        イベント発生情報記憶部
１１５        配備先情報記憶部
１１６        転送先情報記憶部
１１７        変更回数記憶部
２１１        モジュール情報記憶部
２１２        転送先情報記憶部
３１１        モジュール情報記憶部
３１２        転送先情報記憶部
Ｂ            バス
【図１】
2015228611.tif 000003
【図２】
2015228611.tif 000004
【図３】
2015228611.tif 000005
【図４】
2015228611.tif 000006
【図５】
2015228611.tif 000007
【図６】
2015228611.tif 000008
【図７】
2015228611.tif 000009
【図８】
2015228611.tif 000010
【図９】
2015228611.tif 000011
【図１０】
2015228611.tif 000012
【図１１】
2015228611.tif 000013
【図１２】
2015228611.tif 000014
【図１３】
2015228611.tif 000015
【図１４】
2015228611.tif 000016
【図１５】
2015228611.tif 000017
【図１６】
2015228611.tif 000018
【図１７】
2015228611.tif 000019
【図１８】
2015228611.tif 000020
【図１９】
2015228611.tif 000021
【図２０】
2015228611.tif 000022
【図２１】
2015228611.tif 000023
【図２２】
2015228611.tif 000024
【図２３】
2015228611.tif 000025
【図２４】
2015228611.tif 000026
【図２５】
2015228611.tif 000027