(57)【特許請求の範囲】
【請求項１】
複数の計算ノード上で実行中の複数の処理要素を含むデータ・ストリーム環境においてデータ・ストリームを処理するためのコンピュータ・システム実装方法であって、前記複数の計算ノードの各々が前記複数の処理要素の各々をホストし、前記複数の計算ノードの各々がコンピュータ・プロセッサを備えており、前記複数の処理要素の各々が、データ・ストリームの着信タプルを受信し及び前記着信タプル上の個々の１以上の処理動作を実行するように構成されており、前記方法は、
処理すべき前記データ・ストリームのうち複数の属性を含む第１のタプルを受信するステップと、
１つ以上の前記コンピュータ・プロセッサの動作によって、少なくとも前記受信した第１のタプル内の前記複数の属性のうち１つ以上の属性に部分的に基づき、前記データ・ストリームの前記受信した第１のタプルを処理するための推定処理時間を計算するステップと、
前記計算した推定処理時間が所定のしきい値時間を超えないことを決定する場合、オペレータ・グラフを通じて第１の実行パスを使用して前記第１のタプルを第１の態様で処理するステップであって、前記オペレータ・グラフは前記複数の処理要素を接続して表したグラフである、前記処理するステップと、
前記計算した推定処理時間が前記所定のしきい値時間を超えることを決定する場合、前記受信した第１のタプルを、
（ｉ）前記第１のタプルを廃棄すること；
（ｉｉ）処理要素が使用可能になるときに処理するように、前記第１のタプルを格納すること、及び、前記第１の実行パス内の少なくとも１つの処理要素が使用可能であることを決定する場合、前記第１の実行パスを使用して前記格納した第１のタプルを処理すること；
（ｉｉｉ）前記オペレータ・グラフを通じて第２の実行パスを使用して前記第１のタプルを処理するステップであって、前記第２の実行パスは前記第１の実行パスと異なる、前記処理すること；
の少なくとも１つで処理するステップと
を含み、前記方法は、
前記第１の実行パス内の少なくとも１つの処理要素の現在のワークロードをモニタするステップと、
前記現在のワークロードに基づき前記しきい値時間を調整するステップと
をさらに含む、前記方法。
【請求項２】
前記第１の実行パスを使用して前記第１のタプルを前記第１の態様で処理するステップが、
前記第１の実行パスを使用して前記データ・ストリームの前記受信した第１のタプルを処理するための実際の実行時間を計算するステップと、
前記実際の実行時間及び前記処理した第１のタプルの識別子を履歴データに格納するステップと
を含む、請求項１に記載の方法。
【請求項３】
前記計算するステップがさらに、他のタプルを処理するステップから収集した履歴データに基づく、請求項１に記載の方法。
【請求項４】
前記調整するステップが、
前記現在のワークロードが第１のワークロード値を超えることを決定する場合、前記第１の実行パス内の前記少なくとも１つの処理要素の全体的なワークロードを削減するように前記しきい値時間を減少させるステップと、
前記現在のワークロードが第２のワークロード値未満であることを決定する場合、前記第１の実行パス内の前記少なくとも１つの処理要素の全体的なワークロードを増大するように前記しきい値時間を増加させるステップと
を含む、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
複数の計算ノード上で実行する複数の処理要素を含むデータ・ストリーム環境においてデータ・ストリームを処理するためのコンピュータ・システム実装方法であって、前記複数の計算ノードの各々が前記複数の処理要素の各々をホストし、前記複数の計算ノードの各々がコンピュータ・プロセッサを備えており、前記複数の処理要素の各々が、データ・ストリームの着信タプルを受信し及び前記着信タプル上の個々の１以上の処理動作を実行するように構成されており、前記方法は、
処理すべき前記データ・ストリームのうち複数の属性を含む第１のタプルを受信するステップと、
１つ以上の前記コンピュータ・プロセッサの動作によって、少なくとも前記受信した第１のタプル内の前記複数の属性のうち１つ以上の属性に部分的に基づき、前記データ・ストリームの前記受信した第１のタプルを処理するための推定処理時間を計算するステップと、
前記計算した推定処理時間が所定のしきい値時間を超えないことを決定する場合、前記オペレータ・グラフを通じて第１の実行パスを使用して前記第１のタプルを第１の態様で処理するステップであって、前記オペレータ・グラフは前記複数の処理要素を接続して表したグラフである、前記処理するステップと、
前記計算した推定処理時間が前記所定のしきい値時間を超えることを決定する場合、前記第１の実行パス内の１つ以上の処理要素に対する遅延を最小化するように、前記第１のタプルを、
（ｉ）前記第１のタプルを廃棄すること；
（ｉｉ）処理要素が使用可能になるときに処理するように、前記第１のタプルを格納すること、及び、前記第１の実行パス内の少なくとも１つの処理要素が使用可能であることを決定する場合、前記第１の実行パスを使用して前記格納した第１のタプルを処理すること；
（ｉｉｉ）前記オペレータ・グラフを通じて第２の実行パスを使用して前記第１のタプルを処理するステップであって、前記第２の実行パスは前記第１の実行パスと異なる、前記処理すること；
の少なくとも１つを含む第２の態様で処理するステップと
を含み、前記方法は、
前記第１の実行パス内の少なくとも１つの処理要素の現在のワークロードをモニタするステップと、
前記現在のワークロードに基づき前記しきい値時間を調整するステップと
をさらに含む、前記方法。
【請求項６】
前記データ・ストリームの前記受信した第１のタプルを記述するメタデータを収集するステップをさらに含む、請求項５に記載の方法。
【請求項７】
前記メタデータが、（ｉ）前記複数の属性内の属性の数、（ｉｉ）前記複数の属性内の１つ以上の属性の長さ、及び（ｉｉｉ）前記複数の属性内の１つ以上の属性のタイプのうち少なくとも１つを含む、請求項６に記載の方法。
【請求項８】
前記調整するステップが、
前記現在のワークロードが第１のワークロード値を超えることを決定する場合、前記第１の実行パス内の前記少なくとも１つの処理要素の全体的なワークロードを削減するように前記しきい値時間を減少させるステップと、
前記現在のワークロードが第２のワークロード値未満であることを決定する場合、前記第１の実行パス内の前記少なくとも１つの処理要素の全体的なワークロードを増大するように前記しきい値時間を増加させるステップと
を含む、請求項５〜７のいずれか一項に記載の方法。
【請求項９】
データ・ストリームを処理するためのコンピュータ・システムであって、複数の計算ノードを備えており、前記複数の計算ノードの各々が前記複数の処理要素の各々をホストし、前記複数の計算ノードの各々がコンピュータ・プロセッサを備えており、前記複数の処理要素の各々が、データ・ストリームの着信タプルを受信し及び前記着信タプル上の個々の１以上の処理動作を実行するように構成されており、前記コンピュータ・システムに、請求項１〜８のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ・ストリームを処理するためのコンピュータ実装方法、システム及びコンピュータ・プログラムに係る。
【背景技術】
【０００２】
コンピュータ・データベースは、非常に高度化されているが、データベース・システムに突きつけられた計算上のデマンドも、急速に増加している。一般に、データベース・システムは、データを格納するための処理を、データベースに格納したデータにアクセスし、操作し、又は使用するための処理から分離するように構成されている。具体的には、データベースは、あるモデルを使用することにより、最初にデータを格納し、データにインデックスを付け、その後に、データの照会を行うようになっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
しかし、このモデルは、特定のリアルタイム・アプリケーションの性能要件を満たすことができない。例えば、データベース・システムが着信データを受信し且つ格納することができるレートは、処理可能又は評価可能なデータの量を制限することがある。その結果、大量のデータをリアルタイムに処理すべきデータベース・アプリケーションの能力を制限することがある。
【課題を解決するための手段】
【０００４】
本発明の実施形態は、データ・ストリームを処理するためのコンピュータ実装方法、システム及びコンピュータ・プログラムを提供する。当該方法、システム及びコンピュータ・プログラムは、処理すべき前記データ・ストリームのうち複数の属性を含む第１のタプルを受信することを含む。また、当該方法、システム及びコンピュータ・プログラムは、少なくとも前記受信した第１のタプル内の前記複数の属性のうち１つ以上の属性に部分的に基づき、前記データ・ストリームの前記受信した第１のタプルを処理するための推定処理時間を計算することを含む。さらに、当該方法、システム及びコンピュータ・プログラムは、前記計算した推定処理時間が所定のしきい値時間を超えないことを決定する場合、基本実行パス（primary execution path）を使用して前記データ・ストリームの前記受信した第１のタプルを第１の態様で処理することを含む。さらに、当該方法、システム及びコンピュータ・プログラムは、前記計算した推定処理時間が前記所定のしきい値時間を超えることを決定する場合、前記受信した第１のタプルを前記第１の態様で処理するのに比べて前記基本実行パス内の処理遅延を削減するように、前記データ・ストリームの前記受信した第１のタプルを第２の態様で処理することを含む。
【０００５】
本発明の代替実施形態は、データ・ストリームを処理するためのコンピュータ実装方法、システム及びコンピュータ・プログラムを提供する。当該方法、システム及びコンピュータ・プログラムは、処理すべき前記データ・ストリームのうち複数の属性を含む第１のタプルを受信することを含む。また、当該方法、システム及びコンピュータ・プログラムは、（ｉ）前記受信した第１のタプル内の前記複数の属性のうち１つ以上の属性、及び（ｉｉ）前記受信した第１のタプルに関連するメタデータのうち少なくとも１つに部分的に基づき、前記データ・ストリームの前記受信した第１のタプルを処理するための推定処理時間を計算することを含む。さらに、当該方法、システム及びコンピュータ・プログラムは、前記計算した推定処理時間が所定のしきい値時間を超えないことを決定する場合、基本実行パスを使用して前記データ・ストリームの前記受信した第１のタプルを第１の態様で処理することを含む。さらに、当該方法、システム及びコンピュータ・プログラムは、前記計算した推定処理時間が前記所定のしきい値時間を超えることを決定する場合、前記受信した第１のタプルを前記第１の態様で処理するのに比べて前記基本実行パス内の処理遅延を削減するように、前記データ・ストリームの前記受信した第１のタプルを第２の態様で処理することを含む。
【発明の効果】
【０００６】
本発明は、しきい値時間内に処理できそうもない着信ストリーム・データを識別し且つ当該着信ストリーム・データを基本実行パスから除去することにより、ストリーム・アプリケーション内のボトルネックを防止することができるという効果を奏する。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態に従った、ストリーム・アプリケーションを実行するように構成されたコンピューティング・インフラストラクチャ１００を例示する図である。
【図２】本発明の一実施形態に従った、ストリーム・アプリケーションを実行するように構成されたコンピューティング・インフラストラクチャ１００を例示する図である。
【図３】本発明の一実施形態に従った、図１及び図２の計算ノード１３０をより詳細に示す図である。
【図４】本発明の一実施形態に従った、図１のサーバ・コンピューティング・システム１０５をより詳細に示す図である。
【図５】本発明の一実施形態に従った、ストリーム・アプリケーション内の複数の計算ノードを例示する図である。
【図６】本発明の一実施形態に従った、ランタイム・データの予測除去方法を例示するフローチャートである。
【図７】本発明の一実施形態に従った、タプルのプロファイル方法を例示するフローチャートである。
【発明を実施するための形態】
【０００８】
ストリーム・ベースのコンピューティング及びストリーム・ベースのデータベース・コンピューティングは、データベース・システム用の開発途上の技術として出現している。現に使用可能な製品は、ストリーミング・データがデータベース・ファイルに到達する前に、当該ストリーミング・データを処理し且つ照会するためのアプリケーションをユーザが作成することを可能にする。この新たな技術を使用すると、ユーザは、インバウンドのデータ・レコードが「未完了」（in flight）である間に、これらのデータ・レコードに適用すべき処理論理を指定することができ、その結果を非常に短い時間（しばしばミリ秒）の間に得ることができる。このタイプの処理を使用してアプリケーションを構築すると、新しいプログラミング・パラダイムが開かれて、多種多様な革新的アプリケーション、システム及びプロセスを開発することが可能になるばかりか、アプリケーション・プログラマ及びデータベース開発者にとって新たな挑戦を提示する。
【０００９】
ストリーム・アプリケーションでは、各オペレータは、データが１つの処理要素から（例えば、ＴＣＰ／ＩＰソケットを介して）次の処理要素にフローするように、互いに他のオペレータに接続される。スケーラビリティに到達するためには、多数の小さな実行可能コード部分（複数のオペレータ）を作成することにより、アプリケーションを複数のノードにわたって分散させるとともに、複数のノード上に複数の処理要素を複製し且つそれらの間のロード・バランシングが行われる。ストリーム・アプリケーション内の複数の処理要素（及び複数のオペレータ）を互いに融合化（fuse）することにより、より大きな処理要素を形成することができる。そのようにすると、複数の処理要素が共通の処理空間を共有することが可能になり、その結果、（例えば、ＴＣＰ／ＩＰソケットを使用する）プロセス間通信技術を使用する場合に比べて、遙かに速いオペレータ間の通信を行うことができる。さらに、複数の処理要素は、ストリーム・アプリケーションを通してのデータのフローを表すオペレータ・グラフに動的に挿入するか又は当該オペレータ・グラフから動的に除去することができ、またこれらの処理要素は、ランタイム中にストリーム・アプリケーションに融合化するか又は当該ストリーム・アプリケーションから融合化解除（un-fuse）することができる。
【００１０】
ストリーム・アプリケーションの１つの利点は、ユーザが、当該アプリケーションを通してのデータの処理フローの粒度を制御できるということである。言いかえれば、ユーザは、処理要素ごとに着信データについて種々の動作を実行する特定のオペレータを指定することができ、また、これらのオペレータ及びこれらのオペレータが実行される順序を修正することにより、ストリーム・アプリケーションを動的に変更することができる。さらに、ストリーム・アプリケーションは、処理中の任意の「ボトルネック」を制限しつつ、大量のデータを扱うことができる。それにも拘わらず、多くのケースでは、依然としてボトルネックが発生して、ストリーム・アプリケーションの複数の部分を低下させるであろう。さらに、追加のデータが受信される場合、かかるボトルネックによって惹起される問題は、継続的に増大することがある。このため、着信データをできるだけリアルタイムに近い態様で処理しなければならないストリーム・アプリケーションについては、潜在的な任意のボトルネックを回避しなければならない。というのは、かかるボトルネックは、アプリケーションの性能及び着信データをリアルタイムに処理するというアプリケーションの能力に厳しい影響を及ぼすことがあるからである。
【００１１】
本発明の実施形態は、しきい値時間内に処理できそうもない着信ストリーム・データを識別し且つ当該着信ストリーム・データを基本実行パスから除去するための技術を提供する。特に、本発明の実施形態は、データ・ストリームの受信タプル（received tuple）用の推定処理時間を計算し且つ当該計算した推定処理時間に基づき、当該受信タプルを処理すべきか否かを決定するための技術を提供する。例えば、所与の処理要素が一のタプルを処理するための平均処理時間が５ミリ秒であると仮定する。もし、本発明の実施形態が、特定のタプルを受信し且つ所与の処理要素が当該特定のタプルを処理するのに約５分を要するであろうということを計算すれば、本発明の実施形態は、所与の処理要素がこのタプルを処理するのを禁止することができる。このため、本発明の実施形態は、ストリーム・アプリケーション内のボトルネックを防止することができる。さらに、特定の実施形態では、基本実行パスの外部で、他の資源を使用して当該特定のタプルを処理することができる。
【００１２】
以下、本発明の実施形態を参照して説明する。しかし、本発明は、開示された特定の実施形態に制限されないことを理解されたい。むしろ、以下で説明する特徴及び要素の任意の組み合わせは、互いに異なる実施形態に関係するか否かに拘わらず、本発明を実装し且つ実施するように意図される。さらに、本発明の実施形態は、他の可能な解決手段及び／又は従来技術に比べて優れた効果を奏することができるが、所与の実施形態が特定の効果を奏するか否かは、本発明を制限するものではない。従って、以下で説明する本発明の側面、特徴、実施形態及び利点は、単に例示であるに過ぎず、請求項において明示的に記載されている場合を除き、請求項に係る発明を制限する要素であると見なすべきではない。同様に、「本発明」という用語が使用されているとしても、このことは、本明細書に開示した任意の発明的主題の一般化として解すべきではなく、請求項において明示的に記載されている場合を除き、請求項に係る発明を制限する要素であると見なすべきではない。
【００１３】
本発明の側面は、システム、方法又はコンピュータ・プログラムとして具体化することができる。従って、本発明の側面は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）又はソフトウェア及びハードウェア要素を組み合わせた実施形態の形式を取ることができ、これらの全てを一般に「回路」、「モジュール」又は「システム」と称することができる。さらに、本発明の側面は、コンピュータ可読プログラム・コードを１つ以上のコンピュータ可読媒体内に具体化した、コンピュータ・プログラムの形式を取ることができる。
【００１４】
１つ以上のコンピュータ可読媒体の任意の組み合わせを使用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体から成る。例えば、コンピュータ可読ストレージ媒体は、電子、磁気、光学、電磁気、赤外線、半導体式のシステム若しくは装置又はこれらの任意の適切な組み合わせ等から成る。コンピュータ可読ストレージ媒体の特定の例は、１つ以上の線を有する電気接続、可搬式のコンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、可搬式のコンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、光ストレージ装置、磁気ストレージ装置又はこれらの任意の適切な組み合わせ等から成る。本明細書の文脈では、コンピュータ可読ストレージ媒体は、命令実行システム等に関連して又はこれらによって使用するためのプログラムを保持し又は格納することができる、任意の有形的媒体から成る。
【００１５】
コンピュータ可読信号媒体は、伝搬されるデータ信号の形式を有することもあるが、その場合には、ベースバンド内に又は搬送波の一部として、コンピュータ可読プログラム・コードを具体化することができる。かかる伝搬される信号は、電磁気、光学、又はこれらの任意の適切な組み合わせ等を含む、種々の形式のうち任意の形式を取る。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、命令実行システム又は装置等に関連して又はこれらによって使用するためのプログラムを通信し、伝搬し、移送することができる、任意のコンピュータ可読媒体から成る。
【００１６】
コンピュータ可読媒体上に具体化されたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦ、又はこれらの任意の適切な組み合わせ等を含む、適切な任意の媒体を使用して伝送することができる。
【００１７】
本発明の動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（登録商標）、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向プログラミング言語及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような通常の手続き的プログラミング言語を含む、１つ以上のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、独立のソフトウェア・パッケージとしてユーザ・コンピュータ上で完全に実行することができ、その一部をユーザ・コンピュータ上で且つ他の一部を遠隔コンピュータ上で実行することができ、或いは遠隔コンピュータ又はサーバ上で完全に実行することができる。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通してユーザ・コンピュータに接続することができ、或いはその接続を（例えば、インターネット・サービス・プロバイダを使用するインターネットを通して）外部コンピュータに行うことができる。
【００１８】
以下では、本発明の実施形態に従った、方法、装置（システム）及びコンピュータ・プログラムのフローチャート又はブロック図を参照して、本発明の側面を説明する。フローチャート又はブロック図の各ブロック、複数ブロックの組み合わせは、コンピュータ・プログラム命令によって実装することができる。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサに提供すると、当該コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令は、フローチャート又はブロック図のブロックで指定された機能／行為を実装するための手段を作成する。
【００１９】
また、これらのコンピュータ・プログラム命令をコンピュータ可読媒体内に格納すると、当該コンピュータ可読媒体内に格納された命令が、フローチャート又はブロック図のブロックで指定された機能／行為を実装するための命令を含む製品を生産することを目的として、コンピュータ、他のプログラム可能なデータ処理装置又は他の装置に対し特定の態様で機能するように指示することができる。
【００２０】
また、これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能なデータ処理装置又は他の装置にロードすると、当該コンピュータ、他のプログラム可能なデータ処理装置又は他の装置上で実行される諸命令が、フローチャート又はブロック図のブロックで指定された機能／行為を実装するためのプロセスを提供することを目的として、一のコンピュータ実装プロセスを生成するように当該コンピュータ、他のプログラム可能なデータ処理装置又は他の装置上で一連の動作ステップを実行させることができる。
【００２１】
本発明の実施形態は、クラウド・コンピューティング・インフラストラクチャを通してエンド・ユーザに提供することができる。一般に、クラウド・コンピューティングは、ネットワーク経由のサービスとしてスケーラブルなコンピューティング資源を提供することを意味する。より正式には、クラウド・コンピューティングは、コンピューティング資源とその下部にある技術的アーキテクチャ（例えば、サーバ、ストレージ、ネットワーク）の間の抽象化を提供するコンピューティング能力であって、最小限の管理努力又はサービス・プロバイダとのやりとりで迅速にプロビジョン及び解放することができる、構成可能なコンピューティング資源の共有プールへの簡便で且つオンデマンドのネットワーク・アクセスを可能にするものと定義することができる。従って、クラウド・コンピューティングは、仮想的なコンピューティング資源（例えば、ストレージ、データ、アプリケーション、さらに完全な仮想化コンピューティング・システム）を提供するために使用される下部の物理的なシステムには関係なく、ユーザが「クラウド」内のコンピューティング資源にアクセスすることを可能にする。
【００２２】
一般に、クラウド・コンピューティング資源は、従量課金制に基づいてユーザに提供され、ユーザには、実際に使用したコンピューティング資源（例えば、ユーザが消費したストレージ空間の量又はユーザがインスタンス化した仮想化システムの数）のみについて使用料金が課される。ユーザは、クラウド内に存在する任意の資源を、任意の時間に、しかもインターネット上の任意の場所からアクセスすることができる。本発明の文脈では、ユーザは、クラウド内で使用可能なアプリケーション又は関係するデータにアクセスすることができる。例えば、ストリーム・アプリケーションを作成するために使用される各ノードは、クラウド・サービス・プロバイダがホストする仮想計算機とすることができる。そのようにすると、ユーザは、クラウド（例えば、インターネット）に接続されたネットワークに接続済みの任意のコンピューティング・システムからこの情報にアクセスすることができる。
【００２３】
図１及び図２は、本発明の一実施形態に従った、ストリーム・アプリケーションを実行するように構成されたコンピューティング・インフラストラクチャ１００を例示する。図示のように、コンピューティング・インフラストラクチャ１００は、管理システム１０５及び各々が通信ネットワーク１２０に接続されている複数の計算ノード１３０１−４を含む。また、管理システム１０５は、オペレータ・グラフ１３２及びストリーム・マネージャ１３４を含む。以下で詳述するように、オペレータ・グラフ１３２は、１つ以上のソース処理要素（ＰＥ）から開始して１つ以上のシンクＰＥに至る、ストリーム・アプリケーションを表す。一般に、本明細書では、ソースからシンクへのこのフローを実行パスと称する。一般に、データ要素は、ストリーム・アプリケーションのソースＰＥに流入し、当該ＰＥによって処理される。典型的には、処理要素は、ストリームからデータ要素のＮ−タプルを受信するとともに、データ要素のＮ−タプルをストリームに出力する（但し、当該ストリームが終了する箇所のシンクＰＥを除く）。もちろん、一の処理要素によって受信されるＮ−タプルは、下流に送信されるＮ−タプルと同じである必要がない。さらに、これらの処理要素は、Ｎ−タプルとは異なる形式で、データを受信又は出力するように構成することができる（例えば、これらの処理要素は、ＸＭＬドキュメントとしてマークアップされたデータを交換することができる）。さらに、各処理要素は、受信タプルについて任意の形式のデータ処理機能を実行するように構成することができる。かかるデータ処理機能は、例えば、データベース・テーブルへの書き込み又はデータの結合、分割、読み取り等の他のデータベース動作に加えて、他のデータ分析機能又は動作を実行することを含む。
【００２４】
ストリーム・マネージャ１３４は、計算ノード１３０１−４上で走行中のストリーム・アプリケーションをモニタし且つオペレータ・グラフ１３４の構造を変更するように構成することができる。ストリーム・マネージャ１３４は、例えば、コンピューティング・インフラストラクチャ１００内の複数の計算ノード１３０の処理ロードを管理するために、１つの計算ノード１３０からの処理要素（ＰＥ）を他の計算ノード１３０に移動させることができる。さらに、ストリーム・マネージャ１３４は、計算ノード１３０１−４上で走行中の処理要素（又はこれらの処理要素に流入するデータ・タプル）を挿入し、移動し、融合化し、融合化解除し、又は他の態様で修正することにより、ストリーム・アプリケーションを制御することができる。本発明の一実施形態では、管理システム１０５は、複数のオペレータ・グラフ１３２を維持することがある。かかる実施形態では、１つのオペレータ・グラフ１３２は、一般又はデフォルト処理フローを表す基本のオペレータ・グラフとして指定され、他のオペレータ・グラフは、代替処理フローを表すことがある。
【００２５】
図２は、計算ノード１３０１−４上で走行中の１０個の処理要素（ＰＥ１〜ＰＥ１０）を含む、オペレータ・グラフを例示する。各処理要素は、それ自体のプロセスＩＤ（ＰＩＤ）及びメモリ空間を有する独立的に走行するプロセスとして実行することができるが、（ＰＩＤ及びメモリ空間を有する）単一のプロセスとして走行するように複数の処理要素を融合化することもできる。２つ以上の処理要素が独立的に走行しているケースでは、ネットワーク・ソケット（例えば、ＴＣＰ／ＩＰソケット）を使用してプロセス間通信を行うことができる。しかし、複数のプロセスが互いに融合化される場合は、融合化した諸処理要素は、複数の処理要素（及び各処理要素内の複数のオペレータ）間でＮ−タプル（又は他のデータ）を引き渡すために、より高速の通信技術を使用することができる。
【００２６】
図示のように、オペレータ・グラフ１３２は、ソース１３５で開始し（処理要素ＰＥ１に流入する）、シンク１４０１−２で終了する（処理要素ＰＥ６及びＰＥ１０から流出する）。計算ノード１３０１は、処理要素ＰＥ１〜ＰＥ３を含む。ソース１３５は、処理要素ＰＥ１に流入し、処理要素ＰＥ１が出力するタプルは、ＰＥ２及びＰＥ３が受信する。例えば、ＰＥ１は、一のタプル内で受信したデータ要素を分割し、幾つかのデータ要素をＰＥ２に引き渡すとともに、他のデータ要素をＰＥ３に引き渡すことができる。ＰＥ２に流入するデータは、ＰＥ２内に保持されるオペレータによって処理され、その後、結果的なタプルは、計算ノード１３０２上のＰＥ４に出力される。同様に、ＰＥ４が出力するデータ・タプルは、シンクＰＥ６ １４０１に流入する。同様に、ＰＥ３からＰＥ５に流出するデータ・タプルも、ＰＥ６ １４０１に到達する。従って、ＰＥ６は、この例示的なオペレータ・グラフのシンクであることに加えて、ＰＥ４及びＰＥ５からの受信タプルを組み合わせて、結合動作を実行するように構成することができる。また、この例示的なオペレータ・グラフは、ＰＥ３から計算ノード１３０３上のＰＥ７に流出するデータ・タプルを示しており、ＰＥ８に流入するデータ・タプルがＰＥ７にループ・バックすることも示している。ＰＥ８が出力したデータ・タプルは、計算ノード１３０４上のＰＥ９に流入し、ＰＥ９は、シンクＰＥ１０ １４０２が処理すべきタプルを出力する。
【００２７】
図３は、本発明の一実施形態に従った、図１及び図２の計算ノード１３０をより詳細に示す。図示のように、計算ノード１３０は、中央演算処理装置（ＣＰＵ）２０５、ネットワーク・インタフェース２１５、相互接続２２０、メモリ２２５及びストレージ２３０を含む。また、計算ノード１３０は、Ｉ／Ｏ装置２１２（例えば、キーボード、ディスプレイ及びマウス）を接続するために使用されるＩ／Ｏ装置インタフェース２１０を含む。
【００２８】
ＣＰＵ２０５は、メモリ２２５内に格納したプログラミング命令を検索し且つこれを実行する。同様に、ＣＰＵ ２０５は、アプリケーション・データをメモリ２２５内に格納し且つこれをメモリ２２５から検索する。相互接続２２０は、プログラミング命令及びアプリケーション・データを、ＣＰＵ ２０５、Ｉ／Ｏ装置インタフェース２１０、ストレージ２３０、ネットワーク・インタフェース２１５及びメモリ２２５の間で送信するために使用される。ＣＰＵ ２０５は、単一のＣＰＵ、複数のＣＰＵ、複数の処理コアを有する単一のＣＰＵ等を表す。また、メモリ２２５は、一般にランダム・アクセス・メモリを表す。ストレージ２３０は、例えば、ハードディスク・ドライブ、ソリッド・ステート装置（ＳＳＤ）又はフラッシュ・メモリ・ストレージ・ドライブから構成され、不揮発性データを格納することができる。
【００２９】
この例では、メモリ２２５は、複数の処理要素（ＰＥ）２３５、推定処理時間（ＥＰＴ）コンポーネント２４５及びストリーム接続データ２５５を含む。各ＰＥ ２３５は、オペレータ２４０の集合を含む。前述のように、各オペレータ２４０は、一の処理要素（例えば、ＰＥ ２３５）に流入するデータを処理し且つ当該ＰＥ内の他のオペレータ２４０及びストリーム・アプリケーション内の他のＰＥにデータを出力するように構成された、実行可能なコードの小さなチャンクを提供することができる。これらのＰＥは、同じ計算ノード上にあるか、又はデータ通信ネットワーク１２０を介してアクセス可能な他の計算ノード上にある。ストリーム接続データ２５５は、計算ノード１３０上のＰＥ間の接続（例えば、２つの別個のＰＥ ２３５間のＴＣＰ／ＩＰソケット接続）を表すとともに、ストリーム・アプリケーション内の上流及び下流のＰＥを有する他の計算ノード１３０への接続（例えば、ＴＣＰ／ＩＰソケット又は他のプロセス間データ通信機構を介する接続）を表す。
【００３０】
バッファ化ストリーム・データ２６０は、上流の処理要素（又はストリーム・アプリケーションのデータソース）から計算ノード１３０に流入するデータ用のストレージ空間を表す。例えば、バッファ化ストリーム・データ２６０は、１つのＰＥ ２３５によって処理されることを待機中のデータ・タプルを含むことができる。また、バッファ化ストリーム・データ２６０は、ＰＥ ２３５によって実行されたデータ処理の結果を格納することができる。これらの結果は、下流の処理要素に送信されるであろう。
【００３１】
ＥＰＴコンポーネント２４５は、１つのＰＥ ２３５上で処理すべきデータ・ストリームの着信タプルを受信する。一般に、これらの受信タプルは、ソース１３５から着信するか、又はシステム１００内の他のＰＥの出力である。所与のタプルを受信する際、ＥＰＴコンポーネント２４５は、所与のタプルを処理するための推定処理時間を計算する。一実施形態では、推定処理時間は、所与のタプル内に保持される１つ以上の属性に基づいて計算される。他の実施形態では、推定処理時間は、所与のタプルに関して収集したメタデータに基づいて計算される。さらに他の実施形態では、推定処理時間は、ＰＥ ２３５を使用して処理した他のタプルから収集済みの履歴データに基づいて計算される。一旦推定処理時間を計算すると、ＥＰＴコンポーネント２４５は、推定処理時間が所定のしきい値時間を超えるか否かを決定する。もし、推定処理時間が所定のしきい値時間を超えなければ、ＥＰＴコンポーネント２４５は、所与のタプルを処理すべき適切なＰＥ ２３５に送信する。
【００３２】
一方、推定処理時間が所定のしきい値時間を超えれば、ＥＰＴコンポーネント２４５は、所与のタプルを基本実行パスから除去する。本発明の一実施形態では、ＥＰＴコンポーネント２４５は、所与のタプルを処理すべき代替実行パス（alternate execution path）に送信する。例えば、基本実行パスが、第１のＰＥ ２３５を使用して所与のタプルを処理すべきことを指定するものと仮定する。もし、推定処理時間が所定のしきい値時間を超えることを決定すれば、ＥＰＴコンポーネント２４５は、代替実行パスに従って、所与のタプルを第２のＰＥ ２３５に送付する。本発明の他の実施形態では、推定処理時間が所定のしきい値時間を超えることを決定する場合、ＥＰＴコンポーネント２４５は、所与のタプルの処理を遅延させる。例えば、ＥＰＴコンポーネント２４５は、基本実行パスが指定したＰＥ ２３５がアイドルになるまで、所与のタプルの処理を遅延させる。代替実施形態では、推定処理時間が所定のしきい値時間を超えることを決定する場合、ＥＰＴコンポーネント２４５は、データ・ストリームの所与のタプルを廃棄する。かかる代替実施形態では、ＥＰＴコンポーネント２４５は、所与のタプルが廃棄されたことを指示するメッセージを生成する。補足的に説明すると、ＥＰＴコンポーネント２４５は、当該生成済みのメッセージをログ・ファイル内に格納するか、又は（例えば、モニタのようなＩ／Ｏ装置２１２を使用して）当該メッセージをユーザに伝えることができる。
【００３３】
図４は、本発明の一実施形態に従った、図１のサーバ・コンピューティング・システム１０５をより詳細に示す。図示のように、サーバ・コンピューティング・システム１０５は、ＣＰＵ ３０５、ネットワーク・インタフェース３１５、相互接続３２０、メモリ３２５及びストレージ３３０を含む。また、サーバ・コンピューティング・システム１０５は、Ｉ／Ｏ装置３１２（例えば、キーボード、ディスプレイ及びマウス））を当該サーバ・コンピューティング・システム１０５に接続するＩ／Ｏデバイス・インタフェース３１０を含む。
【００３４】
図３のＣＰＵ ２０５のように、ＣＰＵ ３０５は、メモリ３２５及びストレージ３３０内に格納したプログラミング命令を検索し且つ実行するように構成される。同様に、ＣＰＵ ３０５は、アプリケーション・データをメモリ３２５及びストレージ３３０に格納し且つこれを検索するように構成される。相互接続３２０は、プログラム命令及びアプリケーション・データのようなデータを、ＣＰＵ ３０５、Ｉ／Ｏ装置インタフェース３１０、ストレージ３３０、ネットワーク・インタフェース３０５及びメモリ３２５の間で移動させるように構成される。ＣＰＵ ２０５のように、ＣＰＵ ３０５は、単一のＣＰＵ、複数のＣＰＵ、複数の処理コアを有する単一のＣＰＵ等を表す。メモリ３２５は、一般にランダム・アクセス・メモリを表す。ネットワーク・インタフェース３１５は、通信ネットワーク１２０を介してデータを送信するように構成される。ストレージ３３０は、単一のユニットとして図示されているが、これを固定ディスク・ドライブ、取り外し可能メモリ・カード、光ストレージ、ＳＳＤ又はフラッシュ・メモリ装置のような固定式及び／又は取り外し可能ストレージ装置の組み合わせ、ネットワーク接続ストレージ（ＮＡＳ）、又はストレージ・エリア・ネットワーク（ＳＡＮ）装置とすることができる。
【００３５】
図示のように、メモリ３２５は、ストリーム・マネージャ１３４を格納する。さらに、ストレージ３３０は、基本オペレータ・グラフ３３５及び代替オペレータ・グラフ３４０を含む。一般に、ストリーム・マネージャ１３４は、データ・ストリームの一部として受信したタプルを、基本オペレータ・グラフ３３５に従って、処理すべきＰＥ ２３５に送付することができる。前述のように、本発明の一実施形態では、推定処理時間が所定のしきい値時間を超えることを決定する場合、ＥＰＴコンポーネント２４５は、所与のタプルを、代替実行パスに従って、第２のＰＥ ２３５に送付する。かかるシナリオでは、代替実行パスは、代替オペレータ・グラフ２４０によって指定することができる。さらに、ＥＰＴコンポーネント２４５は、ストリーム・マネージャ１３４に対し、データ・ストリームについて受信された全ての後続タプルを代替オペレータ・グラフ３４０に従ってＰＥ ２３５に送付すべきことを通知するように構成することができる。
【００３６】
図５は、本発明の一実施形態に従った、ストリーム・アプリケーション内の複数の計算ノードを例示する。図示のように、計算ノード１３０２は、３つの処理要素２３５２、２３５３及び２３５４（ＰＥ１〜ＰＥ３）を含む。この例では、処理要素２３５２は、Ｎ−タプル・データ・ストリームを受信し、Ｎ−タプルを処理要素２３５３及び２３５４（ＰＥ２及びＰＥ３）に出力する。次に、処理要素ＰＥ２及びＰＥ３は、Ｎ−タプルを計算ノード１３０３上の処理要素２３５５に出力する。この例では、ＰＥ １３５（ＰＥ１）は、属性＜名前、所属部門、給与、性別＞を含むタプルを受信する。ＰＥ１は、このＮ−タプルを取り、ＰＥ１が受信したタプル内の性別値に基づき、ＰＥ２に送信される１組のタプル及びＰＥ３に送信される他の１組のタプルを生成する。次に、ＰＥ２及びＰＥ３は、ＰＥ１から受信した各タプルについてデータベースへの書き込みを行い、そしてＰＥ４に送信されるタプルの属性＜名前、所属部門、給与＞を生成する。一旦これを受信すると、ＰＥ４は、第三者のウェブ・サービスにアクセスして、ストリーム・アプリケーション内のさらなる下流に送信されるタプルを生成する。
【００３７】
この例の説明を継続すると、図示のストリーム・アプリケーションは、受信タプルをできるだけリアルタイムに近い態様で処理することを必要とするものであることがある。そのため、ストリーム・アプリケーションは、複数のタプルをパイプライン式に処理することができる。本明細書では、パイプライン式処理は、第１の処理要素による処理の結果が次の処理要素によって処理され、当該次の処理要素による処理の結果が後続の処理要素によって処理され、以後同様の処理が実行されるという形式の任意の処理を意味する。従って、図５に示す例を使用すると、この処理がパイプライン化されていると云われる理由は、ＰＥ１による処理の結果が処理のためにＰＥ２又はＰＥ３の何れかに供給され、そしてＰＥ２及びＰＥ３の結果がさらなる処理のためにＰＥ４に供給されるという点にある。
【００３８】
この処理のパイプライン化のために、処理するのにより長い時間を要するデータの特定のタプルは、特定のタプルの処理を遅延させるだけでなく、受信した全ての後続タプルの処理も同様に遅延させることがある。例えば、一のタプルが平均して５ミリ秒ごとに受信され且つ例示したストリーム・アプリケーションが一のタプルを処理するのに平均して４ミリ秒を要すると仮定すれば、ストリーム・アプリケーションは、未処理タプルのバックログを有することなしに、受信タプルを処理することができるであろう。しかし、受信した特定のタプルを処理するのに５分を要するものとさらに仮定する。このことが生じ得るのは、例えば、特定のタプルが特定の属性を保持し、その処理が、第三者サービスにアクセスすることを必要とすることがあるからである。例えば、属性「所属部門」が値「技術部」を保持すれば、ストリーム・アプリケーションは、技術部特有の第三者の給与計算サービスにアクセスするように構成することができる。もし、ストリーム・アプリケーション及び第三者サービスの間の接続が現に問題を有していれば、特定のタプルの処理を完了するのに通常よりもかなり長い時間を要することがある（例えば、４ミリ秒対５分）。そのため、説明中の例では、特定のタプルの処理は、他のタプルの平均処理時間より遙かに長い時間を必要とするので、ストリーム・アプリケーションは、５分の処理時間中に受信した他の全てのタプルのバックログを有し、従ってこれらのタプルの処理が遅延されることになろう。さらに、属性「所属部門」の値「技術部」を保持する他のタプルが受信される場合、バックログ（従って、遅延）は、継続的に増大するであろう。
【００３９】
本発明の実施形態は、属性プロファイリングに基づいて、処理するのに過度に長い時間を要すると予測される特定のランタイム・データを除去することができる。本発明の実施形態に従って、ＥＰＴコンポーネント２４５は、各受信タプルが処理される前に、当該各受信タプルをプロファイルする。このプロファイリングは、タプル内に保持される属性、当該属性の値、当該属性に関するメタデータ、他のタプルの処理から収集した履歴データなどを考慮に入れることができる。一旦プロファイルが生成されると、ＥＰＴコンポーネント２４５は、受信タプル用の推定処理時間を計算する。次に、ＥＰＴコンポーネント２４５は、推定処理時間が所定のしきい値時間より小さいか又はそれに等しいかを決定し、そうであれば、基本実行パス（すなわち、受信タプルのための標準的な実行パス）に従って、受信タプルを処理すべき適切な処理要素に送信する。しかし、推定処理時間が所定のしきい値時間を超えることを決定すれば、ＥＰＴコンポーネント２４５は、処理要素を使用して受信タプルを処理する動作を回避することができる。その代わりに、受信タプルは、代替実行パスを使用して処理することができる。本発明の他の実施形態では、受信タプルの処理は、後の時間（例えば、処理要素がアイドルになるとき、又は接続がもはや問題を有しないとき）まで遅延させることができる。さらに他の実施形態では、受信タプルは単に廃棄して、処理しないようにすることができる。
【００４０】
本発明の実施形態は、推定処理時間がしきい値時間を超える場合には基本実行パスを使用する受信タプルの処理を回避することによって、特定のタプルがストリーム・アプリケーション内にバックログを作成する状況を回避するのを支援する。さらに、本発明の実施形態は、特定のタプル内に保持されるデータがストリーム・アプリケーションにとって失われないように、特定のタプルの処理を遅延させるか又は再送付するように構成することができる。これらの利点がストリーム・アプリケーションに特に適切であるのは、受信データをその受信時にできるだけリアルタイムに近い態様で処理する必要がある場合である。
【００４１】
さらに、本発明の実施形態は、所定のしきい値時間を使用するのではなく、１つ以上のファクタに基づき、しきい値時間を計算するように構成することができる。本発明の一実施形態では、ＥＰＴコンポーネント２４５は、システムのワークロード（又は予測ワークロード）に基づき、しきい値時間を計算する。例えば、ピーク処理時間帯の間は、システム資源は高いデマンドがあるので、ＥＰＴコンポーネント２４５は、しきい値時間を比較的短い時間にセットする。他の例として、オフピーク処理時間帯の間は、システム資源がアイドルであるか又は最大能力よりも低いレベルで動作しているので、ＥＰＴコンポーネント２４５は、しきい値時間を比較的長い時間にセットする。有利なことに、本発明の実施形態は、このようにして一種のロード・バランシングを行うことができる。というのは、システムが重いワークロードの下で動作している場合は、（処理時間の点で）長い照会を制限することができるからである。
【００４２】
図６は、本発明の一実施形態に従った、ランタイム・データの予測除去方法５００をフローチャートの形式で例示する。図示のように、方法５００はステップ５２０で開始し、そこでＥＰＴコンポーネント２４５は、処理すべきタプルを受信する。一実施形態では、このタプルは、ＥＰＴコンポーネント２４５に直接に送信することができる。代替実施形態では、ＥＰＴコンポーネント２４５は、処理要素２３５がタプルを受信する前に、この処理要素２３５に送信されたタプルをインターセプトすることができる。
【００４３】
一旦このタプルを受信すると、ＥＰＴコンポーネント２４５は、この受信タプル用のプロファイルを生成する（ステップ５２２）。一般に、このプロファイルは、受信タプルに関係する情報を含む。例えば、このプロファイルは、どのような属性が受信タプル内に保持されているかという情報に加えて、これらの属性の値に関する情報を含むことができる。さらに、このプロファイルは、受信タプルに関するメタデータを含むことができる。典型的なメタデータは、受信タプル内に保持される属性の数、受信タプル内に保持される属性のサイズ、受信タプル内に保持される属性のタイプ、受信タプルが属するグループ等を含む。さらに、このプロファイルは、以前に処理したタプルについて収集した情報を含むことができる。
【００４４】
一旦受信タプル用のプロファイルを生成すると、ＥＰＴコンポーネント２４５は、受信タプルを処理するための推定処理時間を計算する（ステップ５２４）。ＥＰＴコンポーネント２４５は、受信タプル用の生成済みプロファイルに基づき、この決定を行う。例えば、ＥＰＴコンポーネント２４５は、受信タプルが属性「所属部門」の値「販売部」を含むという理由で、このタプルを処理するのに約１５ミリ秒を要するだろうということを決定する。
【００４５】
一旦推定処理時間を計算すると、ＥＰＴコンポーネント２４５は、推定処理時間を所定のしきい値時間と比較する（ステップ５２６）。もし、推定処理時間がしきい値時間より大きいことを決定すれば、ＥＰＴコンポーネント２４５は、受信タプルを廃棄する（ステップ５３０）。次に、ＥＰＴコンポーネント２４５は、廃棄タプルに関する情報をログする（ステップ５３２）。一実施形態では、ＥＰＴコンポーネント２４５は、受信タプル内に保持される属性の値もログする。そのようにすると、受信タプルを後の時点で処理することができる。代替実施形態では、ＥＰＴコンポーネント２４５は、これに代えて、受信タプルを処理すべき代替実行パスに送付することができる。さらに、ＥＰＴコンポーネント２４５は、受信タプルが属するデータ・ストリームから受信される全ての後続タプルを代替実行パスに送付するように構成することができる。
【００４６】
一方、推定処理時間がしきい値時間よりも大きくないことを決定すれば、ＥＰＴコンポーネント２４５は、受信タプルを基本実行パスに従った適切な処理要素に送信し、そこで受信タプルが処理される（ステップ５２８）。一旦受信タプルが処理されるか、又は廃棄タプルに関する情報をログすると、ＥＰＴコンポーネント２４５は、処理すべき他のタプルが存在するか否かを決定する（ステップ５３４）。そうであれば、方法５００はステップ５２０で再び開始し、そこでＥＰＴコンポーネント２４５は、処理すべき次のタプルを受信する。さもなければ、方法５００は終了する。
【００４７】
方法５００を使用することの１つの利点は、基本実行パスを使用すると相当な遅延を引き起こしそうなタプルの処理を、ストリーム・アプリケーションが回避できるということにある。そのため、方法５００は、しきい値時間内に処理が完了すると予測されるタプルだけを処理することによって、「ボトルネック」効果を引き起こし且つストリーム・アプリケーション内に処理すべきタプルのバックログを作成しそうな任意のタプルの処理を回避することを支援する。さらに、本発明の実施形態は、その処理時間がしきい値時間を超えそうなタプルの処理を遅延させるか、又は代替実行パスを使用してこれらのタプルを処理するように構成することができる。そのため、これらのタプル内に保持されるデータは失われないし、これらのタプルを処理することにより基本実行パスが遅延されることもないであろう。
【００４８】
図７は、本発明の一実施形態に従った、タプルのプロファイル方法６００をフローチャートの形式で例示する。図示のように、方法６００はステップ６２０で開始し、そこでＥＰＴコンポーネント２４５は、受信タプルに関するメタデータを計算する。前述のように、典型的なメタデータは、受信タプル内に保持される属性の数、受信タプル内に保持される属性のサイズ、受信タプル内に保持される属性のタイプ及び受信タプルが属するグループを含む。もちろん、これらの例は、説明の便宜上のものであるに過ぎず、受信タプルに関する他のメタデータも収集することもできる。
【００４９】
一旦メタデータを計算すると、ＥＰＴコンポーネント２４５は、受信タプル内に保持される属性の値を分析する（ステップ６２２）。例えば、ＥＰＴコンポーネント２４５は、受信タプルが属性「所属部門」の値「技術部」を保持することを決定する。次に、ＥＰＴコンポーネント２４５は、受信タプルに関係する履歴データを検索する（ステップ６２４）。例えば、受信タプルが値「技術部」を有する属性「所属部門」を保持していれば、ＥＰＴコンポーネント２４５は、属性「所属部門」の値「技術部」を保持していた他のタプルの処理に関係する履歴データを検索する。一旦履歴データを検索すると、ＥＰＴコンポーネント２４５は、検索されたタプル用のプロファイルを作成する（ステップ６２６）。
【００５０】
受信タプル用のプロファイルを生成した後、ＥＰＴコンポーネント２４５は、生成されたプロファイルを使用して受信タプルの処理時間を推定することができる。例えば、ＥＰＴコンポーネント２４５は、特定のタプルが属性「所属部門」の値「技術部」を保持するという理由で、このタプルを処理するのに５０ミリ秒を要するであろうということを推定する。他の例として、このプロファイルは、他の関係するタプルの処理に関する履歴情報を保持することができる。例えば、一のプロファイルは、属性「所属部門」の値「技術部」を保持する３つのタプルが、１０ミリ秒、２０ミリ秒及び３０ミリ秒の処理時間でそれぞれ処理されたことを指示する情報を保持することがある。そのため、ＥＰＴコンポーネント２４５は、属性「所属部門」の値「技術部」を保持する一のタプルの推定処理時間が、以前の３つのレコード時間の平均となり、従って２０ミリ秒になるであろうということを決定することができる。ＥＰＴコンポーネント２４５は、これら及び他のファクタを考慮することによって、受信タプル用の完全なプロファイルを生成し、これを使用して、受信タプル用の正確な推定処理時間を計算することができる。さらに、前述の例は、受信タプル内の単一の属性を分析することに注目しているが、本発明の実施形態は、受信タプル用の推定処理時間を計算する際に、受信タプル内の複数又は全ての属性に加えて、他の関係する情報をも調べることができる。
【００５１】
図面のうちフローチャート及びブロック図は、本発明の種々の実施形態に従った、システム、方法及びコンピュータ・プログラムの可能な実装のアーキテクチャ、機能性及び動作を示す。この点に関連して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための１つ以上の実行可能命令から成る、モジュール、セグメント又はコード部分を表すことがある点に留意されたい。また、幾つかの代替的実装では、ブロック内に表記した機能を図面に示した順序とは異なる順序で実施することができる点にも留意されたい。例えば、特定の機能性に依存して、連続的に示した２つのブロックを実質的に並列に実施したり、これらのブロックを反対の順序で実施することができる。さらに、ブロック図又はフローチャートの各ブロック及び複数ブロックの組み合わせは、指定された機能又は行為を実行する専用のハードウェア・ベースのシステム又は専用ハードウェア及びコンピュータ命令の組み合わせによって実装することができる点にも留意されたい。
【００５２】
前述の説明は、本発明の実施形態に向けられているが、本発明の基本的な範囲から逸脱することなく、他の実施形態を考案することができる。本発明の範囲は、以下の請求項の記載によって決定される。
【符号の説明】
【００５３】
１００・・・コンピューティング・インフラストラクチャ
１０５・・・管理システム
１２０・・・通信ネットワーク
１３０・・・計算ノード
１３２・・・オペレータ・グラフ
１３４・・・ストリーム・マネージャ
１３５・・・ソース
１４０・・・シンク
２２５・・・メモリ
２３０・・・ストレージ
２３５・・・処理要素（ＰＥ）
２４０・・・オペレータ
２４５・・・推定処理時間（ＥＰＴ）コンポーネント
２５５・・・ストリーム接続データ
２６０・・・バッファ化ストリーム・データ
３２５・・・メモリ
３３０・・・ストレージ
３３５・・・
３３５・・・基本オペレータ・グラフ
３４０・・・代替オペレータ・グラフ
【図１】
0005679917.tif 000002
【図２】
0005679917.tif 000003
【図３】
0005679917.tif 000004
【図４】
0005679917.tif 000005
【図５】
0005679917.tif 000006
【図６】
0005679917.tif 000007
【図７】
0005679917.tif 000008