(57)【特許請求の範囲】
【請求項１】
処理部とインタフェース部を備えた計算機により実行されるストリームデータ処理における性能保証方法であって，
前記ストリームデータ処理に対する、処理性能の異なる複数の実行方式を備えておき、
前記処理部は、
前記インタフェース部を介して受信した前記入力データに対し，前記ストリームデータ処理を実行する際に、未処理の前記入力データの量から性能値を予測し、
予測した前記性能値と要求性能値に基づき、前記要求性能値を満たす前記実行方式を決定し、
決定した前記実行方式に切替えて前記ストリームデータ処理を実行し、
得られた処理結果を出力データとして前記インタフェース部に出力し、
前記入力データ及び前記出力データの前記インタフェース部の通過時刻を取得し、
取得した前記通過時刻から未処理の前記入力データの量ごとの前記性能値を取得し、
取得した前記性能値と前記要求性能値を比較して評価し、
前記要求性能値を下回ったと評価したことを契機に前記実行方式を切替える、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項２】
処理部とインタフェース部を備えた計算機により実行されるストリームデータ処理における性能保証方法であって，
前記ストリームデータ処理に対する、処理性能の異なる複数の実行方式を備えておき、
前記処理部は、
前記インタフェース部を介して受信した前記入力データに対し，前記ストリームデータ処理を実行する際に、未処理の前記入力データの量から性能値を予測し、
予測した前記性能値と要求性能値に基づき、前記要求性能値を満たす前記実行方式を決定し、
決定した前記実行方式に切替えて前記ストリームデータ処理を実行し、
得られた処理結果を出力データとして前記インタフェース部に出力し、
取得した前記性能値が前記要求性能値を上回っている状態において，未処理の前記入力データの量が増加した場合に、前記実行方式を切替える決定をする、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項３】
請求項１に記載のストリームデータ処理における性能保証方法であって、
前記処理部は、
保持された過去の性能値と、未処理の前記入力データの量を比較し，前記要求性能値を満たす前記実行方式に切替える決定をする、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項４】
請求項３に記載のストリームデータ処理における性能保証方法であって、
前記処理部は、
前記実行方式の切替えに必要となる切替え時間と前記過去の性能値を合計し，その合計値が前記要求性能値を満たす前記実行方式に切替える決定をする、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項５】
請求項１に記載のストリームデータ処理における性能保証方法であって、
前記処理部は、
前記出力データの演算精度が、前記インタフェース部より入力される要求精度を満たすか否かを評価し、
予測した前記性能値が前記要求性能値を満たすか否か、及び前記出力データの演算精度が前記要求精度を満たしているかを評価し、
当該評価結果を元に、前記要求性能値と前記要求精度の双方を満たす実行方式に切替える、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項６】
請求項１に記載のストリームデータ処理における性能保証方法であって、
前記処理部は、
前記ストリームデータ処理において，単一，もしくは複数のオペレータで複数の前記実行方式の変更点が存在する場合に，前記出力データの演算精度を基準として，当該演算精度で最も性能の高い前記実行方式の組を決定する、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項７】
請求項２に記載のストリームデータ処理における性能保証方法であって、
前記処理部は、
保持された過去の性能値と、未処理の前記入力データの量を比較し，前記要求性能値を満たす前記実行方式に切替える決定をする、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項８】
請求項７に記載のストリームデータ処理における性能保証方法であって、
前記処理部は、
前記実行方式の切替えに必要となる切替え時間と前記過去の性能値を合計し，その合計値が前記要求性能値を満たす前記実行方式に切替える決定をする、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項９】
請求項２に記載のストリームデータ処理における性能保証方法であって、
前記処理部は、
前記出力データの演算精度が、前記インタフェース部より入力される要求精度を満たすか否かを評価し、
予測した前記性能値が前記要求性能値を満たすか否か、及び前記出力データの演算精度が前記要求精度を満たしているかを評価し、
当該評価結果を元に、前記要求性能値と前記要求精度の双方を満たす実行方式に切替える、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項１０】
請求項２に記載のストリームデータ処理における性能保証方法であって、
前記処理部は、
前記ストリームデータ処理において，単一，もしくは複数のオペレータで複数の前記実行方式の変更点が存在する場合に，前記出力データの演算精度を基準として，当該演算精度で最も性能の高い前記実行方式の組を決定する、
ことを特徴とするストリームデータ処理における性能保証方法。
【請求項１１】
ストリームデータ処理における性能保証装置であって、
入力データを受信する入力データ受信部、
前記入力データに対するクエリ処理を実行する処理部、
前記処理部の実行結果を出力データとして出力するデータ送信部、
要求性能値が入力される要求入力部を備え、
前記処理部は、
前記クエリ処理に対する、処理性能の異なる複数の実行方式を備えておき、
前記入力データ受信部を介して受信した前記入力データに対し，前記クエリ処理を実行する際に、未処理の前記入力データの量から性能値を予測し、
予測した前記性能値に基づき、前記要求性能値を満たす前記実行方式を決定し、
決定した前記実行方式に切替えて前記ストリームデータに対する前記クエリ処理を実行し、
前記処理部の前記実行結果を前記データ送信部に出力し、
前記入力データの前記入力データ受信部、及び前記出力データの前記データ送信部の通過時刻を取得し、
取得した前記通過時刻から未処理の前記入力データの量ごとの前記性能値を取得し，取得した前記性能値と前記要求性能値を比較して評価し、前記要求性能値を下回っていると評価したことを契機に前記実行方式を切替える、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項１２】
ストリームデータ処理における性能保証装置であって、
入力データを受信する入力データ受信部、
前記入力データに対するクエリ処理を実行する処理部、
前記処理部の実行結果を出力データとして出力するデータ送信部、
要求性能値が入力される要求入力部を備え、
前記処理部は、
前記クエリ処理に対する、処理性能の異なる複数の実行方式を備えておき、
前記入力データ受信部を介して受信した前記入力データに対し，前記クエリ処理を実行する際に、未処理の前記入力データの量から性能値を予測し、
予測した前記性能値に基づき、前記要求性能値を満たす前記実行方式を決定し、
決定した前記実行方式に切替えて前記ストリームデータに対する前記クエリ処理を実行し、
前記処理部の前記実行結果を前記データ送信部に出力し、
取得した前記性能値が前記要求性能値を上回っている状態において，さらに未処理の前記入力データの量が増加した場合に、前記実行方式を切替える、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項１３】
請求項１１に記載のストリームデータ処理における性能保証装置であって、
前記処理部は、
過去の性能値を保持するよう制御し、
保持された前記過去の性能値と、未処理の前記入力データの量を比較し，前記要求性能値を満たす前記実行方式に切替える、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項１４】
請求項１３に記載のストリームデータ処理における性能保証装置であって、
前記処理部は、
前記実行方式の切替えに必要となる時間と前記過去の性能値を合計し，当該合計値が前記要求性能値を満たす前記実行方式に切替える、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項１５】
請求項１１に記載のストリームデータ処理における性能保証装置であって、
前記要求入力部から前記出力結果の要求精度が入力され、
前記処理部は、
前記出力データの演算精度が前記出力結果の要求精度を満たすか否かを評価し、
予測した前記性能値が前記要求性能値を満たすか否か、及び前記出力データの演算精度が前記出力結果の要求精度を満たしているかを評価し、
評価結果を元に、前記要求性能値と前記要求精度の双方を満たす実行方式に切替える、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項１６】
請求項１１に記載のストリームデータ処理における性能保証装置であって、
前記処理部は、
前記クエリ処理において，単一，もしくは複数のオペレータで、切替えすべき複数の前記実行方式が存在する場合に，前記出力データの演算精度を基準として，当該演算精度で最も性能の高い前記実行方式の組を決定する、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項１７】
請求項１１に記載のストリームデータ処理における性能保証装置であって、
前記処理部は、
前記実行方式を切替えた時刻と切替えた前記実行方式を識別する識別情報を保持、出力する、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項１８】
請求項１２に記載のストリームデータ処理における性能保証装置であって、
前記処理部は、
過去の性能値を保持するよう制御し、
保持された前記過去の性能値と、未処理の前記入力データの量を比較し，前記要求性能値を満たす前記実行方式に切替える、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項１９】
請求項１８に記載のストリームデータ処理における性能保証装置であって、
前記処理部は、
前記実行方式の切替えに必要となる時間と前記過去の性能値を合計し，当該合計値が前記要求性能値を満たす前記実行方式に切替える、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項２０】
請求項１２に記載のストリームデータ処理における性能保証装置であって、
前記要求入力部から前記出力結果の要求精度が入力され、
前記処理部は、
前記出力データの演算精度が前記出力結果の要求精度を満たすか否かを評価し、
予測した前記性能値が前記要求性能値を満たすか否か、及び前記出力データの演算精度が前記出力結果の要求精度を満たしているかを評価し、
評価結果を元に、前記要求性能値と前記要求精度の双方を満たす実行方式に切替える、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項２１】
請求項１２に記載のストリームデータ処理における性能保証装置であって、
前記処理部は、
前記クエリ処理において，単一，もしくは複数のオペレータで、切替えすべき複数の前記実行方式が存在する場合に，前記出力データの演算精度を基準として，当該演算精度で最も性能の高い前記実行方式の組を決定する、
ことを特徴とするストリームデータ処理における性能保証装置。
【請求項２２】
請求項１２に記載のストリームデータ処理における性能保証装置であって、
前記処理部は、
前記実行方式を切替えた時刻と切替えた前記実行方式を識別する識別情報を保持、出力する、
ことを特徴とするストリームデータ処理における性能保証装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームデータ処理システム、特にストリームデータ処理におけるレイテンシ・処理精度等の性能保証技術に関する。
【背景技術】
【０００２】
通常のストリームデータ処理は連続データを継続的に処理し，判断，補完，予測などをしている（特許文献１参照）。しかし，データが急激に増加した場合，レイテンシが低下し，ユーザの所望するリアルタイム性を維持できなくなる。
【０００３】
一方，数値計算の分野においては、あらかじめ計算方式を複数用意しておき，各計算方式における過去の計算結果を利用し，ユーザの要求するレイテンシ，処理精度を満たすように、どの計算方式を使うかを自動選択する方式がある（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許出願公開ＵＳ２００８／０００５３９２
【特許文献２】特開２００７−３４３７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ストリームデータ処理においては、上述のようにデータが急激に増加した場合に，精度を下げてもレイテンシを維持すべきか，逆にレイテンシをある程度あきらめても精度を維持するべきかアプリケーション（以下、アプリ）により対応を異ならせる必要がある。例えば，スマートグリッドにおける各家庭の次の時間の電力消費量の予測や、画像のリアルタイム圧縮処理，情報機器の障害予兆の予測などはある程度精度を犠牲にしてもレイテンシを維持する必要がある。対して，セキュリティ分野や経済指標の計算などでは精度を落とすことはできない。このようなアプリの要求を入力可能とし、それに対応する仕組みが求められている。
【０００６】
特許文献１では、サーバにユーザ・ベンダが作成した外部定義関数をクエリに適用する機能を実装し、この中でレイテンシを保証するため、他のサーバに振り分けするか、もしくはサーバのリソース使用量から入力タプルの一部を削除しているが、複数のサーバを必要とする、或いは入力データの一部削減により得られる結果が異なる恐れがある、という問題がある。
【０００７】
そこで、特許文献２の数値計算の分野の方法を、特許文献１のストリームデータ処理の外部定義関数に適用することを検討した場合，事前にレイテンシを予測する手段が不十分であるため、計算方式の切替えが遅れる問題がある。また，全体を統括する仕組みが無いため，処理全体のレイテンシや処理精度を考慮せずに各々の関数が計算方式を選択する問題がある。
【０００８】
本発明の目的は、上記の問題点を解決し、リアルタイム性を確保しながら、レイテンシ保証、更には処理精度保証が可能なストリームデータ処理における性能保証方法、および装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記の目的を達成するため、本発明においては、処理部とインタフェース部を備えた計算機の、ストリームデータ処理における性能保証方法であって，ストリームデータ処理に対する、処理性能の異なる複数の実行方式を備えておき、
処理部は、インタフェース部を介して受信した入力データに対し，ストリームデータ処理を実行する際に、未処理の入力データの量から性能値を予測し、予測した性能値に基づき要求性能値を満たす実行方式を決定し、決定した実行方式に切替えてストリームデータ処理を実行し、処理結果を出力データとしてインタフェース部に出力するストリームデータ処理における性能保証方法を提供する。
【００１０】
また、上記の目的を達成するため、本発明においては、ストリームデータ処理における性能保証装置であって、入力データを受信する入力データ受信部と、入力データに対するクエリ処理を実行する処理部と、実行結果を出力データとして出力するデータ送信部と、要求性能値を入力する要求入力部とを備え、処理部は、クエリ処理に対する、処理性能の異なる複数の実行方式を備え、入力データ受信部を介して受信した入力データに対し，クエリ処理を実行する際に、未処理の入力データの量から性能値を予測し、予測した性能値に基づき、要求性能値を満たす実行方式を決定し、決定した実行方式によりクエリ処理を実行し、処理結果を出力データとしてデータ送信部に出力する構成のストリームデータ処理における性能保証装置を提供する。
【００１１】
すなわち、上記の目的を達成するため、本発明の好適な態様においては、クエリ処理で使用する各計算の実行方式について、そのときのキューにあるデータ量、演算時間、処理精度を評価する。また、各計算方式の組み合わせによる最終的な処理精度も評価する。この評価は事前に行っても良いし、実行中に蓄積しても良い。そして、実行中、何らかの理由でキューにあるデータ量が増大し，要求レイテンシよりも大きくなりそうな場合は最終的な質が許容される範囲でレイテンシの少なくなる計算方式の組に変更する。逆に、精度を下げた状態でレイテンシが要求レイテンシを大幅に下回りそうな場合は処理精度のよい計算方式の組に変更する。
【発明の効果】
【００１２】
本発明によれば、処理全体のレイテンシや質を考慮して計算内容を選択し、系全体でユーザ要求を満たすことが可能なストリームデータ処理技術を提供できる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施例に係る、ストリームデータ処理サーバが利用される計算機環境の構成の一例を示す図である。
【図２】第１の実施例に係る、ストリームデータ処理サーバの構成の一例を示す図である。
【図３】第１の実施例に係る、ストリームデータ処理システムにおける性能保証ソフトウェア機能の一例を示す図である。
【図４】第１の実施例に係る、データ処理定義の一例を示す図である。
【図５】図４に示すデータ処理定義内で使用される複数の実行方式を備える関数の一例を示す図である。
【図６】第１の実施例に係る、１つの関数における複数の実行方式を並べた一例を示す図である。
【図７】図６の各実行方式の、実行結果取得部によって取得された、実行結果の一例を示す図であるである。
【図８Ａ】第１の実施例に係る、入力データのキュー容量と，要求性能値の一例を示す図である。
【図８Ｂ】第１の実施例に係る、キュー容量と実行結果取得部の保持する実行結果から予測した性能値の一例を示す図である。
【図８Ｃ】第１の実施例に係る、レイテンシ評価部による実行方式の適用可否の判断の一例を示す図である。
【図９】第１の実施例に係る、ストリームデータ処理システムにおける実行方式の切替え動作を示すフローチャートを示す図である。
【図１０】第２の実施例に係る、ストリームデータ処理システムにおける複数の関数の各実行方式の一例を示す図である。
【図１１】第２の実施例に係る、ストリームデータ処理システムにおける有効実行方式の選定を行う動作を示すフローチャートを示す図である。
【図１２】第２の実施例に係る、選定された有効実行方式の組の一例を示す図である。
【図１３】第２の実施例に係る、複数の関数の各有効実行方式に対する評価結果の一例を示す図である。
【図１４】第２の実施例に係る、ストリームデータ処理システムにおける実行方式切替え時間の一例を示す図である。
【図１５Ａ】第２の実施例に係る、キュー容量と、要求性能，要求精度の一例を示す図である。
【図１５Ｂ】第２の実施例に係る、キュー容量と、保持する実行結果，実行方式切替え時間から予測した性能値の一例を示す図である。
【図１５Ｃ】第２の実施例に係る、実行方式の適用可否の判断の一例を示す図である。
【図１６】第２の実施例に係る、要求精度，実行方式切替え時間を考慮した、実行方式の切替え動作を示すフローチャートを示す図である。
【図１７】第２の実施例に係る、実行方式の切替え時刻の記録の一例を示す図である。
【図１８】第２の実施例における、要求性能と要求精度を設定するＧＵＩ（Graphical User Interface）の一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図面において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。また、本明細書において、ストリームデータ処理、すなわち入力されるストリームデータに対するクエリ処理を実行する処理サーバを構成する計算機などが実行するプログラムを、「機能」、「手段」、「部」等と呼ぶ場合がある。例えば、実行方式決定プログラムの機能を、「実行方式決定機能」、「実行方式決定手段」、「実行方式決定部」などである。
【実施例１】
【００１５】
まず、図１および図２を用いて、第１の実施例に係るストリームデータ処理を実行するシステムの基本構成を説明する。
【００１６】
図１に示すように、ストリームデータ処理を実行するシステムでは、ネットワーク１０４にストリームデータ処理サーバ１００と計算機１０１、１０２、１０３が接続されている。ストリームデータ処理サーバ１００は、ネットワーク１０４を介して、データソース１０７が動作する計算機１０２からデータ１０８を受け取り、処理結果のデータ１１０を計算機１０３上の結果利用アプリケーション１０９に送信する。また、計算機１０１上では、ストリームデータ処理のためのクエリを登録するための、クエリ登録コマンド実行インタフェース１０５が動作する。これらの計算機１０１、１０２、１０３の任意の２つ、３つを１つの計算機で構成することもできるし、ストリームデータ処理サーバ１００に統合することもできる。
【００１７】
図２に示すように、ストリームデータ処理サーバ１００は、計算機２００から構成され、計算機２００は、記憶部であるメモリ２０２、処理部である中央処理部（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）２０１、ネットワークインタフェース（Ｉｎｔｅｒｆａｃｅ：Ｉ／Ｆ）２０４、記憶部であるストレージ２０３、およびそれらを結合するバス２０５によって構成される。メモリ２０２上に、ストリームデータ処理の論理動作を定義する、ストリームデータ処理システム２０６を配置する。ストリームデータ処理システム２０６は、後で詳述するようにＣＰＵ２０１によって解釈実行可能な実行イメージである。
【００１８】
図２に示すように、ストリームデータ処理サーバ１００を構成する計算機２００は、インタフェース部であるネットワークＩ／Ｆ２０４を介して外部のネットワーク１０４に接続される。なお、ストリームデータ処理サーバ１００を構成する計算機は１個に限らず複数であっても良いが、ここでは１個の計算機構成を図示説明する。
【００１９】
ネットワーク１０４に接続された計算機１０１上で動作する、クエリ登録コマンド実行インタフェース１０５を介して、ユーザによって定義されたクエリ１０６を、ストリームデータ処理サーバ１００を構成する計算機２００が受取ると、ストリームデータ処理システム２０６は、この定義に従ってストリームデータ処理を実行可能なクエリグラフを自身の内部に構成する。この後、ネットワーク１０４に接続された計算機１０２上で動作するデータソース１０７によって送信されるデータ１０８を、ストリームデータ処理サーバ１００を構成する計算機２００が受取ると、このクエリグラフに従ってデータ処理し、結果データ１１０を生成し、計算機１０３上で動作する結果利用アプリケーション１０９に送信する。ストレージ２０３は、ストリームデータ処理システム２０６の他、一度受取ったクエリ１０６を保存する。ストリームデータ処理システム２０６は、起動時にストレージ２０３からこの定義をロードし、クエリグラフを構成することも可能である。
【００２０】
ここで説明した本実施例のストリームデータ処理サーバの構成は一例であり、計算機は１個である必要はなく、複数の計算機で構成しても良いし、計算機の処理部であるＣＰＵ２０１は、同一計算機上の二つのプロセッサで構成しても良いし、更にその二つのプロセッサは一つのマルチコアＣＰＵにおける二つの計算コアであっても構わない。本明細書において、サーバは、少なくとも処理部と記憶部とインタフェース部を備えておれば、どのような構成を取っても良い。
【００２１】
図３を用いて、第１の実施例に係るストリームデータ処理システムの性能保証方法を実行するソフトウェアの機能ブロック構成を示す図である。なお、同図において、太線のブロックは、計算機２００の処理部であるＣＰＵ２０１で実行される各種のソフトウェア機能を、細線のブロックはソフトウェアの実行の際、メモリ２０２上等に形成される各種のデータの保存領域を模式的に示している。また、このソフトウェアの機能ブロック構成図は、第２の実施例に係るストリームデータ処理システムのソフトウェア機能ブロック構成を示す図と兼用しており、以下説明するように、一部の機能ブロックやデータは第１の実施例では用いられない点に留意されたい。
【００２２】
図３において、ストリームデータ処理システム２０６は、入力データ１０８を受信する入力データ受信部３０１、ユーザの定義したクエリ１０６と外部定義関数３０５を受信し解析するクエリ受信・解析部３０６、クエリグラフとオペレータ等を保持するクエリ実行ワークエリア３０８、クエリ受信・解析部３０６内で、クエリ実行ワークエリア３０８と入力データ１０８に基づいてクエリを実行するクエリ実行部３０２、要求性能値である要求レイテンシ３１０から成るユーザ要求３０９が入力される要求入力部３１２、クエリ実行結果１１０を出力する出力データ送信部３０４を備える。
【００２３】
加えて、ストリームデータ処理システム２０６は、要求レイテンシ３１０から成るユーザ要求３０９を受信する要求入力部３１２、実行方式決定部３１３、入力データ受信部からデータの入力された時刻とその時のキュー３１９の容量を受信し、加えてクエリ実行部３０２から当該データを処理する際に用いた関数の実行方式を受信し、出力データ送信部３０４から処理された当該データが出力された通過時刻を受信し、当該データの出力された時刻と入力された時刻の差分からレイテンシを測定し、測定したレイテンシをその際のキューの容量と使用した方式の情報とともに記録する実行結果取得部３１８、実行結果取得部３１８が記録した情報を元に要求入力部３１２で受信したユーザ要求３０９を満たす関数を決定する実行方式決定部３１３を備える。
なお、本明細書において、便宜上、入力データ受信部３０１と出力データ送信部３０４、更には要求入力部３１２を総称してインタフェース部と呼ぶ場合があるが、このインタフェース部は、図２のインタフェース部と同一物としても良いが、同一のものである必要はなく、好適にはストリームデータ処理サーバ１００上で動作するストリームデータ処理システム自身の機能的なインタフェース部とすることができる。
【００２４】
ここで、キュー３１９は、入力データ受信部３０１はストリームデータ処理システム２０６の未処理のデータを保持する。また、クエリ受信・解析部３０６は外部定義関数３０５をクエリ実行ワークエリア３０８に組込む外部定義関数組込部３０７を備える。
【００２５】
クエリ実行ワークエリア３０８は、個々の処理内容を示すオペレータ１〜オペレータ３を備える。ここではオペレータ１はさらに組込関数１を、組込関数１は方式１Ａ、１Ｂ、１Ｃを備え、オペレータ２はさらに組込関数２を、組込関数２は方式２Ａ、２Ｂ、２Ｃを備える。ここで、組込関数１Ａ、１Ｂ、１Ｃは同じ演算を行う複数の関数であるが、本実施例においてはそれぞれ計算精度と演算時間が異なる。オペレータ２の組込関数２Ａ、２Ｂ、２Ｃも同様である。
【００２６】
本実施例に係るクエリ実行部３０２は、実行方式決定部３１３の決定に従い、クエリの実行において使用する関数の方式を動的に変更する実行方式切替え部３０３を備える。また、実行方式決定部３１３は入力データ受信部からキュー３１９の容量を受信し、実行結果取得部３１８が記録した過去の情報から関数の各方式を使用した際のレイテンシを予測するレイテンシ予測部３１４、レイテンシ予測部３１４の予測とユーザの要求レイテンシ３１０から使用可能な方式を評価するレイテンシ評価部３１５を備える。
【００２７】
なお、図３において図示されている、ユーザ要求３０９中の要求演算精度３１１、実行方式決定部３１３中の演算精度評価部３１６と有効方式決定部３１７は、第２の実施例に関係する部分であり、後で詳述するため、ここでは説明を省略する。
【００２８】
次に、図４および図５を用いて、本実施例のストリームデータ処理におけるクエリ処理の一例を説明する。図４はデータ処理定義の一例を示す図であり、同図に示すように、データ処理定義４００は、２つの入力ストリームｓａおよびｓｂ、３つのクエリｑ１、ｑ２およびｑ３を定義するクエリである。図５の５００は、図４に示すデータ処理定義内で使用される複数の実行方式を備える関数の一例を示す図である。図３に示したストリームデータ処理システム２０６のクエリ受信・解析部３０６は、図４に示すクエリを受信・解析し、必要な外部定義関数を組み込む。図４、図５に示すデータ処理定義４００、および関数例５００はあくまで一例であり、これに限定するものでない。
【００２９】
続いて図６を用いて、本実施例のストリームデータ処理システムにおける、上述した各関数に対する複数の計算方式について説明する。図６の６００は、本実施例のストリームデータ処理システムが所定の関数を実行するために備える、複数の実行方式と対応する演算時間を保持するテーブルである。同図では、所定の関数に対する複数の方式の一例として、関数サイン（ｓｉｎ）の例として図示した。同図において、方式ａ、方式ｂ、方式ｃはそれぞれ演算時間が短、中、長となる。
【００３０】
図７は、本実施例における、実行結果取得部３１８が取得・保持する、各実行方式の実行結果の一例をグラフ化して示す図である。図６に示した関数ｓｉｎ計算方式ａ、方式ｂ、方式ｃに対応し、演算データ量を横軸、演算時間を縦軸に示した。同図において、実線は方式ａ、二点鎖線は方式ｂ、破線は方式ｃの実行結果を示している。
【００３１】
さて、図３に示した本実施例のストリームデータ処理システム２０６において、上述の通り、実行方式決定部３１３は、実行結果取得部３１８が取得、保持した情報を元に、要求入力部３１２で受信した要求性能値であるユーザ要求３０９を満たす関数を決定する。クエリ実行部３０２の実行方式切替え部３０３は、実行方式決定部３１３の決定に従い、クエリの実行において使用する関数の方式を動的に変更する。また、実行方式決定部３１３のレイテンシ予測部３１８は、入力データ受信部３０１から入力データ１０８のキュー３１９の容量を受信し、実行結果取得部３１８が記録した過去の情報から、関数の各方式を使用した際のレイテンシを予測し、レイテンシ評価部３１５は、レイテンシ予測部３１４の予測とユーザの要求レイテンシ３１０から使用可能な方式を評価する。
【００３２】
すなわち、ストリームデータ処理システム２０６の実行方式決定部３１３においては、入力データ受信部３０１から、データの入力された時刻とその時のキュー３１９の容量を受信し、加えてクエリ実行部３０２から当該データを処理する際に用いた関数の実行方式を受信し、出力データ送信部３０４から処理された当該データが出力された通過時刻を受信する。そして、実行結果取得部３１８は、当該データの出力された時刻と入力された時刻の差分からレイテンシを測定し、測定したレイテンシをその際のキューの容量と使用した方式の情報とともに記録する。そして、実行方式決定部３１３は、実行結果取得部３１８が保持した情報を元に、要求入力部３１２が受信したユーザ要求３０９を満たす関数を決定する。
【００３３】
図８Ａの８００は、本実施例に係る、実行方式決定部３１３が入力データ受信部３０１より与えられるキュー容量と，要求入力部３１２より与えられる要求性能値の一例を示す。ここでは要求性能値は要求レイテンシを示す。同様に、図８Ｂの８０１は、レイテンシ予測部３１４が与えられたキュー容量と、実行結果取得部３１８の保持する実行結果から、予測した各方式の予測性能値の一例を示す。ここで、予測性能値は、各実行方式で必要となる演算時間を示している。また、図８Ｃの８０２は、レイテンシ評価部３１５による、実行方式の適用可否の評価後の評価結果の一例を示す。
【００３４】
すなわち、図８Ａ、図８Ｂ、図８Ｃに示すように、キュー３１９のデータ容量は１００００、ユーザからの要求レイテンシ３１０は４０ｍｓで、方式ａ、方式ｂ、方式ｃの演算時間が１４ｍｓ、４０ｍｓ、６０ｍｓの場合、方式ａ、方式ｂが適用可と判断され、方式ｃは適用不可と判断される。これらのデータを、図３の実行結果取得部３１８が取得し、その内部他に保持する。
【００３５】
図９は、本実施例のストリームデータ処理システム２０６の実行方式決定部３１３、およびクエリ実行部３０２による、複数の実行方式の動的な切替え動作を示すフローチャートである。まず、入力データ受信部３０１に入力されるデータ１０８のキュー容量に変化があった場合、処理フローがスタートする（ステップ９００、以下括弧内ステップ省略）。
【００３６】
実行方式決定部３１３は、レイテンシに問題が無いかを判断する（９０１）。レイテンシに問題がなければ（Ｎ）、実行結果取得部３１８に複数の方式の測定結果が既にあるか否かを判断し（９０２）、問題があれば（Ｙ）、終了する（９１０）。
【００３７】
複数の方式の測定結果がある場合（Ｙ）、引き続いて要求レイテンシを満たす有効方式を探索する（９０３）。その結果、有効な方式が有れば（Ｙ）、その有効な方式に変更し（９０５）、処理を終了する（９１０）。有効な方式が無い場合は、エラー出力し（９０６）、終了する（９１０）。
【００３８】
ステップ９０２において、全方式の測定結果がなかった場合（Ｎ）、方式の傾向情報が予め実行結果取得部３１８などに記憶されているか否かをチェックし（９０７）、方式の傾向情報が存在する場合は、当該の方式の傾向情報から、現状の問題を解消できる方式を選択し、方式の切替え変更を行う（９０８）。傾向情報が無い場合は、本実施例においては、ランダムに未測定の方式から選択し変更を実行する（９０９）。なお、この方式の傾向情報は、システム構成時に、必要に応じて実行結果取得部３１８などに保持しておくことができる。
【００３９】
本実施例の処理部であるＣＰＵで実行される、ストリームデータ処理システムの実行方式決定部３１３を、取得した性能値が要求性能値を上回っている状態において，未処理の前記入力データの量が増加した場合に、実行方式を切替える決定をするよう構成することも可能である。また、実行結果取得部３１８に保持された過去の性能値と未処理の入力データの量を比較し，要求性能値を満たす実行方式に切替える決定をするよう構成することも可能であることは言うまでも無い。
【００４０】
以上詳述した、第１の実施例のストリームデータ処理システムによれば、システムが受信するデータ量を元に、予測レイテンシを指標として、受信データに対する計算の実行方式を切替え、選択することができ、リアルタイム性を確保しながら、レイテンシ保証が可能となる。
【実施例２】
【００４１】
続いて、第２の実施例として、レイテンシ保証に加え、処理精度も保証可能なストリームデータ処理システムを説明する。なお、本実施例の説明に当たり、第１の実施例の説明と共通する部分については、説明を省略する。本実施例のストリームデータ処理サーバが利用される計算機環境の構成、及びストリームデータ処理サーバの構成は図１、図２のものと同じであるのでここでは説明を省略することとする。
【００４２】
図３の説明の際に述べたように、図３のストリームデータ処理における性能保証ソフトウェア機能図において、本実施例においてのみ使用されるデータ、機能が有る。すなわち、図３において、要求性能値であるユーザ要求３０９には、要求レイテンシ３１０に加え、本実施例においてのみ使用される、要求精度としての要求演算精度３１１が含まれる。そして、実行方式決定部３１３には、レイテンシ予測部３１４、レイテンシ評価部３１５に加え、本実施例において使用される演算精度評価部３１６と有効方式決定部３１７が含まれる。
【００４３】
本実施例においては、実行方式決定部３１３は、先の実施例１の機能に加え、出力データを評価し演算精度を測定し、実行結果取得部３１８は、測定したレイテンシと演算精度を、その際のキューの容量と使用した方式の情報とともに記録・保持する。そして、実行結果取得部３１８が記録・保持した情報を元に、要求入力部３１２で受信したユーザ要求３０９を満たす１又は複数の関数の実行方式を決定する。
【００４４】
ここで、本実施例においても、クエリ実行部３０２の実行方式切替え部３０３は、実行方式決定部３１３の決定に従い、クエリの実行において使用する関数の方式を動的に変更する。また、実行方式決定部３１３は、実施例１と同様、入力データ受信部からキュー３１９の容量を受信し、実行結果取得部３１８が記録した過去の情報から関数の各方式を使用した際のレイテンシを予測するレイテンシ予測部３１４、レイテンシ予測部３１４の予測とユーザの要求性能３０９から使用可能な方式を評価するレイテンシ評価部３１５に加え、上述の通り、実行結果取得部３１８の記録した情報を元に要求演算精度３１１を満たす方式を評価する演算精度評価部３１６、複数の組込関数がクエリ実行ワークエリア３０８上で使用されている場合に、有効な方式の組み合わせを決定する有効方式決定部３１７を新たに備えている。
【００４５】
図１０に本実施例に係る、レイテンシ評価部、演算精度評価部による複数の関数の各実行方式の一例を示す。図１０の（ａ）、（ｂ）はそれぞれ関数ｓｉｎ
、関数ｃｏｓに対応する。それぞれ、方式ａ、方式ｂ、方式ｃと、方式α、方式β、方式γに対応し、図６同様、演算時間の短、中、長と、且つその精度が求められ保持される。なお、同図において、精度は指数表示で示してある。
【００４６】
図１１は、実施例２において、複数の組込関数がクエリ実行ワークエリア３０８上で使用されている場合に、実行方式決定部３１３による有効な方式の組み合わせの選定を行う動作を示すフローチャートを示す図である。同図において、存在する複数の関数を、順次、関数Ｉ、関数Ｊの組み合わせとして検討する（Ｉ、Ｊ、Ｋそれぞれ１以上の自然数である）。すなわち、関数Ｊの各実装方式で演算精度が実装方式Ｋよりも良く、その中で最も演算時間の短い実装方式を選択する（１１０３）。この処理を、関数Ｉ以外の全ての関数Ｊについて実行し（１１０２、１１０４、１１０５）、関数Ｉの全ての実装方式Ｋについて実行し（１１０１、１１０６，１１０７）、全ての関数Ｉについて実行して（１１００、１１０８、１１０９）終了する。
【００４７】
図１２の１２００は、以上のような第２の実施例における選定処理の結果、選定され、保持された有効実行方式の組の一例を示す図である。組ｉ、ｉｉ、ｉｉｉ、ｉｖ、ｖはそれぞれ図示の精度に対応し、結果として関数１と関数２の欄に示す関数セットが選定される。
【００４８】
図１３は、図１２に示した本実施例のレイテンシ評価部３１５による、複数の関数の組の各有効実行方式に対する評価結果の一例をグラフ化して示す図である。精度が高くなるに連れ、演算時間が増加する。
【００４９】
図１４は、第２の実施例のストリームデータ処理システムにおける実行方式切替え時間の一例を示す図である。この切替え時間についても、実行結果取得部３１８等に保持される。同図の場合、精度が向上するに連れ、切替え時間が増加することを示している。
【００５０】
図１５Ａは、本実施例における、実行方式決定部３１３が入力データ受信部３０１より与えられるキュー容量と，要求入力部３１２より与えられる要求性能値，要求演算精度の一例を示し、図１５Ｂは、レイテンシ予測部３１４が与えられたキュー容量と、実行方式取得部３１８の保持する実行結果，実行方式切替え時間から予測した性能値の一例を示し、図１５Ｃに示す例の場合は、切替え時間も考慮した、レイテンシ評価部３１５，演算精度評価部３１６による実行方式の適用可否の判断の一例を示している。図１５Ｃに示す例の場合、方式ｉｉと方式ｉｉｉが合計時間と精度の点から適用可と判断され、残りの３方式は適用不可と判断されている。
【００５１】
図１６は、本実施例に係る、要求精度，実行方式切替え時間まで考慮した実行方式決定部３１３、およびクエリ実行部３０２による実行方式の切替え動作を示すフローチャートを示す図である。同図においては、図９のフローチャートと同様、まず、入力データ受信部３０１に入力されるデータ１０８のキュー容量に変化があった場合、処理フローがスタートする（１６００）。
【００５２】
実行方式決定部３１３は、レイテンシ、精度共に問題が無いかを判断する（１６０１）。問題があれば（Ｙ）、可能な限りレイテンシを少なくする指示があるか否かをチェックする（１６０２）。そのような指示がある場合、処理を終了する（１６１１）。
【００５３】
可能な限りレイテンシを少なくする指示が無い場合（Ｎ）、或いは、レイテンシ、精度共に問題が無い場合（Ｎ）、複数の方式の測定結果が既にあるか否かを判断し（１６０３）、
複数の方式の測定結果がある場合（Ｙ）、引き続いて要求レイテンシ、精度の両方を満たす有効方式を、切替え時間を足して探索する（１６０４、１６０５）。その結果、有効な方式が有れば（Ｙ）、その有効な方式に変更し（１６０６）、処理を終了する（１６１１）。有効な方式が無い場合は、エラー出力し（１６０７）、終了する（１６１１）。
【００５４】
ステップ１６０３において、全方式の測定結果がなかった場合（Ｎ）、実施例１と同様に、方式の傾向情報が記憶されているか否かをチェックし（１６０８）、方式の傾向情報が存在する場合は、当該の方式の傾向情報から、現状の問題を解消する方式を選択し、変更を行う（１６０９）。傾向情報が無い場合は、ランダムに未測定の方式から選択し変更を実行する（１６１０）。
【００５５】
本実施例おいては、クエリ処理の単一，もしくは複数のオペレータで、切替えすべき複数の実行方式の組が存在した場合、出力データの演算精度を基準として，演算精度で最も性能の高い実行方式の組を決定するよう構成することも可能である。すなわち、ストリームデータ処理内に、複数の実行方式の切替え点（関数）が存在する場合に、それぞれの演算性能と演算精度を評価し、最も有効な組み合わせを選択すると良い。
【００５６】
なお、図１７に、第２の実施例のストリームデータ処理システムの実行結果取得部３１８が取得し、保持する、実行方式の切替え時刻の記録の一例を示した。同図より明らかなように、それぞれの組の識別情報と、対応するその切替え時刻が保持されている。本図の切替え時刻のデータ保持は第２の実施例に限らず、実施例１においても利用すると好適であるが、実施例１の場合は、組の識別情報の代わりに、実行方式の識別情報と切替え時刻になることは言うまでもない。
【００５７】
図１８に、本実施例における、要求性能と要求精度を設定するＧＵＩ(Graphical User Interface)の一例を示す。なお、同様なＧＵＩを実施例１のシステムでも利用することができることは言うまでもないが、その場合、精度設定部分の表示は必要がないことは言うまでもない。
【００５８】
同図において、実施例２に対応し、ＧＵＩ画面１８００には、要求性能・精度設定画面が表示されている。このような表示画面を表示するデバイスは、通常の表示機器と画像表示ソフトウェアを用いれば実現可能であることは言うまでもない。図１８のＧＵＩの設定画面においては、「実行方式の自動選択機能を有効にする」、「レイテンシが指定の値以上にならないように選択する」、「出力データの精度が、要求精度を維持するように選択する」等を、図示のチェック部１８０３にマークを施すことにより選択できる。また、要求レイテンシと要求演算精度は、所望の数値を画面から適宜入力することによって可能であることは言うまでもない。なお、１８０２、１８０３はそれぞれ、最適化実施と設定の指示ボタンを示している。
【００５９】
以上詳述した、第２の実施例のストリームデータ処理システムによれば、システムが受信するデータ量を元に、予測レイテンシと演算精度を指標として、受信データに対する計算の実行方式を切替え、選択することができ、リアルタイム性を確保しながら、レイテンシ保証と処理精度の保証が可能となる。
【００６０】
上述の通り本発明の種々の実施例について説明してきたが、本発明はこれらの実施例に限定されるものなく、様々な変形例が含まれうることは言うまでもない。上述した実施例は本発明のより良い理解のために説明したものであり、本発明はそれに限定されるもので無い。また、ある実施例構成の一部を他の実施例の構成に置き換えることも可能であり、ある実施例の構成に他の実施例の構成を加えることも可能である。例えば、実施例２で説明した、実行方式切替え時間を考慮した切替え法を、実施例１に適用するなどのことができることは言うまでもない。また、上述した各実施例の構成、機能、処理等は、それらの一部又は全部を主体として説明したソフトウェア構成のみならず、専用のハードウェア構成、あるいはそれらを共用した構成として実現できることは言うまでもない。
【産業上の利用可能性】
【００６１】
本発明は、ストリームデータ処理分野における、レイテンシ保証、更には処理精度の保証を目的としたストリーム処理技術として極めて有用である。
【符号の説明】
【００６２】
１００…ストリーム処理サーバ
１０１、１０２、１０３、２００…計算機
１０４…ネットワーク
２０１…ＣＰＵ
２０２…メモリ
２０３…ストレージ装置
２０４…ネットワークＩ／Ｆ
２０５…計算機内部バス
２０６…ストリームデータ処理システム
３０１…入力データ受信部
３０２…クエリ実行部
３０３…実行方式切替え部
３０４…出力データ送信部
３０５…外部定義関数
３０６…クエリ受信・解析部
３０７…外部定義関数組込部
３０８…クエリ実行ワークエリア
３０９…ユーザ要求
３１０…要求レイテンシ
３１１…要求演算精度
３１２…要求入力部
３１３…実行方式決定部
３１４…レイテンシ予測部
３１５…レイテンシ評価部
３１６…演算精度評価部
３１７…有効方式決定部
３１８…実行結果取得部
３１９…キュー
１８００…ＧＵＩ画面
１８００…最適化実施実行ボタン
１８００…設定実行ボタン。
【図１】
0005586417.tif 000002
【図２】
0005586417.tif 000003
【図３】
0005586417.tif 000004
【図４】
0005586417.tif 000005
【図５】
0005586417.tif 000006
【図６】
0005586417.tif 000007
【図７】
0005586417.tif 000008
【図８Ａ】
0005586417.tif 000009
【図８Ｂ】
0005586417.tif 000010
【図８Ｃ】
0005586417.tif 000011
【図９】
0005586417.tif 000012
【図１０】
0005586417.tif 000013
【図１１】
0005586417.tif 000014
【図１２】
0005586417.tif 000015
【図１３】
0005586417.tif 000016
【図１４】
0005586417.tif 000017
【図１５Ａ】
0005586417.tif 000018
【図１５Ｂ】
0005586417.tif 000019
【図１５Ｃ】
0005586417.tif 000020
【図１６】
0005586417.tif 000021
【図１７】
0005586417.tif 000022
【図１８】
0005586417.tif 000023