JP2007299406A - 多経路データ・ストリーム相関をスケーラブルに処理するためのシステムおよび方法 - Google Patents

多経路データ・ストリーム相関をスケーラブルに処理するためのシステムおよび方法 Download PDF

Info

Publication number
JP2007299406A
JP2007299406A JP2007120460A JP2007120460A JP2007299406A JP 2007299406 A JP2007299406 A JP 2007299406A JP 2007120460 A JP2007120460 A JP 2007120460A JP 2007120460 A JP2007120460 A JP 2007120460A JP 2007299406 A JP2007299406 A JP 2007299406A
Authority
JP
Japan
Prior art keywords
stream
tuple
correlation
routing
join
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2007120460A
Other languages
English (en)
Other versions
JP5090054B2 (ja
Inventor
Xiaohui Gu
シャオフイ・グ
Shiiran U Phillip
フィリップ・シーラン・ユー
Haixun Wang
ハイシュン・ワン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007299406A publication Critical patent/JP2007299406A/ja
Application granted granted Critical
Publication of JP5090054B2 publication Critical patent/JP5090054B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99944Object-oriented database structure
    • Y10S707/99945Object-oriented database structure processing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99948Application of database or data structure, e.g. distributed, multimedia, or image

Abstract

【課題】 多経路ストリーム相関を処理するためのコンピュータ実施方法、装置、およびコンピュータ使用可能プログラム・コードを提供すること。
【解決手段】 相関のためのストリーム・データが受け取られる。多経路ストリーム相関作業負荷をより小さな作業負荷部片に連続的に区分するための、タスクが形成される。より小さな作業負荷部片のそれぞれを、単一のホストによって処理することができる。ストリーム・データは、相関処理のために異なるホストに送られる。
【選択図】 図3

Description

本発明は、一般に改善されたデータ処理システムに関し、とりわけ、データ・ストリームを処理するためのコンピュータ実施方法および装置に関する。さらに具体的に言えば、本発明は、多経路(multi-way)データ・ストリーム相関をスケーラブルに処理するためのコンピュータ実施方法、装置、およびコンピュータ使用可能プログラム・コードに関する。
本発明は、米国国防省によって認められた契約第TIA H98230−05−3−0001号の下で政府の支援により作成された。政府は、本発明に対して一定の権利を有する。
ストリーム処理コンピューティング・アプリケーションとは、データに関する何らかの制限を満たす情報の流れの形でデータがシステムに入るアプリケーションである。処理されるデータの量は格納できないほど大量である可能性があるため、情報の流れは、センサ・データ分析およびネットワーク・トラフィック監視などの、動的なデータ・ストリームを介した高度なリアルタイム処理を必要とする。ストリーム処理コンピューティング・アプリケーションの例には、ビデオ処理、オーディオ処理、ストリーミング・データベース、およびセンサ・ネットワークが含まれる。これらのアプリケーションでは、外部ソースからのデータ・ストリームがデータ・ストリーム管理システムに流れ込み、ここで様々な連続する照会オペレータによって処理される。
無制限のストリームをサポートするために、ストリーム処理システムは、各ストリームにスライディング・ウィンドウ(sliding-window)を関連付ける。スライディング・ウィンドウは、ストリーム上で最も新しく到着したデータ項目を含む。ウィンドウは、最新の60秒以内に到着したビデオ・フレームなどの時間ベース、または最新の1000のビデオ・フレームなどの数量ベースの、いずれかとすることができる。最も重要な連続する照会オペレータのうちの1つが、複数の異なるデータ・ストリームにわたるスライディング・ウィンドウ結合である。スライディング・ウィンドウ結合の出力は、事前に定義された結合述部を満たし、それらのそれぞれのウィンドウ内に同時に存在する、相関されたタプルのすべてのセットを含む。
いくつかのアプリケーション例には、ホット・トピックを検出するために異なるニュース・ビデオ・ストリーム間で同様のイメージを検索すること、および、侵入を検出するために異なるネットワーク・トラフィック・フロー間でソース/宛先アドレスを相関させることが含まれる。多くのストリーム相関アプリケーションがキー比較よりも複雑な結合述部を要求するため、キー・ベースの等価結合はあまり効果的でない場合がある。たとえばニュース・ビデオ相関アプリケーションでは、結合条件は、2つのイメージの40次元分類値間の距離がしきい値より短いかどうかである。したがって、異なるストリームのデータを相関させるということは、1つまたは複数の事前に定義された相関述部を満たす異なるストリーム上でそれらのデータを見つけることを意味する。
多経路のストリーム結合を処理するための主な課題は、複数の高容量および時変化のデータ・ストリームにわたってリアルタイムで多数の結合比較を実行することである。高ストリーム・レートおよび大規模ウィンドウ・サイズが与えられた場合、ウィンドウ表示されたストリーム結合は大規模メモリ要件を有する可能性がある。さらに、イメージ比較などのいくつかの照会処理は、中央処理装置集約型となる可能性もある。単一のホストでは、多経路ストリーム結合の作業負荷によって容易に過負荷となる可能性がある。
例示的な諸実施形態は、多経路ストリーム相関を処理するためのコンピュータ実施方法、装置、およびコンピュータ使用可能プログラム・コードを提供する。相関のためにストリーム・データが受信される。多経路ストリーム相関の作業負荷をより小さな作業負荷の部片に連続的に区分するために、タスクが形成される。より小さな作業負荷のそれぞれの部片を、単一のホストによって処理することができる。ストリーム・データは、相関処理のために異なるホストに送信される。
例示的諸実施形態の特徴であるとみなされる新規な機能は、添付の特許請求の範囲に記載される。しかしながら例示的諸実施形態自体、ならびにそれらの好ましい使用方法、他の目的および利点は、添付の図面と共に例示的実施形態の以下の詳細な説明を参照することによって、最も良く理解されるであろう。
次に図面、特に図1〜図2を参照すると、例示的諸実施形態が実施可能なデータ処理環境の例示的図面が提供されている。図1〜図2は単なる例であり、異なる諸実施形態が実施可能な環境に関していかなる制限も表明または暗示することを意図するものでないことを理解されたい。示された環境に対する多くの修正形態が実行可能である。
次に図面を参照すると、図1は、例示的諸実施形態が実施可能なデータ処理システムのネットワークを示す絵画図である。ネットワーク・データ処理システム100は、諸実施形態が実施可能なコンピュータのネットワークである。ネットワーク・データ処理システム100は、様々なデバイス間の通信リンクと、ネットワーク・データ処理システム100内で互いに接続されたコンピュータとを提供するために使用される媒体である、ネットワーク102を含む。ネットワーク102は、有線、無線通信リンク、または光ファイバケーブルなどの、接続を含むことができる。
示された例では、サーバ104およびサーバ106が、ストレージ・ユニット108と共にネットワーク102に接続する。加えて、クライアント110、112、および114がネットワーク102に接続する。これらのクライアント110、112、および114は、たとえばパーソナル・コンピュータまたはネットワーク・コンピュータとすることができる。示された例では、サーバ104が、ブート・ファイル、オペレーティング・システム・イメージ、およびアプリケーションなどのデータを、クライアント110、112、および114に提供する。クライアント110、112、および114は、この例ではサーバ104に対するクライアントである。ネットワーク・データ処理システム100は、図示されていない追加のサーバ、クライアント、および他のデバイスを含むことができる。
示された例において、ネットワーク・データ処理システム100は、互いに通信するために伝送制御プロトコル/インターネット・プロトコル(TCP/IP)のプロトコル・スイートを使用する、ネットワークおよびゲートウェイの世界的な集合体を表すネットワーク102を備えたインターネットである。インターネットの心臓部は、データおよびメッセージをルーティングする何千もの商用、行政用、教育用、およびその他のコンピュータ・システムからなる、主ノードまたはホスト・コンピュータ間の高速データ通信回線のバックボーンである。もちろん、ネットワーク・データ処理システム100は、たとえばイントラネット、ローカル・エリア・ネットワーク(LAN)、またはワイド・エリア・ネットワーク(WAN)などの、いくつかの異なるタイプのネットワークとして実施することも可能である。図1は一例であり、様々な諸実施形態に対するアーキテクチャ上の制限として意図されたものではない。
次に図2を参照すると、例示的諸実施形態が実施可能なデータ処理システムのブロック図が示されている。データ処理システム200は、プロセスを実施するコンピュータ使用可能コードまたは命令を例示的諸実施形態に関して配置することができる、図1のサーバ104またはクライアント110などのコンピュータの一例である。
示された例では、データ処理システム200は、ノース・ブリッジおよびメモリ・コントローラ・ハブ(MCH)202とサウス・ブリッジおよび入力/出力(I/O)コントローラ・ハブ(ICH)204とを含む、ハブ・アーキテクチャを採用する。プロセッサ206、主メモリ208、およびグラフィックス・プロセッサ210は、ノース・ブリッジおよびメモリ・コントローラ・ハブ202に結合される。グラフィックス・プロセッサ210は、たとえばアクセラレーテッド・グラフィックス・ポート(AGP)を介して、MCHに結合することができる。
示された例では、ローカル・エリア・ネットワーク(LAN)アダプタ212がサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合され、オーディオ・アダプタ216、キーボードおよびマウス・アダプタ220、モデム222、読み取り専用メモリ(ROM)224、ユニバーサル・シリアル・バス(USB)ポートおよび他の通信ポート232、ならびにPCI/PCIeデバイス234は、バス238を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合され、ハード・ディスク・ドライブ(HDD)226およびCD−ROMドライブ230は、バス240を介してサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合される。PCI/PCIeデバイスは、たとえばイーサネット(登録商標)・アダプタ、アドイン・カード、およびノートブック・コンピュータ用のPCカードを含むことができる。PCIはカード・バス・コントローラを使用するが、PCIeは使用しない。ROM 224は、たとえばフラッシュ・バイナリ入力/出力システム(BIOS)とすることができる。ハード・ディスク・ドライブ226およびCD−ROMドライブ230は、たとえばIntegrated Drive Electronics(IDE)またはSerial Advanced Technology Attachment(SATA)インターフェースを使用することができる。スーパーI/O(SIO)デバイス236をサウス・ブリッジおよびI/Oコントローラ・ハブ204に結合することができる。
オペレーティング・システムがプロセッサ206上で実行され、図2のデータ処理システム200内の様々なコンポーネントを調整し、それらの制御を提供する。オペレーティング・システムは、Microsoft(R)のWindows(R)XP(MicrosoftおよびWindowsは、米国、他の諸外国、またはその両方にあるMicrosoft Corporationの商標である)などの、市販のオペレーティング・システムとすることができる。Java(TM)プログラミング・システムなどのオブジェクト指向プログラミング・システムはオペレーティング・システムと共に実行することが可能であり、データ処理システム200上で実行中のJavaプログラムまたはアプリケーションからオペレーティング・システムへ呼び出しを提供する(JavaおよびすべてのJavaベースの商標は、米国、他の諸外国、またはその両方にあるSun Microsystems,Inc.の商標である)。
オペレーティング・システム、オブジェクト指向プログラミング・システム、およびアプリケーションまたはプログラムに関する命令は、ハード・ディスク・ドライブ226などのストレージ・デバイス上に配置され、プロセッサ206による実行のために主メモリ208にロードすることができる。例示された諸実施形態のプロセスは、たとえば、主メモリ208、読み取り専用メモリ224などのメモリ内、あるいは1つまたは複数の周辺デバイス内に配置可能な、コンピュータ実施命令を使用するプロセッサ206によって実行可能である。
図1〜図2のハードウェアは、実施によって変更可能である。フラッシュ・メモリ、等価の不揮発性メモリ、または光ディスク・ドライブなどの、他の内部ハードウェアまたは周辺デバイスを、図1〜図2に示されたハードウェアに加えて、またはそれらの代わりに使用することができる。また、例示的諸実施形態のプロセスをマルチプロセッサ・データ処理システムに適用することもできる。
いくつかの例では、データ処理システム200は、一般に、オペレーティング・システム・ファイルおよび/またはユーザ生成データを格納するために不揮発性メモリを提供するためのフラッシュ・メモリで構成される、携帯情報端末(PDA)とすることができる。バス・システムは、システム・バス、I/Oバス、およびPCIバスなどの、1つまたは複数のバスで構成することができる。もちろん、バス・システムは、ファブリックまたはアーキテクチャに取り付けられた様々なコンポーネントまたはデバイス間でのデータの転送に備えた、任意のタイプの通信ファブリックまたはアーキテクチャを使用して実施することができる。通信ユニットは、モデムまたはネットワーク・アダプタなどの、データの送信および受信に使用される1つまたは複数のデバイスを含むことができる。たとえばメモリは、ノース・ブリッジおよびメモリ・コントローラ・ハブ202に見られるような、主メモリ208またはキャッシュとすることができる。処理ユニットは、1つまたは複数のプロセッサまたはCPUを含むことができる。図1〜図2に示された例および前述の例は、アーキテクチャ上の制限を示唆するものではない。たとえばデータ処理システム200は、PDAの形を取る以外に、タブレット・コンピュータ、ラップトップ・コンピュータ、または電話デバイスとすることもできる。
例示的諸実施形態は、処理ユニット、主要ストリーム、および出力データに関するユーザ要件の公式な記述に基づいて、自動的に作業フローを作成するプロセスを提供する。このプロセスは、システム・リソースに過度な負担をかけることなく、また人間の対話なしに、新しく使用可能となった主要ストリーム、処理ユニット、および他の変化するパラメータ、環境、または条件に即時に適合することができる。加えて、作業フローを、ウェブ・サービス実行環境内で実行可能なフォーマットに変換することもできる。
図3は、例示的諸実施形態に従ったストリーム処理の一例を示す図である。この例では、特定の株が所定の値を超えそうな場合に通知するように要求したユーザに、相関結果350が渡される。一例では、相関結果は、株価の変動が相関された株のセットである。これらの例では、主要ストリームまたはブロードキャスト・ストリームが、取引310、テレビ・ニュース320、およびラジオ330を含む。示された例では、アプリケーション・コンポーネントが株式分析312、Moving Pictures Experts Group 4(MPEG−4)デマルチプレクサ322、イメージ分析324、音声テキスト326、テキスト分析328、音声テキスト332、テキスト分析334、および多経路ストリーム結合340を含む。
ストリーム処理アプリケーションは、使用可能な主要ストリームを使用する既存のアプリケーション・コンポーネントからなるものとすることができるため、アプリケーション・コンポーネントはユーザの要求を満たす結果を生成する。したがって、株式分析312は情報ストリームである取引310を受け取り、結果を多経路ストリーム結合340に出力する。
この例では、MPEG−4デマルチプレクサ322がブロードキャスト・ストリームであるテレビ・ニュース320を受け取り、イメージ分析324、テキスト分析328、および音声テキスト326へと出力する。次に、音声テキスト326がテキスト分析328へと出力する。イメージ分析324およびテキスト分析328は多経路ストリーム結合340へと出力する。
音声テキスト332は主要ストリームであるラジオ330を受け取り、テキスト分析334へと出力する。次にテキスト分析334が多経路ストリーム結合340へと出力する。多経路ストリーム結合340は、相関結果350の形で出力を提供する。
一実施形態では、ストリーム・プロパティは、ストリーム・オブジェクトでパラメータ化された変数(fluent)および述部として符号化することが可能である。プログラミングにおいて述部とは、式を評価し、データの条件に基づいてtrueまたはfalseの回答を提供する、ステートメントのことである。これらの条件は、ストリーム・プロパティの観点から論理式として表される。変数とは、述部よりも一般的な関数のことである。変数は、述部のブール・ドメイン以外のドメインから値を取ることができる。変数は、文献では関数とも呼ばれる。コンポーネント記述は、入力および出力ストリーム・オブジェクトでパラメータ化されたアクションとして符号化される。アクションの前提条件は、入力ストリームに関する変換済み入力ポート要件からなり、アクションの結果が、出力ポートに関連付けられた変換公式を使用して、出力ストリーム・オブジェクトのプロパティを計算する。一連のアクションとしてプランニング・システムによって生成されたプランは、その後、ポートに対応するインスタンス生成アクション・パラメータ間でのストリーム・オブジェクトの共有に基づいて、入力出力ポート接続を識別することにより、作業フローに変換される。
例示的諸実施形態は、多経路ストリーム結合を処理するためのスケーラブルな分散ソリューションのために、コンピュータ実施方法、装置、およびコンピュータ使用可能プログラム・コードを提供する。多くのストリーム相関アプリケーションが、キー比較よりも複雑な結合述部を要求するため、等価結合および非等価結合などの総称的なストリーム結合が考慮される。
例示的諸実施形態は、多経路ストリーム結合の分散型実行を可能にする、相関認識タプル・ルーティング・フレームワークを対象とする。分散方式は、スライディング・ウィンドウ結合セマンティクスを観察することができる。スライディング・ウィンドウ結合の出力は、事前に定義された結合述部を満たし、それらのそれぞれのウィンドウ内に同時に存在する、相関済みタプルのすべてのセットを含む。分散オーバヘッドは、相関制約によるスライディング・ウィンドウ結合セマンティクスを維持するために不可避である。結果として、例示的諸実施形態は、分散オーバヘッドが最小限の分散型ホストのセット間で、多経路ストリーム結合オペレータの作業負荷を最適に分散することに対処する。分散オーバヘッドとは、システム・リソースの使用または過度の使用のことである。たとえば、分散オーバヘッドは、着信するデータ・ストリームを処理するために必要なプロセッサの消費時間、メモリ・スペース、およびネットワーク帯域幅を含むことができる。
例示的一実施形態では、整列(aligned)タプル・ルーティング(ATR)方法または方式が、ストリーム区画を使用する多経路ストリーム結合の分散型実行を達成する。整列タプル・ルーティングは、最も高速の入力ストリームをマスタ・ストリームとして動的に選択し、相関制約を満たすために他のストリームのタプル・ルーティングをマスタ・ストリームと整列させる。整列タプル・ルーティングは、入力ストリームを、結合処理のために異なるホストにルーティングされるセグメントに分割する。セグメントとは、ストリームの一部分またはセクションのことである。結合処理は相関処理とも呼ばれる。整列タプル・ルーティングを使用して、結合セマンティクスを保持することができる。さらに、整列タプル・ルーティングのオーバヘッドはホストの数とは無関係である。その代わりに、整列タプル・ルーティングのオーバヘッドは、スライディング・ウィンドウのサイズおよびスレーブ・ストリームにのみ関係する。その結果、整列タプル・ルーティングは、スレーブ・ストリームが低く、スライディング・ウィンドウのサイズがそれほど大きくない場合に好適である。
他の例示的実施形態では、制約付き(constrained)タプル・ルーティング(CTR)方式が、相関制約の下で異なるストリームのタプルを別々にルーティングする。制約付きタプル・ルーティングは、ストリーム区画およびオペレータ区画の両方を使用して、多経路ストリーム結合オペレータを分散する。整列タプル・ルーティングとは異なり、制約付きタプル・ルーティングは、かなり大規模な多経路結合を、異なるホストによって実行されるより小さな多経路結合のセットに区分することができる。相関されたタプルを負荷の少ないホストの最小限のセットでカバーすることにおける問題は、制約付きタプル・ルーティングの方法、プロセス、およびアルゴリズムによって対処される。制約付きタプル・ルーティングは結合セマンティクスを保持するために使用され、ホストの数とは無関係なオーバヘッドを有する。整列タプル・ルーティングとは異なり、制約付きタプル・ルーティングのオーバヘッドはスライディング・ウィンドウのサイズとは無関係であり、それによって制約付きタプル・ルーティングは、大規模なスライディング・ウィンドウ仕様を供えた結合オペレータにとってより好適なものとなる。
連続するストリームをサポートするために、ストリーム処理システムはスライディング・ウィンドウを各ストリームに関係付ける。ウィンドウは、タプルと呼ばれる最も新しく到着したストリーム上のデータ項目を含む。タプルとは、値またはストリーム・データのセットのことである。ストリーム内のデータはストリーム・データとも呼ばれ、1つまたは複数のデータ・ストリームから現れるビット、ワード、番号、または他のストリーミング・データの形で受け取られる情報である。ウィンドウは時間ベースまたはタプル・ベースとすることができる。時間ベース・ウィンドウは、たとえば最新の10分間に到着したタプルとすることが可能であり、タプル・ベース・ウィンドウは、たとえば最新の1000のタプルとすることが可能である。重要な連続する照会オペレータの1つが、ストリームSおよびSという2つのストリーム間のスライディング・ウィンドウ結合である。このウィンドウ結合の出力は、結合述部を満たし、それらのそれぞれのウィンドウ内に同時に存在する、ストリームSおよびSからのあらゆるタプルのペアを含む。
結合述部は、2つのタプル間の1つまたは複数の共通属性を介した比較関数である。基本的な結合述部は、共通属性Aを介した2つのタプルsおよびsの間の同等比較であり、s.A=s.Aで示される。しかしながら、例示方式は、任意の総称結合述部に適用することができる。スライディング・ウィンドウ結合は、多くの適用例を有する。たとえば、一方のストリームが電話の呼び出し記録を含み、他方のストリームが株式の取引記録を含む、2つのストリームを考えてみる。共通属性「取引識別子」を介して不審な電話呼び出しと異常な取引記録との間を相関または結合するように動作する、スライディング・ウィンドウ結合を使用して、取引詐欺警告を生成することができる。
図4は、例示的実施形態に従った、スライディング・ウィンドウ・ストリーム結合オペレータ・モデルを示す図である。図4は、スライディング・ウィンドウ結合のセマンティクスを記述し、集中ウィンドウ表示された結合処理プロセスを提示するために使用される。多経路ストリーム結合オペレータ400は、図1のサーバ104および106またはクライアント110、112、および114などの、サーバまたはクライアント内で実施することができる。
多経路ストリーム結合オペレータ400は、ストリーム1 402、ストリーム2 404、ストリーム3 406、およびストリーム4 408を含む、Sで示された様々なデータ・ストリームを含む。データ・ストリームは、s∈Sで示される一連のタプルまたはデータ項目からなる。各ストリームは可変データ到着を有することができる。たとえばrは、現在の時間間隔にわたるストリームSの平均到着を示す。動的ストリーム環境では、平均ストリームrは経時的に変化する可能性がある。この例では、各タプルs∈Sは、タプルsがストリームSに到着した時点を示すためのタイム・スタンプs.tを担持する。S[t,t]などの言語は、すべてのタプルが時間[t,t]の間にストリームSに到着したことを示す。
無限のデータ・ストリームを取り扱う場合、結合処理の範囲を最近到着したタプルに限定するために、各ストリームにスライディング・ウィンドウが関連付けられる。たとえば、S[W]はストリームS上のスライディング・ウィンドウを示し、ここでWは時間ユニット内のウィンドウの長さを示す。時間間隔[t−W,t]内でsがSに到着した場合、時間tでsはS[W]に属する。結果として、S[W]はS[t−W,t]の頭字語とみなすことができる。
n=2の、n入力ストリーム間の多経路ストリーム結合オペレータ400は、
Figure 2007299406
によって示される。多経路ストリーム結合オペレータ400の出力は、すべてのタプル・グループ(s、s、...、s)からなり、その結果、時間s.tで∀s∈S、∀s∈S[W]、1≦k≦n、k≠iとなり、s、...、sが事前に定義された結合述部θ(s、...、s)を満たす。結合述部は、多次元空間における距離関数などの任意の総称関数とすることができる。たとえば図1では、結合結果は、s<8> 410で示される、時間8に到着したストリーム3 406のタプルs 410を含むとみなされる。s<t>は、時間tにSに到着したタプルを示す。多経路ストリーム結合オペレータ400は、ストリーム3 406のs<8> 410と、時間8のスライディング・ウィンドウS[W]、S[W]、およびS[W]に含まれるすべてのタプルとを比較する。たとえば、多経路ストリーム結合オペレータ400で、タプルs<8> 410は、第1にS[4,7]412のタプルと結合する必要がある。
図5は、例示的実施形態に従った、分散型多経路ストリーム結合実行モデルを示す図である。多経路ストリーム結合は、しばしばリソース集約型である。たとえば、多経路ストリーム結合は、すべてのスライディング・ウィンドウ内のタプルをバッファリングするための大規模なメモリ要件、および複数の入力ストリーム間での莫大な数の結合プローブに関する高速処理要件を有する可能性がある。単一のホストは、多経路ストリーム結合照会処理によって容易に過負荷になる可能性がある。多経路ストリーム結合を処理するためのスケーラブルな分散型ストリーム処理システム500が、これらの問題に対処する。スケーラブルな分散型ストリーム処理システム500は、高速ネットワーク508によって接続された、拡散(diffusion)オペレータ502 OP、融合(fusion)オペレータ504 OP、およびサーバ・ホスト506のクラスタVからなる。
サーバ・ホスト506のクラスタは、図1のすべてのネットワーク102などのネットワークによって相互接続されたサーバ104および106などのサーバを含むことができる。
融合オペレータ504および拡散オペレータ502は、図2のデータ処理システム200などの、汎用コンピュータ上に実装可能なソフトウェア・モジュールである。拡散オペレータ502は、複数の分散型ホストへの多経路ストリーム結合の作業負荷を加速させる可能性がある。融合オペレータ504は、分散した結合結果を、図3の相関結果などの完全な相関結果に統合する。
拡散オペレータ502は、結合処理のために入力タプル510を入力ストリーム512から異なるサーバ・ホスト506へと動的にルーティングし、融合オペレータ504は、分散した結合結果508を完全な照会回答514へと集約することができる。結合オペレータとは異なり、拡散オペレータ502は単純なタプル・ルーティング計算を実行し、入力ストリーム512のバッファリングはほとんど必要でない。拡散オペレータ502の処理時間は、しばしば、結合計算のそれの数分の1以下である。したがって、拡散オペレータ502は、スケーラブルな分散型ストリーム処理システム500におけるボトルネックではない。
分散型結合を実行するための基本要件の1つが、結合結果の正確さを保持することである。タプル・ルーティング方式は、いかなる結合結果も失われないか、または重複した結合結果を生成しないはずである。しかしながら、総当り(brute-force)タプル・ルーティング方式は、多重ストリーム相関制約または相関制約に違反する可能性がある。前述の例では、図4の多経路ストリーム結合オペレータ400で、タプルs<8> 410は第1にタプルと結合する必要がある。S[4,7]412内のタプルと結合する必要がある。図4のS[4,7]412内のタプルは、分散型実行方式によって、サーバ・ホスト506などの様々なホスト上で分散されることが可能である。タプルs<4>;s<5>;s<6>がv 506に配置され、タプルs<5>;s<6>;s<7>がv 506に配置されると想定する。s<8>がv 506またはv 506のいずれかに送られた場合、いくつかの結合結果が失われる。s<8>がv 506およびv 506の両方に送られた場合、重複した結合結果が生成される可能性がある。スライディング・ウィンドウ結合セマンティクスを保持するために、タプル・ルーティング方式は、以下の相関制約を満たすように注意深く設計しなければならない。
定義1:n経路の結合オペレータ
Figure 2007299406
とすると、Jによって相関されなければならない任意の(s、s、...、s)、s∈S、1≦k≦nが、同じホスト上に1回だけ現れる。
分散型多経路結合の実行が、タプルを複製するか、または相関制約を満たすために中間結合結果をルーティングするかの、いずれかを必要とすることを証明する場合、n個の入力ストリームからのタプルが、相関の必要がある入力ストリームを表すようにする。これとは反対に、複数のホスト上でタプルが複製されず、さらに異なるホストにわたって中間結果もルーティングされないと想定する。あらゆる2つの連続するタプルs<t>およびs<t>、0≦t−t<Wを考えてみると、i≠jの場合、s<t>はs<t>を相関させる必要があるため、s<t>はs<t>と同じホストにルーティングされる必要がある。i=jの場合、s<t>はs<t>と結合されたタプルと結合する必要があるため、ここでもs<t>はs<t>と同じホストにルーティングされる必要がある。その後、n入力ストリームのすべての相関されたタプルが、同じホストにルーティングされ、これが集中結合実行となる。
したがって、分散型結合の実行では、異なるホスト間でのタプルの複製または中間結果のルーティングが必要であり、これが拡散オーバヘッドと呼ばれる。これらのオーバヘッド・タプルおよびルーティング動作は、システム内のプロセッサの時間、メモリ・スペース、およびネットワーク帯域幅を消費する可能性がある。結果として、拡散オペレータの目標は、相関制約の下で最適な分散型結合実行を達成することである。相関制約は、正式には以下のように定義される。
定義2:結合オペレータ
Figure 2007299406
およびm個のホスト{v、...、v}とすると、各タプルは1つまたは複数のホストに最適にルーティングされ、その結果(1)相関制約が満たされ、(2)異なるホストの作業負荷が最適に平均化され、(3)拡散オーバヘッドが最小化される。
図6〜図7は、例示的実施形態に従った、相関認識タプル・ルーティング方式を示す図である。図6〜図7は、多経路ストリーム結合オペレータのスケーラブルな処理のための、相関認識タプル・ルーティング方式のセットを表す。図6〜図7の方式は、単一の結合オペレータが、複数のホスト602のリソースまたは複数の結合オペレータを利用して、細かい細分性で複数のホスト602のリソースを共有できるようにする。細分性は、作業負荷区画のサイズを示す。細分性が細かいということは、相関作業負荷を、異なるホスト上に分散可能なより小さな部片に分割できるという意味である。ホストは、図1のサーバ104および106などの、複数の相互接続サーバとすることができる。
タスクとは、コンピュータ・システムが事前に定義された目標の達成に着手するプロセスのことである。多経路ストリーム相関作業負荷とは、複数の入力ストリームにわたって相関処理を実行するために必要な処理要件、メモリ、および帯域幅などの、コンピュータ・リソースの量である。連続的最適化プロセスとは、動的なコンピューティング環境において最適な性能を達成し、連続的最適化の問題を解決するために、コンピュータ・システムの動作を連続的に調整することである。相関処理などの結合処理は、1つのストリームのタプルを他のすべてのストリームのタプルと相関させることに着手するためにコンピュータ・システムが必要とする、動作のセットを含む。
高い水準では、相関認識タプル・ルーティング方式のセットは、分散型多経路ストリーム結合の実行を、(1)ストリーム区画:入力ストリームを、異なるホスト602にルーティングされるセグメントに分割すること、および(2)オペレータ区画:多経路結合オペレータを、異なるホスト602上で処理される相関を使用して計算されるサブオペレータに分割すること、という2つの側面で達成する。
図6は、ストリーム区画のみを実行する、整列タプル・ルーティング(ATR)と呼ばれる単純な相関認識タプル・ルーティング方式である。図6は、4つのホスト602を使用して3経路結合オペレータを実行する、整列タプル・ルーティング方式600の分散スナップショットを示す図である。相関制約を満たすために、整列タプル・ルーティング方式600は、すべての入力ストリームに関するタプル・ルーティングを調整し、ストリーム区画の境界付近にあるタプルのサブセットを複製する。整列タプル・ルーティング方式600は、異なるホスト602にまたがって中間結果をルーティングすることのない、1ホップ・ルーティング・プロセスである。各ホスト602は、すべての入力タプルのサブセットに関してのみ、全体の結合計算を実行する。
たとえば図6では、v、v、v、およびvのホスト602が、それぞれ時間[t,t+T)、[t+T,t+2T)、[t+2T,t+3T)、および[t+3T,t+4T)に到着するタプルに関して結合計算を実行する。しかしながら、多経路結合オペレータが多くの入力ストリームを大規模なスライディング・ウィンドウと相関させる場合、整列タプル・ルーティングの分散細分性が粗すぎるために、効の悪いリソース利用および多大な複製オーバヘッドにつながる可能性がある。
図7の制約付きタプル・ルーティング(CTR)方式604と呼ばれる第2のタプル・ルーティング方式は、ストリーム区画とオペレータ区画の両方を探る。整列タプル・ルーティング方式600とは異なり、制約付きタプル・ルーティング方式604は、中間結合結果606を異なるホスト602にまたがってルーティングできるようにすることにより、多経路結合計算の実行を複数のホスト602間で分離する。結果として、整列タプル・ルーティング・システムは、すべての相関タプルが第1のルーティング・ホップ内の同じホスト上に配置されることを保証する必要がないため、制約付きタプル・ルーティング方式604は複製オーバヘッドを削減することができる。
たとえば図7では、制約付きタプル・ルーティング方式604は、第1にホストv上でSおよびSのタプルを結合し、その後中間結果をホストvにルーティングして、第3のストリームSを結合する。整列タプル・ルーティング方式600に比べて、制約付きタプル・ルーティング方式604には中間結果606をルーティングするという余分なオーバヘッドがあるが、より細分性の細かい良好な負荷分散を達成することができる。図7で、制約付きタプル・ルーティング方式604は、1つの多経路結合計算を、異なるホスト上で実行可能な複数の2経路結合に分割できるようにすることによって、オペレータ分割を実行する。
整列タプル・ルーティングの方式、方法、およびアルゴリズムについては、以下の図12および図16でさらに詳細に説明する。制約付きタプル・ルーティングの方式、方法、およびアルゴリズムについては、以下の図13、図14、および図17でさらに詳細に説明する。
図8は、例示的実施形態に従った、整列タプル・ルーティング・モデルを示す図である。図8は、図6の整列タプル・ルーティング方式600などの、整列タプル・ルーティング方式の設計細部を提示する。整列タプル・ルーティング・モデル700は、結合オペレータの入力ストリームのタプルを同時に協調的にルーティングする。整列タプル・ルーティング・モデル700は、ストリーム区画を使用して分散型ストリーム結合実行を達成する。整列タプル・ルーティング・モデル700は、マスタ・ストリーム702、スレーブ・ストリーム704、およびスレーブ・ストリーム706を含む。Vはホストを示し、Wはスライディング・ウィンドウ・サイズを示し、Tはセグメント長さを示す。マスタ・ストリーム702はデータ・フロー速度が最高のストリームである。マスタ・ストリーム702の速度がスレーブ・ストリームの速度よりも遅くなると、整列タプル・ルーティングは遷移段階を採用してマスタ・ストリーム702を変更する。
整列タプル・ルーティングは、連続的最適化の問題を解決するために使用される方式の1つである。整列タプル・ルーティングは、1つの入力ストリームをマスタ・ストリームとして動的に選択し、タイム・スタンプに従ってすべての他の入力ストリームのタプルをマスタ・ストリームと整列させる。これに対して、相関制約を満たすために、他方のストリームは、スレーブ・ストリーム704および706と呼ばれるマスタ・ストリームの区画に基づいて重複するセグメントに区分される。
一般に、整列タプル・ルーティングは、すべての入力ストリームを、それぞれがある一定の時間間隔内に到着したタプルを含む異なるセグメントに連続的に分割する。スレーブ・ストリーム704および706のセグメントは、相関制約に基づいてマスタ・ストリーム702のセグメントと整列される。整列セグメントに属するタプルは、結合結果を生成するために同じホストにルーティングされる。
図9は、例示的実施形態に従った、制約付きタプル・ルーティング・モデルを示す図である。図9は、図7の制約付きタプル・ルーティング方式604などの、制約付きタプル・ルーティング方式の設計細部を含む、制約付きタプル・ルーティング(CTR)モデル800を提示する。制約付きタプル・ルーティング・モデル800は、異なるストリームのタプルを独立にルーティングする方式である。ストリーム1 802、ストリーム2 804、およびストリーム3 806の各入力ストリームについて、制約付きタプル・ルーティング・モデル800は、すべての以前の相関タプルの配置に基づいてルーティングを決定する。
制約付きタプル・ルーティングは、連続的最適化の問題を解決するために使用される別の方式である。制約付きタプル・ルーティング・モデル800は、整列タプル・ルーティング方法のように異なる入力からタプルを同時にルーティングするのではなく、異なる入力ストリームのタプルを別々にルーティングする。図9は、3経路ストリーム結合オペレータに関する制約付きタプル・ルーティング方式を示す。プローブ・シーケンス
Figure 2007299406
を伴う任意のタプルs∈S、1≦i≦nの場合、制約付きタプル・ルーティングは、
以前の相関タプルの配置に基づいて、タプルsおよびすべての中間結合結果
Figure 2007299406
1≦k≦n−1に関するルーティングを決定する。
すべての結合オペレータがルーティング計算を実行しなくてすむように、制約付きタプル・ルーティングは、他のn−1ストリームと結合するためにsに関するルーティング・パス全体を計算するソース・ルーティング・プロセスとして実施される。各タプルは、結合結果を生成するためにアクセスする必要があるホストのセットを示すために、そのルーティング・パスを担持する。ルーティング計算のオーバヘッドを削減するために、制約付きタプル・ルーティングは、各入力ストリーム上のタプルをセグメントにグループ化し、各セグメントを全体として異なるホストにルーティングする。したがって、制約付きタプル・ルーティングは、各タプルについてではなく、各セグメントについてのルートを計算するだけでよい。セグメント長さは、負荷バランシング細分性とルーティング・オーバヘッドとの間のトレードオフを示す。
制約付きタプル・ルーティングは、以前にルーティングされたセグメントの配置を記録するルーティング・テーブルも維持する。多経路ストリーム結合セマンティクスに基づいて今後のいかなるセグメントとも相関される必要がなければ、セグメント情報はルーティング・テーブルから削除される。
図10は、例示的実施形態に従った集中結合方法を示す流れ図である。図10の方法は、図4の多経路ストリーム結合オペレータ400などの、多経路ストリーム結合オペレータで実施可能である。
このプロセスは、結合されたストリームに関するタプルを受け取ることによって開始する(ステップ902)。たとえば、ステップ902のオリジナル・データ・ストリームは、入力ストリーム・バッファによって受け取ることができる。ステップ902のオリジナル・ストリームは、図4のストリーム1 402、ストリーム2 404、ストリーム3 406、およびストリーム4 408などの、ストリームとすることができる。
次にプロセスは、タイム・スタンプに基づいて処理するために1つのストリームを選択する(ステップ904)。たとえばこのストリームは、現在バッファリングされているタプルのタイム・スタンプに従った次のタプルsである。次にプロセスは、選択されたストリームのタイム・スタンプに従って、他のすべてのストリームにおいて満了したタプルにマークを付ける(ステップ906)。次にプロセスは、処理が行われ、他のすべてのストリームによって満了した旨のマークが付けられた満了したタプルを、すべてのストリームから除去する(ステップ908)。ステップ906および908は、ステップ904で選択されたストリームに関する結合順序を調べるために使用される。
次にプロセスは、この結合順序に基づいて結合結果を生成する(ステップ910)。その後プロセスは、ストリーム結合が完了したかどうかを判別する(ステップ912)。ストリーム結合が完了していない場合、プロセスは結合されたストリームに関するタプルを受け取る(ステップ902)。ステップ910で、プロセスは、ステップ904で選択されることになる入力ストリーム・バッファQにおける次のストリームまたはタプルを参照するように、ポインタpを更新することもできる。プロセスは、すべてのストリームの処理を続行するために、図に示されるように反復される。ステップ912の意思決定でストリーム結合が完了した場合、プロセスは終了する。
図11は、例示的実施形態に従った多経路ストリーム結合方法を示す流れ図である。図11の方法は、図5のスケーラブルな分散型ストリーム処理システム500などの、多経路ストリーム結合システム内で実施可能である。
このプロセスは、結合されたストリームに関するタプルを受け取ることによって開始する(ステップ1002)。その後プロセスは、拡散オペレータでの各タプルに関するルーティング・パスを計算する(ステップ1004)。次にプロセスは、拡散オペレータによって計算されたルーティング・パスに基づいて、1つまたは複数のホストへとタプルをルーティングする(ステップ1006)。次にプロセスは、異なるホストで同時に集中結合を実行する(ステップ1008)。ホストは、図5のサーバ・ホスト506などのサーバ・ホストとすることができる。集中結合は、図9の方法およびステップを含むことができる。
次にプロセスは、融合オペレータでの結合識別に基づいて結合結果を集約する(ステップ1010)。融合オペレータは、図5の融合オペレータ504などのオペレータとすることができる。その後プロセスは、ストリーム結合が完了したかどうかを判別する(ステップ1012)。ストリーム結合が完了した場合、プロセスは終了する。ステップ1012でストリーム結合が完了していない場合、プロセスは結合されたストリームに関するタプルを受け取る(ステップ1002)。完全な結合結果は、すべての入力タプルが処理された時点で完全に生成される。
図12は、例示的実施形態に従った、整列タプル・ルーティング方法を示す流れ図である。図12に示されたステップは、図7の整列タプル・ルーティング・モデル700などの、整列タプル・ルーティング・モデルを使用して実施可能である。図12のプロセスは、着信タプルを処理するために連続して反復される。
このプロセスは、タプルSを受け取ることによって開始する(ステップ1102)。次にステップは、タプルがマスタ・ストリームSに属するかどうかを判別する(ステップ1104)。ステップ1104の意思決定は、タプルのストリーム識別およびマスタ・ストリームの識別に基づく。タプルがマスタ・ストリームに属する場合、プロセスは新しいセグメントを開始するかどうかを決定する(ステップ1106)。ステップ1106の意思決定は、タプルのタイム・スタンプおよび現在のセグメントの開始/終了時間に基づく。新しいセグメントを開始するように決定された場合、プロセスは最も新しく選択されたホストv lastを格納する(ステップ1110)。次にプロセスは、新しいホストVを選択する(ステップ1112)。その後プロセスは、新しく選択されたホストVにSを送る(ステップ1114)。その後プロセスは、更新済みのセグメント開始時間を、t=t+Tとして更新する(ステップ1116)。次にプロセスは、ストリーム結合が完了したかどうかを判別する(ステップ1109)。
ステップ1106に戻り、プロセスが新しいセグメントを開始しないと決定した場合、プロセスは現在のセグメントに関して選択されたホストにSを送る(ステップ1108)。次にプロセスは、ストリーム結合が完了したかどうかを判別する(ステップ1109)。プロセスが、ストリーム結合が完了したものと判別した場合、プロセスは終了する。プロセスが、ステップ1109でストリーム結合が完了していないと判別した場合、プロセスはタプルSを受け取る(ステップ1102)。
ステップ1104に戻り、ステップ1104でタプルがマスタ・ストリームSに属さないものとプロセスが判別した場合、プロセスは新しいセグメントを開始するかどうかを決定する(ステップ1118)。ステップ1118の意思決定は、タプルのタイム・スタンプおよび現在のセグメントの開始/終了時間に基づく。プロセスが新しいセグメントを開始しないと決定した場合、プロセスは第1に、現在のセグメントVに関して選択されたホストにSを送る(ステップ1120)。次にプロセスは、t+Wの前にSが到着するかどうかを判別する(ステップ1122)。t+Wの前にSが到着する場合、プロセスは最も新しいセグメントv lastに関して選択されたホストにSを送る(ステップ1124)。次にプロセスは、ストリーム結合が完了したかどうかを判別する(ステップ1109)。
ステップ1122でt+Wの前にSが到着しない場合、プロセスはストリーム結合が完了したかどうかを判別する(ステップ1109)。
プロセスがステップ1118で新しいセグメントを開始すると決定した場合、プロセスはS[t+T−W,t+T]をVへフラッシュする(ステップ1126)。次にプロセスは、SをVおよびV lastに送る(ステップ1128)。次にプロセスは、セグメント開始時間をt=t+1として更新する(ステップ1130)。次にプロセスは、ストリーム結合が完了したかどうかを判別する(ステップ1109)。図12のプロセスについては、図16の擬似コードでさらに詳しく説明する。
図13〜図14は、例示的実施形態に従った、制約付きタプル・ルーティング方法を示す流れ図である。図13〜図14は、図9の制約付きタプル・ルーティング・モデルなどの制約付きタプル・ルーティング・モデルを使用して実施することができる。
このプロセスは、タプルSを受け取ることによって開始する(ステップ1202)。次にプロセスは、新しいセグメントを開始するかどうかを決定する(ステップ1204)。プロセスが新しいセグメントを開始すると決定した場合、プロセスはプローブ・シーケンスを取り出す(ステップ1206)。次にプロセスは、第1のルーティング・ホップをv=0で開始する(ステップ1208)。次にプロセスは、k=1に設定する(ステップ1210)。
次にプロセスは、k<nであるかどうかを判別する(ステップ1214)。k>nの場合、プロセスはルーティング・テーブル・パスを更新する(ステップ1216)。次にプロセスは、セグメント開始時間をt=t+Tとして更新する(ステップ1218)。次にプロセスは、新しいセグメントの位置情報をルーティング・テーブルに追加する(ステップ1220)。次にプロセスは、ストリーム結合が完了したかどうかを判別する(ステップ1221)。ストリーム結合が完了した場合、プロセスは終了する。ステップ1221でストリーム結合が完了していない場合、プロセスはタプルSを受け取る(ステップ1202)。
ステップ1214でk<nである場合、プロセスはSik[Wik]内のセグメントの位置を取り出す(ステップ1222)。次にプロセスは、前のホップVk−1によってカバーされているそれらのセグメントを除去する(ステップ1224)。次にプロセスは、Sik[Wik]に関する最小セット・カバーを計算する(ステップ1226)。次にプロセスは、重複を避けるためにルーティング・パスに注釈を付ける(ステップ1228)。次にプロセスは、ルーティング・パスPにVを付加する(ステップ1230)。次にプロセスは、k=k+1に設定する(ステップ1232)。その後プロセスは戻って、k<nであるかどうかを判別する(ステップ1214)。
ステップ1204に戻り、プロセスがステップ1204で新しいセグメントを開始すると決定した場合、プロセスはSの現在のセグメントに関するルーティング・パスを取得するために、ルーティング・テーブルをチェックする(ステップ1234)。次にプロセスは、ルーティング・パスを備えるSに注釈を付ける(ステップ1236)。次にプロセスは、第1のルーティング・ホップ内の各ホストにSのコピーを送る(ステップ1238)。次にプロセスは、ストリーム結合が完了したかどうかを判別する(ステップ1239)。ストリーム結合が完了した場合、プロセスは終了する。ステップ1239でストリーム結合が完了していない場合、プロセスはタプルSを受け取る(ステップ1202)。図13〜図14のプロセスについては、図17の擬似コードでさらに詳しく説明する。
図15は、例示的実施形態に従った、多経路ストリーム結合アルゴリズムを示す図である。多経路ストリーム結合アルゴリズム1300は、単一ホスト上で多経路ストリーム照会
Figure 2007299406
を処理するための集中アルゴリズムである。多経路ストリーム結合アルゴリズム1300は、図4の多経路ストリーム結合オペレータ400などのオペレータによって実施可能である。多経路ストリーム結合オペレータの基本ステップは、図10の諸ステップなどのプロセス中で実施可能である。システムは、着信タプルをバッファリングするために、各入力ストリームSについて1つのキューQ、1≦i≦nを維持する。Qは入力バッファとすることができる。新しいタプルs∈Sが到着すると、ローカル・ホスト上のメモリ・スペースが満杯でなければ、この新しいタプルは対応するキューQに挿入される。
そうでない場合、システムは、新しく到着したタプルをドロップするか、またはバッファ内の古いタプルを新しく到着したタプルに置き換える。すべてのキュー内のタプルが時間順に処理される。たとえば、s.t<s.tの場合、sが最初に処理される。各キューQは、ポインタpが、そのバッファ内で結合オペレータによって現在処理されるタプルを参照するように維持する。現在処理されているタプルがsの場合、結合オペレータは、sを含むすべての結合結果を生成するために、sとすべての他のストリームS[W]、1≦j≦n、j≠iとを比較する。
j番目のストリームのスライディング・ウィンドウS[W]は、時間s.t−Wからs.tの間にSに到着したすべてのタプルsからなる。2つのタプル間の各結合述部評価を1つの結合プローブと呼ぶ。
∈Sの結合順序は、異なるストリーム[11,1,10]間での結合選択性に基づいて動的に決定される。sに関する結合処理はそれ自体から開始され、Sに対して最もわずかな選択性を有するストリームSを次のホップとして選択する。その後、すべての中間結果が結合され
Figure 2007299406
に対して最も少ない選択性を有するストリームSが次に選択される。たとえば図4では、現在処理されているタプルは、時間8にストリームSに到着したs<8> 410である。Sのプローブ・シーケンスは、S→S[W]→S[W]→S[W]である。したがって、最初にsが、SとSとの間の結合述部θ3,4に基づいてS[W]と比較される。中間結果
Figure 2007299406
はS[W]と比較される。最後に、
Figure 2007299406
がS[W]と比較される。
図16は、例示的実施形態に従った、整列タプル・ルーティング・アルゴリズムを示す図である。整列タプル・ルーティング・アルゴリズム1400は、結合オペレータ
Figure 2007299406
の入力ストリームを区別して取り扱い、1つの選択されたマスタ・ストリームに従ってすべてのストリームのタプル・ルーティング動作を整列させる。整列タプル・ルーティング・アルゴリズム1400は、図3経路ストリーム結合オペレータに関する7の整列タプル・ルーティング・モデル700などのルーティング・モデルで実施することが可能であり、ここでSはマスタ・ストリームである。整列タプル・ルーティング・アルゴリズムの基本ステップは、図12の諸ステップなどのプロセスで実施可能である。
整列タプル・ルーティング・アルゴリズム1400は、1つの入力ストリームをSで示されたマスタ・ストリームとして動的に選択し、すべての他の入力ストリームのタプルをタイム・スタンプに従ってマスタ・ストリームと整列させる。拡散オペレータは、マスタ・ストリームSを非結合セグメントに細断または区分する。非結合セグメントとは、互いにいかなる共通タプルも有さないセグメントである。1つのセグメント内のすべてのタプルは同じホストにルーティングされ、負荷の少ない順(least-loaded-first)(LLF)などのある種のスケジューリング・ポリシーに基づいて、異なるセグメントは異なるホストにルーティングされる。これに対して相関制約を満たすために、他のn−1ストリームは、スレーブ・ストリームと呼ばれるマスタ・ストリームの区画に基づいて重複セグメントに区分される。重複セグメントとは、互いに任意の少なくとも1つの共通タプルを有するセグメントである。
一般に、整列タプル・ルーティングは、すべての入力ストリームを、それぞれがある時間間隔内に到着したタプルを含む異なるセグメントに連続的に分割する。S[t,t+T]は、時間[t,t+T)内にSに到着したすべてのタプルを含むSのセグメントを示し、ここでtはセグメントの開始時間と呼ばれ、Tはセグメント長さと呼ばれる。スレーブ・ストリームのセグメントは、相関制約に基づいてマスタ・ストリームのセグメントと整列される。整列セグメントに属するタプルは、結合結果を生成するために同じホストにルーティングされる。たとえば図8は、マスタ・ストリームSおよびスレーブ・ストリームS、Sに関する整列タプル・ルーティング・アルゴリズムのルーティング結果を示す。図を見やすくするために、r=1タプル/秒、i=1、2、3およびセグメント長さT=5、ならびに、3つのスライディング・ウィンドウ・サイズはW=2、W=2、およびW=3であると想定する。拡散オペレータは、マスタ・ストリームSを、それぞれホストv、v、およびvにルーティングされる非結合セグメントに分割する。スレーブ・ストリームSは、S[1,7]をv、S[4,12]をv、およびS[9,17]をv、という重複セグメントに区分される。スレーブ・ストリームSも、S[1,7]をv、S[3,14]をv、およびS[8,17]をv、という重複セグメントに区分される。
図16は、結合オペレータ
Figure 2007299406
の負荷を拡散するための特定の整列タプル・ルーティング・アルゴリズム1400の諸ステップを示す。図16は、m個のホスト{v,...,v}を使用してJを処理するための、整列タプル・ルーティング・アルゴリズム1400の擬似コードを示す。セクション1402は、マスタ・ストリームSに関するルーティング・ステップを示す。
拡散オペレータがSからタプルsを受け取った場合、第1に、sがそのタイム・スタンプs.tに従って現在のセグメントS[t,t+T]に属するかどうかをチェックする。t≦s.t<t+Tの場合、sは現在のセグメントに属し、セグメントの開始時間tで選択されるホストvにルーティングされる。s.t≧t+Tの場合、整列タプル・ルーティングは新しいセグメントを開始し、新しいホストを新しいセグメントのルーティング宛先として選択する。整列タプル・ルーティングは、負荷の少ない順(LLF)ポリシーに従って、各セグメントについてホストを選択する。
分散型結合処理システムでは、プロセッサ、メモリ、およびネットワーク帯域幅などの異なるリソースが考慮されるため、組み合わされたメトリックwがホストvの負荷条件を表す。各リソース・タイプRについて、整列タプル・ルーティング・アルゴリズム1400は、負荷インジケータΦRi=URi/CRiを定義し、ここでURiおよびCRiは、それぞれホストv上のリソースRの使用および容量を示す。負荷値wは以下のように定義され、
=ωΦCPU+ω・Φmemory+ω・Φbandwidth
この式で
Figure 2007299406
は、システムによって動的に構成可能な様々なリソース・タイプの重要性を示す。
マスタ・ストリームの区画に基づいて、整列タプル・ルーティングは相関制約を保持するためにすべてのスレーブ・ストリームを重複セグメントに分割する。スレーブ・ストリームS、i≠Aでは、整列タプル・ルーティングがセグメントS[t,t+T]をホストvにルーティングする場合、整列タプル・ルーティングは、相関制約を満たすためにセグメントS[t−W,t+T+W]を同じホストvにルーティングする。同様に、整列タプル・ルーティングがマスタ・ストリームの次のセグメントS[t+T,t+2T]をホストvに送る場合、整列タプル・ルーティングはスレーブ・ストリームのセグメントS[t+T−W,t+2T+W]、1≦i≦n、i≠Aを、同じホストvに送る必要がある。したがって、時間間隔[t+T−W,t+T+W]の間にSに到着したタプルは、vおよびvの両方に送られる。重複するタプルの数はr・(W+W)である。
整列タプル・ルーティング・アルゴリズム1400は、拡散オペレータが、タプルをS[t−W,t]、1≦i≦n、i≠Aでキャッシュに入れるためのバッファ容量を有すると想定する。この想定が保持されない場合、各セグメントS[t,t+T]に関するホスト選択は前の時間t−Wにシフトされ、ここでWは、すべてのスレーブ・ストリーム間で最も大規模なスライディング・ウィンドウを示す。たとえば図8では、第2のセグメントに関する配置は時間t=3で選択される。その後、整列タプル・ルーティングはS[4,7]およびS[3,7]内のタプルを、ホストvおよびvの両方にルーティングする。
整列タプル・ルーティング・アルゴリズム1400の正確さは、整列タプル・ルーティングがオリジナルの結合オペレータと同じ結合結果セットを生成することを示すことによって証明される。C(J)およびC’(J)は、それぞれ、
オリジナルの結合オペレータ
Figure 2007299406
によって生成される結合結果のセットと、整列タプル・ルーティング・アルゴリズムを使用する分散型処理方式とを示す。整列タプル・ルーティング・アルゴリズムの正確さは、C(J)=C’(J)を示すことによって証明される。
定理A:多経路ストリーム結合オペレータ
Figure 2007299406
とし、C(J)およびC’(J)が、それぞれ整列タプル・ルーティング・アルゴリズムを使用して、オリジナルの結合オペレータと分散型処理方式との両方によって生成される、結合結果のセットを示すようにする。結果として、C(J)=C’(J)である。
証明スケッチ:C(J)⊆C’(J)は、∀s、1≦i≦n、であり、
Figure 2007299406
の場合、
Figure 2007299406
であることを示すことによって証明される。これは、整列タプル・ルーティングがsをサーバvに送る場合、整列タプル・ルーティングも∀sik∈Sik[Wik]、1≦k≦n−1、をvに送ることを示すことによって証明される。
第1に、sがマスタ・ストリームに属する場合を考えてみる。s∈S[t+T]がホストvに送信されると想定する。整列タプル・ルーティング・アルゴリズムは、さらにSik[t−Wik,t+T+W)をvに送る。他方で、スライディング・ウィンドウSik[Wik]はSik[s.t−Wik,s.t]内のすべてのタプルを含む。s.t∈[t,t+T)であるため、Sik[s.t−Wik,s.t]⊂Sik[t−Wik,t+T+W)もtrueである。したがって、整列タプル・ルーティングは、さらにSik[Wik]内、1≦k≦n−1、のすべてのタプルをホストvに送る。
がスレーブ・ストリームに属すると考えた場合、Sがマスタ・ストリームを示す、∀s∈S[W]であり、整列タプル・ルーティングはsが送信されるマシン上でsをコピーする。sがセグメントS[t,t+T]に属し、vに送られると想定する。整列タプル・ルーティングはさらに、セグメントS[t−W,t+T+W]をvに送る。s∈S[t−W,t+T+W]であることを証明することによって、sはセグメントS[t,t+T]に属するため、t≦s.t<t+Tを有する。したがって、結果はs.t≧s.t≧tおよびs.t<s.t+W<t+T+Wである。したがって、結果はt≦s.t<t+T+Wである。したがって、sはセグメントS[t−W,t+T+W]に属し、これもvに送られる。
がスレーブ・ストリームを示す、∀s∈S[W]であることを証明することによって、整列タプル・ルーティングはsおよびsのコピーを同じホストに送る。sは、vにルーティングされるマスタ・ストリーム・セグメントS[t,t+T]と整列されたセグメントS[t,t+T]に属すると想定する。したがって、整列タプル・ルーティングはさらに、S[t−W,t+T+W]をvに送る。次に、S[W]=S[s.t−W,s.t]⊂S[t−W,t+T+W]であることを証明することによって、t≦s.t<t+Tであるため、t−W≦s.t−Wおよびs.t<t+T+Wを提示する。
したがって、さらにS[W]⊂S[t−W,t+T+W]がvに送られる。結論として、∀s、s、およびSik[Wik]、1≦k≦n−1が同じホスト上に現れることになる。したがって、C(J)⊆C’(J)である。
次に、C’(J)⊆C(J)が証明される。第1に、拡散結合オペレータによって生成されるC’(J)における任意の結合結果は、多経路ストリーム結合セマンティクスに従い、これはC(J)にも現れるものとする。第2に、マスタ・ストリーム上のいかなる∀s∈Sも2つの異なるホスト上に現れないため、整列タプル・ルーティングは重複する結合結果を生成しない。したがって、C’(J)⊆C(J)である。C(J)⊆C’(J)およびC’(J)⊆C(J)を組み合わせると、結果としてC(J)=C’(J)となる。
整列タプル・ルーティング・アルゴリズムのオーバヘッドも分析することができる。オリジナルの入力ストリームと比較すると、整列タプル・ルーティングはスレーブ・ストリームを部分的に複製することにより、より多くのタプルをシステムにプッシュする。整列タプル・ルーティング・アルゴリズムのオーバヘッドは、時間ユニットあたりに整列タプル・ルーティングによって生成される余分なタプルの数として定義される。分散型ストリーム処理システムは、それらのオーバヘッド・データを伝送、処理、およびバッファリングするために、ネットワーク帯域幅、CPU時間、およびメモリ・スペースの一部分を、消費する必要がある。
定理B:多経路ストリーム結合オペレータ
Figure 2007299406
とすると、Sが現在のマスタ・ストリームを示すようにする。Tがセグメント長さを示すようにする。r、1≦i≦nがストリームSの平均レートを示すようにする。OATRが整列タプル・ルーティング・アルゴリズムの平均オーバヘッドを示すようにする。結果として、
Figure 2007299406
となる。
証明スケッチ:時間間隔Tにわたる各セグメントS[t,t+T]および各スレーブ・ストリームS、1≦i≦n、i≠Aについて、整列タプル・ルーティングは、オリジナルのスレーブ・ストリームSよりも多くのタプルr・(W+W)を導入する。したがって、各セグメント長さTについて、整列タプル・ルーティング・アルゴリズムによって生成される余分なタプルの合計数は、
Figure 2007299406
である。したがって、時間ユニットあたりに整列タプル・ルーティング・アルゴリズムによって生成される余分なタプルの平均数は、
Figure 2007299406
である。
上記の分析は、整列タプル・ルーティング・アルゴリズムの興味深い特性を明らかにしている。整列タプル・ルーティング・アルゴリズムのオーバヘッドは、結合オペレータを処理するために使用されるホストの数とは無関係である。この特性により、整列タプル・ルーティングは、利用可能なリソースを過度の負荷拡散オーバヘッドなしに多数のホストから集めることが可能な、大規模ストリーム処理クラスタに対して特に好適となる。
様々な適応方式を使用して、動的ストリーム環境における整列タプル・ルーティング・アルゴリズムの性能を最適化することができる。定理Bにより、整列タプル・ルーティング・アルゴリズムのオーバヘッドがセグメント長さに反比例することが観察される。セグメントが長くなるほど、重複セグメントのコストがより長い期間にわたって償却されるため、負荷拡散オーバヘッドは少なくなる。しかしながら、セグメントが長いことにより、大型セグメント内の大量のタプルが同じホストに集中させられるため、負荷バランシングの細分性が制限される。
結果として、整列タプル・ルーティングは、動的なストリーム環境において最適な性能を維持するために、セグメント長さTのセグメント適応を適応的に調整またはトリガする。整列タプル・ルーティングは、サンプリング・ベースのプロファイリング・プロセスを採用して、システム条件が変更された場合に最適なセグメント長さを見つける。Tが現在のセグメント長さを示し、ΔTが適応ステップ値を示すようにする。適応プロセスは、T+ΔT、およびT−ΔTの両方をテストする。T+ΔTの性能の方が良好な場合、最適なセグメント長さは現在のセグメント長さよりも長いはずである。システムは、測定されるシステム性能がそのピーク値に達するまで、セグメントを徐々に長くしていく。そうでない場合、T−ΔTの性能の方が良好な場合、システムはセグメントを徐々に短くして最適な値を探る。整列タプル・ルーティングは、適応が相関制約に違反しないことを保証するために、1つのセグメントの終わりで常にセグメント長さを変更する。
整列タプル・ルーティングのオーバヘッドはスレーブ・ストリーム率にのみ関係し、マスタ・ストリーム率とは無関係である。動的ストリーム環境では、各入力ストリーム率は経時的に動的に変化する可能性がある。結果として、整列タプル・ルーティングは、定理Bに従って最低の負荷拡散オーバヘッドを有するマスタ・ストリームを動的に選択する。マスタ・ストリームは、常に最高率を有するストリームであるものとする。マスタ・ストリーム率がスレーブ・ストリームのうちの1つよりも遅くなった場合、整列タプル・ルーティングは遷移段階を採用してマスタ・ストリームを変更する。セグメント適応と同様、相関制約を満たすために、1つのセグメントの終わりにストリーム・ロール・スイッチが常に起動される。
図17は、例示的実施形態に従った、制約付きタプル・ルーティング・アルゴリズムを示す図である。制約付きタプル・ルーティング・アルゴリズム1500は、図9の制約付きタプル・ルーティング・モデル800などのルーティング・モデルで実施することができる。制約付きタプル・ルーティング・アルゴリズム1500の基本ステップは、図13〜14の諸ステップなどのプロセスで実施可能である。
制約付きタプル・ルーティング1500は、セクション1502でプローブ・シーケンス
Figure 2007299406
を伴う任意のタプルs∈S、1≦i≦nについてルーティングを決定し、制約付きタプル・ルーティングは、以前の相関タプルの配置に基づいて、タプルsおよびすべての中間結合結果
Figure 2007299406
1≦k≦n−1について、ルーティングを決定する。すべての結合オペレータがルーティング計算をする必要がないように、制約付きタプル・ルーティングは、他のn−1ストリームと結合するためにsに関するルーティング・パス全体を計算するソース・ルーティング・アルゴリズムとして実施される。各タプルは、結合結果を生成するためにアクセスする必要のあるホストのセットを示す、そのルーティング・パスを担持する。
ルーティング計算のオーバヘッドを削減するために、制約付きタプル・ルーティングは各入力ストリーム上のタプルをセグメントにグループ化し、各セグメントを全体として異なるホストにルーティングする。したがって、制約付きタプル・ルーティングは、各タプルについてではなく、各セグメントについてのルートを計算するだけでよい。セグメント長さは、負荷バランシング細分性とルーティング・オーバヘッドとの間のトレードオフを示す。制約付きタプル・ルーティングは、以前にルーティングされたセグメントの配置を記録するルーティング・テーブルも維持する。多経路ストリーム結合セマンティクスに基づいて今後のいかなるセグメントとも相関される必要がなければ、セグメント情報はルーティング・テーブルから削除される。
セクション1504で、制約付きタプル・ルーティングは、スライディング・ウィンドウSi1[Wi1]内のタプルと結合する必要があるセグメントη=S[t,t+T]のルーティングを決定する。制約付きタプル・ルーティングは、第1に、Si1[Wi1]=Si1[t−Wi1,t+T]内のすべてのタプルの位置を取得する。オーバヘッドを最小限にするために、制約付きタプル・ルーティングは、すべての相関タプルをカバーすることが可能な最小のホスト・セットV⊆{v,...,v}を選択する。前述の問題は、以下で詳細に説明する、重み付けされた最小セットのカバー問題として公式化される。制約付きタプル・ルーティング中に、この結合順序を使用して、多経路相関処理をより小さな複数のオペレータに分割する。具体的に言えば、n経路の結合オペレータ
Figure 2007299406
は、(n−1)の2経路結合オペレータ
Figure 2007299406
に区分され、そのそれぞれが異なるホスト上で実行可能である。相関セグメントの位置は、各ホップでルックアップされる。最小のホスト・セットは、各ホップでのすべての相関セグメントをカバーして計算される。その後、制約付きタプル・ルーティングは、ηの第1のルーティング・ホップが、V内のすべてのホストとなるように設定する。セグメントη=S[t,t+T]は、結合セマンティクスに従ってそのタプルが必要なくなるまで、V内の各ホスト上のメモリ・バッファQ内に保存されることになる。
制約付きタプル・ルーティングは、η=S[t,t+T]がV内のホスト・セット上に位置することを記録するために、ルーティング・テーブルも更新する。たとえば図9で、制約付きタプル・ルーティングは、プローブ・シーケンスがs→S[W]→S[W]である、S[9,10]に関するルートを計算する。制約付きタプル・ルーティングは、S[1,2]がv、v上、S[3,4]がv、v上、S[5,6]がv、v上というように、S[W]内のすべての相関タプルの配置を取得する。その後、制約付きタプル・ルーティングは、S[W]内のすべてのタプルをカバーすることができる最小のホスト・セットV={v,v}を選択する。
結果として、制約付きタプル・ルーティングは、第1のホップをV={v,v}となるようにS[9,10]のルーティング・パス上に設定する。制約付きタプル・ルーティングは、セグメントS[9,10]がホストV={v,v}上に配置されることを指定する、ルーティング・テーブル内のエントリも追加する。
次に、制約付きタプル・ルーティングは、中間結果
Figure 2007299406
を、Si2[Wi2]内のすべてのタプルをカバーするホストにルーティングする必要がある。第1のステップと同様に、制約付きタプル・ルーティングは第1に、Si2[Wi2]内のすべての相関タプルの位置を取得する。しかしながら、異なるホストにまたがって中間結果を伝送する際のオーバヘッドを最小限にするために、
Figure 2007299406
に関するルーティングを決定するには、
Figure 2007299406
の現在の位置を考慮に入れなければならない。第1のルーティング・ホップをV={v,...,v}とすると、制約付きタプル・ルーティングは最初に、V内のホストによってすでにカバーされているSi2[Wi2]内のそれらのタプルを消去する。その論拠は、現在V内のホスト上に位置するいずれの中間結果
Figure 2007299406
も、Si2[Wi2]内のローカルに利用可能なタプルと結合しなければならないためである。その後、制約付きタプル・ルーティングは、Si2[Wi2]内の残りのタプルをカバーするために、最小ホスト・セットV2を計算する。しかしながら、オリジナルのタプルとは異なり、中間結果は他のタプルと結合するためのメモリ・キューにはバッファリングされない。したがって、制約付きタプル・ルーティングは、ルーティング・テーブル内の中間結果の配置を記録する必要がない。
たとえば図9では、第2のルーティング・ホップは、現在ホストv、vに位置する中間結果
Figure 2007299406
用のホスト・セットを選択するためのものである。その後、制約付きタプル・ルーティングは、ホストvによってすでにカバーされている、S[3,4]およびS[7,8]を除去する。次に、{v,v}上のS[1,2]、{v,v}上のS[5,6]、{v,v}上のS[9,10]などの、残りのタプルの位置に基づいて、制約付きタプル・ルーティングは、セグメントS[9,10]に関する第2のルーティング・ホップとして、最小ホスト・セットV={v,v}を計算する。
上記の計算は、制約付きタプル・ルーティングが、
Figure 2007299406
内のすべてのn−1プローブ・ステップについて、ホスト・セットV、...、Vn−1を計算するまで反復される。その後、制約付きタプル・ルーティングは、その位置がVによって指定されたホスト・セットであるセグメントηに関するエントリを挿入することによって、ルーティング・テーブルを更新する。セクション1504で、制約付きタプル・ルーティング・アルゴリズム1500は、ルーティング・パスV→V...→Vn−1を使用して各タプルs∈S[t,t+T]に注釈を付ける。図15は、m個のホスト{v,...,v}を使用して、結合オペレータ
Figure 2007299406
を処理するための、制約付きタプル・ルーティング・アルゴリズムの擬似コードを示す図である。
図13〜図14のプロセスなどの最適なホスト・セットの選択のために、他のアルゴリズムを使用することもできる。最適なホスト選択アルゴリズムの目的は、各ルーティング・ホップV、1≦k≦n−1について最良のホスト・セットを選択することである。k番目のルーティング・ホップの目標は、
Figure 2007299406
χ=s、およびSik[Wik]内のすべてのタプルの間に、すべての結合結果を生成することである。スライディング・ウィンドウSik[Wik]が、E={η,...,η}によって示されるセグメントのセットからなると想定する。各セグメントに関する配置情報は、ルーティング・テーブルから取り出される。
各セグメントη、1≦z≦eは、ホストのセットU⊆{v,...,v}上で分散される。その後、制約付きタプル・ルーティングは、セグメント配置情報をホスト・カバレッジ情報に変換する。たとえば、ηがホスト・セットU上で分散され、U内の各ホストがセグメントηをカバーすると考えてみる。
Figure 2007299406
と示される。各ホスト
Figure 2007299406
では、A⊆Eで示されるEのサブセットを形成するセグメントのセットをカバーする。目標は平衡のとれた負荷分散を達成することであるため、Sik[Wik]内のすべての相関タプルをカバーすることができる最低数の最小負荷のホストに対して、Xk−1が分散される。したがって、重み値wが各サブセットAに関連付けられる。重み値wはホストvの負荷値wであり、負荷値に関する数式で定義される。結果として、最適なホスト選択問題は、以下のように重み付けされた最小セットのカバー問題に公式化される。
定義:グラウンド(ground)・セットE={η,...,η}、サブセットA、...、A⊆E、および各サブセットAに関するコストwとすると、目標は、∪j∈I=Eおよび
Figure 2007299406
となるような、最小セット・カバーI⊆{1,...,K}を見つけることである。
ホスト・セットVは、Iに従って導出される。たとえば、セット・カバーI={1,2}の場合、V={v,v}である。最小セット・カバー問題は、良く知られたNPハード問題である。結果として、制約付きタプル・ルーティングは、最小セット・カバーを見つけるために欲張り(greedy)ヒューリスティック・アルゴリズムを使用する。基本的な考え方は、
argminjの最小値、
Figure 2007299406
を有するサブセットAを選択することであり、上式で|A|はセットAのカーディナリティ(cardinality)を示す。Aはセット・カバーIに追加され、Aに含まれるそれらの要素を除去することによって残りの各サブセットを更新する。Aをセットに追加するプロセスは、選択されるセット・カバーIが、E={η,...,η}内のすべてのセグメントを含むまで反復される。
しかしながら、前述の方式は、冗長結合計算を実行することができる。現在選択されたホスト・セットがVであると想定する。任意のセグメントη∈Sik[Wik]について、ホストのセットU={vz1,...,vz1}上に配置される。セットVおよびUが複数の共通ホストを含む場合(すなわち、|V∩U|>1)、Xk−1とηの間の結合プローブは、|V∩U|内に含まれる異なるホストで冗長に計算される。こうした冗長計算は、冗長結合結果につながる可能性がある。この問題に対処するには、各結合プローブが1つのホストによってのみ実行されることを保証するために、Xk−1の異なるコピーによって担持されるルーティング・パスに注釈が付けられる。Sik[Wik]内のすべてのタプルと相関させるために、Xk−1のコピーがV内のすべてのホストに送られる。V内のホスト上に配置された∀η∈{η,...,η}について、|V∩U|>1の場合、Xとηとの間で結合プローブを実行するためにV∩Uからの最小負荷のホストvが選択される。任意の他のホストv∈V∩Uについて、ルーティング・パスにはフラグ(v/η)で注釈が付けられ、これは、
Figure 2007299406
のいかなる中間結果タプルもがホストv上のηと結合しないことを意味する。
制約付きタプル・ルーティング・アルゴリズムの正確さは、制約付きタプル・ルーティングがオリジナルの結合オペレータと同じ結合結果のセットを生成することを証明することによって示される。C(J)およびC’(J)は、それぞれ、
オリジナルの結合オペレータ
Figure 2007299406
によって生成される結合結果のセットと、制約付きタプル・ルーティング・アルゴリズムを使用する分散型処理方式とを示す。制約付きタプル・ルーティング・アルゴリズムの正確さは、C(J)=C’(J)を示すことによって証明される。
定理C:多経路ストリーム結合オペレータ
Figure 2007299406
とし、C(J)およびC’(J)が、それぞれ制約付きタプル・ルーティング・アルゴリズムを使用して、オリジナルの結合オペレータと分散型処理方式との両方によって生成される、結合結果のセットを示すようにする。結果として、C(J)=C’(J)である。
証明スケッチ:C(J)⊆C’(J)は、第1に∀s、1≦i≦n、
Figure 2007299406
の場合、
Figure 2007299406
であることを示すことによって証明される。これは、
Figure 2007299406
が制約付きタプル・ルーティングによって生成されるという、より強力なステートメントを証明することによって証明される。数学的帰納法を使用して、(1)k=1の場合、このステートメントがtrueであることを証明する。制約付きタプル・ルーティングは、Si1[Wi1]内のすべてのタプルをカバーするホストのセットVにsを送るため、制約付きタプル・ルーティングによって
Figure 2007299406
が生成され、(2)何らかのk、1≦k≦n−2の場合にこのステートメントがtrueであると想定すると、このステートメントはk+1の場合にtrueであることを証明する。この想定に従って、制約付きタプル・ルーティングによって
Figure 2007299406
が生成される。Sik+1[Wik+1]内のすべてのタプルがXと同一の場所に位置するか、またはk+1番目のルーティング・ホップVk+1内のホストによってカバーされているため、制約付きタプル・ルーティングによって
Figure 2007299406
内のすべての結果タプルが生成される。結果として、C(J)⊆C’(J)である。
次に、C’(J)⊆C(J)が証明される。第1に、拡散結合オペレータによって生成されるC’(J)における任意の結合結果は、多経路ストリーム結合セマンティクスに従い、これはC(J)にも現れるものとする。第2に、制約付きタプル・ルーティングはいかなる重複結果も生成しないことが証明される。制約付きタプル・ルーティングは重複を避けて実行されるため、いかなる結果タプル
Figure 2007299406
も、単一のホストによって1回だけ生成される。したがって、C’(J)⊆C(J)である。C(J)⊆C’(J)およびC’(J)⊆C(J)を組み合わせると、結果としてC(J)=C’(J)となる。
制約付きタプル・ルーティング・アルゴリズム1500のオーバヘッドは、時間ユニットあたりに制約付きタプル・ルーティングによって生成される余分なタプルの数として定義される。1ホップ・ルーティングを実行する整列タプル・ルーティングとは異なり、制約付きタプル・ルーティングは、複数ホスト上でオリジナル入力ストリームのタプルを複製するだけでなく、異なるホストにまたがって中間結果を転送する必要のある、複数ホップ・ルーティングを実行する。
したがって、制約付きタプル・ルーティングのオーバヘッドは、(1)セグメントs[t,t+T]を第1のルーティング・ホップV1によって指定された複数ホップへ送ることによって、オリジナルの入力ストリームを複製すること、(2)中間結果
Figure 2007299406
を、Vによって指定された複数ホップに伝送すること、という、2つの部分からなる。オーバヘッドの第1の部分では、システムは、それらのオーバヘッド・データに関する余分な処理、メモリ、およびネットワーク帯域幅を消費する必要がある。しかしながら、中間結果はメモリ・バッファに格納されないため、中間結果のオーバヘッドはCPUおよび帯域幅のコストのみを発生させる。
定理D:多経路ストリーム結合オペレータ
Figure 2007299406
とし、r、1≦i≦nが、ストリームSの平均率を示すようにする。Tがセグメント長さを示すようにする。Sのプローブ・シーケンスは、Si1、...、Sin−1によって示される。σi,jがSとSの間の結合選択性を定義するようにする。S、1≦i≦n内のタプルに関する複製の平均数は、Mによって示される。中間結果
Figure 2007299406
に関する複製の平均数は、Mikによって示される。OCTRがオリジナルのデータ・ストリームの平均複製オーバヘッドを示すようにする。O CTRが中間結果の平均オーバヘッドを示すようにする。その結果、
Figure 2007299406
となる。
証明スケッチ:各セグメントS[t,t+T]、1≦i≦nについて、制約タプル・ルーティングはオリジナルの入力ストリームと比べて(M−1)・r・Tの余分なタプルを時間間隔Tにわたって送る。したがって、時間ユニットあたりに制約付きタプル・ルーティング・アルゴリズムによって生成される余分なタプルの平均数は、
Figure 2007299406
である。各セグメントS[t,t+T]、1≦i≦nについて、Si1[Wi1]、...、Sin−1[Win−1]と結合する必要がある。
Figure 2007299406
から生成される中間結果の数は、σi,i1(r・T)・(ri1・Wi1)である。各中間結果はMi2に送られ、Si2[Wi2]と結合する。
Figure 2007299406
に関する中間結果のオーバヘッドは、Mik・σi,i1(r・T)・(ri1・Wi1)・σi1,i2・(ri2・Wi2)...σik−1,ik(rik・Wik)である。したがって、
Figure 2007299406
を計算するための中間結果の合計数は、
Figure 2007299406
である。n個の入力ストリームすべてについて、時間ユニットあたりに制約付きタプル・ルーティング・アルゴリズムによって生成される中間結果の合計数は、
Figure 2007299406
である。
整列タプル・ルーティング方式と同様に、制約付きタプル・ルーティングのオーバヘッドも、多経路ストリーム結合オペレータを実行するために使用されるホスト{v,...,v}の合計数とは無関係である。したがって、制約付きタプル・ルーティングは、結合オペレータが分散型ストリーム処理システム内のすべての使用可能ホストを、過度のオーバヘッドなしに利用できるようにするものである。制約付きタプル・ルーティングのオーバヘッドは、オリジナル・タプルおよび中間結果タプルをルーティングするためのホスト・セットの平均数を定義する、2つの新しいパラメータMおよびMikに依存する。発明者等の最適なホスト・セット選択アルゴリズムは、常に相関制約を満たすための最小のホスト・セットを選択する。MまたはMikの値は、しばしば、合計ホスト数よりもかなり少ない。整列タプル・ルーティングOATRの複製オーバヘッドとは異なり、オリジナル・ストリームOCTRの複製オーバヘッドはスライディング・ウィンドウ・サイズとは無関係である。
したがって、結合オペレータが大規模なスライディング・ウィンドウを採用する場合、制約付きタプル・ルーティングの方が整列タプル・ルーティングよりもオーバヘッドが少ない可能性がある。制約付きタプル・ルーティングは整列タプル・ルーティングに比べて余分な中間結果オーバヘッドを有するが、実際の適用例ではしばしば結合選択性が非常に小さいため、中間結果オーバヘッドO CTRは重大でない。整列タプル・ルーティングと制約付きタプル・ルーティングとの間の他の相違点は、整列タプル・ルーティングがn個の入力ストリームを区別して取り扱うのに対して、制約付きタプル・ルーティングはすべての入力ストリームを同等に扱うことである。したがって、小さなスライディング・ウィンドウを備えた1つの高速ストリームと低速ストリームのセットとの間で結合する場合は、整列タプル・ルーティングの方が好適であり、すべての入力ストリームが同様の率を有し、結合オペレータが大きなスライディング・ウィンドウを採用する場合は、制約付きタプル・ルーティングが最適である。
さらに、制約付きタプル・ルーティングは、新しくルーティングされたセグメントの位置を追跡するルーティング・テーブルを維持する必要がある。セグメント長さが制約付きタプル・ルーティングの複製オーバヘッドに影響を与えるが、セグメント長さはルーティング・テーブルのサイズおよびルーティング計算オーバヘッドを決定する。
したがって、例示的諸実施形態は、ストリーム処理環境において自動的にプランニングするための方法を提供する。説明する検索方法は、ストリーム処理プランニング問題に適用すると、他のプランニング方法に比べて大幅に改善されたスケーラビリティを達成する。複雑な多経路ストリーム結合の正確な処理を可能にすることによって、スケーラビリティが改善される。加えて、例示的諸実施形態は、データ・ストリームの変動にも対応する。
本発明は、完全なハードウェア実施形態、完全なソフトウェア実施形態、またはハードウェアおよびソフトウェアの両方の要素を含む実施形態の、形を取ることが可能である。好ましい実施形態では、本発明は、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定されることのない、ソフトウェアで実施される。
さらに本発明は、コンピュータまたは任意の命令実行システムによって、またはこれらに関連して使用するための、プログラム・コードを提供する、コンピュータ使用可能またはコンピュータ読み取り可能な媒体からアクセス可能な、コンピュータ・プログラム製品の形を取ることができる。本記述では、コンピュータ使用可能またはコンピュータ読み取り可能な媒体は、命令実行のシステム、装置、またはデバイスによって、またはそれらに関連して使用するためのプログラムを、包含、格納、通信、伝播、または移送可能な、任意の有形の装置とすることができる。
媒体は、電子、磁気、光、電磁、赤外線、または半導体のシステム(あるいは装置またはデバイス)、あるいは伝播媒体とすることができる。コンピュータ読み取り可能媒体の例には、半導体またはソリッド・ステート・メモリ、磁気テープ、取り外し可能コンピュータ・ディスケット、ランダム・アクセス・メモリ(RAM)、読み取り専用メモリ(ROM)、剛体磁気ディスク、および光ディスクが含まれる。光ディスクの現行例には、コンパクト・ディスク−読み取り専用メモリ(CD−ROM)、コンパクト・ディスク−読み取り/書き込み(CD−R/W)、およびDVDが含まれる。
プログラム・コードの格納あるいは実行またはその両方に好適なデータ処理システムは、システム・バスを介して直接または間接的にメモリ要素に結合された、少なくとも1つのプロセッサを含むことになる。メモリ要素は、プログラム・コードの実際の実行中に採用されるローカル・メモリ、大容量ストレージ、および、実行中にバルク・ストレージからコードを取り出さなければならない回数を減らすために、少なくともいくつかのプログラム・コードの一時ストレージを提供する、キャッシュ・メモリを含むことができる。
(キーボード、ディスプレイ、ポインティング・デバイスなどを含むがこれらに限定されることのない)入力/出力またはI/Oデバイスは、直接、またはI/Oコントローラの介在を通じて、システムに結合することができる。
データ処理システムを、専用または公衆ネットワークの介在を通じて、他のデータ処理システムあるいはリモートのプリンタまたはストレージ・デバイスに結合できるようにするために、ネットワーク・アダプタをシステムに結合することもできる。モデム、ケーブル・モデム、およびイーサネット(登録商標)・カードは、現在使用可能なネットワーク・アダプタ・タイプのごく一部にすぎない。
以上、説明してきた例示的諸実施形態は、例示および説明を目的とするものであり、本発明を網羅するかまたは開示された形に限定することを意図するものではない。当業者であれば、多くの修正形態および変形形態が明らかとなろう。実施形態は、本発明の原理、実際の適用例を最も良く説明するため、ならびに、企図された特定の用途に好適な様々な修正を備えた様々な諸実施形態について、当業者が本発明を理解できるようにするために、
選択および説明されたものである。
例示的諸実施形態が実施可能なデータ処理システムのネットワークを示す絵画図である。 例示的諸実施形態が実施可能なデータ処理システムを示すブロック図である。 例示的諸実施形態に従ったストリーム処理の一例を示す図である。 例示的実施形態に従った、スライディング・ウィンドウ・ストリーム結合オペレータ・モデルを示す図である。 例示的実施形態に従った、分散型多経路ストリーム結合実行モデルを示す図である。 例示的実施形態に従った、相関認識タプル・ルーティング方式を示す図である。 例示的実施形態に従った、相関認識タプル・ルーティング方式を示す図である。 例示的実施形態に従った、整列タプル・ルーティング・モデルを示す図である。 例示的実施形態に従った、制約付きタプル・ルーティング・モデルを示す図である。 例示的実施形態に従った集中結合方法を示す流れ図である。 例示的実施形態に従った分散結合方法を示す流れ図である。 例示的実施形態に従った、整列タプル・ルーティング方法を示す流れ図である。 例示的実施形態に従った、制約付きタプル・ルーティング方法を示す流れ図である。 例示的実施形態に従った、制約付きタプル・ルーティング方法を示す流れ図である。 例示的実施形態に従った、多経路ストリーム結合アルゴリズムを示す図である。 例示的実施形態に従った、整列タプル・ルーティング・アルゴリズムを示す図である。 例示的実施形態に従った、制約付きタプル・ルーティング・アルゴリズムを示す図である。
符号の説明
310 取引
312 株式分析
320 TVニュース
322 MPEG4デマルチプレクサ
324 イメージ分析
326 音声テキスト
328 テキスト分析
330 ラジオ
332 音声テキスト
334 テキスト分析
340 多経路ストリーム結合
350 相関結果

Claims (16)

  1. 多経路ストリーム相関の処理をコンピュータで実施するための方法であって、
    相関のためにストリーム・データを受信するステップと、
    多経路ストリーム相関の作業負荷をより小さな作業負荷の部片に連続的に区分するために、タスクを形成するステップであって、前記より小さな作業負荷のそれぞれの部片は単一のホストによって処理することが可能である、前記形成するステップと、
    前記ストリーム・データを、相関処理のために異なるホストに送信するステップと、
    を有する、方法。
  2. 前記形成するステップが、ストリーム区分を実行するためのステップであり、
    入力ストリームをセグメントに分割するステップと、
    相関処理のために前記異なるホスト上のセグメントに分散するステップと、
    をさらに有する、請求項1に記載の方法。
  3. 前記形成するステップが、オペレータ区分を実行するためのステップであり、
    多経路相関オペレータを複数のより小さなオペレータに分割するステップと、
    異なる分散型ホスト上で異なるより小さなオペレータを実行するステップと、
    をさらに有する、請求項1に記載の方法。
  4. 前記多経路ストリーム相関が、複数の入力ストリームを介してスライディング・ウィンドウ結合によって実施される、請求項1に記載の方法。
  5. 前記形成するステップが、連続的な最適化問題を形成するためのステップであり、
    相関制約を識別するステップと、
    相関制約が満たされること、前記異なるホストの作業負荷が平均化されること、および前記ストリーム・データの複製オーバヘッドを最小化することを保証するために、各ストリーム・データに関するルーティング・パスを計算するステップと、
    を含む、請求項1に記載の方法。
  6. 最高率の入力ストリームをマスタ・ストリームとして選択するステップ、および他のストリームをスレーブ・ストリームとして示すステップと、
    前記マスタ・ストリームを非結合セグメントに区分するステップと、
    相関制約を満たすためにスレーブ・ストリームを重複セグメントに区分するステップと、
    をさらに有する、請求項2に記載の方法。
  7. 前記選択するステップが、ランタイム時に動的に変更される、請求項6に記載の方法。
  8. 前記選択するステップが、
    前記マスタ・ストリームが任意の他のストリームよりも遅くなることに応答して、前記最高率の入力ストリームをマスタ・ストリームとして選択するため、および他のストリームをスレーブ・ストリームとして示すために、ストリーム・ロール・スイッチを起動するステップと、
    前記相関制約に従って前記ストリーム・ロール・スイッチを達成するために遷移段階を採用するステップと、
    をさらに有する、請求項7に記載の方法。
  9. 前記マスタ・ストリームを非結合セグメントに区分するステップが、前記非結合セグメントのセグメント長さを調整するためのステップであり、
    システム条件が変更された場合に、セグメント適応を起動するステップと、
    新しいセグメント長さを探索するためにサンプリング・ベースのプロファイリング・プロセスを実行するステップと、
    をさらに有する、請求項6に記載の方法。
  10. 前記オペレータ区分が、
    前記多経路相関の処理を複数のホップに分割するために結合順序を決定するステップと、
    各ホップの相関セグメントの位置をルックアップするステップと、
    前記各ホップの相関セグメントをすべてカバーする最小ホスト・セットを計算するステップと、
    をさらに有する、請求項3に記載の方法。
  11. 前記結合順序が、異なるストリーム間で観察される結合選択性によって決定される、請求項10に記載の方法。
  12. 前記ルックアップするステップが、ルーティング・テーブルを使用して実行され、前記ルーティング・テーブルは、異なる入力ストリームのスライディング・ウィンドウ内の前記相関セグメントの配置情報を含む、請求項10に記載の方法。
  13. 前記計算するステップが、
    以前のホップによるホスト・セット選択を考慮するステップと、
    中間結果の転送を最低限にするために、前記以前のホップによって選択された前記ホストを再使用するステップと、
    をさらに有する、請求項10に記載の方法。
  14. 相関のために入力ストリームからストリーム・データを受信するため、および多経路ストリーム相関の作業負荷をより小さな作業負荷の部片に連続的に区分するためのタスク形成のための、データ処理システムであって、前記より小さな作業負荷の部片のそれぞれが単一のホストによって処理可能であり、前記タスクが、多経路相関オペレータを複数のより小さなオペレータに分割するため、および異なる分散型ホスト上で異なるより小さなオペレータを実行するために、オペレータ・区分を実行するため、ならびに入力ストリームをセグメントに分割するため、および相関処理のためにホスト上のセグメントに分散するために、ストリーム区分を実行するためのものである、データ処理システムと、
    前記データ処理システムに動作可能に接続された、複数のホストと、
    を備え、前記データ処理システムが前記相関処理のために前記複数のホストに前記ストリーム・データを送信する、システム。
  15. 前記データ処理システムが、最高率の入力ストリームをマスタ・ストリームとして選択し、他のストリームをスレーブ・ストリームとして示し、前記マスタ・ストリームを非結合セグメントに区分し、相関制約を満たすためにスレーブ・ストリームを重複セグメントに区分する、請求項14に記載のシステム。
  16. 請求項1〜13のいずれか1項に記載の方法の各ステップをコンピュータに実行させるためのコンピュータ・プログラム。
JP2007120460A 2006-05-04 2007-05-01 多経路データ・ストリーム相関をスケーラブルに処理するためのシステムおよび方法 Expired - Fee Related JP5090054B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/417,838 US7548937B2 (en) 2006-05-04 2006-05-04 System and method for scalable processing of multi-way data stream correlations
US11/417838 2006-05-04

Publications (2)

Publication Number Publication Date
JP2007299406A true JP2007299406A (ja) 2007-11-15
JP5090054B2 JP5090054B2 (ja) 2012-12-05

Family

ID=38768787

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007120460A Expired - Fee Related JP5090054B2 (ja) 2006-05-04 2007-05-01 多経路データ・ストリーム相関をスケーラブルに処理するためのシステムおよび方法

Country Status (3)

Country Link
US (2) US7548937B2 (ja)
JP (1) JP5090054B2 (ja)
CN (1) CN100549963C (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009304A (ja) * 2007-06-27 2009-01-15 Hitachi Ltd ストリームデータの処理方法およびストリームデータ処理システム
JP2010134513A (ja) * 2008-12-02 2010-06-17 Fujitsu Ltd データ紐付けプログラム,情報処理装置およびデータ紐付け方法
KR20140006862A (ko) * 2011-01-07 2014-01-16 아브 이니티오 테크놀로지 엘엘시 흐름 분석 계측
JP2016526719A (ja) * 2013-06-21 2016-09-05 株式会社日立製作所 時間調整を使用したストリームデータ処理方法

Families Citing this family (95)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US20080016095A1 (en) * 2006-07-13 2008-01-17 Nec Laboratories America, Inc. Multi-Query Optimization of Window-Based Stream Queries
US7496683B2 (en) * 2006-07-27 2009-02-24 International Business Machines Corporation Maximization of sustained throughput of distributed continuous queries
US8380864B2 (en) * 2006-12-27 2013-02-19 Microsoft Corporation Media stream slicing and processing load allocation for multi-user media systems
US20080294599A1 (en) * 2007-05-23 2008-11-27 International Business Machines Corporation Apparatus and method of semantic tuplespace system
CN101127768B (zh) * 2007-08-24 2012-12-19 张建中 创建多维网际协议的方法和装置以及系统
US7979420B2 (en) * 2007-10-16 2011-07-12 Oracle International Corporation Handling silent relations in a data stream management system
US8296316B2 (en) * 2007-10-17 2012-10-23 Oracle International Corporation Dynamically sharing a subtree of operators in a data stream management system operating on existing queries
US7996388B2 (en) * 2007-10-17 2011-08-09 Oracle International Corporation Adding new continuous queries to a data stream management system operating on existing queries
US8073826B2 (en) 2007-10-18 2011-12-06 Oracle International Corporation Support for user defined functions in a data stream management system
US7991766B2 (en) * 2007-10-20 2011-08-02 Oracle International Corporation Support for user defined aggregations in a data stream management system
US8521867B2 (en) * 2007-10-20 2013-08-27 Oracle International Corporation Support for incrementally processing user defined aggregations in a data stream management system
CN101546320B (zh) * 2008-03-27 2011-11-16 北京兴宇中科科技开发股份有限公司 一种基于滑动窗口的数据差异分析方法
US8090870B2 (en) * 2008-04-28 2012-01-03 Disney Enterprises, Inc. Method and system for adaptive data transfer over packet networks
US8316012B2 (en) * 2008-06-27 2012-11-20 SAP France S.A. Apparatus and method for facilitating continuous querying of multi-dimensional data streams
US8041848B2 (en) * 2008-08-04 2011-10-18 Apple Inc. Media processing method and device
US20100057737A1 (en) 2008-08-29 2010-03-04 Oracle International Corporation Detection of non-occurrences of events using pattern matching
US8352517B2 (en) * 2009-03-02 2013-01-08 Oracle International Corporation Infrastructure for spilling pages to a persistent store
US8145859B2 (en) 2009-03-02 2012-03-27 Oracle International Corporation Method and system for spilling from a queue to a persistent store
US8725707B2 (en) * 2009-03-26 2014-05-13 Hewlett-Packard Development Company, L.P. Data continuous SQL process
US8380965B2 (en) * 2009-06-16 2013-02-19 International Business Machines Corporation Channel-based runtime engine for stream processing
US8180801B2 (en) * 2009-07-16 2012-05-15 Sap Ag Unified window support for event stream data management
US8321450B2 (en) 2009-07-21 2012-11-27 Oracle International Corporation Standardized database connectivity support for an event processing server in an embedded context
US8387076B2 (en) 2009-07-21 2013-02-26 Oracle International Corporation Standardized database connectivity support for an event processing server
JP5396184B2 (ja) * 2009-07-31 2014-01-22 株式会社日立製作所 計算機システム及び複数計算機によるストリームデータ分散処理方法
US8527458B2 (en) 2009-08-03 2013-09-03 Oracle International Corporation Logging framework for a data stream processing server
US8386466B2 (en) 2009-08-03 2013-02-26 Oracle International Corporation Log visualization tool for a data stream processing server
JP5395565B2 (ja) * 2009-08-12 2014-01-22 株式会社日立製作所 ストリームデータ処理方法及び装置
JP4925143B2 (ja) * 2009-08-12 2012-04-25 株式会社日立製作所 ストリームデータ処理システム、ストリームデータ処理方法及びストリームデータ処理プログラム
US8959106B2 (en) 2009-12-28 2015-02-17 Oracle International Corporation Class loading using java data cartridges
US9305057B2 (en) 2009-12-28 2016-04-05 Oracle International Corporation Extensible indexing framework using data cartridges
US9430494B2 (en) 2009-12-28 2016-08-30 Oracle International Corporation Spatial data cartridge for event processing systems
US8327029B1 (en) * 2010-03-12 2012-12-04 The Mathworks, Inc. Unified software construct representing multiple synchronized hardware systems
US8375139B2 (en) * 2010-06-28 2013-02-12 Canon Kabushiki Kaisha Network streaming over multiple data communication channels using content feedback information
US8713049B2 (en) 2010-09-17 2014-04-29 Oracle International Corporation Support for a parameterized query/view in complex event processing
US9189280B2 (en) 2010-11-18 2015-11-17 Oracle International Corporation Tracking large numbers of moving objects in an event processing system
US8990416B2 (en) 2011-05-06 2015-03-24 Oracle International Corporation Support for a new insert stream (ISTREAM) operation in complex event processing (CEP)
US9329975B2 (en) 2011-07-07 2016-05-03 Oracle International Corporation Continuous query language (CQL) debugger in complex event processing (CEP)
US8990452B2 (en) 2011-07-26 2015-03-24 International Business Machines Corporation Dynamic reduction of stream backpressure
US9148495B2 (en) 2011-07-26 2015-09-29 International Business Machines Corporation Dynamic runtime choosing of processing communication methods
US8959313B2 (en) 2011-07-26 2015-02-17 International Business Machines Corporation Using predictive determinism within a streaming environment
US8880493B2 (en) 2011-09-28 2014-11-04 Hewlett-Packard Development Company, L.P. Multi-streams analytics
US9430117B2 (en) 2012-01-11 2016-08-30 International Business Machines Corporation Triggering window conditions using exception handling
US9438656B2 (en) * 2012-01-11 2016-09-06 International Business Machines Corporation Triggering window conditions by streaming features of an operator graph
US9405553B2 (en) * 2012-01-30 2016-08-02 International Business Machines Corporation Processing element management in a streaming data system
US9146775B2 (en) 2012-04-26 2015-09-29 International Business Machines Corporation Operator graph changes in response to dynamic connections in stream computing applications
US9495390B2 (en) * 2012-08-21 2016-11-15 Emc Corporation Format identification for fragmented image data
US9391830B2 (en) * 2012-09-26 2016-07-12 International Business Machines Corporation Dynamic stream processing within an operator graph
US9158795B2 (en) 2012-09-28 2015-10-13 International Business Machines Corporation Compile-time grouping of tuples in a streaming application
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US9805095B2 (en) * 2012-09-28 2017-10-31 Oracle International Corporation State initialization for continuous queries over archived views
US9497250B2 (en) 2012-10-29 2016-11-15 International Business Machines Corporation Runtime grouping of tuples in a streaming application
US9930081B2 (en) 2012-11-13 2018-03-27 International Business Machines Corporation Streams optional execution paths depending upon data rates
US10956422B2 (en) 2012-12-05 2021-03-23 Oracle International Corporation Integrating event processing with map-reduce
US10298444B2 (en) 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
US9098587B2 (en) 2013-01-15 2015-08-04 Oracle International Corporation Variable duration non-event pattern matching
US9390135B2 (en) 2013-02-19 2016-07-12 Oracle International Corporation Executing continuous event processing (CEP) queries in parallel
US9047249B2 (en) 2013-02-19 2015-06-02 Oracle International Corporation Handling faults in a continuous event processing (CEP) system
US9251205B2 (en) * 2013-02-21 2016-02-02 International Business Machines Corporation Streaming delay patterns in a streaming environment
US9141723B2 (en) * 2013-03-14 2015-09-22 Facebook, Inc. Caching sliding window data
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
US9934279B2 (en) 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
US9313110B2 (en) * 2014-01-22 2016-04-12 International Business Machines Corporation Managing processing branches in an operator graph
WO2015116088A1 (en) * 2014-01-30 2015-08-06 Hewlett-Packard Development Company, L.P. Optimizing window joins over data streams
JP6153486B2 (ja) * 2014-03-07 2017-06-28 Kddi株式会社 異なるイベント同士を統合する情報統合プログラム、装置及び方法
US9244978B2 (en) 2014-06-11 2016-01-26 Oracle International Corporation Custom partitioning of a data stream
US9712645B2 (en) 2014-06-26 2017-07-18 Oracle International Corporation Embedded event processing
US9460235B2 (en) * 2014-06-30 2016-10-04 International Business Machines Corporation Supplementing a tuple with a derived value
US10120907B2 (en) 2014-09-24 2018-11-06 Oracle International Corporation Scaling event processing using distributed flows and map-reduce operations
US9886486B2 (en) 2014-09-24 2018-02-06 Oracle International Corporation Enriching events with dynamically typed big data for event processing
US9734038B2 (en) * 2014-09-30 2017-08-15 International Business Machines Corporation Path-specific break points for stream computing
CN104461938B (zh) * 2014-12-11 2017-12-22 北京国双科技有限公司 数据读取方法和装置
US9747343B2 (en) * 2015-02-19 2017-08-29 International Business Machines Corporation Algorithmic changing in a streaming environment
WO2016188591A1 (en) 2015-05-22 2016-12-01 Longsand Limited Semantic consolidation of data received from customers and enterprises
WO2017018901A1 (en) 2015-07-24 2017-02-02 Oracle International Corporation Visually exploring and analyzing event streams
US9965518B2 (en) * 2015-09-16 2018-05-08 International Business Machines Corporation Handling missing data tuples in a streaming environment
US10664457B2 (en) 2015-09-30 2020-05-26 Bank Of America Corporation System for real-time data structuring and storage
US9747175B2 (en) 2015-09-30 2017-08-29 Bank Of America Corporation System for aggregation and transformation of real-time data
US10069891B2 (en) 2015-09-30 2018-09-04 Bank Of America Corporation Channel accessible single function micro service data collection process for light analytics
US10755344B2 (en) 2015-09-30 2020-08-25 Bank Of America Corporation System framework processor for channel contacts
US9858124B1 (en) 2015-10-05 2018-01-02 Amazon Technologies, Inc. Dynamic management of data stream processing
CN105354089B (zh) * 2015-10-15 2019-02-01 北京航空航天大学 支持迭代计算的流式数据处理单元及系统
CN105847160B (zh) * 2016-05-09 2019-04-12 中国人民解放军国防科学技术大学 一种基于多维最小化分组的不确定incast流量聚合方法
US10572276B2 (en) 2016-09-12 2020-02-25 International Business Machines Corporation Window management based on a set of computing resources in a stream computing environment
US10536387B2 (en) 2016-09-12 2020-01-14 International Business Machines Corporation Window management based on an indication of congestion in a stream computing environment
US10749630B2 (en) 2016-12-28 2020-08-18 Microsoft Technology Licensing, Llc Dynamically partitioning media streams
CN107436825A (zh) * 2017-08-04 2017-12-05 郑州云海信息技术有限公司 一种云平台系统恢复方法和装置
US10901999B2 (en) 2017-10-23 2021-01-26 International Business Machines Corporation Graph-based searching for data stream
US10789600B1 (en) * 2019-12-20 2020-09-29 Capital One Services, Llc Transaction exchange platform with snapshot microservice
US11037168B1 (en) 2019-12-20 2021-06-15 Capital One Services, Llc Transaction exchange platform with watchdog microservice
US11023528B1 (en) 2019-12-20 2021-06-01 Capital One Services, Llc Transaction exchange platform having configurable microservices
US10891615B1 (en) 2019-12-20 2021-01-12 Capital One Services, Llc Transaction exchange platform having streaming transaction data and microservices
US11080120B2 (en) 2019-12-20 2021-08-03 Capital One Services, Llc Transaction exchange platform with watchdog microservice
US11188534B2 (en) * 2020-01-14 2021-11-30 Microsoft Technology Licensing, Llc Optimizing input streams for a stream join model having a threshold function
US11005766B1 (en) 2020-04-06 2021-05-11 International Business Machines Corporation Path profiling for streaming applications

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002358293A (ja) * 2001-05-31 2002-12-13 Nec Corp 実行時負荷分散システム及び実行時負荷分散方法並びにプログラム
JP2003132088A (ja) * 2001-10-22 2003-05-09 Toshiba Corp 時系列データ検索システム

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5367341A (en) * 1992-10-20 1994-11-22 Canon Information Systems, Inc. Digital video editor having lost video frame protection
US5966120A (en) * 1995-11-21 1999-10-12 Imedia Corporation Method and apparatus for combining and distributing data with pre-formatted real-time video
US6970564B1 (en) * 1998-07-13 2005-11-29 Sony Corporation Data multiplexing device, program distribution system, program transmission system, pay broadcast system, program transmission method, conditional access system, and data reception device
JPH11331248A (ja) * 1998-05-08 1999-11-30 Sony Corp 送信装置および送信方法、受信装置および受信方法、並びに提供媒体
US6572662B2 (en) * 1998-05-15 2003-06-03 International Business Machines Corporation Dynamic customized web tours
US6366296B1 (en) * 1998-09-11 2002-04-02 Xerox Corporation Media browser using multimodal analysis
US6850965B2 (en) * 1998-11-17 2005-02-01 Arthur Douglas Allen Method for connection acceptance and rapid determination of optimal multi-media content delivery over network
US6721271B1 (en) * 1999-02-04 2004-04-13 Nortel Networks Limited Rate-controlled multi-class high-capacity packet switch
US6865747B1 (en) * 1999-04-01 2005-03-08 Digital Video Express, L.P. High definition media storage structure and playback mechanism
US6526580B2 (en) * 1999-04-16 2003-02-25 Digeo, Inc. Broadband data broadcasting service
US6636888B1 (en) * 1999-06-15 2003-10-21 Microsoft Corporation Scheduling presentation broadcasts in an integrated network environment
US6640239B1 (en) * 1999-11-10 2003-10-28 Garuda Network Corporation Apparatus and method for intelligent scalable switching network
US6516310B2 (en) * 1999-12-07 2003-02-04 Sybase, Inc. System and methodology for join enumeration in a memory-constrained environment
US20020035559A1 (en) * 2000-06-26 2002-03-21 Crowe William L. System and method for a decision engine and architecture for providing high-performance data querying operations
JP3515050B2 (ja) * 2000-07-07 2004-04-05 三菱電機株式会社 データベース演算処理装置
US7337231B1 (en) * 2000-12-18 2008-02-26 Nortel Networks Limited Providing media on demand
US20020116705A1 (en) * 2001-02-20 2002-08-22 Perlman Stephen G. System and method for processing conditional access data
US6925501B2 (en) * 2001-04-17 2005-08-02 General Instrument Corporation Multi-rate transcoder for digital streams
US20030191863A1 (en) * 2001-07-02 2003-10-09 Globespanvirata Incorporated Communications system using rings architecture
US20070266161A1 (en) * 2002-12-12 2007-11-15 Dilithium Networks Pty Ltd. Methods and system for fast session establishment between equipment using h.324 and related telecommunications protocols
US20040230581A1 (en) * 2003-05-15 2004-11-18 Chang-Hung Lee Processing distributed mobile queries with interleaved remote mobile joins
US20040260823A1 (en) * 2003-06-17 2004-12-23 General Instrument Corporation Simultaneously transporting multiple MPEG-2 transport streams
US7564798B2 (en) * 2003-08-27 2009-07-21 Finisar Corporation Methods and devices for testing and monitoring high speed communication networks
US7472314B2 (en) * 2003-09-26 2008-12-30 Alcatel - Lucent Usa Inc. System and method for monitoring link delays and faults in an IP network
EP1605641A1 (en) * 2004-06-08 2005-12-14 Matsushita Electric Industrial Co., Ltd. Mapping of shared physical channels depending on the quality of service class
CA2594118C (en) * 2004-12-08 2015-07-21 Imagine Communications Ltd. Distributed statistical multiplexing of multi-media
US8126870B2 (en) * 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US7487206B2 (en) * 2005-07-15 2009-02-03 International Business Machines Corporation Method for providing load diffusion in data stream correlations
US8874477B2 (en) * 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002358293A (ja) * 2001-05-31 2002-12-13 Nec Corp 実行時負荷分散システム及び実行時負荷分散方法並びにプログラム
JP2003132088A (ja) * 2001-10-22 2003-05-09 Toshiba Corp 時系列データ検索システム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009009304A (ja) * 2007-06-27 2009-01-15 Hitachi Ltd ストリームデータの処理方法およびストリームデータ処理システム
JP2010134513A (ja) * 2008-12-02 2010-06-17 Fujitsu Ltd データ紐付けプログラム,情報処理装置およびデータ紐付け方法
KR20140006862A (ko) * 2011-01-07 2014-01-16 아브 이니티오 테크놀로지 엘엘시 흐름 분석 계측
KR101894925B1 (ko) 2011-01-07 2018-09-04 아브 이니티오 테크놀로지 엘엘시 흐름 분석 계측
JP2016526719A (ja) * 2013-06-21 2016-09-05 株式会社日立製作所 時間調整を使用したストリームデータ処理方法

Also Published As

Publication number Publication date
US7548937B2 (en) 2009-06-16
US7890649B2 (en) 2011-02-15
US20090248749A1 (en) 2009-10-01
CN100549963C (zh) 2009-10-14
JP5090054B2 (ja) 2012-12-05
US20070288635A1 (en) 2007-12-13
CN101067792A (zh) 2007-11-07

Similar Documents

Publication Publication Date Title
JP5090054B2 (ja) 多経路データ・ストリーム相関をスケーラブルに処理するためのシステムおよび方法
US7739331B2 (en) Method and apparatus for providing load diffusion in data stream correlations
US10673763B2 (en) Learning or emulation approach to traffic engineering in information-centric networks
JP6258975B2 (ja) 低レイテンシデータアクセス用のデータストリーム分割
JP4620525B2 (ja) パケット・トラフィックを管理する方法、マルチプロセッサ・ネットワークおよびコンピュータ・プログラム(データ処理ネットワークにおける相互接続の最適利用)
Andronikou et al. Dynamic QoS-aware data replication in grid environments based on data “importance”
US20160149822A1 (en) Autonomic Traffic Load Balancing in Link Aggregation Groups By Modification of Switch Ingress Traffic Routing
KR20100113098A (ko) 전개 계획 제공 방법 및 컴퓨터 판독가능 저장 매체
US8290939B2 (en) Visualizing query results in stream processing systems
US9705750B2 (en) Executing data stream processing applications in dynamic network environments
JP2012043409A (ja) データ・ストリームを処理するためのコンピュータ実装方法、システム及びコンピュータ・プログラム
Jayaram et al. Parametric content-based publish/subscribe
US7529196B2 (en) Routing a service query in an overlay network
US20180248977A1 (en) Selective distribution of messages in a publish-subscribe system
WO2018156980A1 (en) Managing intelligent microservices in a data streaming ecosystem
US11500878B2 (en) Mechanism to synchronize, control, and merge data streams of disparate flow characteristics
US7743140B2 (en) Binding processes in a non-uniform memory access system
EP3314479A1 (en) Devices and/or methods to provide a query response based on ephemeral data
EP3011456B1 (en) Sorted event monitoring by context partition
WO2009156809A1 (en) Method, apparatus and computer program product for distributed information management
Repantis et al. QoS-aware shared component composition for distributed stream processing systems
US20090248722A1 (en) Clustering analytic functions
Shahout et al. Together is Better: Heavy Hitters Quantile Estimation
Fu et al. Role-based intelligent application state computing for OpenFlow distributed controllers in software-defined networking
Huang et al. DP_greedy: A two-phase caching algorithm for mobile cloud services

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100219

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120309

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120321

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120608

RD12 Notification of acceptance of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7432

Effective date: 20120608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20120608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120717

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120828

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20120828

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120912

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150921

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5090054

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees