1つ以上の計算ノード上で実行する複数の処理要素から構成されたストリームアプリケーションをデバッグする方法であって、前記複数の処理要素の最初の1つにおけるデバッギングブレークポイントについての位置の指示を受信することと、オペレータグラフを評価して、前記複数のうちの1つ以上の他の処理要素に対する前記第1の処理要素の位置を識別することと、前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることと、前記第1の処理要素のためのデバッグセッションを開始することと、を含む、方法。各処理要素が、前記計算ノードの所与の1つ上でプロセスIDPIDを割り当てられたコンピューティングプロセスとして実行する、請求項1に記載の方法。前記第1の処理要素が、第1のNタプルを受信し、前記第1のNタプルを処理し、第2の処理要素に送出される第2のNタプルを発生するように構成されている、請求項1に記載の方法。前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、前記第1の処理要素のデバッグクローンを発生することと、前記デバッグクローンに前記ブレークポイントを挿入することと、前記デバッグクローンを前記ストリームアプリケーションに挿入することと、を含む、請求項1に記載の方法。前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、少なくとも第2の処理要素の実行を止めることと、前記第1および第2の処理要素から融合処理要素を発生することと、前記融合処理要素に前記ブレークポイントを挿入することと、前記融合処理要素を前記ストリームアプリケーションに挿入することと、を含む、請求項1に記載の方法。前記第1の処理要素が、前記第1の処理要素および第2の処理要素を含む融合処理要素であり、前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、前記第1の処理要素の実行を止めることと、前記第1の処理要素を含む第1の非融合処理要素を発生することと、前記第1の非融合処理要素に前記ブレークポイントを挿入することと、少なくとも前記第2の処理要素を含む第2の非融合処理要素を発生することと、前記第1および第2の融合処理要素を前記ストリームアプリケーションに挿入することと、を含む、請求項1に記載の方法。前記デバッグセッションに続いて、前記ストリームアプリケーションの状態を復元することを更に含む、請求項1に記載の方法。実行された場合に、1つ以上の計算ノード上で実行する複数の処理要素から構成されたストリームアプリケーションをデバッグするための動作を実行するプログラムを含むコンピュータ読み取り可能記憶媒体であって、前記動作が、前記複数の処理要素の最初の1つにおけるデバッギングブレークポイントについての位置の指示を受信することと、オペレータグラフを評価して、前記複数のうちの1つ以上の他の処理要素に対する前記第1の処理要素の位置を識別することと、前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることと、前記第1の処理要素のためのデバッグセッションを開始することと、を含む、コンピュータ読み取り可能記憶媒体。各処理要素が、前記計算ノードの所与の1つ上でプロセスIDPIDを割り当てられたコンピューティングプロセスとして実行する、請求項8に記載のコンピュータ読み取り可能記憶媒体。前記第1の処理要素が、第1のNタプルを受信し、前記第1のNタプルを処理し、第2の処理要素に送出される第2のNタプルを発生するように構成されている、請求項8に記載のコンピュータ読み取り可能記憶媒体。前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、前記第1の処理要素のデバッグクローンを発生することと、前記デバッグクローンに前記ブレークポイントを挿入することと、前記デバッグクローンを前記ストリームアプリケーションに挿入することと、を含む、請求項8に記載のコンピュータ読み取り可能記憶媒体。前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、少なくとも第2の処理要素の実行を止めることと、前記第1および第2の処理要素から融合処理要素を発生することと、前記融合処理要素に前記ブレークポイントを挿入することと、前記融合処理要素を前記ストリームアプリケーションに挿入することと、を含む、請求項8に記載のコンピュータ読み取り可能記憶媒体。前記第1の処理要素が、前記第1の処理要素および第2の処理要素を含む融合処理要素であり、前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、前記第1の処理要素の実行を止めることと、前記第1の処理要素を含む第1の非融合処理要素を発生することと、前記第1の非融合処理要素に前記ブレークポイントを挿入することと、少なくとも前記第2の処理要素を含む第2の非融合処理要素を発生することと、前記第1および第2の融合処理要素を前記ストリームアプリケーションに挿入することと、を含む、請求項8に記載のコンピュータ読み取り可能記憶媒体。前記動作が、前記デバッグセッションに続いて、前記ストリームアプリケーションの状態を復元することを更に含む、請求項8に記載のコンピュータ読み取り可能記憶媒体。各々がプロセッサおよびメモリを含む複数の計算ノードであって、ストリームアプリケーションの処理要素を実行するように構成された計算ノードと、少なくともプロセッサおよびメモリを含む管理システムであって、前記メモリがストリームデバッギングアプリケーションを記憶し、前記アプリケーションが、前記管理システム上で実行された場合に、前記複数の計算ノード上で実行する前記ストリームアプリケーションをデバッグするための動作を実行するように構成され、前記動作が、前記複数の処理要素の最初の1つにおけるデバッギングブレークポイントについての位置の指示を受信することと、オペレータグラフを評価して、前記複数のうちの1つ以上の他の処理要素に対する前記第1の処理要素の位置を識別することと、前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることと、前記第1の処理要素のためのデバッグセッションを開始することと、を含む、管理システムと、を含む、システム。各処理要素が、前記計算ノードの所与の1つ上でプロセスIDPIDを割り当てられたコンピューティングプロセスとして実行する、請求項15に記載のシステム。前記第1の処理要素が、第1のNタプルを受信し、前記第1のNタプルを処理し、第2の処理要素に送出される第2のNタプルを発生するように構成されている、請求項15に記載のシステム。前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、前記第1の処理要素のデバッグクローンを発生することと、前記デバッグクローンに前記ブレークポイントを挿入することと、前記デバッグクローンを前記ストリームアプリケーションに挿入することと、を含む、請求項15に記載のシステム。前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、少なくとも第2の処理要素の実行を止めることと、前記第1および第2の処理要素から融合処理要素を発生することと、前記融合処理要素に前記ブレークポイントを挿入することと、前記融合処理要素を前記ストリームアプリケーションに挿入することと、を含む、請求項15に記載のシステム。前記第1の処理要素が、前記第1の処理要素および第2の処理要素を含む融合処理要素であり、前記ストリームアプリケーションの状態を変更して前記第1の処理要素のデバッグを可能とすることが、前記第1の処理要素の実行を止めることと、前記第1の処理要素を含む第1の非融合処理要素を発生することと、前記第1の非融合処理要素に前記ブレークポイントを挿入することと、少なくとも前記第2の処理要素を含む第2の非融合処理要素を発生することと、前記第1および第2の融合処理要素を前記ストリームアプリケーションに挿入することと、を含む、請求項15に記載のシステム。前記動作が、前記デバッグセッションに続いて、前記ストリームアプリケーションの状態を復元することを更に含む、請求項15に記載のシステム。この問題に対処するために、データベースシステムのための開発途上の技術として、ストリームベースのコンピューティングおよびストリームベースのデータベースコンピューティングが出現しつつある。また、ストリーミングデータがデータベースファイルに到達する前に処理し照会するアプリケーションをユーザが生成することができる製品が入手可能である。この新進の技術によって、ユーザは、受信データレコードが飛行中にこれに適用する処理論理を指定することができ、この結果はミリ秒単位で利用可能である。このタイプの処理を用いたアプリケーションの構築が新しいプログラミングパラダイムを切り開いており、これによって、広範な革新的アプリケーション、システム、およびプロセスが開発可能となると共に、アプリケーションプログラマーおよびデータベース開発者に新しい課題を投げかけることになる。本発明の実施形態は、ストリームベースのデータベースアプリケーションにおいて処理要素または複数の要素をデバッグするための技法を提供する。例えば、本発明の一実施形態は、1つ以上の計算ノード上で実行する複数の処理要素から構成されたストリームアプリケーションをデバッグする方法を含む。この方法は、一般的に、複数の処理要素の最初の1つにおけるデバッギングブレークポイントについての位置の指示を受信することと、オペレータグラフを評価して、複数のうちの1つ以上の他の処理要素に対する第1の処理要素の位置を識別することと、を含むことができる。また、この方法は、ストリームアプリケーションの状態を変更して第1の処理要素のデバッグを可能とすることと、第1の処理要素のためのデバッグセッションを開始することと、を含むことができる。本発明の別の実施形態は、実行された場合に、1つ以上の計算ノード上で実行する複数の処理要素から構成されたストリームアプリケーションをデバッグするための動作を実行するプログラムを含むコンピュータ読み取り可能記憶媒体を含む。この動作は、複数の処理要素の最初の1つにおけるデバッギングブレークポイントについての位置の指示を受信することと、オペレータグラフを評価して、複数のうちの1つ以上の他の処理要素に対する第1の処理要素の位置を識別することと、を含むことができる。この動作は、更に、ストリームアプリケーションの状態を変更して第1の処理要素のデバッグを可能とすることと、第1の処理要素のためのデバッグセッションを開始することと、を含むことができる。本発明の更に別の実施形態は、各々がプロセッサおよびメモリを含む複数の計算ノードを有するシステムを含む。計算ノードは、ストリームアプリケーションの処理要素を実行するように構成されている。また、このシステムは、プロセッサおよびメモリを含む管理システムも含むことができる。このメモリはストリームデバッギングアプリケーションを記憶し、このアプリケーションは、管理システム上で実行された場合に、複数の計算ノード上で実行するストリームアプリケーションをデバッグするための動作を実行するように構成されている。この動作は、一般に、複数の処理要素の最初の1つにおけるデバッギングブレークポイントについての位置の指示を受信することと、オペレータグラフを評価して、複数のうちの1つ以上の他の処理要素に対する第1の処理要素の位置を識別することと、を含むことができる。更に、この動作は、ストリームアプリケーションの状態を変更して第1の処理要素のデバッグを可能とすることと、第1の処理要素のためのデバッグセッションを開始することと、を含むことができる。上述の態様が達成され、詳細に理解可能となるように、先に簡単にまとめた本発明の実施形態のいっそう具体的な説明を、添付図面を参照して行うことができる。しかしながら、本発明は他の等しく有効な実施形態を認めることができるので、添付図面は本発明の典型的な実施形態を図示するだけであり、従ってその範囲を限定するものとは見なされないことに留意すべきである。ストリームアプリケーションにおいて、オペレータは相互に接続されて、ある処理要素から次のものへと例えばTCP/IPソケットを介してデータが流れるようになっている。多くの小さい実行可能コードピースオペレータを生成することによってノード全体にアプリケーションを分散させ、多数のノード上に処理要素を複製し、それらの間で負荷バランスを取ることで、スケーラビリティを達成する。ストリームアプリケーションにおける複数の処理要素および複数のオペレータを共に融合させてfuse、更に大きい処理要素を形成することができる。こうすることによって複数の処理要素が共通のプロセス空間を共有することができ、その結果、プロセス間通信技法を用いて例えばTCP/IPソケットを用いて利用可能であるよりも著しく高速なオペレータ間通信が行われる。更に、処理要素は、ストリームアプリケーションを通るデータフローを表すオペレータグラフから動的に挿入または除去することができると共に、実行時にストリームアプリケーションから融合または非融合unfuseとすることができる。分散型ストリーム環境における処理要素は、動作中のコードによって発生したログファイルを調べることでデバッグすることができるが、完全なデバッグセッションが必要となることが多い。しかしながら、デバッガを動作させると、ブレークポイントに達したか否かにはかかわらずデバッグ中のプロセスが減速し、更に、ブレークポイントをトリガすると、デバッグ対象のオペレータを通って流れているデータの完全な停止ではないとしても著しい減速が生じる恐れがある。このため、デバッグ対象の処理要素を動作させることが、ストリーム停滞backupを引き起こす可能性がある。その処理要素におけるオペレータに流れているデータストリームは流れを止めないからである。更に一般的には、ストリームコンピューティングは、ストリームがオペレータを通って連続的に流れるという前提に基づいている。多数の処理要素を共に融合させて単一の動作プロセスを形成する場合、その中の1つでブレークポイントをトリガすると、融合させた処理要素の全てが処理を停止し、場合によってはオペレータグラフの大部分がオフになる。一方で、1組の非融合処理要素は、第2および第3の処理要素から流れたデータを結合させるように構成された第1の処理要素を含む場合がある。第2または第3の処理要素のいずれかでブレークポイントがトリガされると、ストリーム処理の結果が混乱する可能性がある。本発明の実施形態は、ストリームベースのアプリケーションにおいて処理要素または複数の要素をデバッグするための技法を提供する。具体的には、本発明の実施形態は、動作中の環境全体に対する処理要素または複数の要素のデバッグの影響を軽減するように、処理要素のデバッグ中にストリームアプリケーションの状態を変更するための技法を提供する。例えば、20のオペレータを含む融合処理要素内の1つのオペレータをデバッグする必要があると想定する。かかる場合、ストリームデバッガは、動作中のストリームから融合処理要素を取り除き、それらのオペレータを非融合とし、それらを動作中のストリームに再挿入するように構成することができる。そして、単一のオペレータをデバッグ中であるこの処理要素は、独立して動作中のプロセスそれ自身のプロセスIDPIDおよびメモリ空間を有するとして実行することができ、これによって、そのオペレータを他の19のオペレータから独立してデバッグすることができる。いったんデバッギングセッションが完了すると、デバッガは非融合オペレータを再融合して、20の融合オペレータを含む処理要素を、デバッグセッション前に存在した同一の実行状態に復元させることができる。別の実施形態においては、デバッガは、多数の独立した処理要素を1つのデバッグセッションの一部として共に融合することができる。これは、1つのオペレータをデバッグしている場合にオペレータグラフの一部の動作を止めるのに有用である場合がある。例えば、こうすることによって処理要素間の依存性を満足させることができる。同様に、所与の処理要素がデバッグされている間に適宜、デバッガはデータがストリーム内に流れるのを防ぐことができる。これは、デバッグされているオペレータグラフ内の処理要素の上流または下流のいずれかのポイントで行うことができる。更に具体的には、デバッガは、データがオペレータグラフ内のソースオペレータすなわちオペレータグラフを流れるデータのソースポイントである処理要素に流れること、または特定の部分または特定の処理要素に流れるのを防ぐことができる。逆に、デバッガは、入来データのいくつかのタプルを、ブレークポイントから除外されているものとして認識するように構成することができる。データの流れを防ぐことの代替案として、デバッグ対象の処理要素においてデータを負荷制限loadshedすることも可能であるまたはいくつかの条件のもとで流れることを選択的に可能とする。こうすることによって、特に、データが迅速に処理されないと価値を持たないことがある場合に、デバッギングセッションの完了時にシステムがデータで過負荷になることを回避するのに役立てることができる。更に別の実施形態においては、デバッガは、処理要素を複写して、その複製したものでデバッギングを行うように構成することができる。デバッグした処理要素から流れるデータは、リンクされた下流のオペレータに送出せずに、制限するshedことができる。更に、デバッグ対象のオペレータが出力した結果を、実際のオペレータと比較して、デバッギングプロセスの精度に関するチェックとすることができる。以下では、本発明の実施形態を参照する。しかしながら、本発明はここに記載する特定の実施形態に限定されないことは理解されよう。以下の特徴および要素の組み合わせは、異なる実施形態に関連する場合もそうでない場合も、本発明を実施し実行するように想定されている。更に、本発明の実施形態は他の可能な解決策または従来技術あるいはその両方よりも優れた利点を達成可能であるが、所与の実施形態によって具体的な利点が達成されるか否かは、本発明を限定するものではない。このため、以下の態様、特徴、実施形態、および利点は単なる例示であり、特許請求の範囲の請求項複数の請求項に明示的に言及される場合を除いて、添付の特許請求の範囲の要素または限定とは見なされない。同様に、本発明に対する言及は、本明細書に開示する本発明の主題の一般化として解釈されるものではなく、請求項複数の請求項に明示的に言及される場合を除いて、添付の特許請求の範囲の要素または限定として見なされるものではない。当業者には認められようが、本発明の態様は、システム、方法、またはコンピュータプログラムとして具現化することができる。従って、本発明の態様は、全体的にハードウェアの実施形態、全体的にソフトウェアの実施形態ファームウェア、常駐ソフトウェア、マイクロコード等を含む、または、ソフトウェアおよびハードウェアの態様を組み合わせた実施形態という形態を取ることができ、それらは全て本明細書において、回路、モジュール、またはシステムと一般的に称することができる。更に、本発明の実施形態は、具現化されたコンピュータ使用可能プログラムコードを有する1つ以上のコンピュータ読み取り可能媒体複数の媒体において具現化されるコンピュータプログラムの形態を取ることも可能である。1つ以上のコンピュータ読み取り可能媒体複数の媒体のあらゆる組み合わせを利用することができる。コンピュータ読み取り可能媒体は、コンピュータ読み取り可能信号媒体またはコンピュータ読み取り可能記憶媒体とすることができる。コンピュータ読み取り可能記憶媒体は、例えば、限定ではないが、電子、磁気、光、電磁気、赤外線、または半導体のシステム、装置、もしくはデバイス、または前述のもののいずれかの適切な組み合わせとすることができる。コンピュータ読み取り可能記憶媒体の更に具体的な例非網羅的な列挙は、以下を含む。すなわち、1本以上のワイヤを有する電気的接続、携帯型コンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、読み取り専用メモリROM電気的プログラマブル読み取り専用メモリEPROMまたはフラッシュメモリ、光ファイバ、携帯型コンパクトディスク読み取り専用メモリCD-ROM、光記憶デバイス、磁気記憶デバイス、または前述のもののいずれかの適切な組み合わせである。この文書の文脈において、コンピュータ読み取り可能記憶媒体は、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためにプログラムを含有または記憶することができるいずれかのタンジブルな媒体とすることができる。コンピュータ読み取り可能信号媒体は、例えばベースバンドにおいてまたは搬送波の一部として、具現化されたコンピュータ読み取り可能プログラムコードを有する伝播データ信号を含むことができる。かかる伝播信号は、限定ではないが、電磁気、光、またはそれらのいずれかの適切な組み合わせを含む多種多様な形態のいずれかを取ることができる。コンピュータ読み取り可能信号媒体は、コンピュータ読み取り可能記憶媒体ではないいずれかのコンピュータ読み取り可能媒体とすることができ、これは、命令実行システム、装置、またはデバイスによってまたはそれと接続して用いるためのプログラムを伝達、伝播、または伝送することができるものである。コンピュータ読み取り可能媒体上に具現化されたプログラムコードは、限定ではないが、無線、有線、光ファイバケーブル、RF等、または前述のもののいずれかの適切な組み合わせを含むいずれかの適切な媒体を用いて送信することができる。本発明の態様の動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、C等のオブジェクト指向プログラミング言語、および、Cプログラミング言語または同様のプログラミング言語等の従来の手順プログラミング言語を含む1つ以上のプログラミング言語のいずれかの組み合わせにおいて記述することができる。プログラムコードは、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンのソフトウェアパッケージとして、部分的にユーザのコンピュータ上でおよび部分的に遠隔コンピュータ上で、または全体的に遠隔コンピュータもしくはサーバ上で、実行することができる。後者の状況では、遠隔コンピュータは、ローカルエリアネットワークLANまたはワイドエリアネットワークWANを含むいずれかのタイプのネットワークを介してユーザのコンピュータに接続することができ、または、接続は外部コンピュータに対して行うことができる例えばインターネットサービスプロバイダを用いてインターネットを介して。以下に、本発明の実施形態に従った方法、装置システム、およびコンピュータプログラムのフローチャート図またはブロック図あるいはその両方を参照して、本発明の態様について説明する。フローチャート図またはブロック図あるいはその両方の各ブロックならびにフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせは、コンピュータプログラム命令によって実施可能であることは理解されよう。これらのコンピュータプログラム命令は、汎用コンピュータ、特殊目的コンピュータ、または他のプログラマブルデータ処理装置のプロセッサに提供されて機械を生成することができ、これによって、コンピュータまたは他のプログラマブルデータ処理装置のプロセッサによって実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するための手段を生成するようになっている。また、これらのコンピュータプログラム命令はコンピュータ読み取り可能媒体に記憶することができ、これにより、コンピュータまたは他のプログラマブルデータ処理装置または他のデバイスに特定の方法で機能するように指示することができ、これによって、コンピュータ読み取り可能媒体に記憶された命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施する命令を含む製造品を生成するようになっている。また、コンピュータプログラム命令を、コンピュータ、他のプログラマブルデータ処理装置、または他のデバイスにロードして、そのコンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させてコンピュータ実施プロセスを生成することができ、これによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートまたはブロック図あるいはその両方のブロックまたは複数のブロックに規定された機能/行為を実施するためのプロセスを提供するようになっている。本発明の実施形態は、クラウドコンピューティングインフラストラクチャを介してエンドユーザに提供することができる。一般的にクラウドコンピューティングとは、スケーラブルなコンピューティングリソースを、ネットワークを介したサービスとして提供することを指す。更に形式的には、クラウドコンピューティングは、コンピューティングリソースとその基礎にある技術的アーキテクチャ例えばサーバ、記憶装置、ネットワークとの間のアブストラクションを提供するコンピューティング機能として定義することができ、これによってコンフィギュレーション可能なコンピューティングリソースの共有プールに対する便利なオンデマンドのネットワークアクセスを可能とし、これらのリソースを、管理労力またはサービスプロバイダの相互作用を最小限に抑えつつ、迅速に供給し解放することができる。従って、クラウドコンピューティングによってユーザは、クラウドにおける仮想コンピューティングリソース例えば記憶装置、データ、アプリケーション、更には完全な仮想化コンピューティングシステムにアクセスすることができ、その上、これらのコンピューティングリソースを提供するために用いられる基礎にある物理システムまたはそれらのシステムの位置について考慮しなくても良い。典型的に、クラウドコンピューティングリソースは従量料金制でユーザに提供され、この場合ユーザは実際に用いたコンピューティングリソース例えばユーザが消費した記憶空間量、またはユーザがインスタンス化した仮想化システムの数のみの料金を課金される。ユーザは、クラウド内に常駐するリソースのいずれにも、いつでも、インターネットを介してどこからでもアクセスすることができる。本発明の文脈において、ユーザは、クラウド内で利用可能なアプリケーションまたは関連データにアクセスすることができる。例えば、ストリームデータベースアプリケーションを生成するために用いるノードは、クラウドサービスプロバイダがホストとなる仮想機械とすることができる。図1から図2は、本発明の一実施形態に従ってストリームアプリケーションを実行するように構成されたコンピューティングインフラストラクチャ100を示す。図示のように、コンピューティングインフラストラクチャ100は、管理システム105および複数の計算ノード1301~1304を含み、計算ノードの各々が通信ネットワーク120に接続されている。また、管理システム105は、オペレータグラフ132およびストリームマネージャ134を含む。以下で更に詳細に説明するが、オペレータグラフ132は、1つ以上のソース処理要素PEから開始して1つ以上のシンクPEまでのストリームアプリケーションを表す。データ要素は、ストリームアプリケーションのソースPE内に流れて、そのPEによって処理される。通常、処理要素は、ストリームからデータ要素のNタプルを受信すると共に、データ要素のNタプルをストリーム内に送出するストリームが終端するシンクPEを除く。むろん、処理要素が受信したNタプルは、下流に送信されるのと同一のNタプルである必要はない。また、処理要素は、Nタプル以外のフォーマットでデータを送受信するように構成することができる例えば処理要素はXML文書としてマークされたデータを交換することができる。更に、各処理要素は、受信したタプルに対していずれかの形態のデータ処理機能を実行するように構成することができる。その処理機能は、例えば、データベーステーブルへの書き込み、またはデータ結合、分割、読み取り等の他のデータベース動作の実行、ならびに他のデータ分析機能または動作の実行を含む。ストリームマネージャ134は、計算ノード1301~1304上で動作しているストリームアプリケーションを監視すると共に、オペレータグラフ132の構造を変更するように構成することができる。例えば、ストリームマネージャ134は、コンピューティングインフラストラクチャ100における計算ノード130の処理負荷を管理するために、ある計算ノード130から他のものに処理要素PEを移動させることができる。更に、ストリームマネージャ134は、計算ノード1301~1304上で動作している処理要素または処理要素に流れるデータタプルの挿入、除去、融合、非融合、または他の方法の変更を行うことによって、ストリームアプリケーションを制御することができる。図2は、計算ノード1301~1304上で動作している処理要素PE1~PE10と標示するを含む例示的なオペレータグラフを示す。処理要素は独立して動作中のプロセスとして実行することができるそれ自身のプロセスIDPIDおよびメモリ空間を有するが、多数の処理要素を融合させて単一のプロセスPIDおよびメモリ空間を有するとして動作することも可能である。2つまたはそれ以上の処理要素が独立して動作中の場合、ネットワークソケット例えばTCP/IPソケットを用いてプロセス間通信を行うことができる。しかしながら、プロセスを共に融合させた場合は、融合させた処理要素は、処理要素および各処理要素におけるオペレータ間でNタプルまたは他のデータを受け渡すための更に高速な通信技法を用いることができる。図示のように、オペレータグラフは、ソースPE135PE1と標示するで開始し、シンクPE1401~1402PE6およびPE10と標示するで終了する。計算ノード1301は、PE2およびPE3と共にソースPE1を含む。ソースPE1が送出するタプルはPE2およびPE3によって受信される。例えばPE1は、1タプルで受信されるデータ要素を分割し、いくつかのデータ要素をPE2に、他のものをPE3に渡すことができる。PE2に流れるデータは、計算ノード1302上のPE4に送出されるタプルとなる。そして、PE4が送出するデータタプルはシンクPE61401に流れる。同様に、PE3からPE5に流れるデータタプルもシンクPE61401に達する。このため、PE6は、この例のオペレータグラフのシンクであるのに加えて、結合動作を実行するように構成し、PE4およびPE5から受信したタプルを組み合わせることができる。また、この例のオペレータグラフは、P3から計算ノード1303上のPE7に流れるデータタプルも示すが、これはPE8に流れてPE7にループバックするデータタプルを示す。PE8から送出されたデータタプルは計算ノード1304上のPE9に流れ、これが送出するタプルはシンクPE101402によって処理される。図3は、本発明の一実施形態に従った、図1から図2の計算ノード130の更に詳細な図である。図示のように、計算ノード130は、中央演算処理装置CPU205、ネットワークインタフェース215、相互接続220、メモリ225、および記憶装置230を含むが、これらは限定ではない。また、計算ノード130は、I/Oデバイス212例えばキーボード、ディスプレイ、およびマウスデバイスを計算ノード130に接続するために用いられるI/Oデバイスインタフェース210も含むことができる。CPU205は、メモリ225に記憶されたプログラミング命令を検索して実行する。同様に、CPU205は、メモリ225に常駐するアプリケーションデータを記憶し検索する。相互接続220は、CPU205、I/Oデバイスインタフェース210、記憶装置230、ネットワークインタフェース215、およびメモリ225間でプログラミング命令およびアプリケーションデータを送信するために用いられる。CPU205は、単一のCPU、多数のCPU、多数の処理コアを有する単一のCPU等を代表するものとして含まれる。また、メモリ225は、一般にランダムアクセスメモリを代表するものとして含まれる。ハードディスクドライブ、固体デバイスSSD、またはフラッシュメモリ記憶ドライブ等の記憶装置230は、不揮発性データを記憶することができる。この例では、メモリ225は、融合処理要素PE235、非融合PE245、デバッガアプリケーション250、およびストリーム接続データ255を含む。融合PE235はオペレータ240の集合を含む。上述のように、各オペレータ240は、処理要素例えばPE235内に流れるデータを処理し、データをそのPEの他のオペレータ240およびストリームアプリケーションの他のPEに送出するように構成された小量の実行可能コードを提供することができる。かかるPEは、同一の計算ノード130上例えば非融合PE245またはデータ通信ネットワーク120を介してアクセスされる他の計算ノード上にある場合がある。ストリーム接続データ255は、計算ノード130上のPE間の接続例えば融合PE240と非融合PE245との間のTEP/IPソケット接続を表すと共に、TCP/IPソケットまたは他のプロセス間データ通信機構を介した他の計算ノード130に対する、ストリームアプリケーション内の上流または下流あるいはその両方のPEとの接続を表す。バッファストリームデータ260は、上流処理要素からまたはストリームアプリケーションのためのデータソースから計算ノード130に内に流れるデータのための記憶空間を表す。例えば、バッファストリームデータは、PE240または245の1つによって処理されるのを待っているデータタプルを含むことができる。また、バッファストリームデータ260は、PE240または245が実行したデータ処理の結果を記憶することができる。この結果は後に下流の処理要素に送信されるまたは負荷制限される。デバッガ250は、計算ノード130上で動作中の処理要素245を開発者がデバッグすることを可能とするように構成されたソフトウェアアプリケーションを提供する。例えばデバッガ250を用いて、ブレークポイントの設定、命令における関数呼び出しまでのまたは関数呼び出しが終わるまでの命令ステップの実行、変数の検査等を行うことができ、更に、処理要素245をデバッグするために用いられる多種多様な他の機能または特徴あるいはその両方を提供することができる。本発明の文脈において、デバッガ250は、PEを選択的に融合または非融合としてまたは他の方法でストリームアプリケーションの状態を変更して、デバッギングプロセスを容易にするように構成することができる。一実施形態では、例えばデバッガは、開発者によって指定されたようにPEを融合または非融合とすることができる。あるいは、デバッガ250は、所与の処理要素または複数の要素をデバッグするためのストリーム状態を提案するように構成することができる。これを行うためデバッガ250は、ストリームアプリケーションに関連付けられたオペレータグラフをどのように変更するかを決定するために、管理システム105上のストリームデバッガとの相互作用によって、オペレータグラフを分析すると共に、計算ノード130の集合全体にわたる処理要素の分布を分析することができる。デバッガ250は、処理要素の融合および非融合に加えて、例えばデバッグしているPEを通るデータフローを止めまたは制限し、デバッギングプロセスから除外するデータを指定し、PEを複写してPEのデバッグコピーを生成し、または他のアクションを実行して処理要素または複数の要素をデバッグ可能とすることによって、ストリームアプリケーションの動作状態を変更することができる。図4は、本発明の一実施形態に従った図1のサーバコンピューティングシステム105の更に詳細な図である。図示のように、サーバコンピューティングシステム105は、中央演算処理装置CPU305、ネットワークインタフェース315、相互接続320、メモリ325、および記憶装置330を含むが、これらは限定ではない。また、サーバコンピューティングシステム105は、I/Oデバイス312例えばキーボード、ディスプレイ、およびマウスデバイスをサーバコンピューティングシステム105に接続するI/Oデバイスインタフェース310を含むことができる。図3のCPU205と同様に、CPU305は、メモリ325および記憶装置330に記憶されたプログラミング命令を検索して実行するように構成されている。同様に、CPU305は、メモリ325および記憶装置330に常駐しているアプリケーションデータを記憶し検索するように構成されている。相互接続320は、プログラミング命令およびアプリケーションデータ等のデータを、CPU305、I/Oデバイスインタフェース310、記憶ユニット330、ネットワークインタフェース315、およびメモリ325間で移動させるように構成されている。CPU205と同様に、CPU305は、単一のCPU、多数のCPU、多数の処理コアを有する単一のCPU等を代表するものとして含まれる。メモリ325は、一般にランダムアクセスメモリを代表するものとして含まれる。ネットワークインタフェース315は、通信ネットワーク120を介してデータを送信するように構成されている。記憶装置330は、単一ユニットとして図示しているが、固定ディスクドライブ、着脱可能メモリカード、光記憶装置、SSD、またはフラッシュメモリデバイス、ネットワーク接続ストレージNAS、またはストレージエリアネットワークSANデバイスに対する接続等、固定または着脱可能あるいはその両方の記憶デバイスの組み合わせとすることができる。図示のように、メモリ325は、ストリームデバッガ335、ストリームコンパイラ330、およびストリームマネージャ132を記憶している。また、記憶装置330はオペレータグラフ134を含む。上述のように、ストリームデバッガを用いて、計算ノード130の1つまたはそれ以上の処理要素PEのデバッギングを管理することができる。例えばストリームデバッガ335は、ある処理ノードを他の複数のPEと融合させるまたは非融合とすることを決定することができる。かかる場合、ストリームデバッガは、1つの計算ノード上で大きなPE群が融合されているが、それらの処理要素のうち少数にしかデバッグブレークポイントが含まれていないとオペレータグラフから判定することができる。かかる場合、ストリームデバッガ335は、この大きい群からブレークポイントを有するPEを非融合とさせると決定することができる。一実施形態では、ストリームデバッガ335は、ストリームコンパイラ340を呼び出して必要に応じてPE/オペレータソースコードの要素を再コンパイルすることによって、PEを非融合とする。本例では、ブレークポイントを有するPEを再コンパイルして第1のPEとすることができ、融合PEからの残りのPEを再コンパイルして第2のPEとすることができる。いったん準備ができたら、ストリームマネージャ132は、動作中のストリームから融合PEを除去し、これをストリームコンパイラ340が発生した第1および第2のPEで置換することができる。その後、第1のPEにおけるブレークポイントに達したら、第1のPEは実行を停止するが、第2のPEが実行する処理を混乱させることはない。図5は、本発明の一実施形態に従ったストリームアプリケーションにおける計算ノードの一例を示す。図示のように、計算ノード1302上の融合処理要素405は3つの処理要素PE1~PE3と標示するを含み、これはNタプルデータストリームを受信すると共に、計算ノード1303上の処理要素410PE4と標示するにNタプルを送出する。この例では、融合処理要素405はソースPE135PE1と標示するを含み、これは<名前、部署、給料、性別>を含むタプルを受信する。PE1は、このNタプルを取得し、PE1が受信したタプルにおける性別値に基づいて、PE2に送信される1組のタプルおよびPE3に送信される別の組のタプルを発生する。次いで、PE2およびPE3は、PE1から受信した各タプルについてデータベース書き込みを実行し、PE4に送信される<名前、部署、給料>のタプルを発生する。受信したら、PE4は、サードパーティのウェブサービスにアクセスし、ストリームアプリケーションにおいて更に下流に送信されるタプルを発生する。図6は、本発明の一実施形態に従った、ストリームデータベースアプリケーションにおいて処理要素をデバッグするための方法500を示す。図示のように、この方法500はステップ505で開始し、ここでデバッガアプリケーションは、ストリームアプリケーションのオペレータグラフに含まれる処理要素についてのブレークポイントの指示を受信する。ステップ510において、デバッガアプリケーションは、他の処理要素に対するオペレータグラフ内のこの処理要素の位置を識別することができる。この位置に基づいて、デバッガアプリケーションは、オペレータグラフにおける処理要素を融合または非融合とすることを決定することができるステップ515。更に、デバッギングアプリケーションは、例えばブレークポイントを有する処理要素を複写することによって、またはあるデータタプルまたはデータフローをデバッグから除外することによって、ストリームアプリケーションの動作に対して他の変更を加えることができる。同様に、デバッギングアプリケーションは、ある処理要素についてデータタプルの送信または受信を阻止すべきこと、またはデバッギングセッション中に発生したデータ処理の結果を負荷制限すべきことを指定することができる。ステップ520において、融合または非融合としたPEを再開してアプリケーションストリームに展開することができるブレークポイントを有するPEを含む。ステップ525において、いったんPEがアプリケーションストリームで動作およびストリームアプリケーションに対してデバッガが行うと選択した他のいずれかの変更すると、デバッグ対象のPEの動作を評価することができる。例えば、ブレークポイントがトリガされるとデバッグ対象のPEは実行を止めることができ、次いで開発者は、関数呼び出しまでまたは関数呼び出しが終わるまで1ステップずつ進むことによって段階的にPEを実行し、変数を検査し、他のいずれかのデバッギング機能を実行して処理要素を評価することができる。同時に、データタプルは、デバッグされているPEに流れ続け、バッファに記憶することができる。すなわち、いったんブレークポイントがトリガされると、デバッグされているPEに流れているタプルは、PEが実行を再開するまでバッファすることができる。ステップ530において、いったんデバッギングセッションが完了すると、デバッギングアプリケーションは、ストリームアプリケーションの状態を復元し、デバッギングセッションをサポートするために行った変更を取り消すことができる。従って、デバッギングセッションの一部として融合されたまたは非融合されたPEは、非融合または再融合することができ、タプルフローを復元することができ、またはバッファしたデータ結果を負荷制限することができ、複写した処理要素を除去することができる等となる。図7から図9は、本発明の実施形態に従った、最初に図5に示した計算ノードおよびストリームアプリケーションの一例であるが、ストリームアプリケーションをデバッグするための状況を例示するように変更したものである。まず、図7は、図5の融合処理要素405の一例であるが、処理要素の1つのデバッグを可能とするために部分的に非融合とした後のものである。開発者がPE2において1つ以上のブレークポイントを追加すると仮定する。かかる場合、デバッガアプリケーションは、PE1およびPE3によって実行される処理から独立してPE2のデバッグが可能であると判定し、融合処理要素405からPE2を非融合とすることができる。従って、図示のように、融合PE405を変更してPE2を除去し、結果として部分的に非融合のPE405’を生じている。更に、PE2はここで非融合PE605として実行している。PE2を独立プロセスとして動作させることによって、アプリケーションストリームを減速させることなくPE2をデバッグすることができる。データタプルは部分的に非融合のPE405’を流れるからである。同時に、オペレータグラフの基本的な構造は不変のままである。すなわち、依然としてタプルは最初にPE1に流れ、これがPE2およびPE3に送信されるタプルを発生する。同様に、図8は図5の処理要素410の一例を示すが、追加のPEと融合した後のものである。この例では、ユーザがPE4にブレークポイントを配置すると仮定する。かかる場合、デバッガアプリケーションは、PE4が実行を停止した場合に下流の処理要素PE5も実行を停止するような依存性をPE5が有すると判定することができる。例えばPE5は、規則的な指定された間隔でPE4からデータを受信するように構成することができる。この依存性が与えられれば、ユーザがPE4にブレークポイントを挿入した場合に、デバッガアプリケーションはPE4およびPE5を融合させて融合処理要素410’とすることができる。そうすることによって、PE4はPE5の動作を混乱させることなくデバッグすることができる。PE4においてブレークポイントに達した場合、PE4およびPE5の双方の動作が実行を停止するからである。図9は、図5の処理要素410を変更する別の例を示す。この例でも、ユーザはPE410PE4と標示するにブレークポイントを配置する。しかしながら、この場合、PE410をデバッグしてもストリームからPE805PE5と標示するに流れるデータを混乱させないとデバッガアプリケーションが判定することを仮定する。かかる場合、デバッガアプリケーションはデバッグクローン410’を生成し、これをアプリケーションストリームに挿入することができる。この結果を図9に示す。ここで、PE405から流れるデータは複写され、PE410およびデバッグクローン410’の双方に送信される。このため、PE410はストリームの処理を続け、PE805によって受信されるタプルをストリーム内に送出する。同時に、PE405から流れるデータはデバッグクローン410にも送信され、タプルをデバッグログに出力する。こうすることによって、デバッガは、アプリケーションストリームを混乱させることなくPE410’のためのデバッギングセッションを実行することができる。好都合なことに、上述した本発明の実施形態は、ストリームベースのアプリケーションにおいて処理要素または複数の要素をデバッグするための技法を提供する。特に、本発明の実施形態は、1群の計算ノード上で動作している処理要素を選択的に融合するまたは非融合とすることによって、動作中の環境全体に対する処理要素または複数の要素のデバッグの影響を軽減するように処理要素をデバッグするための技法を提供する。処理要素を融合および非融合とすることに加えて、デバッギングアプリケーションおよびストリームマネージャは、様々な方法でアプリケーションストリーム内のデータフローを変更して、デバッギングセッションの結果として生じる何らかの混乱を最小限に抑えることができる。図面におけるフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータプログラムの可能な実施のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、規定された論理機能複数の機能を実施するための1つ以上の実行可能命令を含むコードのモジュール、セグメント、または一部を表すことができる。また、いくつかの代替的な実施において、ブロックに明記した機能は、図面に明記した順序どおりでなく発生する場合があることに留意すべきである。例えば、関与する機能性に応じて、連続して示した2つのブロックは実際には実質的に同時に実行されることがあり、またはブロックは時に逆の順序で実行される場合がある。また、ブロック図またはフローチャートあるいはその両方の各ブロック、およびブロック図またはフローチャートあるいはその両方におけるブロックの組み合わせは、特殊目的ハードウェアおよびコンピュータ命令の規定された機能もしくは行為または組み合わせを実行する特殊目的ハードウェアベースのシステムによって実施可能であることに留意すべきである。前述の説明は本発明の実施形態を対象とするが、その基本的な範囲から逸脱することなく本発明の他の実施形態および更に別の実施形態を考案することができ、その範囲は以下の特許請求の範囲によって決定される。