(57)【特許請求の範囲】
【請求項１】
それぞれがデータ処理を行う複数の処理ノード装置に接続された制御ノード装置であって、
データに許容される許容遅延時間の範囲内の特定の時間を蓄積時間として設定する時間設定部と、
データ処理の対象となるデータを入力するデータ入力部と、
前記データ入力部によるデータ入力が開始されてから前記時間設定部により設定された蓄積時間の間、前記データ入力部によりデータが入力される度に入力されたデータを蓄積し、蓄積時間の経過時に蓄積しているデータを出力するデータ蓄積部と、
前記データ蓄積部に蓄積されているデータに対するデータ処理を行わせる処理ノード装置を前記複数の処理ノード装置の中から選択する処理ノード選択部と、
前記データ蓄積部からのデータを前記処理ノード選択部により選択された選択処理ノード装置に対して送信する通信部とを有することを特徴とする制御ノード装置。
【請求項２】
前記制御ノード装置は、更に、
前記複数の処理ノード装置を監視し、データ処理を行っていない休止状態の処理ノード装置を検出する処理ノード監視部を有し、
前記データ蓄積部は、
前記処理ノード監視部により検出された休止状態の処理ノード装置の数が所定の上限値を超え、蓄積しているデータのデータ量が所定の下限値を超える場合に、蓄積時間の経過前であっても、データの蓄積を停止し、蓄積しているデータを出力することを特徴とする請求項１に記載の制御ノード装置。
【請求項３】
前記データ蓄積部は、
蓄積時間の経過前であっても、一つのデータ処理を構成する全てのデータが蓄積された時点でデータの蓄積を停止し、蓄積しているデータを出力することを特徴とする請求項１に記載の制御ノード装置。
【請求項４】
前記データ蓄積部は、
蓄積時間に達した時点で一つのデータ処理を構成するデータの全てが蓄積されていない場合は、蓄積時間に達した時点で蓄積されているデータを出力することを特徴とする請求項１に記載の制御ノード装置。
【請求項５】
前記時間設定部は、
前記データ蓄積部に蓄積されているデータのデータ量に基づいて、前記データ蓄積部に蓄積されているデータに対して処理ノード装置が行うデータ処理の予測処理時間を算出し、許容遅延時間と予測処理時間とから蓄積時間を設定することを特徴とする請求項１に記載の制御ノード装置。
【請求項６】
前記制御ノード装置は、更に、
処理ノード装置におけるデータ処理に対する処理条件を設定する処理条件設定部を有し、
前記時間設定部は、
前記処理条件設定部により設定された処理条件に基づいて、前記データ蓄積部に蓄積されているデータに対して処理ノード装置が行うデータ処理の予測処理時間を算出し、許容遅延時間と予測処理時間とから蓄積時間を設定することを特徴とする請求項１に記載の制御ノード装置。
【請求項７】
前記制御ノード装置は、更に、
各処理ノード装置においてデータ処理を行ったデータのデータ量と当該データ量に対するデータ処理に要した実績処理時間とを示す実績情報を取得し、取得した実績情報を記憶する実績情報記憶部を有し、
前記時間設定部は、
前記実績情報記憶部に記憶されている実績情報に示されているデータ量と実績処理時間との関係に基づいて、予測処理時間を算出することを特徴とする請求項５に記載の制御ノード装置。
【請求項８】
前記制御ノード装置は、更に、
各処理ノード装置においてデータ処理を行った際の処理条件と当該処理条件によるデータ処理に要した実績処理時間とを示す実績情報を取得し、取得した実績情報を記憶する実績情報記憶部を有し、
前記時間設定部は、
前記実績情報記憶部に記憶されている実績情報に示されている処理条件と実績処理時間との関係に基づいて、予測処理時間を算出することを特徴とする請求項６に記載の制御ノード装置。
【請求項９】
前記制御ノード装置は、
前記データ入力部におけるデータ入力速度が所定の値を下回る場合は、前記データ蓄積部にデータを蓄積しないことを特徴とする請求項１に記載の制御ノード装置。
【請求項１０】
前記制御ノード装置は、
前記データ入力部におけるデータ入力速度が、前記複数の処理ノード装置におけるデータ処理速度に所定の係数を乗じた値を下回る場合は、前記データ蓄積部にデータを蓄積しないことを特徴とする請求項９に記載の制御ノード装置。
【請求項１１】
前記制御ノード装置は、更に、
前記複数の処理ノード装置と同等のデータ処理を行うデータ処理部を有し、
前記データ入力部におけるデータ入力速度が所定の値を下回る場合は、いずれの処理ノード装置にもデータを送信せず、前記データ処理部にデータ処理を行わせることを特徴とする請求項９に記載の制御ノード装置。
【請求項１２】
前記制御ノード装置は、更に、
データ処理に許容されるデータ処理許容時間を通知するデータ処理許容時間通知を生成する処理条件設定部を有し、
前記通信部は、
前記処理条件設定部により生成されたデータ処理許容時間通知を選択処理ノード装置に対して送信することを特徴とする請求項１に記載の制御ノード装置。
【請求項１３】
それぞれがデータ処理を行う複数の処理ノード装置のいずれかにデータ処理を行わせるデータ管理方法であって、
データに許容される許容遅延時間の範囲内の特定の時間を蓄積時間として設定する時間設定ステップと、
データ処理の対象となるデータを入力するデータ入力ステップと、
前記データ入力ステップによるデータ入力が開始されてから前記時間設定ステップにより設定された蓄積時間の間、前記データ入力ステップによりデータが入力される度に入力されたデータを蓄積し、蓄積時間の経過時に蓄積しているデータを出力するデータ蓄積ステップと、
前記データ蓄積ステップにより蓄積されたデータに対するデータ処理を行わせる処理ノード装置を前記複数の処理ノード装置の中から選択する処理ノード選択ステップと、
前記データ蓄積ステップにより出力されたデータを前記処理ノード選択ステップにより選択された選択処理ノード装置に対して送信する通信ステップとを有することを特徴とするデータ管理方法。
【請求項１４】
それぞれがデータ処理を行う複数の処理ノード装置と通信を行うコンピュータに、
データに許容される許容遅延時間の範囲内の特定の時間を蓄積時間として設定する時間設定手順と、
データ処理の対象となるデータを入力するデータ入力手順と、
前記データ入力手順によるデータ入力が開始されてから前記時間設定手順により設定された蓄積時間の間、前記データ入力手順によりデータが入力される度に入力されたデータを蓄積し、蓄積時間の経過時に蓄積しているデータを出力するデータ蓄積手順と、
前記データ蓄積手順により蓄積されたデータに対するデータ処理を行わせる処理ノード装置を前記複数の処理ノード装置の中から選択する処理ノード選択手順と、
前記データ蓄積手順により出力されたデータを前記処理ノード選択手順により選択された選択処理ノード装置に対して送信する通信手順を実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを複数の処理ノードにて並列処理する並列処理技術に関する。
【背景技術】
【０００２】
ネットワーク上を流れるデータ一般をストリームデータと呼ぶ。
近年、様々な分野においてストリームデータの利用が進んでいる。
ストリームデータの例として、Ｗｅｂや電子メール、動画や音楽のストリーミング配信、ネットワーク機器やセキュリティ対策製品の出力するログ、監視画像、温度や光などを感知するセンサから送られるセンサデータ、株価などの金融データ、気象データ、ＲＦＩＤ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）のタグ情報などがある。
【０００３】
現在既にＷｅｂや電子メールは広く利用されている。
ブロードバンドネットワークの普及は、動画や音楽などの大規模なコンテンツの配信を可能にした。
また、微細なセンサやＲＦＩＤは今後さまざまな分野での普及が予想される。
このように、ストリームデータの利用は様々な分野に拡大していると共に、ネットワーク上を流れるストリームデータの量も増加の一途にある。
【０００４】
ストリームデータの利用の増加は、そのストリームデータに対する処理の多様化にもつながる。
従来、Ｗｅｂのコンテンツや電子メールは情報を発信／伝達する手段であったが、近年では機密情報漏洩防止などの観点からＷｅｂコンテンツや電子メールのフィルタリングへの要求がある。
ストリームデータの処理には、特定の条件に合致したレコードの検索・フィルタリング、複数レコード間の集計・統計、データの形式の変換などがある。
【０００５】
ここではストリームデータを、ネットワーク上を流れる時間の情報や順序を持ったレコードの列と定義する。
例えば、電子メールの場合、１通の電子メール＝発信時刻の情報を持った１つのレコードである。ストリームデータには、情報源によっては次のような特徴がある。
（１）レコードが可変長である。
（２）ストリームデータの入力速度（単位時間当たりの到着レコード数）は、時間によって変動する。
（３）長時間に渡ってサービスが提供される。
【０００６】
一定時間間隔で周囲の気温を測定し、その値（数値）を転送するようなセンサデータの場合は、１レコードが固定長で、その入力速度も一定である。
一方で、電子メールなどは、１通の電子メールのサイズは常に一定ではなく、また時間帯によってその入力速度は変化する。
そして、いずれのストリームデータの場合も、そのサービスの提供を停止するまでは、ストリームデータは入力し続ける。
【０００７】
ストリームデータの処理に対しては、次のようなことが要求される。
（１）リアルタイム処理
（２）レコードの順序の維持
【０００８】
ストリームデータはネットワーク上を伝送する都合上、多少の遅延は許容されるものの、基本的にはリアルタイムな処理が要求される。
また、電子メールのようにレコードの順序が厳密に守られなくても良い情報源もある一方で、順序の情報を持ったストリームデータにおいては、その処理によって順序が変化しないことが求められる。
【０００９】
ストリームデータ処理の基本的な形態を示す。
ストリームデータの処理においては、ネットワーク上にストリームデータ処理装置が設置されている。または、ネットワーク上にネットワークの分岐装置を設置し、分岐先の１つをストリームデータ処理装置に接続する。
ストリームデータ処理装置には予め処理の条件が設定されていて、ストリームデータが入力されるたびにその処理条件に従って処理を行い、処理結果をストリームデータとしてネットワークに出力したり、ディスプレイなどの表示装置に処理結果を表示したりする。
【００１０】
ある条件に合致した電子メールの伝送を抑止する電子メールのフィルタリングを例にすると、電子メールの伝送経路上にフィルタリング装置を設置し、フィルタリングの条件を設定する。
フィルタリング装置は、電子メールが入力されるたびにフィルタリング条件との電子メールとの照合を行い、フィルタリング条件と合致しなかった場合はその電子メールをネットワーク上に送出する。また、入力の電子メールがフィルタリング条件に合致した場合は、その電子メールの伝送を抑止し、ディスプレイ装置などにその抑止した電子メールの情報を出力する。
【００１１】
上で述べたように、ストリームデータの１レコードは可変長であり、１レコードのサイズが大きい場合には１レコードの処理に長い時間がかかる場合がある。
また、ストリームデータの入力速度は時間によって変動するため、突然大量のストリームデータがストリームデータ処理装置に入力されることがあり得る。
短時間にストリームデータ処理装置にストリームデータが集中した場合、処理ノードの処理能力の上限を超えてしまい、処理の遅延時間が長くなりリアルタイム処理の要求に応えられなくなったり、遅延時間を一定以下に抑えるためストリームデータの一部を廃棄する必要が生じたりする。
【００１２】
ストリームデータ処理装置の処理能力を向上する手段として、ストリームデータの並列処理が考えられる。
ストリームデータの並列処理では、ストリームデータの処理をＮ台の処理ノードで分担することにより、Ｎ倍の処理能力を得ることを目的とする。
【００１３】
ストリームデータ並列処理装置の構成の一例を図１に示す。
図１の例では、ストリームデータが流れるネットワーク１０２上にストリームデータ並列処理を制御する制御ノード装置１０１（以下、単に制御ノードともいう）が設置されている。
また、制御ノードと複数台の処理ノード装置１０３〜１０５（以下、単に処理ノードともいう）はデータ転送手段１０６で接続されている。
制御ノードは、処理条件の処理ノードへの設定、ストリームデータの入出力、ストリームデータの処理ノードへの転送、処理ノードから転送された処理結果の集計、処理結果の出力などを処理する機能を備えた装置である。
処理ノードは、制御ノードから転送されたストリームデータに対して処理条件に従って処理をし、その処理結果を制御ノードに転送する機能を備えた装置である。
【００１４】
処理の流れは次のようになる。
ストリームデータ処理に先立って、制御ノード１０１に処理条件を設定すると、制御ノードは処理条件を処理ノード上の処理に適した形式に変換して処理ノードにセットする。制御ノードおよび処理ノードは処理条件がセットされると待機状態になり、ストリームデータの入力を待つ。
制御ノードにストリームデータが入力されると、制御ノードは処理ノードの中の１台を選択して入力ストリームデータを転送する。処理ノードはストリームデータが入力されると、設定されている処理条件に従ってストリームデータを処理し、その処理結果を制御ノード１０１に転送する。
制御ノード１０１は転送された処理結果を編集・集計などしてからネットワーク１０２に出力したり、処理結果をディスプレイ装置などに出力したりする。
【００１５】
上記のように、ストリームデータの並列処理装置を構成することにより、ストリームデータの入力速度が単一の処理装置では処理困難なほど高速であった場合でも、全てのストリームデータを処理することが可能となる。
また、仮に、ストリームデータの入力速度が想定の範囲を超えて増加した場合でも、処理ノードの数を増やすことによって、ストリームデータの入力速度の増加に追随することが可能となる。
【００１６】
特許文献１に記載されている技術は、ネットワーク上を画像を伝送する装置において、通信途中で通信環境が変動しても、スループットを最適化できる画像伝送プロトコルの制御装置に関するものである。
この方式は、ＩＰネットワークにおける画像ファイル伝送プロトコル「ＳＶＦＴＰ（Ｓｗｉｆｔ  Ｖｅｒｙ  ｌａｒｇｅ  Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）プロトコル」を用いたものである。ＳＶＦＴＰプロトコルでは、コネクション数、初期ウインドウサイズ、パケットサイズなどのパラメータが用意されているが、従来はこれらのパラメータは通信開始以前に決定されるものであり、通信途中に変更することができなかった。
特許文献１記載の方式では、これらパラメータを通信環境（ＣＰＵ負荷、ＩＰパケットロス率など）の変動に応じて変化させることにより、画像ファイルの伝送スループットを向上させることができる。
【特許文献１】特開２００３−３２３１６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
上記のようなストリームデータを並列に処理する処理装置においては、１レコード単位で制御ノードから処理ノードへストリームデータをデータ転送手段を通して転送したり、処理結果を処理ノードから制御ノードに転送したりする場合に、転送するデータのサイズが小さいとデータ転送手段の転送効率が低下する。その結果、１レコード辺りの処理時間が増加し、全体のスループット低下につながるという課題がある。
また、データ転送手段上のデータ転送量を削減するために制御ノード〜処理ノード間の転送データを圧縮する場合、１レコード単位の小さいサイズのデータを圧縮しても圧縮効率が低くなるという課題がある。
【００１８】
特許文献１の方式は、ＳＶＦＴＰプロトコルにおいて通信途中で通信環境が変動しても、処理装置の処理負荷を考慮しつつスループットを最適化することにあり、処理を並列化して処理能力を向上させることについてや、並列化することにより生じる処理のオーバーヘッド増加に対応することができない。
【００１９】
本発明は、例えば、上記のような問題を解決することを主な目的としており、ストリームデータの並列処理環境において、処理ノードと制御ノード間の転送効率を改善し、処理のスループットを向上させることを主な目的とする。
【課題を解決するための手段】
【００２０】
本発明に係る制御ノード装置は、
それぞれがデータ処理を行う複数の処理ノード装置に接続された制御ノード装置であって、
データに許容される許容遅延時間の範囲内の特定の時間を蓄積時間として設定する時間設定部と、
データ処理の対象となるデータを入力するデータ入力部と、
前記データ入力部によるデータ入力が開始されてから前記時間設定部により設定された蓄積時間の間、前記データ入力部によりデータが入力される度に入力されたデータを蓄積し、蓄積時間の経過時に蓄積しているデータを出力するデータ蓄積部と、
前記データ蓄積部に蓄積されているデータに対するデータ処理を行わせる処理ノード装置を前記複数の処理ノード装置の中から選択する処理ノード選択部と、
前記データ蓄積部からのデータを前記処理ノード選択部により選択された選択処理ノード装置に対して送信する通信部とを有することを特徴とする。
【発明の効果】
【００２１】
本発明によれば、許容遅延時間の範囲内で蓄積時間を設定し、蓄積時間の間データを蓄積した後に制御ノード装置から処理ノード装置に対してデータを送信するため、処理ノード装置と制御ノード装置間の転送効率を向上させ、処理のスループットを向上させることが可能となる。
【発明を実施するための最良の形態】
【００２２】
実施の形態１．
本実施の形態に係るストリームデータ処理装置は、図１に示した構成によって、ストリームデータを並列に処理することを特徴とする。
つまり、上記したように、制御ノード装置１０１（以下、単に制御ノードともいう）と複数の処理ノード装置１０３〜１０５（以下、単に処理ノードともいう）がデータ転送手段１０６で接続されている構成において、制御ノードが複数の処理ノードにストリームデータの処理を行わせることによりストリームデータの並列処理を実現する。
【００２３】
図２は、実施の形態１によるストリームデータ処理装置の制御ノード装置１０１の構成例を示す構成図である。
【００２４】
図２において、ストリームデータ処理装置の制御ノード１０１は、処理条件入力部２０９、処理条件設定部２１０、応答制約時間設定部２０５、ストリームデータ入力部２０２、ストリームデータ蓄積部２０３、蓄積時間計測部２０６、処理ノード監視部２０７、処理ノード選択部２０４、通信制御部２０８、処理結果集計部２１２、ストリームデータ出力部２１１、処理結果出力部２１３から構成される。
【００２５】
ストリームデータ入力部２０２（データ入力部）は、外部のネットワークと接続されており、データ処理の対象となるストリームデータを入力する。
応答制約時間設定部２０５（時間設定部）は、ストリームデータに許容される応答制約時間（許容遅延時間）の範囲内の特定の時間をストリームデータの蓄積時間として設定する。
ストリームデータ蓄積部２０３（データ蓄積部）は、ストリームデータ入力部２０２によるストリームデータの入力が開始されてから応答制約時間設定部２０５により設定された蓄積時間の間、ストリームデータ入力部２０２によりストリームデータが入力される度に入力されたストリームデータを蓄積し、蓄積時間の経過時に蓄積しているストリームデータを出力する。
蓄積時間計測部２０６は、応答制約時間設定部２０５により設定された蓄積時間を計測する。
処理ノード監視部２０７は、複数の処理ノード装置１０３〜１０５を監視し、データ処理を行っていない休止状態の処理ノード装置を検出する。
処理ノード選択部２０４は、ストリームデータ蓄積部２０３に蓄積されているストリームデータに対するデータ処理を行わせる処理ノード装置を複数の処理ノード装置１０３〜１０５の中から選択する。例えば、処理ノード監視部２０７により休止状態と判断された処理ノード装置を選択する。
通信制御部２０８（通信部）は、データ転送手段１０６で全ての処理ノード装置と接続されており、制御ノード〜処理ノード間の通信を司る。また、通信制御部２０８は、ストリームデータ蓄積部２０３からのストリームデータを処理ノード選択部２０４により選択された処理ノード装置に対して送信する。
処理条件入力部２０９は、処理ノード装置１０３〜１０５にストリームデータの処理を行わせる際の処理条件を、例えば、オペレータから入力する。
処理条件設定部２１０は、処理条件入力部２０９により入力された処理条件を処理ノード装置上の処理に適した形式に変換し、通信制御部２０８及びデータ転送手段１０６を介して処理ノード装置１０３〜１０５にセットする。
処理結果集計部２１２は、処理ノード装置から転送されたストリームデータに対する処理結果を編集・集計等する。
ストリームデータ出力部２１１は、外部のネットワークに接続されており、処理結果集計部２１２により編集・集計等された結果を外部のネットワークに対して出力する。
処理結果出力部２１３はディスプレイ装置などの出力装置に接続されており、処理結果集計部２１２により編集・集計等された結果を出力装置に対して出力する。
【００２６】
本実施の形態に係る制御ノード装置１０１の動作の要旨を説明する。
複数の処理ノード装置１０３〜１０５に接続された制御ノード装置１０１において、応答制約時間設定部２０５が、ストリームデータに許容される遅延時間である応答制約時間をストリームデータの蓄積時間として設定し、ストリームデータ入力部２０２がデータ処理の対象となるストリームデータを入力すると、ストリームデータ蓄積部２０３が、蓄積時間の間、ストリームデータが入力される度に入力されたストリームデータを蓄積し、蓄積時間の経過時に蓄積しているストリームデータを出力する。
また、処理ノード選択部２０４が、ストリームデータ蓄積部２０３に蓄積されているストリームデータに対するデータ処理を行わせる処理ノード装置を複数の処理ノード装置の中から選択し、通信制御部２０８が、ストリームデータ蓄積部２０３からのストリームデータを選択された処理ノード装置に対して送信する。
【００２７】
次に、本実施の形態及び以下に述べる実施の形態に示す制御ノード装置１０１、処理ノード装置１０３〜１０５のハードウェア構成例について説明する。
図８は、本実施の形態及び以下に述べる実施の形態に示す制御ノード装置１０１、処理ノード装置１０３〜１０５のハードウェア資源の一例を示す図である。
図８において、制御ノード装置１０１、処理ノード装置１０３〜１０５のそれぞれは、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。
通信ボード９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００２８】
通信ボード９１５は、図１に示すように、ネットワークに接続されている。例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００２９】
上記プログラム群９２３には、以下に述べる説明において「〜部」、「〜手段」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」、「〜の評価結果」等として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリになどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示・抽出のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下で説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００３０】
また、以下に述べる説明において「〜部」、「〜手段」として説明するものは、「〜回路」、「〜装置」、「〜機器」、「手段」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」、「〜手段」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」、「〜手段」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」、「〜手段」の手順や方法をコンピュータに実行させるものである。
【００３１】
このように、本実施の形態及び以下に述べる実施の形態に示す制御ノード装置１０１、処理ノード装置１０３〜１０５は、それぞれ、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス等、出力装置たる表示装置、通信ボード等を備えるコンピュータであり、上記したように「〜部」、「〜手段」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【００３２】
図６は、実施の形態１によるストリームデータの処理の流れである。実施の形態１によるストリームデータ処理装置の動作を説明する。
【００３３】
フィルタリングの処理の実行する場合、初めにステップＳ６０１でフィルタリングの条件を処理条件入力部２０９に入力する。
処理条件入力部２０９に処理条件が入力されたら、その処理条件を処理条件設定部２１０において照合に適した形式に変換して、通信制御部２０８を通して全ての処理ノードに処理条件をセットする。
【００３４】
また、ストリームデータの入力を受け付ける前に、ステップＳ６０２で応答制約時間設定部２０５が応答制約時間をストリームデータ蓄積部２０３における蓄積時間として設定する（時間設定ステップ）。応答制約時間とは、ストリームデータの処理を行うことによって、どの程度までストリームデータの伝送の遅延を許容するかという指標（許容遅延時間）である。
設定された蓄積時間（＝応答制約時間）は、ストリームデータ蓄積部２０３及び蓄積時間計測部２０６に記憶される。
【００３５】
続いて、ステップＳ６０３において、ストリームデータの入力を受け付ける（データ入力ステップ）。
このとき、次に発生したイベントによって、処理の流れが変化する（Ｓ６０４）。
ステップＳ６０４でストリームデータ入力部２０２からストリームデータが入力されると、そのストリームデータはステップＳ６０５でストリームデータ蓄積部２０３に蓄積される（データ蓄積ステップ）。
ストリームデータ蓄積部２０３は、ストリームデータを蓄積するのに十分な主記憶または二次記憶装置を備えており、ストリームデータを蓄積することができる。
蓄積時間計測部２０６は時間を計測する機能を備えており、ストリームデータ蓄積部２０３に最初のストリームデータが入力されると、ストリームデータの蓄積を開始してからの時間（ストリームデータ蓄積時間）の計測を開始する。以後、ストリームデータ入力部２０２にストリームデータが入力されるたびに、入力されたストリームデータがストリームデータ蓄積部２０３に蓄積される。
【００３６】
ステップＳ６０４で、蓄積時間計測部２０６で計測しているストリームデータ蓄積時間が設定された蓄積時間、すなわち応答制約時間になったら、ストリームデータ蓄積部２０３は、蓄積したストリームデータをまとめて処理ノード選択部２０４に転送する。
次に、ステップＳ６０６で、処理ノード監視部２０７が休止状態の処理ノードを検出し、処理ノード選択部２０４が休止状態の処理ノードの中から蓄積されたストリームデータの処理を行わせる処理ノードを選択する（処理ノード選択ステップ）、
処理ノード監視部２０７は、各処理ノードがストリームデータの処理中の実行状態であるか、処理を実行していない休止状態にあるかを監視している。処理ノードは、処理ノードにストリームデータが転送されてから処理結果を制御ノードに転送するまでが実行状態、ストリームデータが転送されるまでが休止状態と見なすことができる。
処理ノード選択部２０４は、ストリームデータが入力されると、処理ノード監視部２０７に休止状態の制御ノードの有無を問い合わせ、ステップＳ６０６で通信制御部２０８を通して休止状態の処理ノードの１つをストリームデータの処理を行わせる処理ノードとして選択する。
次に、ステップＳ６０７において、通信制御部２０８が、処理ノード選択部２０４により選択された処理ノードに対して、蓄積されたストリームデータを転送する（通信ステップ）。そして、蓄積時間計測部２０６は初期化される。蓄積時間計測部２０６は、次のストリームデータが入力されると、再びストリームデータ蓄積時間の計測を開始する。
【００３７】
ステップＳ６０８で、選択された処理ノードは、入力されたストリームデータに対して、指定された処理条件に従って処理を行う。
図７は、処理ノードにおけるストリームデータの処理の流れを示したものである。
処理ノードは、ステップＳ７０１でストリームデータが入力されると、ステップＳ７０２で入力された複数レコードのストリームデータの中から、先頭の１レコードを取得する。
次にステップＳ７０３で、処理条件に従って取得したストリームデータの１レコードを処理する。１レコードの処理結果は、専用の記憶領域に記憶する。
ステップＳ７０４で、入力された全てのレコードを処理したか否かを判定し、未処理のレコードが存在する場合は、ステップＳ７０２に戻って次のレコードを取得する。入力された全てのストリームデータに対して処理を終えている場合は、ステップＳ７０５で処理結果をまとめて制御ノードに転送する。
【００３８】
処理ノードから制御ノードに転送された処理結果は、通信制御部２０８を通して処理結果集計部２１２に送られる。
ステップＳ６０９で、処理結果集計部２１２は、指定された処理条件に従って、複数の処理ノードから上がった処理結果を集計する。例えば、処理ノード選択部２０４において、ストリームデータを転送した順序と転送先の処理ノードとを対にして記憶しておけば、ストリームデータを転送した順序で、処理ノードの処理結果を並べることで、ストリームデータの順序を保つことができる。
集計した処理結果は、ストリームデータとしてストリームデータ出力部２１１からネットワークに出力したり、処理結果出力部２１３から出力装置に出力したりする。
また、処理結果に応じて、入力のストリームデータをそのままストリームデータ出力部２１１から出力するようにしても良い。
以降、ストリームデータの入力がなくなるまで、ステップＳ６０４〜Ｓ６１０を繰り返す。ここで、「ストリームデータの入力がなくなる」とは、電子メールの送受信サービスが停止する、センサによる測定を打ち切る、などの要因により、ストリームデータが発生しなくなる状況を意味する。
【００３９】
ストリームデータの単位時間の転送量は常に一定とは限らない。
ストリームデータ処理装置のスループットの上限と比較してストリームデータのストリームデータ入力部２０２への入力速度（単位時間当たりのストリームデータの入力量）が低くなるに従って、処理が割り当てられていない処理ノードが増加する。そこで、最小休止処理ノード数を設定するとともに、最小蓄積ストリームデータ量（バイト数、レコード数）を設定しておき、処理が割り当てられていない処理ノードの数が最小休止処理ノード数を超えていて、かつストリームデータ蓄積部２０３に蓄積されたストリームデータ量が最小蓄積ストリームデータ量を超えている場合には、応答制約時間を待たずに処理ノードにストリームデータを転送しても良い。
つまり、ストリームデータ蓄積部２０３は、処理ノード監視部２０７により検出された休止状態の処理ノード装置の数が所定の上限値を超え、蓄積しているストリームデータのデータ量が所定の下限値を超える場合に、蓄積時間の経過前であっても、ストリームデータの蓄積を停止し、蓄積しているストリームデータを出力し、蓄積しているストリームデータを処理ノードに転送するようにしてもよい。
【００４０】
ストリームデータの入力速度がさらに低下して、応答制約時間の範囲内で到着するストリームデータのレコード数が１以下など極めて少ないの場合がある。
この場合、ストリームデータ蓄積部２０３において応答制約時間まで蓄積してから処理するよりも、ストリームデータ蓄積部２０３で蓄積せずにそのまま処理ノードで処理した方が、処理結果の応答時間を短縮できる場合がある。
そこで、ストリームデータの入力速度の下限値を予め設定しておき、ストリームデータのストリームデータ入力部２０２への入力速度が、その設定値以下の場合には、ストリームデータ蓄積部２０３に蓄積せずに処理するようにしても良い。
また、そのような場合には、処理ノードへ転送せずに処理できるように、制御ノードにもストリームデータの処理機能を備えておき、制御ノード上で直接ストリームデータを処理するようにしても良い。
つまり、制御ノード装置１０１に、複数の処理ノード装置１０３〜１０５と同等のデータ処理を行うデータ処理部を設け、ストリームデータ入力部２０２におけるデータ入力速度が所定の値を下回る場合は、いずれの処理ノード装置にもデータを送信せず、データ処理部にデータ処理を行わせるようにしてもよい。
【００４１】
このようなストリームデータ処理装置の例として、電子メールのフィルタリング装置がある。電子メールのフィルタリング装置では、処理条件として指定された特定のキーワードによって電子メール中のテキスト情報を照合して、そのキーワードを含む電子メールがあった場合には、その電子メールの伝送を抑止すると共にその情報を出力装置に出力する。
【００４２】
電子メールのフィルタリング装置では、初めに処理条件として検出したいキーワード（固定文字列、正規表現パターンなど）や、そのキーワードが一定回数ヒットした場合にのみ伝送を抑止したい場合はその閾値を指定する。また、応答制約時間を「５秒」のように設定する。一般的に電子メールの場合、その伝送に秒単位の遅延があっても特に問題にはならない。
【００４３】
ストリームデータ入力部２０２に電子メールが入力されるようになると、ストリームデータ蓄積部２０３において、応答制約時間単位で電子メールを蓄積する。ストリームデータ蓄積部２０３に蓄積された１レコード以上の電子メールがまとまって処理ノードに転送されると、処理ノードは全ての電子メールに対して指定されたキーワードを含むか照合を行い、処理結果を制御ノードに転送する。電子メールのフィルタリング装置の場合、処理結果はキーワードを「含む」または「含まない」を意味するブール値の列と入力電子メールそのものであってもよいし、ヒット回数を表わす数値の列であっても良い。処理結果集計部２１２において電子メールの照合結果を集計するが、電子メールの場合は順序は厳密に守られなくても良い場合が一般的なので、処理ノードから転送された処理結果から順に出力してよい。
処理結果を出力する際には、電子メールに指定のキーワードが含まれていない場合には、入力の電子メールをそのまま出力する。電子メールに指定のキーワードが含まれていた場合には、当該電子メールを出力する代わりに伝送が抑止されたことを出力装置に出力する。
【００４４】
上記の動作の説明では、ストリームデータ蓄積部２０３におけるストリームデータの蓄積時間を、応答制約時間に等しくしたが、処理ノードにおける処理時間を考慮していなかった。そこで、予めある係数（値域０〜１）を設定しておき、応答制約時間に該係数を乗じた時間が経過した時点で、蓄積したストリームデータを処理ノードに転送するようにしても良い。さらに、応答制約時間からストリームデータの蓄積時間を引いた応答制約残時間を、ストリームデータと合わせて処理ノードに転送するようにしても良い。
この場合は、例えば、処理条件設定部２１０が、データ処理に許容される応答制約残時間（データ処理許容時間）を通知するメッセージ（データ処理許容時間通知）を生成し、通信制御部２０８が、ストリームデータとともに、処理条件設定部２１０により生成されたメッセージ（データ処理許容時間通知）を選択された処理ノード装置に対して送信するようにしてもよい。
【００４５】
処理ノードの処理結果をデータ転送手段を通して転送する場合も、少ないレコード単位で処理結果を転送するとデータ転送手段上のデータ転送効率が低下する。
一方で、処理ノードに入力された全てのストリームデータに対する処理が終わるまで処理結果の転送を保留しておくと、全ての処理結果が揃うまでに応答制約時間を過ぎてしまう場合が発生する。そこで、処理ノードにおいて、ストリームデータが入力されてからの処理時間を計測しておき、応答制約残時間と等しくなった時点で処理された処理結果だけを先行して制御ノードに転送するようにしても良い。
【００４６】
ストリームデータの処理には、１レコード単位で処理するものだけではなく、時間範囲やレコード数で区切って複数のレコード集合に対する処理を求められるものもある。例えば、「過去１０秒間に到着したストリームデータに対して集計した結果を、１０秒間隔で出力する。」「前後１００レコードのストリームデータに対して集計した結果を出力する。」のような処理を行うものがある。このような処理条件が指定された場合、ストリームデータ蓄積部２０３において、応答制約時間に加えてこの複数レコードの区切りも考慮してストリームデータを蓄積するように構成しても良い。
つまり、ストリームデータ蓄積部２０３は、蓄積時間の経過前であっても、一つのデータ処理を構成する全てのストリームデータが蓄積された時点でストリームデータの蓄積を停止し、蓄積しているデータを出力し、蓄積しているストリームデータを処理ノードに転送するようにしてもよい。
【００４７】
処理条件が、時間範囲でストリームデータを区切って複数のレコード集合に対する処理を行う場合、１または複数のレコード集合を蓄積した時点で、応答制約時間の残り時間が上記時間範囲よりも短い場合は、その時点で蓄積できたストリームデータを処理ノードに転送して処理を実行するようにしても良い。レコード数でストリームデータを区切って複数のレコード集合に対する処理を行う場合、応答制約時間に達した時点で１または複数のレコード集合と１つのレコード集合に満たない１または複数のレコードがあった場合、レコード集合のみを処理ノードに転送して処理を実行するようにしても良い。
つまり、ストリームデータ蓄積部２０３は、蓄積時間の経過前であっても、一または複数のデータ処理を構成するストリームデータの全てが蓄積された時点でストリームデータの蓄積を停止し、蓄積しているストリームデータを処理ノードに転送するようにしてもよい。
【００４８】
以上のように、実施の形態１によれば、ストリームデータ処理装置に入力されたストリームデータを、ある指定された応答制約時間の範囲内で蓄積し、蓄積された複数レコードのストリームデータを処理ノードに転送する。
サイズの小さいデータをデータ転送手段を通して転送した場合、データの転送効率が低下するが、複数レコードをまとめてデータ転送手段を通して転送することにより、データの転送効率を向上させることができる。
また、ストリームデータを複数レコード単位で処理することにより、このデータ転送手段の転送時間を初めとした処理のオーバーヘッドを削減することができる。
さらに、蓄積した複数レコードのストリームデータを転送する際には、転送先にはその時点で処理が割り当てられていない処理ノードを選択することにより、ストリームデータを途切れることなく処理することができる。
これらの効果により、全体のストリームデータのスループット（単位時間当たりに処理可能なストリームデータの量）を向上させることができる。
【００４９】
また、ストリームデータの入力速度が低下して、処理が割り当てられていない処理ノード数と蓄積されたストリームデータ量が一定値を超えた場合には、応答制約時間に達する前にストリームデータを処理することで応答時間を短縮することができる。
ストリームデータの入力速度がさらに低下して、ストリームデータの入力速度がある設定値よりも低い場合には、ストリームデータを蓄積せずに処理することで、処理の応答時間を短縮することができる。
【００５０】
また、データ転送手段上のデータ転送量を削減するために、入力ストリームデータや処理結果を圧縮する場合には、１レコード単位で圧縮するよりも、処理ノードに転送する複数レコード分をまとめて圧縮する方が、圧縮効率を高めることができるという効果もある。
【００５１】
また、処理ノード上の処理中に応答制約時間を経過してしまいそうな場合には、その時点で処理が完了した処理結果を制御ノードに転送することで、処理の応答時間を短縮することができる。
【００５２】
このような、実施の形態１のストリームデータ処理装置では、ストリームデータの最大の入力速度が増加し、ストリームデータ処理の最大スループットを上回ってしまうような場合には、処理ノードの数を増やすことで、ストリームデータの入力速度の増加に追随することができる。
【００５３】
実施の形態１のストリームデータ処理装置の制御ノードと処理ノードは、それぞれ異なる計算機であってもよいし、１つの計算機上の異なるプロセッサまたはプロセスであっても良い。
データ転送手段１０６は、制御ノードと処理ノードがそれぞれ異なる計算機である場合は、ＬＡＮなどの通信手段でよい。また制御ノードと処理ノードの機能が同一の計算機上にある場合は、それぞれを電気的につなぐバスのようなものでよい。
また、制御ノードの各機能部は、それぞれが個別の専用のプロセッサによって実現されても良いし、１乃至複数の汎用プロセッサ上で動作するソフトウェアによって実現されても良い。また、制御ノード及び処理ノードに２次記憶装置を備えて、入力ストリームデータや処理結果、処理の履歴などを記憶するようにしても良い。
【００５４】
本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
（１）１台の制御ノードとデータの転送手段で接続された１台以上の処理ノードから構成される。
（２）処理ノードは、設定された条件に従ってストリームデータを処理し、その結果を出力する機能を備える。
（３）制御ノードは、ストリームデータの入出力機能と、時間の計測機能と、ストリームデータの蓄積機能と、処理ノードとの通信機能と、処理ノードの監視機能を備える。
（４）制御ノードには、ストリームデータの入力に先立って応答制約時間が設定されており、ストリームデータが入力されるとその応答制約時間の範囲内でストリームデータを蓄積し、蓄積したストリームデータを上記データの転送手段を通して処理ノードに転送する。処理ノードは設定された条件に従ってストリームデータを処理し、その処理結果をデータの転送手段を通して制御ノードに転送する。制御ノードは、個々の処理ノードから転送された処理結果を集計し、ストリームデータとして出力する。
（５）制御ノードは各処理ノードを監視しており、制御ノードが蓄積したストリームデータを処理ノードに転送する際には、休止状態の処理ノードに転送する。
【００５５】
また、本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
休止状態の処理ノードの数が予め設定した上限値を超えていて、かつ蓄積したストリームデータの量が予め設定した下限値を超えた場合に、蓄積したストリームデータを処理ノードに転送する。
【００５６】
また、本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
処理条件が１以上の複数レコードのストリームデータ集合にまたがった集計処理を行うものであった場合に、ストリームデータを処理ノードに転送する時点で蓄積されているストリームデータ集合だけを処理ノードに転送する、
【００５７】
また、本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
制御ノードに最小ストリームデータ入力速度を設定しておき、ストリームデータの入力速度がその最小ストリームデータ入力速度未満であった場合に、ストリームデータを蓄積せずに処理ノードに転送する。
【００５８】
また、本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
制御ノード上に処理ノードと同等のストリームデータの処理機能を備え、ストリームデータを蓄積せずに処理する場合には、制御ノード上のストリームデータの処理機能によって処理する。
【００５９】
また、本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
制御ノードは処理時間測定機能を備える。制御ノードは蓄積したストリームデータを処理ノードに転送する際に、応答制約残時間の情報を転送する。処理ノードはストリームデータが転送されてからの処理時間を計測し、処理時間が応答制約残時間を超えた場合に、既に確定している処理結果を制御ノードに転送する。
【００６０】
実施の形態２．
実施の形態１のストリームデータ処理装置では、ストリームデータの蓄積時間にストリームデータの処理時間を考慮していないため、厳密に応答制約時間の範囲内で処理結果を出力することはできなかった。ストリームデータの種類や処理によっては、応答制約時間が厳密に守られる必要がないものもあるため、実施の形態１のストリームデータ処理装置でも十分な場合もあるが、応答時間を厳密に制御したい場合には適していなかった。
実施の形態２のストリームデータ処理装置は、ストリームデータ蓄積部におけるストリームデータの蓄積時間に、ストリームデータの処理時間の推定値を考慮することにより、指定された応答制約時間で処理結果を出力できるようにしたものである。
【００６１】
図３に実施の形態２のストリームデータ処理装置の構成を示す。
実施の形態２のストリームデータ処理装置は、図２に示した実施の形態１のストリームデータ処理装置に処理時間算出部３０８を追加した構成になっている。
【００６２】
処理時間算出部３０８は、ストリームデータ蓄積部３０３に蓄積されているストリームデータのデータ量に基づいて、ストリームデータ蓄積部３０３に蓄積されているストリームデータに対して処理ノード装置が行うデータ処理の予測処理時間を算出し、応答制約時間（許容遅延時間）と予測処理時間とから蓄積時間を設定する。
本実施の形態では、処理時間算出部３０８が時間設定部の例となる。
【００６３】
実施の形態２のストリームデータ処理装置の動作を説明する。
実施の形態２のストリームデータ処理装置の動作は、大部分において実施の形態１のストリームデータ処理装置と同じであるため、相違点であるストリームデータ蓄積部３０３にのみ着目して説明する。
【００６４】
ストリームデータ蓄積部３０３においてストリームデータの蓄積時間が以下の条件を満たす範囲でストリームデータを蓄積する。
ストリームデータ蓄積時間≦応答制約時間−蓄積されたレコードの処理時間
・・・（式１）
【００６５】
次に、蓄積されたレコードの処理時間を算出する手段を示す。
レコードの処理時間は、処理時間算出部３０８によって算出される。
【００６６】
処理ノードにおける１レコードのストリームデータの処理時間が、ストリームデータのサイズに比例する処理エンジンを備えていた場合、ストリームデータのサイズをＳとおくと、１レコードの処理時間は次のように表わすことができる。
１レコードの処理時間＝ｋ×Ｓ＋ｃ・・・（式２）
ここで、ｋが比例定数、ｃは処理時間に固定的に含まれる定数とし、既知であるとする。この時、処理ノードに転送されたストリームデータ全体の処理に要する時間は以下のようになる。
【００６７】
【数１】
0004528273.tif 000002
【００６８】
Ｎは蓄積されたレコードの数とする。
【００６９】
データ転送手段上のデータ転送時間は、転送するデータがあるまとまったサイズ以上であった場合は、転送するデータサイズに比例すると見なすことができる。よって、式２〜３’の比例定数には、制御ノード〜処理ノード間のデータ転送に関する成分を含んでいても良い。
比例定数ｋ＝ｋｐ＋ｋＴ                    ・・・（式４）
ｋｐ：処理ノード上の処理時間に関わる比例定数
ｋＴ：ネットワーク上のデータ転送時間に関わる比例定数
【００７０】
実施の形態１で示した電子メールのフィルタリング装置など、ストリームデータのテキスト情報をキーワードなどで照合するストリームデータの処理装置において、処理時間がストリームデータのサイズに比例するような処理ノード上の処理エンジンとして、ＤＦＡ（Ｄｅｔａｒｍｉｎｉｓｔｉｃ  Ｆｉｎｉｔｅ  Ａｕｔｏｍａｔｏｎ：決定性有限オートマトン）方式の文字列照合アルゴリズムを基にしたものの場合や、ＡＣ（Ａｈｏ−Ｃｏｒａｓｉｃｋ）方式の文字列照合アルゴリズムを基にしたものである場合などが挙げられる。これらの処理エンジンでは、処理時間は入力された電子メール（テキスト）のサイズ（バイト数または文字数）に比例する。
【００７１】
ここでは、処理時間が処理するストリームデータのサイズに比例する場合について示したが、比例する場合以外でも処理時間の算出方法さえ既知であれば、同様に処理時間を算出し式１に適用することは可能である。
【００７２】
上記のような処理エンジンで、比例定数ｋやが処理条件のサイズに比例する場合がある。処理条件のサイズをＲ、比例定数をｋｑとすると、処理時間の比例定数は次のように表わすことができる。
比例定数ｋ＝ｋｑ×Ｒ                ・・・（式５）
このような処理エンジンの場合、処理条件設定部３１１が処理条件を処理ノードにセットすると同時に、処理条件のサイズの情報を処理時間算出部３０８に提供し、処理時間算出部３０８は提供された処理条件のサイズから処理時間の比例定数を算出するように構成しても良い。
つまり、処理条件設定部３１１が、処理ノード装置におけるデータ処理に対する処理条件を設定するとともに、処理時間算出部３０８が、処理条件設定部３１１により設定された処理条件に基づいて、ストリームデータ蓄積部３０３に蓄積されているストリームデータに対して処理ノード装置が行うデータ処理の予測処理時間を算出し、応答許容時間（許容遅延時間）と予測処理時間とから蓄積時間を設定するようにしてもよい。
【００７３】
実施の形態１で示した電子メールのフィルタリング装置など、ストリームデータのテキスト情報をキーワードなどで照合するストリームデータの処理装置において、処理時間の比例定数が、処理条件のサイズに比例するような処理ノードの処理エンジンとして、ＮＦＡ（Ｎｏｎ−ｄｅｔａｒｍｉｎｉｓｔｉｃ  Ｆｉｎｉｔｅ  Ａｕｔｏｍａｔｏｎ：非決定性有限オートマトン）方式の文字列照合アルゴリズムを基にしたものなどが挙げられる。この処理エンジンでは、正規表現キーワードによる照合が可能で、処理時間の比例定数は処理条件のサイズ（処理条件に含まれるユニークな文字数）に比例する。
【００７４】
ここでは、処理時間の比例定数が処理条件のサイズに比例する場合について示したが、比例する場合以外でも比例定数の算出方法さえ既知であれば、同様に処理時間の比例定数を算出し、式２や３、３’に適用することは可能である。
【００７５】
ストリームデータ処理装置の処理エンジンで、比例定数ｋや、処理時間に固定で含まれる定数ｃが処理条件のサイズに依存して変化する場合、処理したストリームデータのサイズや、ストリームデータの処理時間、処理条件のサイズの統計情報を記録しておき、それらの統計情報を利用して処理時間の比例定数や固定で含まれる定数を動的に算出するように構成しても良い。
図４に、実施の形態２のストリームデータ処理装置を、統計情報を記録するようにしたときの構成を示す。
【００７６】
図４に示したストリームデータ処理装置は、図３のストリームデータ処理装置に統計情報管理部４１２を追加した構成をしている。
統計情報管理部４１２は、処理条件設定部４１１から処理条件のサイズの情報を取得したり、ストリームデータ蓄積部４０３から処理ノードに転送されたストリームデータのサイズを取得したり、処理結果集計部４１４に送られる情報から処理されたストリームデータのサイズや処理に要した時間の情報を取得したりして、それらの統計情報を記録する。
処理時間とストリームデータのサイズが比例することが既知であれば、処理されたストリームデータとそのストリームデータの処理に要した時間の統計情報から、最小自乗法などを用いて図５のように処理時間の比例定数や処理時間に固定で含まれる定数を算出することができる。そして、算出された各定数を処理時間算出部４０８におけるストリームデータの処理時間の算出に利用しても良い。
つまり、図４に示す構成において、統計情報管理部４１２が、各処理ノード装置においてデータ処理を行ったストリームデータのデータ量と当該データ量に対するデータ処理に要した実績処理時間とを示す統計情報（実績情報）を取得し、取得した統計情報を記憶し、処理時間算出部４０８が、統計情報管理部４１２に記憶されている統計情報に示されているデータ量と実績処理時間との関係に基づいて、予測処理時間を算出するようにしてもよい。
なお、図４の構成において、統計情報管理部４１２は実績情報記憶部の例である。
【００７７】
同様にして、処理時間の比例定数と処理条件のサイズや、処理時間に固定で含まれる定数と処理条件のサイズの統計情報から、それらの各定数を算出するための算出式を求めることができる。そして、その算出式を用いて各定数を算出し、ストリームデータの処理時間の算出に利用しても良い。
つまり、統計情報管理部４１２は、各処理ノード装置においてデータ処理を行った際の処理条件と当該処理条件によるデータ処理に要した実績処理時間とを示す統計情報（実績情報）を取得し、処理時間算出部４０８が、統計情報管理部４１２に記憶されている統計情報に示されている処理条件と実績処理時間との関係に基づいて、予測処理時間を算出するようにしてもよい。
【００７８】
ストリームデータの単位時間の転送量は常に一定とは限らないため、ストリームデータのストリームデータ入力部３０２への入力速度（単位時間当たりのストリームデータの入力量）が低く、入力速度がストリームデータの処理速度よりも遥かに低い場合がある。
ここで、ストリームデータの処理速度とは、ストリームデータの処理時間がストリームデータのサイズに比例する処理装置の場合、処理時間の比例定数の逆数に相当する。
この場合、ストリームデータ蓄積部３０３において応答制約時間まで蓄積してから処理するよりも、ストリームデータ蓄積部３０３で蓄積せずにそのまま処理ノードで処理した方が、処理結果の応答時間が短縮できる場合がある。
そこで、ある係数（値域０〜１）を予め設定しておき、ストリームデータのストリームデータ入力部３０２への入力速度が、ストリームデータの処理速度に該係数を乗じた値よりも低い場合に、ストリームデータ蓄積部３０３に蓄積せずに処理するようにしても良い。また、そのような場合には、処理ノードへ転送せずに処理できるように、制御ノードにもストリームデータの処理機能を備えておき、制御ノード上で直接ストリームデータを処理するようにしても良い。
つまり、ストリームデータ入力部３０２におけるデータ入力速度が、複数の処理ノード装置におけるデータ処理速度に所定の係数を乗じた値を下回る場合は、ストリームデータ蓄積部３０３にデータを蓄積しないようにすることが可能である。
また、制御ノード装置１０１に、複数の処理ノード装置１０３〜１０５と同等のデータ処理を行うデータ処理部を設け、ストリームデータ入力部３０２におけるデータ入力速度が所定の値を下回る場合は、いずれの処理ノード装置にもデータを送信せず、データ処理部にデータ処理を行わせるようにしてもよい。
【００７９】
以上のように、実施の形態２によれば、ストリームデータ処理装置に入力されたストリームデータを、ある指定された応答制約時間の範囲内で蓄積し、蓄積された複数レコードのストリームデータを処理ノードに転送する。
ストリームデータを蓄積する際には、応答制約時間から蓄積したストリームデータの処理時間を差し引いた時間の範囲内で蓄積することにより、より応答制約時間内に処理結果を出力できるように制御することが可能になる。
ストリームデータの処理時間は、処理するストリームデータのサイズとの相関関係が既知であれば、そこから算出することが可能である。
【００８０】
また、ストリームデータのサイズと、そのストリームデータの処理時間、処理条件のサイズなどの統計的な情報を蓄積しておき、それらの情報を利用して処理時間を算出するための算出式を動的に導くことで、処理時間の算出精度を向上させることができる。
【００８１】
また、ある係数（０〜１）を予め設定しておき、ストリームデータの入力速度が、ストリームデータの処理速度に該係数を乗じた値よりも低い場合には、ストリームデータを蓄積せずに直接処理することにより、ストリームデータの処理の応答時間を短縮することができる。
【００８２】
ここでは、ストリームデータを複数の処理ノードで並列に処理することを前提に示してきたが、ストリームデータを一定時間の範囲内で蓄積して処理した方が、逐次的に処理した場合と比べて利点がある場合は、本発明の処理方式を適用することは十分可能である。
【００８３】
本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
ストリームデータ蓄積機能に、ストリームデータの処理時間を算出する機能を備える。ストリームデータの処理時間を、１レコードのストリームデータのサイズ、処理条件のサイズから算出する手段が既知である処理エンジンを備えた処理ノードが接続されている場合に、制御ノードにおいては、入力ストリームデータのサイズと処理条件のサイズから上記算出手段によって計算される処理時間の総和が応答制約時間未満となる範囲でストリームデータを蓄積し、蓄積したストリームデータを処理ノードに転送する。
【００８４】
また、本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
処理したストリームデータのサイズと、処理ノードにおけるストリームデータの処理に要した時間と、処理条件のサイズを統計情報として記録する機能を備え、それら統計情報から処理ノードにおけるストリームデータの処理時間を算出する算出式のパラメータや定数を決定する。
【００８５】
また、本実施の形態では、次のような要素を備えたストリームデータ処理装置について説明した。
制御ノードに最小ストリームデータ入力速度を算出するための係数を設定しておき、ストリームデータの入力速度が、ストリームデータ処理速度に上記係数を乗じた速度未満あった場合に、ストリームデータを蓄積せずに処理ノードに転送する。
【図面の簡単な説明】
【００８６】
【図１】実施の形態１に係るストリームデータ並列処理装置の構成例を示す図。
【図２】実施の形態１に係る制御ノード装置の構成例を示す図。
【図３】実施の形態２に係る制御ノード装置の構成例を示す図。
【図４】実施の形態２に係る制御ノード装置の構成例を示す図。
【図５】実施の形態２に係るストリームデータのサイズと処理時間との関係を示す図。
【図６】実施の形態１に係る制御ノード装置及び処理ノード装置の動作例を示すフローチャート図。
【図７】実施の形態１に係る処理ノード装置の動作例を示すフローチャート図。
【図８】実施の形態１、２に係る制御ノード装置及び処理ノード装置のハードウェア構成例を示す図。
【符号の説明】
【００８７】
１０１  制御ノード装置、１０２  ネットワーク、１０３  処理ノード装置、１０４  処理ノード装置、１０５  処理ノード装置、１０６  データ転送手段、２０２  ストリームデータ入力部、２０３  ストリームデータ蓄積部、２０４  処理ノード選択部、２０５  応答制約時間設定部、２０６  蓄積時間計測部、２０７  処理ノード監視部、２０８  通信制御部、２０９  処理条件入力部、２１０  処理条件設定部、２１１  ストリームデータ出力部、２１２  処理結果集計部、２１３  処理結果出力部、３０２  ストリームデータ入力部、３０３  ストリームデータ蓄積部、３０４  処理ノード選択部、３０５  通信制御部、３０６  応答制約時間設定部、３０７  蓄積時間計測部、３０８  処理時間算出部、３０９  処理ノード監視部、３１０  処理条件入力部、３１１  処理条件設定部、３１２  ストリームデータ出力部、３１３  処理結果集計部、３１４  処理結果出力部、４０２  ストリームデータ入力部、４０３  ストリームデータ蓄積部、４０４  処理ノード選択部、４０５  通信制御部、４０６  応答制約時間設定部、４０７  蓄積時間計測部、４０８  処理時間算出部、４０９  処理ノード監視部、４１０  処理条件入力部、４１１  処理条件設定部、４１２  統計情報管理部、４１３  ストリームデータ出力部、４１４  処理結果集計部、４１５  処理結果出力部。
【図１】
0004528273.tif 000003
【図２】
0004528273.tif 000004
【図３】
0004528273.tif 000005
【図４】
0004528273.tif 000006
【図５】
0004528273.tif 000007
【図６】
0004528273.tif 000008
【図７】
0004528273.tif 000009
【図８】
0004528273.tif 000010