![]() 分散共有ストリーム処理システムのクエリ配備プラン
专利摘要:
分散共有ストリーム処理システムにおけるクエリに関する配備プランを提供するための方法は、ストリーム処理システムにおいて現在配備されているクエリに関する実現可能な配備プランのセットを記憶することを含む。クエリは、情報を求めるクライアント要求に応答してデータストリームを提供する、ストリーム処理システム内のノードでホスティングされる複数の演算子を含む。本発明はまた、クエリのQoSメトリック制約が違反されているか否かを判断することと、QoSメトリック制約が違反されているとの判断に応じて、クエリを提供するのに使用するために実現可能な配備プランのセットから1つの配備プランを選択することとを含む。 公开号:JP2011514577A 申请号:JP2010544484 申请日:2009-01-29 公开日:2011-05-06 发明作者:バス・スジョイ;バネルジー・スジャータ;パパエマヌール・オルガ 申请人:ヒューレット−パッカード デベロップメント カンパニー エル.ピー.; IPC主号:G06F9-50
专利说明:
[0001] 本発明は、分散共有ストリーム処理システムのクエリ配備プランに関する。] [0002] [関連出願の相互参照] 本出願は、2008年1月29日に出願された仮出願第61/024,300号の優先権を主張する。この仮出願の内容は、参照によりそっくりそのまま本明細書に援用される。] 背景技術 [0003] この数年間で、ストリーム処理システム(SPS)は、惑星規模センサネットワークすなわち「マクロスコープ」、ネットワークの性能及びセキュリティの監視、マルチプレイヤオンラインゲーム、並びにフィードベースの情報マッシュアップを含む広範囲の用途でかなりの注目を集めてきた。 これらのSPSは、潜在的に大量のデータストリームを生成するデータパブリッシャ及びこれらのデータストリームに関して多くの同時クエリを登録するクライアントを含めて、多くの地理的に分散したエンティティにより特徴付けられる。 例えば、クライアントは、クエリをデータパブリッシャへ送信し、一定の処理結果を受信する。] [0004] SPSは、要求されたデータストリームをクライアントに提供できるように、高いネットワークスケーラビリティ及びワークロードスケーラビリティを提供すべきである。 高いネットワークスケーラビリティは、システムコンポーネントの増大する地理的分布を優雅に取り扱う能力を指すのに対して、ワークロードスケーラビリティは、多くの同時に起こるユーザクエリに対処する。 双方のタイプのスケーラビリティを達成するために、SPSは、自身の処理をスケールアウトして、ネットワーク内の複数のノードにわたって分散させることができるべきである。] [0005] SPSの分散バージョンが提案されているが、これらの分散SPSの配備は困難である可能性がある。 SPSの配備に関連した難点は、アプリケーションが処理コンポーネントを共有する共有処理環境において、その配備がストリームベースのクエリをハンドリングするSPSについてのものであるときに、さらに悪化する。 第1に、アプリケーションは、例えば、実用性、応答遅延、エンドツーエンド損失率又はレイテンシ等、出力のさまざまな特徴とその有用性との間の関係を記述するサービス品質(QoS)仕様を表すことが多い。 例えば、多くのリアルタイム金融アプリケーションでは、クエリ回答は、タイムリーに受信された場合にのみ役立つ。 金融データを運ぶデータストリームが複数のマシンにわたって処理されるとき、データストリームを提供するQoSは、複数のマシンのそれぞれによって影響を受ける。 したがって、マシンのいくつかが過負荷である場合、これらのマシンは、データストリームを提供するQoSに影響を与える。 その上、ストリーム処理アプリケーションは、多くの信頼できないノードを有する公衆インターネットを介して動作すると予想され、ピアツーピア設定の場合等、それら信頼できないノードの一部又はすべては、自身の資源を一時的にしか与えない場合がある。 さらに、ストリーム処理及びデータストリームのクライアントへの配信には、複数のノードがチェーン又はツリーで動作してストリームを処理及び配信することが必要とされる場合がある。このチェーン又はツリーでは、或るノードの出力は、別のノードの入力となる。 したがって、処理がネットワーク内の新しいノードへ移動される場合、チェーン又はツリーの下流側処理及びQoSが影響を受ける場合がある。 例えば、処理が、新しい地理的ロケーションの新しいノードへ移動される場合、これによって、エンドツーエンドのレイテンシが、クライアントにとって許容できない程度にまで増加される場合がある。] [0006] 本発明の実施形態は、以下の図を参照して以下の説明で詳細に説明される。] 図面の簡単な説明 [0007] 一実施形態によるシステムを示す図である。 一実施形態による、図1に示すシステムのデータストリームを示す図である。 一実施形態による、システムのオーバーレイノード、システムにおけるクエリの例、及び演算子(operator)の候補ホストの例を示す図である。 一実施形態による初期クエリ配置のための方法のフローチャートである。 一実施形態による最適化のための方法のフローチャートである。 一実施形態による配備プラン生成のための方法のフローチャートである。 一実施形態による衝突を解決するための方法のフローチャートである。 一実施形態によるコンピュータシステムのブロック図である。] 図1 実施例 [0008] 簡単にするために且つ例証の目的で、実施形態の原理は、主として実施形態の例を参照することによって説明される。 以下の説明では、実施形態の完全な理解を提供するために、多数の具体的な詳細が述べられる。 しかしながら、実施形態は、これらの具体的な詳細に限定されることなく実施できることが当業者には明らかであろう。 いくつかの例では、実施形態を不必要に不明瞭にしないように、既知の方法及び構造は詳細に説明されていない。] [0009] 一実施形態によれば、分散SPS(DSPS)は、オーバーレイネットワーク内の複数のオーバーレイノードにわたる分散ストリーム処理を提供する。 ノード及びオーバーレイノードは、本明細書では交換可能に使用される。 DSPSは、データストリームを処理して、クライアントへ配信する。 データストリームは、データのフィードを含む。 例えば、データストリームは、RSSフィード又はリアルタイム金融データのストリームを含むことができる。 データストリームは、マルチメディアを含むこともできる。 データストリームは、データの連続送信又は定期的送信(リアルタイム相場又はRSSフィード等)を含むこともできるし、データストリームは、アパートリスト(apartment listing)を求める要求の結果のような、必ずしも連続して又は定期的に送信されないデータのセットを含むこともできる。 DSPSによって実行されるストリーム処理は、共有されたストリーム処理を含み、ここでは、後述するように、複数のデータストリームが演算子を共有できることに留意すべきである。] [0010] DSPSは、複数の利用可能なノードにわたってストリーム処理クエリを分散させる適応型オーバーレイベースフレームワークを含む。 ノードは、分散リソースディレクトリサービスを使用して自己組織化する。 このリソースディレクトリサービスは、ノードにおける利用可能なコンピュータリソースをアドバタイズ及び発見するのに使用される。] [0011] DSPSは、ノードのリソース制約及び各アプリケーション(例えば、データストリーム)のQoS期待値を考慮に入れながら、複数の共有されたストリーム処理クエリのデータストリーム配備を提供すると同時に、低い帯域幅消費を維持する。 一実施形態によれば、DSPSは、プロアクティブ手法を使用する。この手法では、ノードは、データストリームの代替的な配備プランを事前に計算するように定期的に協力する。 配備プランは、本明細書ではプランとも呼ばれる。 ランタイム中、コンピュータリソース又はQoSメトリックの制約違反が発生すると、DSPSは、変更に高速に反応することができ、事前に計算された配備プランのうちの最適なものを適用することによって、実現可能な配備プランにマイグレーションすることができる。 その上、違反がない場合であっても、これらのプランの最良のものを適用して、システムの帯域幅消費を定期的に改善することができる。] [0012] 図1は、一実施形態によるストリーム処理システム100を示す。 システム100は、オーバーレイノード111で構成されるオーバーレイネットワーク110、リソースディレクトリ120、及びネットワーク監視サービス130を含む。] 図1 [0013] オーバーレイネットワーク110は、コンピュータシステム、ルータ等を含む下部ネットワークインフラストラクチャを含むが、オーバーレイネットワーク110は、ストリームベースのクエリ処理サービスを含めて、ストリーム処理についての追加の機能性を提供する。 例えば、オーバーレイネットワーク110は、インターネット又は他のパブリックコンピュータネットワーク若しくはプライベートコンピュータネットワークの上に構築することができる。 オーバーレイネットワーク110は、オーバーレイノード111で構成され、オーバーレイノード111は、ストリーム処理機能性を提供する。 オーバーレイノード111は、オーバーレイパスを形成する論理リンクを介して互いに接続され、各論理リンクは、下部ネットワークにおける複数のホップを含む場合がある。] [0014] 一実施形態によれば、オーバーレイノード111は、ストリームベースのクエリ処理サービスを提供するように動作可能である。 例えば、オーバーレイノード111は、クエリのための演算子を含む。 クエリは、ストリーム処理システムにおけるノードでホスティングされる複数の演算子を含む。 クエリは、クライアントクエリ又は情報の要求の受信及び登録に応じて提供され得る。 演算子は、クエリの関数である。 演算子は、データストリームに対する特定の演算を実行するように動作可能なノード上で動作するソフトウェアを含むことができる。 オーバーレイノードのコンピュータリソースの一部を、クエリのための演算子を提供するのに使用することができる。 オーバーレイノードは、他の機能を実行することができ、したがって、演算子をホスティングするオーバーレイノードを選択するときに、オーバーレイノード上の負荷を考慮することができる。] [0015] 演算子の例には、結合(join)、集約、フィルタ等が含まれる。 これらの演算子は、従来のデータベースにおいてクエリのために通常は使用される演算子を含むことができる。しかしながら、システム100における演算子は、データストリームに対して演算を行う。 演算子は、複数のクエリによって共有され得、ここで、各クエリは、1つ又は複数のデータストリームによって表され得る。 また、サブクエリが、演算子によって作成される。 一面において、複数の演算子から成るどのクエリも、たとえそのクエリが単一のクライアント用のものであっても、各演算子につき1つの、複数のサブクエリを有する。 別の面において、別のクライアントからの新しいクエリが、前のクエリの結果を部分的な結果として使用できるとき、前のクエリは、その新しいクエリのサブクエリとなる。 例えば、前のクエリを新しいクエリに部分的に使用できる状況について、フィルタ演算は、前の要求の結果を表すデータストリームに対してノードにより実行され得る。 例えば、オリジナルのクライアントクエリは、北カリフォルニア州のすべてのアパートリストを要求することができ、フィルタ演算をノードにおいて実行して、パロアルトのみのリストを導出することができる。] [0016] 結合演算は、従業員の住所と従業員IDとの結合のような、従来のデータベースにおける2つのテーブルの結合である。 同じ演算は、連続データ又は定期的に送信されるデータを有するデータストリームを除くデータストリームに適用され、ストリームにおいて結合を実行すべき箇所を求めるのにスライディングウィンドウが使用される。 例えば、結合演算子は、或る入力である第1のストリーム及び別の入力である第2のストリームを有する。 結合は、ストリームからのデータが、スライディングウィンドウ内にタイムスタンプを有する場合に実行される。 スライディングウィンドウの一例は、2分ウィンドウとすることができるが、他の長さのウィンドウも使用することができる。] [0017] 演算子は、異なるオーバーレイノードにおいて割り当てられ得、時間と共に、ネットワークにわたるクエリの分布が最適化されるにつれてリアロケートされ得る。 最適化は、いくつかのタイプのメトリックを考慮に入れることができる。 メトリックのタイプは、CPU使用率、メモリ使用率等のようなノードレベルメトリックだけでなく、帯域幅消費等のようなサービスプロバイダメトリックも含み得る。 また、レイテンシのようなQoSメトリックも考慮される。 最適化は、以下でさらに詳細に説明される。] [0018] データのクライアントクエリをオーバーレイネットワーク110へサブミットすることができる。 クエリのための演算子のロケーションは、クエリの配備プランを定義する。このクエリの配備プランも、以下でさらに詳細に説明される。 ネットワークにおいて利用可能なリソース及びクエリの要件に依拠して、各クエリは、複数の代替的な事前に計算された配備プランを有することができる。 クエリの演算子は、オーバーレイネットワーク110内のノード111間のオーバーレイリンクによって相互接続される。 各演算子は、演算子の出力を、クエリプランにおける次の処理演算子へ転送する。 したがって、クエリ配備は、登録されたクエリのデータフローと一致するトポロジーを有するオーバーレイネットワークを作成する。 演算子oiが、その出力を演算子ojへ転送する場合、oiは、ojの上流側演算子(又はojのパブリッシャ)と呼ばれ、ojはoiの下流側演算子(又はoiのサブスクライバ)と呼ばれる。 演算子は、複数のパブリッシャ(例えば、結合演算子、統合演算子)を有することができ、演算子はクエリ間で共有され得るので、演算子は、複数のサブスクライバを有することもできる。 oiのサブスクライバのセットはsuboiと表記され、oiのパブリッシャのセットはpuboiと表記される。] [0019] システム100は、データソース140及びクライアント150も含む。 データソース140は、データストリームをパブリッシュする一方、クライアントは、ストリーム指向型の連続クエリとして表されたそれらのデータインタレスト(data interests)をサブスクライブする。 システム100は、オーバーレイノード111に配備された演算子を介してパブリッシャからクライアントへデータをストリーミングする。 パブリッシュされたデータストリームの例には、RSSフィード、センサネットワークからのデータ、インターネットを介してプレイされるマルチプレイヤゲームからのデータ等が含まれ得る。] [0020] クエリに関する配備プランを作成することは、クエリを配備するためのオーバーレイノード上にホスティングされる演算子を識別することを含む。 演算子をホスティングするための見込みオーバーレイノードを発見するために、リソースディレクトリ120が使用される。 リソースディレクトリ120を、複数のオーバーレイノードにわたって提供される分散サービスとすることができる。 一実施形態では、リソースディレクトリ120は、Basu他の「Nodewiz: Peer-to-peer resource discovery for grids」に説明されたNodeWizシステムに基づいている。 Nodewizシステムは、リソース発見用のスケーラブルなツリーベースのオーバーレイインフラストラクチャである。] [0021] オーバーレイノード110は、リソースディレクトリ120を使用して、各ノードの利用可能なコンピュータリソースの属性をアドバタイズし、多属性クエリを効率的に実行して、アドバタイズされたリソースを発見する。 例えば、各オーバーレイノードは、自身の利用可能なコンピュータリソース容量をリソースディレクトリ120へ送信し、リソースディレクトリ120は、この情報を記憶する。 容量属性の例には、CPU容量、メモリ容量、I/O容量等が含まれる。 また、最適化中、オーバーレイノード又は他の或るエンティティは、クエリをリソースディレクトリ120へ送信して、再配置された演算子を実行するのに使用できる所定の利用可能な容量を有するオーバーレイノードを識別することができる。 リソースディレクトリ120は、アドバタイズメントの分配及びクエリの実行の負荷がノード間でバランスされるように演算子の割り当てを適合させることができる。] [0022] ネットワーク監視サービス130は、オーバーレイノード111間のオーバーレイリンクの統計を収集する。 統計の一例には、レイテンシ統計が含まれる。 ネットワーク監視サービス130は、Yalagandula他の「s3: A scalable sensing service for monitoring large networked systems」に説明されたS3に基づくことができる。 ネットワーク監視サービス130は、大規模ネットワーク化システムのためのリアルタイムで且つ構成可能な監視のためのスケーラブルセンシングサービスである。 このインフラストラクチャは、オーバーレイノード111を含むことができ、スケーラブルな方法でデータを集約している間、QoSメトリック、ノードレベルメトリック、及びサービスプロバイダメトリックを測定するのに使用され得る。 その上、推論アルゴリズムを使用して、ネットワークパスの小さなセットに基づくすべてのノード対のパス特性を導出することもできる。 最適化中、ネットワーク監視サービス130は、前もって必要なQoSを提供するノード間のエンドツーエンドオーバーレイパス又はエンドツーエンドオーバーレイリンク、例えば、しきい値よりも低いレイテンシを有するパスを識別するために、クエリを受けることができる。] [0023] 図2は、データストリームを配備する一例を示す。 例えば、リアルタイム金融パブリッシャ140aは、1つ又は複数のクライアントクエリに応じて、リアルタイムの株価を有するデータストリームを生成する。 金融ニュースパブリッシャ140bも、金融ニュースのデータストリームを生成する。 ノード111a〜111eにおける演算子は、それらノードの各演算子を実行することによりサブクエリを提供して、クライアントに所望のデータを提供するように機能する。 例えば、クライアント150a〜150cは、異なる企業の株価及び対応する金融ニュースを望み、クライアント150b及び150cは、データストリームの特定のソートを必要とする。 演算子は、パブリッシャからのオリジナルのデータストリームに対してサブクエリを実行して、所望のデータをクライアントに提供する。] 図2 [0024] 最適化中、ノード111aが過負荷であるか又はQoSメトリック制約違反があることから、結合演算子をノード111aから移動させる必要があると判断される場合がある。 結合演算子は、ノード111fへ移動され得るが、下流側演算子が影響を受ける。 最適化は、QoSメトリック制約にもノードのコンピュータリソース容量にも違反しない実現可能な配備プランを事前に計算する。] [0025] システム100は、各クエリに対するQoS期待値及びノードの各資源制約が違反されないように、オーバーレイネットワーク内のノード間での演算子の分布を容易にする最適化プロトコルを実施する。 最適化は、登録されたすべてのクエリのための代替的な実現可能配備プランを事前に計算することを含む。 各ノードは、自身のローカル演算子の配置に関する情報を保持し、自身の「近傍(close neighborhood)」のノードと定期的に協力して、演算子の全セットを分散させる配備プランを構成する。 配備プランは、演算子と、パブリッシャからクライアントへのデータストリームのエンドツーエンドオーバーレイパスを提供する、演算子をホスティングするノードとを識別する。] [0026] コンピュータリソース制約違反又はQoSメトリック制約違反が既存の配備プランに発生したときはいつでも、システムは、事前に計算されたセットから最適なプランを適用することによって迅速に対処することができる。 その上、違反がない場合であっても、システムは、現在の配備よりも効率的な配備を適用することによって、自身の現在の状態を定期的に改善することができる。] [0027] 最適化プロセスは、下流側演算子/ノードに、それらの上流側演算子の実現可能な配置について知らせることに基づくプロアクティブ分散演算子配置を含む。 このように、オーバーレイノードは、可能な最良の方法で自身の共有クエリに影響を与える自身のローカル演算子及び上流側演算子の配置に関する決定を行うことができる。 この手法の1つの主な利点は、ノードが独力で配置の決定を行うことができるということである。これによって、どのQoSメトリック制約違反にも迅速な対処が提供される。] [0028] 各演算子は、自身のサブスクライブされた下流側演算子へ、それら下流側演算子の上流側演算子の可能な配置を記述した配備プランを定期的に送信する。 これらのプランは、クエリの演算子のサブセットしか配備しないので、部分的と呼ばれる。 ノードは、上流側ノードから部分的プランを受信すると、上記上流側演算子の可能な配置を追加することによってプランを拡張する。 プランにおける演算子を共有するすべてのクエリのQoS制約を満たす部分的プランは、他のノードへ伝播される。] [0029] 実現可能な配備プランを識別するために、k−前方検索(k-ahead search)が実行される。 k−前方検索は、例えば最も低いレイテンシを招くローカル演算子から前方のk個の演算子(k operators ahead)の配置を発見する。 レイテンシの代わりに、他のQoSメトリックを使用することもできる。 最小のレイテンシに基づいて、QoS境界に違反する可能性のある部分的プラン(例えば、しきい値よりも大きなレイテンシ)は、最適化プロセスのできるだけ早期に削除される。 また、あらゆるノードは、自身のローカルな部分的プランを完成させる。 これは、各ノードが、帯域幅消費及びすべての影響を受けるクエリのレイテンシに対する自身の影響を評価することを含むことができる。 最終プランを使用すると、ノードは、ランタイムで高速配置決定を行うことができる。] [0030] いくつかのタイプのメトリックを用いて、配備プランを選択できることに留意すべきである。 代替的な実現可能配備プランのセットを選択するときに、例えば、エンドツーエンドレイテンシのようなクライアントによって提供される1つ又は複数のQoSメトリック、及びコンピュータリソースの利用可能な容量のような1つ又は複数のノードレベルメトリックを使用して、或るパスが実現可能なパスであるか否かを判断することができる。 また、例えば、最小総帯域幅消費、コンソリデーション等のようなサービスプロバイダメトリックといった別のタイプのメトリックを使用して、データストリーム用に配備するために、実現可能な配備プランのセットからパスの1つを選択することができる。] [0031] 次に、最適化プロセスが詳細に説明され、以下の表1のシンボル定義が、最適化プロセスを説明するのに使用される。] [0032] ] [0033] 各オーバーレイノードは、自身のすべてのローカル演算子に関する部分的配備プランのセットを定期的に識別する。 演算子oiは、クエリ] [0034] ] [0035] のセットによって共有されると仮定する。 また、oiの上流側演算子のセットを] [0036] ] [0037] とする。 一例が図3に示される。 クエリq1及びq2は、演算子o1及びo2を共有し、] 図3 [0038] ] [0039] である。] [0040] oiに関する部分的配備プランは、各演算子] [0041] ] [0042] をネットワーク内のオーバーレイノードの1つに割り当てる。 各部分的プランpは、(a)例えばその部分的プランが行われるときの帯域幅消費といった部分的コストpcp、及び(b)その部分的プランが影響を与える各クエリの部分的レイテンシ] [0043] ] [0044] に関連付けられる。 例えば、o2に関する部分的プランは、演算子o1及びo2を2つのノードに割り当て、これらの配置に起因して消費される帯域幅、並びに各クエリq1及びq2のための演算子o2までの応答レイテンシを評価する。] [0045] 図3は、ノードリンクを実現可能な配備プランの一部として使用できるか否かを判断するときに評価される候補ノード、候補リンク、及びそれらリンクのレイテンシも示す。 配備プラン生成のための候補ノード及びQoSメトリック(例えば、レイテンシ)の評価は、以下でさらに詳細に説明される。] 図3 [0046] 図4は、一実施形態によるクエリの初期配置の方法400を示す。 ステップ401において、クライアントはクエリを登録する。 例えば、図2に示すクエリ150aは、株価及び関連した金融ニュースを要求するクライアントクエリをパブリッシャ140a及び140bへ送信する。] 図2 図4 [0047] ステップ402において、現在配備されている、そのクエリのためのあらゆる演算子及びデータストリームが識別される。 図2に示すリソースディレクトリ120は、配備された演算子及びストリームについての情報を記憶するのに使用され得る。] 図2 [0048] ステップ403において、存在しないあらゆる演算子について、その演算子をホスティングするために、十分なコンピュータリソース容量を有するノードであって、パブリッシャ又はそれらのパブリッシャ演算子に最も近いノードが識別される。 これは、ノードの初期割り当て/クエリの初期配置についてのものであることに留意されたい。 パブリッシャ又はそれらのパブリッシャ演算子に最も近くない可能性のある他のノードは、最適化用に選択され得る。] [0049] ステップ404において、ステップ402からの演算子及びデータストリームがもしあればそれらを使用し、ステップ403からの演算子がもしあればそれらの演算子を使用して、クエリが配備される。 例えば、そのクエリのためのデータストリームは、そのクエリを登録したクライアントへ送信される。] [0050] ステップ405において、最適化プロセスが開始される。 最適化プロセスは、1つ又は複数のメトリックの点から現在の配備プランよりも良好であり得る配備プランを識別する。] [0051] 図5は、一実施形態による最適化プロセスのための方法500を示す。 方法500のステップの1つ又は複数は、方法400におけるステップ405において実行することができる。] 図5 [0052] ステップ501において、プラン生成プロセスが定期的に起動される。 このプロセスは、最新のノードワークロード及びネットワーク状態を反映する実現可能な配備プランを作成する。 これらの事前に計算された配備プランは、オーバーレイノードに記憶され、QoS違反が検出されたときに使用され得、又は、事前に計算されたプランの1つを配備することによって帯域幅消費若しくは別のメトリックを改善できるか否かについての判断がなされる場合に使用され得る。 プラン生成プロセスは、方法600について以下でさらに詳細に説明される。] [0053] ステップ502において、ノードは、QoSメトリック制約違反が発生したか否かを判断する。 例えば、レイテンシのようなQoSメトリックがしきい値と比較される。このしきい値は制約である。 しきい値を超えている場合、QoS違反が発生している。] [0054] これらの違反を検出するために、あらゆるオーバーレイノードは、あらゆるローカル演算子について、そのパブリッシャのロケーションまでのレイテンシを監視する。 あらゆるオーバーレイノードは、そのローカル演算子を共有するすべてのクエリのレイテンシも定期的に受信し、それらのQoS期待値からのそれらの「スラック」、すなわち各クエリが許容できるレイテンシの増加、を定量化する。 例えば、単一のパブリッシャomを有する演算子oiであって、応答遅延dqt及びスラックslackqtを有するクエリqtによって共有される演算子oiを仮定する。 oiとomとの間のオーバーレイリンクのレイテンシが、Δd(h(om),h(oi))>slackqtだけ増加した場合、クエリqtのQoSは違反され、異なる配備が直ちに適用されるべきである。] [0055] ステップ503において、QoS違反が発生した場合、事前に計算されたプランの1つを使用してQoSを改善できるか否かを判断する。 このプランは、QoS違反を除去するだけ十分にQoSを改善すべきである。] [0056] oiのホストに記憶されたすべての最終プランにわたって、少なくとも] [0057] ] [0058] だけqtのレイテンシを減少させるプランpを求めて、検索が実行される。 この条件を充足するすべてのプランにわたって、oi及びomをマイグレーションせず(すなわち、ボトルネックリンクを含む)、且つ] [0059] ] [0060] を充足するいずれのプランpも除去される。] [0061] QoSを改善するのに使用できる事前に計算されたプランが存在する場合、その事前に計算されたプランが、ステップ504において配備される。 例えば、上述したように、oi及びomをマイグレーションせず(すなわち、ボトルネックリンクを含む)、且つ] [0062] ] [0063] を充足するいずれのプランpも除去される。 残りのプランから、帯域幅消費を最も多く改善する1つのプランが適用される。] [0064] そうでない場合、ステップ505において、QoSを改善できる実現可能なプランを求める要求が他のノードへ送信される。 例えば、この要求は、その下流側サブスクライバ/演算子へ伝播される。 すなわち、qtのQoSを満たすことができる配備をoiのホストにおいて発見できない場合、ノードは、違反したクエリqtについて、適したプランを求める要求を自身のサブスクライバへ送信する。 この要求は、輻輳したリンクに関するメタデータ(例えば、当該リンクの新しいレイテンシ)も含む。 このような要求を受信したノードは、クエリqtのQoSを充足できるプランの発見を試みる。 下流側ノードは、より多くの演算子をマイグレーションするプランを記憶するので、それら下流側ノードは、qtに関する実現可能な配備を発見する可能性がより高い。 この伝播は、違反したクエリの最後の演算子をホスティングするノードに達するまで続く。] [0065] ステップ506において、要求に応じてプランを識別できるか否かについての判断が行われる。 プランを識別できない場合、ステップ507において、クエリを充足することはできない。 クライアントは、クエリを充足することができないことの通知を受けることができ、クライアントは、別のクエリを登録することができる。 そうでない場合、QoS違反を除去するだけ十分にQoSを改善できる、要求に応じて識別されたプランが配備される。] [0066] 新しい配備プランを識別することは小さなオーバーヘッドを有することに留意することが重要である。 本質的に、ノードは、クエリのレイテンシを十分削減するプランを検索しなければならない。 最終プランは、それら最終プランが影響を与えるクエリに基づいてインデックスされ得、各クエリのレイテンシに対するそれら最終プランの影響に基づいてソートされ得る。 したがって、QoS違反が発生すると、本発明者らのシステムは、自身の「回復」配備を非常に迅速に識別することができる。] [0067] ステップ502〜507において、QoS違反に応じて新しいプランを配備することができる。 これらのステップの多くは、QoS違反が発生していないときに配備され得るが、新しいプランが、既存のプランよりも良好なQoS、又は良好なノードレベル(例えば、コンピュータリソース容量)メトリック若しくはサービスプロバイダメトリック(例えば、帯域幅消費)を提供できるとの判断が行われる。] [0068] 図6は、一実施形態による配備プラン生成のための方法600を示す。 方法600のステップの1つ又は複数は、プラン生成プロセスとして、方法500におけるステップ501において実行され得る。] 図6 [0069] k−前方検索は、方法600の前に実行され得、以下でさらに詳細に説明される。 k−前方検索によって、各ノードは、部分的配備プランために使用できるローカル演算子の候補ホストに気付く。] [0070] ステップ601において、部分的配備プランが、リーフノードにおいて生成される。 oiを、ノードnvで実行されるリーフ演算子とする。 ノードnvは、部分的プランのセットを作成する。 各部分的プランは、異なる候補ホスト] [0071] ] [0072] にoiを割り当てる。 ノードnvは、自身の部分的コスト及びoiを共有するすべてのクエリの部分的レイテンシを評価する。] [0073] ] [0074] がoiに関する入力ソースのセットであり、且つ] [0075] ] [0076] がソースsの代わりにデータをパブリッシュするノードである場合、クエリqtの部分的レイテンシ(すなわち、ソースからnjへのレイテンシ)は、] [0077] ] [0078] である。 最後に、このプランは、最初の演算子を割り当てるので、その部分的帯域幅消費は0である。] [0079] ステップ602において、実現不可能な部分的配備プランが削除される。 部分的プランが一旦作成されると、その部分的プランを下流側に転送して、より多くの演算子マイグレーションを追加することにより拡張すべきか否かについての決定が行われる。 部分的プランは、実現可能な配備につながる可能性がある場合にのみ伝播される。 この決定は、k−前方検索の結果に基づく。 oiがnjに配置されていると仮定すると、三重項(oi,nj,qt)に関するk−前方レイテンシは、oiの前方のk個の演算子のすべての可能な配置にわたるクエリqtに対する最小レイテンシオーバーヘッドを表す。 演算子oiまでのクエリのレイテンシに前方のk個の演算子の最小レイテンシを加えたものがクエリのQoSに違反している場合、その部分的プランは、いかなる実現可能な配備にもつながる可能性はない。 より具体的には、] [0080] ] [0081] となるような少なくとも1つのクエリ] [0082] ] [0083] が存在する場合、演算子oiをノードnjへ配置する部分的プランpは実現不可能である。] [0084] k−前方レイテンシは、実現可能なプランを削除しないが、すべての実現不可能な配備を識別するとは限らないことに留意されたい。 したがって、伝播されたプランは、以下のステップで実現不可能であると判明する場合がある「潜在的」に実現可能なプランである。] [0085] その上、パラメータkについてトレードオフがある。 検索される前方の演算子が多いほど、k−前方検索のオーバーヘッドは高くなる。しかしながら、実現不可能なプランをより早期に発見することができる。] [0086] ステップ603において、削除されない部分的プランが、新しい部分的プランの影響を評価するためのメタデータと共に下流側に転送される。 これらは、ステップ602から識別された実現可能な部分的配備プランを含む。 メタデータは、部分的レイテンシ及び/又はプランの実現可能性を判断するための他のメトリックを含むことができる。] [0087] 演算子oiを処理するノードnvは、そのパブリッシャ] [0088] ] [0089] から部分的プランpを受信すると仮定する。 例証の目的で、単一のパブリッシャを仮定するが、以下の式は、複数のパブリッシャについて直接的な方法で一般化され得る。 oiを共有する各クエリは、そのパブリッシャも共有していることに留意されたい。 したがって、受信された各プランは、部分的レイテンシ] [0090] ] [0091] を含む。 最適化プロセスは、ローカル演算子oiをその候補ホストへマイグレーションすることを追加することによってこれらのプランのそれぞれを拡張する。] [0092] 各候補ホスト] [0093] ] [0094] について、ノードnvは、リソース可用性を確認する。 例えば、ノードnvは、プランpをパースして、いくつかの上流側演算子がnjにも割り当てられているか否かをチェックする。 これを容易にするために、各プランと共に、各プランに含まれる各演算子の予想負荷要件に関するメタデータが送信される。 njの残り容量が、oiを含む割り当てられたすべての演算子を処理するのに十分である場合、新しい部分的プランfの影響は、] [0095] ] [0096] 及び] [0097] ] [0098] として推定される。 ここで、hp(om)は、部分的プランpにおけるomのホストである。 新しい各部分的プランfについて、その部分的プランが、k−前方レイテンシ] [0099] ] [0100] に基づいて実現可能な配備につながる可能性があるか否かもチェックされ、実現可能な部分的プランのみが伝播される。] [0101] ステップ604において、ステップ603において転送された部分的プランを受信した中間上流側ノードは、上述したように、部分的プランの実現可能性を判断する。 例えば、プランを受信した中間ノードは、クエリの演算子の候補である。 中間ノードは、演算子をホスティングする自身のコンピュータリソース可用性を確認し、演算子をホスティングする予定である場合には、QoSに対する影響を判断する。 ステップ605において、実現可能な部分的プランが、帯域幅消費のようなサービスプロバイダメトリックに対する影響に基づいて選択される。] [0102] ステップ606において、選択された実現可能な部分的プランはオーバーレイノードに記憶される。 例えば、ノードで作成された部分的プランは、「完成」され、ローカルに記憶される。 部分的プランを完成させるために、現在の帯域幅消費及びその部分的プランが影響するクエリのレイテンシに対するその影響が評価される。 このプロセスを実施するために、あらゆるローカル演算子の上流側演算子によって消費される帯域幅及びこのローカル演算子までのクエリレイテンシに関する統計が保持される。 例えば、図3では、o1がリーフ演算子である場合、n2が、o1からo2への帯域幅消費及び演算子o2までのレイテンシに関する統計を保持する。 各プランについて、現在の配備とそのプランによって提案された配備との間のこれらのメトリックの差が評価され、対応する最終プランと共にメタデータとして記憶される。 したがって、あらゆるノードは、自身のローカル演算子及び上流側演算子の実現可能な配備のセットを、システムコスト及びクエリのレイテンシに対するこれらの配備の影響と共に記憶する。 図3では、n2は、演算子{o1,o2}をマイグレーションするプランを記憶する一方、n4は、{o1,o2,o4}を配置するプランを記憶する。] 図3 [0103] 上流側ノードから受信された部分的プランを結合して拡張することによって、多くの最終プランが生成される場合がある。 この問題を取り扱うために、多数の削除ヒューリスティクスを用いることができる。 例えば、クエリレイテンシに対して同様の影響を有する最終プランの間では、最小の帯域幅消費を有する最終プランが維持される一方、最終プランが帯域幅に対して同様の影響を有する場合には、クエリレイテンシを最も多く削減する最終プランが維持される。] [0104] 上述したように、ノードは、k−前方検索を実行して、ローカル演算子の候補ホストを識別する。 ステップ601において、リーフノードが部分的プランを作成する。 部分的プランは、k−前方検索を使用して作成され得る。] [0105] k−前方検索では、あらゆるノードnvが、各ローカル演算子] [0106] ] [0107] 及びその演算子の各候補ホストについてk−前方検索を実行する。] [0108] ] [0109] がoiの候補ホストのセットである場合、oiがノード] [0110] ] [0111] に配置されると仮定して、検索により、oiを共有するクエリのそれぞれについてoiの前方のk個の演算子の最小レイテンシ配置が識別される。 直観的に、oiをノードnjへマイグレーションすることが各クエリqtの次のk個の下流側演算子の(例えば、レイテンシについての)最良の配置決定を行う場合、検索は、各クエリ] [0112] ] [0113] のレイテンシに対する最小の影響を識別することを試みる。 以下に、k−前方検索のステップが説明される。 k−前方検索は、最初に、1−前方レイテンシを評価し、次に、あらゆる三重項(oi,nj,qt)に関するk−前方レイテンシ値を導出する。 ここで、] [0114] ] [0115] である。] [0116] 各演算子] [0117] ] [0118] について、nvは、以下のステップを実行する。] [0119] 1.リソースディレクトリサービスをクエリすることによってローカル演算子oiの候補ホスト] [0120] ] [0121] を識別する。 oiの制約要件はC={(c1,v1),(c2,v2),…,(cm,vm)}であると仮定し、リソースディレクトリは、c1≧v1∧c2≧v2∧…∧cm≧vmを有するノードについてクエリされると仮定する。 ここで、ciはリソース属性であり、viは、そのリソースに関する演算子の要件である。] [0122] 2.omが、クエリ] [0123] ] [0124] についてのoiの下流側演算子である場合、ノードは、その演算子の候補ホスト] [0125] ] [0126] のセットを求める要求をomのホストへ送信する。 これらの候補ノードのそれぞれ1つについて、そのノードは、レイテンシ] [0127] ] [0128] についてネットワーキング監視サービスをクエリする。 oi演算子の候補nj及びクエリ] [0129] ] [0130] についてのoi演算子に関する1−前方レイテンシは、] [0131] ] [0132] である。 図3では、] 図3 [0133] ] [0134] であり、n1は、演算子o2の候補ホスト] [0135] ] [0136] をn2に要求し、1−前方レイテンシ] [0137] ] [0138] を推定する。 また、o2について、] [0139] ] [0140] 及び] [0141] ] [0142] も仮定する。] [0143] 3.検索は、数ラウンド続き、この検索において、各演算子oiについて、ノードは、クエリ] [0144] ] [0145] における自身のサブスクライバomが、k−前方レイテンシの推定を進める前に、(k−1)−前方レイテンシの評価を完了するのを待つ。 oi演算子の候補nj及びクエリ] [0146] ] [0147] についてのoi演算子に関するk−前方レイテンシは、] [0148] ] [0149] である。] [0150] 最後のステップは、図3の例を使用して説明される。 この場合、] 図3 [0151] ] [0152] である。 したがって、o1のn5へのマイグレーションを仮定すると、次の2つの演算子の最小レイテンシを有する配置は、q1の部分的応答レイテンシを15msだけ増加させ、q2の部分的レイテンシを25msだけ増加させる。ここで、各部分的レイテンシは、より多くの演算子がそのクエリに割り当てられるほど増加する。] [0153] 共有されたクエリの同時変更は、同時変更の影響を受けるクエリの最終レイテンシについて衝突を生み出す可能性があるので、特別な注意を要する。 例えば、図3において、q1及びq2の双方のQoSが満たされないと仮定し、ノードn3及びn4が、各クエリについて異なる配備プランを適用するように同時に決定すると仮定する。 これらのプランの並列実行は、それらのQoS期待値が充足されることを保証しない。] 図3 [0154] この問題に対処するために、演算子を複製することができる。 配備プランは、演算子のマイグレーションが、それら演算子に依存するすべてのクエリのQoSメトリック制約を充足できないときはいつでもそれら演算子を複製することによって実施される。 しかしながら、複製処理は、帯域幅消費を増加させるだけでなく、システムの処理負荷も増加させる。 したがって、プロセスは、衝突が代替的な候補プランによって解決できるか否かを識別し、代替的な候補プランが利用可能でない場合には、プロセスは複製を適用する。 プロセスは、プラン生成フェーズ中に作成されたメタデータを使用して、複製ソリューションに代わるものを識別する。 より具体的には、プロセスは、既存の配備プランを使用して、(1)マイグレーションによるプランを適用することが、同時に違反されたすべてのクエリを充足するか否かを決定し、(2)安全であるときはいつでも複数のマイグレーションを可能にし、すなわち、並列マイグレーションを可能にし、(3)既存の配備プランを使用できないときは、衝突のないプランを構築する。 次のパラグラフでは、プロセスが、以下の定義を使用して説明される。] [0155] 直接的な依存関係の定義:2つのクエリqi及びqjは、或る演算子を共有する場合、直接的に依存する。すなわち、qi∈Q(ok)且つqj∈Q(ok)となるような∃okである。 その場合、qi及びqjは、あらゆる演算子okの依存するクエリである。 クエリqiの依存するクエリのセットはDqiであり、演算子okの依存するクエリはDokである。 この場合、O(qi)がクエリqiにおける演算子のセットである場合、] [0156] ] [0157] である。] [0158] 直接的に依存するクエリは、独立したプランを有さず、したがって、それらの配備プランの同時変更は、あらゆる衝突及び遅延制約の違反を回避するために、特別なハンドリングを要する。] [0159] 間接的な依存関係の定義:2つのクエリqi及びqjは、] [0160] ] [0161] であり且つ] [0162] ] [0163] である場合にのみ間接的に依存する。] [0164] 間接的に依存するクエリは、独立した(重ならない)プランを有する。 それにもかかわらず、それらの配備プランに対する同時変更は、それらの共通の依存するクエリに影響を与える可能性がある。 したがって、プロセスは、これらの衝突にも同様に対処し、依存するクエリのOoS期待値が充足されることを保証する。 同時変更を検出するために、リースベース(lease-based)の手法が使用される。 新しい配備が適用されるべきであるとノードが一旦決定すると、プランのすべての演算子及びそれらの上流側演算子はロックされる。 すでにロックされた演算子のマイグレーションを試みるノードは、自身の変更が、進行中の現在のものと衝突しないか否かをチェックする。 衝突が存在する場合、ノードは、衝突のない代替的な配備を識別することを試みる。 そうでない場合、ノードは、演算子を複製することによって、自身の初期プランを適用する。 リースベースの手法は、次のパラグラフで説明される。] [0165] ノードは、クエリqに適用するプランpを決定していると仮定する。 ノードは、REQUEST LOCK(q,p)(ロック要求)メッセージを自身のパブリッシャ及びサブスクライバへ転送する。 間接的な依存関係をハンドリングするために、このロック要求を受信した各ノードも、そのロック要求を、クエリqの自身のローカル演算子のサブスクライバへ送信する。 この要求は、いずれかのクエリ演算子及びそれらに依存するものを実行するノードに、新しい配備プランを知らせ、q及びその依存するもののロックを要求する。 クエリがロックを有さない(これは、依存するものを有さないクエリには常に当てはまる)とすると、パブリッシャ/サブスクライバは、そのクエリの自身のパブリッシャ/サブスクライバからMIGRLEASE(q)要求を一旦受信すると、MIGR LEASE(q)許可でリプライする。 マイグレーションリースを許可したノードは、そのリースが解除される(又は或る満了しきい値に基づいて満了する)まで、別のマイグレーションリースを許可することが認められない。] [0166] ノードnが、qの自身のすべてのパブリッシャ及びサブスクライバから自身のマイグレーションリースを一旦受信すると、ノードnは、そのクエリのプランpを適用する。 ノードnは、配備プランをパースし、ノードnへのマイグレーション演算子oをホスティングするノードごとに、MIGRATE(o,n)メッセージを送信する。 マイグレーションは、クエリプランのトップダウン方向で適用される。すなわち、最も上流側のノードが(プランによって必要とされている場合に)自身の演算子をマイグレーションし、このプロセスが一旦完了すると、すぐ隣の演算子(immediate operator)は、変更を知らされ、それら演算子の新しいロケーションへサブスクライブする。 ノードは、自身の接続を更新するとき、プランによって指定されたあらゆるローカルマイグレーションも適用する。 プラン全体が一旦配備されると、RELEASELOCK(q)要求が、演算子及びそれらに依存するものの古いロケーションへ転送され、これらは、クエリのロックを解除する。] [0167] ロック要求は、プランに含まれる演算子をホスティングするすべてのノード及びプランの演算子を共有するすべてのクエリにわたって送信される。 ロックが一旦許可されると、あらゆる後続のロック要求は、複製リース又はマイグレーションリースのいずれかによって充足される。 マイグレーションリースによって、配備プランは、その演算子をマイグレーションすることによって適用されることが可能になる。 しかしながら、クエリネットワーク上での同時変更によってこのようなリースを許可できない場合、複製リースを許可することができ、ノードは、関与する演算子を複製することによってそのクエリの配備プランを適用することが可能になる。 このように、この特定のクエリのみが影響を受ける。] [0168] 留意すべき1つの特性は、演算子oiがクエリのセット] [0169] ] [0170] によって共有される場合に、oiをルートとするサブプランも、同じクエリのセットによって共有されるということである。 次に、共にそのQoSメトリック制約が違反されている2つの依存するクエリqi及びqjを仮定する。 クエリqiは、REQUESTLOCK(qi,pi)要求をこの下流側演算子へ送信し、クエリqjについても同様である。 その上、依存関係に気付いている共有演算子は、同じ要求を自身のサブスクライバへ転送して、依存するクエリにも、要求されたロックを知らせる。 クエリはいくつかの演算子を共有するので、少なくとも1つの演算子は、双方のロック要求を受信する。 その演算子は、最初の要求を受信すると、後述する手順を適用する。すなわち、衝突を識別し、2つのプランのメタデータに基づいて衝突を解決する。 一方、2番目のロックの要求が到着すると、受信する最初の共有ノードは、このクエリのマイグレーションリースがすでに許可されているので、その要求をどのパブリッシャへも転送しない。] [0171] 次のパラグラフは、直接的な依存関係及び間接的な依存関係の衝突の解決を試みるときに生じる異なる場合を説明する。 直接的な依存関係については、直接的に依存するプランに対する同時変更が生じる。] [0172] 並列マイグレーションに関して、同時変更は、常に衝突になるとは限らない。 2つの配備プランがクエリの同じセットに影響を与えない場合、双方のプランを並列に適用することができる。 例えば、図3において、n3がo3のみをマイグレーションし、n4がo4のみをマイグレーションすると決定した場合、双方の変更を適用することができる。 この場合、n3及びn4によって決定された2つのプランは、それぞれクエリq1及びq2に対して影響がないことを示すべきである。 配備プランは、これらの場合を効率的に識別するすべての必要な情報(マイグレーションされる演算子、新しいホスト、クエリに対する影響)を含み、したがって、衝突のない複数のプランにマイグレーションリースを許可する。] 図3 [0173] 冗長なマイグレーションに関して、複数のプランの同時配備によって定義される複数のマイグレーションは、多くの場合、クエリのQoS期待値を保証するのに必要でないことがある。 非常に多くの場合に、ノードは、並列にQoS違反を識別し、自身のローカルに記憶された配備プランを適用することによってそれら違反に対処しようと試みることができる。 この場合、現在の配備を再構成するには、それらプランのいずれか1つで十分である可能性がかなりある。 しかしながら、あらゆるプランが、影響を受けるすべてのクエリに対する影響の評価を含む。 したがって、2つのプランp1及びp2が共に同じクエリのセットに影響を与えている場合、いずれか一方を適用することによっても、本発明者らのクエリの実現可能な配備が提供される。 したがって、マイグレーションリースを最初に取得したプランが適用される一方、2番目のプランは無視される。] [0174] 代替的なマイグレーションプランに関して、共有演算子を再配置する配備プランは、並列に適用することができない。 この場合、ロックを要求する最初のプランが、演算子をマイグレーションする一方、充足されないあらゆるQoS期待値を満たすために、新しい代替的な衝突のない配備プランを識別する試みが行われる。 最初のプランは、共有演算子をマイグレーションしているので、このマイグレーションの上に構築されたあらゆるプランを求めて、下流側演算子のホストが検索される。 例えば、図3において、最初のプランが演算子o1をマイグレーションするが、q2のQoSが依然として満たされない場合、o1に対する同じマイグレーションを含むあらゆるプランを求めて、ノードn4が検索され、o4も同様にマイグレーションすることによってq2の応答遅延をさらに削減することができる。] 図3 [0175] 間接的な依存関係に関して、クエリは、演算子を共有することができないが、それでも、依存するものを共有することはできる。 したがって、間接的に依存するクエリの配備を変更する試みが行われる場合、それらの共有された依存するものに対する影響が考慮される。 この場合、適用されるプランが、依存するクエリの重複セットに影響を与えている場合、マイグレーションリースが、最初のロック要求に許可され、あらゆる後続の要求に複製リースが許可される。 一方、それらプランが、同じクエリのQoSに影響を与えない場合、これらのプランは、並列に適用され得る。] [0176] 図7は、共有クエリの同時変更のための方法700を示す。 ステップ701において、ノードは、例えば、QoSメトリック制約違反により、新しい配備プランを適用すべきと判断する。] 図7 [0177] ステップ702において、プランにおけるすべての演算子がまだロックされていない場合には、それら演算子がロックされる。 あらゆる演算子がロックされている場合には、ステップ703において、衝突が存在するか否かについての判断が行われる。] [0178] ステップ704において、衝突が存在する場合、ノードは、衝突のない代替的な配備の識別を試みる。] [0179] ステップ705において、衝突が存在しない場合、ノードは、演算子を複製し、自身の初期プランを適用する。] [0180] 図8は、図1に示すシステム100のノード(すなわち、オーバーレイノード)として使用できるコンピュータシステム800の一例示のブロック図を示す。 コンピュータシステム800は、ソフトウェアを実行するための実行プラットフォームを提供するプロセッサ802のような1つ又は複数のプロセッサを含む。] 図1 図8 [0181] プロセッサ802からのコマンド及びデータは、通信バス805を介して通信される。 コンピュータシステム800は、ソフトウェアがランタイム中常駐できるランダムアクセスメモリ(RAM)のようなメインメモリ804、及びデータストレージ806も含む。 データストレージ806は、例えば、ソフトウェアのコピーを記憶できるハードディスクドライブ及び/若しくは着脱可能記憶ドライブ、又は不揮発性メモリを含む。着脱可能記憶ドライブは、フロッピー(登録商標)ディスケットドライブ、磁気テープドライブ、コンパクトディスクドライブ等を表す。 データストレージ806には、ROM(読み出し専用メモリ)、EPROM(消去可能プログラマブルROM)、EEPROM(電気的消去可能プログラマブルROM)も含めることができる。 本明細書で説明したルーティングステップ及び他のステップのソフトウェアに加えて、ルーティングテーブル、ネットワークメトリック、及び他のデータをメインメモリ804及び/又はデータストレージ806に記憶することができる。] [0182] ユーザは、キーボード、マウス、スタイラス、ディスプレイ等のような1つ又は複数のI/Oデバイス807でコンピュータシステム800とインターフェースする。 他のノード及びコンピュータシステムと通信するためのネットワークインターフェース808が提供される。] [0183] 本明細書で説明した方法のステップ及び本明細書で説明した他のステップの1つ又は複数は、メモリ804及び/又はデータストレージ806のようなコンピュータ可読媒体に組み込まれたソフトウェアとして実施することができ、例えばプロセッサ802によってコンピュータシステム800上で実行することができる。 これらのステップは、コンピュータプログラムによって具現化され得、コンピュータプログラムは、アクティブ及び非アクティブの双方のさまざまな形態で存在することができる。 例えば、ステップは、当該ステップのいくつかを実行するためのソースコード、オブジェクトコード、実行可能コード、又は他のフォーマットのプログラム命令で構成されたソフトウェアプログラム(複数可)として存在することができる。 上記のいずれも、コンピュータ可読媒体上に具現化することができる。コンピュータ可読媒体には、圧縮形態又は非圧縮形態の記憶デバイス及び信号が含まれる。 適したコンピュータ可読記憶デバイスの例には、従来のコンピュータシステムRAM(ランダムアクセスメモリ)、ROM(読み出し専用メモリ)、EPROM(消去可能プログラマブルROM)、EEPROM(電気的消去可能プログラマブルROM)、及び磁気ディスク若しくは磁気テープ又は光ディスク若しくは光テープが含まれる。 コンピュータ可読信号の例には、搬送波を使用して変調されているか否かに関わらず、コンピュータプログラムをホスティング又は実行するコンピュータシステムにアクセスするように構成され得る信号であり、インターネット又は他のネットワークを通じてダウンロードされた信号が含まれる。 前述のものの具体例には、CD ROMによる又はインターネットダウンロードを介したプログラムの配布が含まれる。 或る意味で、インターネットそのものが、抽象エンティティとして、コンピュータ可読媒体である。 同じことは、コンピュータネットワーク一般に当てはまる。 したがって、添付の請求の範囲で列挙される機能は、上述した機能を実行できる任意の電子デバイスによって実行できることが理解されるべきである。] [0184] 例を参照して実施形態を説明してきたが、当業者は、請求項に記載の実施形態の範囲から逸脱することなく、説明した実施形態にさまざまな変更を行うことができる。] [0185] 100ストリーム処理システム 110オーバーレイネットワーク 111オーバーレイノード 120リソースディレクトリ 130ネットワーク監視サービス 140データソース 150クライアント 800コンピュータシステム 802プロセッサ 804メモリ 806マスストレージ 807 I/Oデバイス 808 ネットワークインターフェース]
权利要求:
請求項1 分散共有ストリーム処理システムにおけるクエリに関する配備プランを提供する方法であって、前記ストリーム処理システムにおいて現在配備されているクエリに関する事前に計算された実現可能な配備プランのセットを記憶することであって、前記クエリは、情報を求めるクライアント要求に応答してデータストリームを提供する、前記ストリーム処理システム内のノードでホスティングされる複数の演算子を含む、記憶することと、前記クエリのQoSメトリック制約が違反されているか否かを判断することと、前記QoSメトリック制約が違反されているとの判断に応じて、前記クエリを提供するのに使用される前記実現可能な配備プランのセットから一配備プランを選択することとを含む方法。 請求項2 前記実現可能な配備プランのセットを記憶することは、複数の部分的配備プランを識別することと、前記QoSメトリックに基づいて、前記複数の部分的配備プランから前記実現可能な部分的配備プランを識別することと、前記プランのそれぞれについて演算子を実行するノードのコンピュータリソースの可用性に基づいて、前記実現可能な部分的配備プランのサブセットを識別することと、サービスプロバイダメトリックを最適化するように前記実現可能な部分的配備プランのサブセットの1つ又は複数を選択することと、前記選択されたプランを記憶することとを含む請求項1に記載の方法。 請求項3 前記複数の部分的配備プランを識別することは、前記クエリのリーフノードにおいて複数の部分的配備プランを識別することと、実現可能であると判断された前記部分的配備プランを、下流側に、前記部分的配備プランの演算子をホスティングするノードへ、前記下流側ノードによって使用されるメタデータと共に転送することであって、それによって、前記部分的配備プランを、そのローカルに実行される演算子の配置で拡張し、前記QoSメトリックに対する前記配置の影響を定量化する、転送することとを含む請求項2に記載の方法。 請求項4 前記クエリのリーフノードにおいて複数の部分的配備プランを識別することは、k−前方検索を実行することであって、それによって、前記QoSメトリックに対する影響を判断し、k個の下流側演算子の最良の配置を提供する、実行することを含む請求項3に記載の方法。 請求項5 前記k−前方検索は、各部分的配備プランについて、前記部分的配備プランの演算子をホスティングする候補ノードを識別することと、下流側演算子をホスティングするノードへ、前記下流側演算子の候補ホストの第2のセット及び前記候補の前記QoSメトリックの推定値を求める要求を送信することと、前記QoSメトリック制約が、前記候補ノードのそれぞれについて違反されているか否かを評価することと、要求を送信する前記ステップ及び後続の下流側演算子について前記QoSメトリックを評価する前記ステップを繰り返すことであって、それによって、前記QoSメトリック制約を違反しない部分的プランを求める、繰り返すこととを含む請求項4に記載の方法。 請求項6 前記実現可能な部分的配備プランのサブセットを識別することは、前記下流側ノードのそれぞれにおいて、該ノードが、前記演算子をホスティングするのに十分な利用可能なコンピュータリソースを有するか否かを判断することと、前記QoSメトリックに基づいて前記部分的プランの前記影響を推定することと、前記QoSメトリック制約を充足する部分的プランのみを下流側へ伝播することとを含む請求項3に記載の方法。 請求項7 サービスプロバイダメトリックを最適化するように実現可能な部分的配備プランの前記サブセットの1つ又は複数を選択することは、あらゆるローカル演算子のすべての上流側演算子について、前記サービスプロバイダメトリックに関する統計を保持することと、実現可能な部分的配備プランの前記サブセットの1つ又は複数を、前記統計に基づいて記憶するように選択することとを含む請求項6に記載の方法。 請求項8 前記クエリのQoSメトリック制約が違反されているか否かを判断することは、前記クエリにおける各ノードが、自身のパブリッシャのロケーションへの自身の演算子の前記QoSメトリックを監視することと、各ノードが、前記QoSメトリックの前記監視に基づいて、前記QoSメトリック制約が違反されているか否かを判断することとを含む請求項1に記載の方法。 請求項9 前記QoSメトリック制約が違反されているか否かを各ノードが判断することは、各ノードについて、そのノードでホスティングされる前記演算子を共有するすべてのクエリの前記QoSメトリックを求めることと、前記QoSメトリックの許容範囲が、前記クエリのいずれについても違反されているか否かを判断することとを含む請求項8に記載の方法。 請求項10 分散ストリーム処理システムにおいて衝突を解決してクエリの配備プランを配備する方法であって、既存のクエリに関する新しい配備プランが適用されるべきと判断することと、前記新しい配備プランの各演算子について、その演算子がまだロックされていない場合にはその演算子をロックすることと、その演算子がすでにロックされている場合には、衝突が存在するか否かを判断することと、衝突が存在する場合には、代替的な配備プランを識別することと、衝突が存在しない場合には、前記演算子を複製し、前記新しい配備プランを配備することとを含む方法。 請求項11 前記演算子をロックすることは、前記新しい配備プランを適用すると判断したノードが、自身のパブリッシャ及び前記クエリのサブスクライバへロックする要求を送信することと、前記要求を受信した各ノードが、前記クエリの自身の演算子のサブスクライバへ前記要求を送信することとを含む請求項10に記載の方法。 請求項12 前記要求を受信したノードは、前記演算子がまだロックされていない場合に前記クエリのローカル演算子をロックし、前記演算子をロックすることは、前記ロックが解除されるまで、前記ノードが前記ロックされた演算子の別のマイグレーションを可能にすることを防止する請求項11に記載の方法。 請求項13 衝突は、前記クエリが別のクエリと直接的又は間接的な依存関係を有する場合に存在するように実施可能であり、前記直接的な依存関係は、前記クエリ及び前記別のクエリが演算子を共有するか否かに基づき、前記間接的な依存関係は、演算子が前記クエリ及び前記別のクエリによって共有されないが、前記クエリ及び前記別のクエリの双方が1つの演算子を共有する第3のクエリが存在するときである請求項10に記載の方法。 請求項14 実行されると方法を実行する命令を含むソフトウェアを記憶するコンピュータ可読記憶媒体であって、前記方法は、分散ストリーム処理システムにおけるデータストリームのエンドツーエンドオーバーレイパスを提供するオーバーレイネットワークに現在配備されているクエリに関する部分的配備プランを作成することと、前記クエリのためのローカル演算子の上流側演算子によって消費される帯域幅に関する統計を記憶することと、前記ローカル演算子までのクエリレイテンシに関する統計を記憶することと、各部分的配備プランについて、前記部分的配備プランについて前記消費される帯域幅及びレイテンシと、前記現在配備されているクエリについて前記消費される帯域幅及びレイテンシとの間の差を評価することと、各部分的配備プランについて、前記部分的配備プランが前記配備されたクエリよりも良好であること及び前記部分的配備プランがQoSメトリック制約を充足することを、前記評価された差が示す場合に、その部分的配備プラン及びその部分的配備プランのその後の評価のためのメタデータとを記憶することとを含むコンピュータ可読記憶媒体。 請求項15 前記クエリは、前記オーバーレイネットワーク内のノードによってホスティングされる複数の演算子を含み、前記ノードのそれぞれは、前記クエリに関して事前に計算された複数の配備プランを共に形成する部分的配備プランを作成し、評価し、及び記憶する請求項14に記載のコンピュータ可読媒体。
类似技术:
公开号 | 公开日 | 专利标题 US10776395B2|2020-09-15|System and method for implementing a scalable data storage service US10387402B2|2019-08-20|System and method for conditionally updating an item with attribute granularity US20200175035A1|2020-06-04|System and method for maintaining a master replica for reads and writes in a data store US20180324033A1|2018-11-08|System and method for data replication using a single master failover protocol US20180181470A1|2018-06-28|System and method for adjusting membership of a data replication group US10157135B2|2018-12-18|Cache optimization US10248704B2|2019-04-02|System and method for log conflict detection and resolution in a data store US9372911B2|2016-06-21|System and method for performing replica copying using a physical copy mechanism AU2014346369B2|2017-05-11|Managed service for acquisition, storage and consumption of large-scale data streams US8819027B1|2014-08-26|System and method for partitioning and indexing table data using a composite primary key US10367907B2|2019-07-30|Content delivery network architecture with edge proxy KR102009055B1|2019-08-08|클라우드 선택을 위한 코디네이션 엔진 Navimipour et al.2015|A comprehensive study of the resource discovery techniques in peer-to-peer networks US20150227606A1|2015-08-13|Massively scalable object storage system US20180041468A1|2018-02-08|Managing dynamic ip address assignments US20200341657A1|2020-10-29|System and method for performing live partitioning in a data store JP2019212336A|2019-12-12|分散キャッシュクラスタ管理 Yu et al.2015|Location-aware associated data placement for geo-distributed data-intensive applications US8930312B1|2015-01-06|System and method for splitting a replicated data partition JP5450547B2|2014-03-26|自己管理型分散メディエーションネットワーク US8549180B2|2013-10-01|Optimizing access to federation infrastructure-based resources Cai et al.2004|Maan: A multi-attribute addressable network for grid information services US9460185B2|2016-10-04|Storage device selection for database partition replicas Mondal et al.2012|Managing large dynamic graphs efficiently JP5902716B2|2016-04-13|大規模記憶システム
同族专利:
公开号 | 公开日 KR20100113098A|2010-10-20| WO2009097438A3|2009-10-08| US20090192981A1|2009-07-30| WO2009097438A2|2009-08-06| CN101933018A|2010-12-29|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题 US20060200251A1|2005-03-01|2006-09-07|Xiaohui Gu|Systems and methods for optimal component composition in a stream processing system|JP2013502642A|2009-08-18|2013-01-24|インターナショナル・ビジネス・マシーンズ・コーポレーションInternationalBusinessMachinesCorporation|イベント・ドリブン・システムにおける非集中負荷分散の方法およびコンピュータ・プログラム|US6345279B1|1999-04-23|2002-02-05|International Business Machines Corporation|Methods and apparatus for adapting multimedia content for client devices| US7093001B2|2001-11-26|2006-08-15|Microsoft Corporation|Methods and systems for adaptive delivery of multimedia contents| US7640230B2|2005-04-05|2009-12-29|Microsoft Corporation|Query plan selection control using run-time association mechanism|KR101594577B1|2009-11-19|2016-02-16|삼성전자주식회사|클러스터 질의를 이용한 데이터 스트림 처리 장치 및 방법| US9237105B2|2009-12-08|2016-01-12|Microsoft Technology Licensing, Llc|Data communication with compensation for packet loss| US9189280B2|2010-11-18|2015-11-17|Oracle International Corporation|Tracking large numbers of moving objects in an event processing system| US9430494B2|2009-12-28|2016-08-30|Oracle International Corporation|Spatial data cartridge for event processing systems| US8549125B2|2010-03-11|2013-10-01|International Business Machines Corporation|Environmentally sustainable computing in a distributed computer network| WO2011142227A1|2010-05-14|2011-11-17|インターナショナル・ビジネス・マシーンズ・コーポレーション|コンピュータ・システム、方法及びプログラム| US9798696B2|2010-05-14|2017-10-24|International Business Machines Corporation|Computer system, method, and program| US8996503B2|2010-10-04|2015-03-31|Sybase, Inc.|Query plan optimization for prepared SQL statements| CN103154935B|2010-10-11|2016-08-24|惠普发展公司,有限责任合伙企业|用于查询数据流的系统和方法| US8990416B2|2011-05-06|2015-03-24|Oracle International Corporation|Support for a new insert streamoperation in complex event processing | US9396157B2|2011-08-26|2016-07-19|International Business Machines Corporation|Stream application performance monitoring metrics| JP5927871B2|2011-11-30|2016-06-01|富士通株式会社|管理装置、情報処理装置、管理プログラム、管理方法、プログラムおよび処理方法| US9424150B2|2011-12-06|2016-08-23|Sap Se|Fault tolerance based query execution| US9744442B2|2012-08-27|2017-08-29|Lenovo Enterprise SolutionsPte. Ltd.|Dynamic quality of service management in multiplayer gaming| US9262479B2|2012-09-28|2016-02-16|Oracle International Corporation|Join operations for continuous queries over archived views| US9563663B2|2012-09-28|2017-02-07|Oracle International Corporation|Fast path evaluation of Boolean predicates| CN102981909B|2012-10-22|2015-11-25|百度在线网络技术(北京)有限公司|控制终端的应用程序迁移的方法、装置及终端| US10298444B2|2013-01-15|2019-05-21|Oracle International Corporation|Variable duration windows on continuous data streams| US9390135B2|2013-02-19|2016-07-12|Oracle International Corporation|Executing continuous event processingqueries in parallel| US9690829B2|2013-04-15|2017-06-27|Vmware, Inc.|Dynamic load balancing during distributed query processing using query operator motion| US9659057B2|2013-04-15|2017-05-23|Vmware, Inc.|Fault tolerant distributed query processing using query operator motion| US9418113B2|2013-05-30|2016-08-16|Oracle International Corporation|Value based windows on relations in continuous data streams| CN104516994B|2013-09-29|2019-03-19|国际商业机器公司|计算机实现的辅助发布规划的方法和装置| US9934279B2|2013-12-05|2018-04-03|Oracle International Corporation|Pattern matching across multiple input data streams| US20150248462A1|2014-02-28|2015-09-03|Alcatel Lucent|Dynamically improving streaming query performance based on collected measurement data| US20150248461A1|2014-02-28|2015-09-03|Alcatel Lucent|Streaming query deployment optimization| CN104020994B|2014-05-30|2017-07-14|华为技术有限公司|基于流系统的流过程定义装置和流过程定义方法| US9712645B2|2014-06-26|2017-07-18|Oracle International Corporation|Embedded event processing| WO2016012903A1|2014-07-23|2016-01-28|Mimos Berhad|A system for querying heterogeneous data sources and a method thereof| US9886486B2|2014-09-24|2018-02-06|Oracle International Corporation|Enriching events with dynamically typed big data for event processing| US10120907B2|2014-09-24|2018-11-06|Oracle International Corporation|Scaling event processing using distributed flows and map-reduce operations| WO2017018901A1|2015-07-24|2017-02-02|Oracle International Corporation|Visually exploring and analyzing event streams| US10263908B1|2015-12-09|2019-04-16|A9.Com, Inc.|Performance management for query processing| US20200219028A1|2017-09-05|2020-07-09|Brandeis University|Systems, methods, and media for distributing database queries across a metered virtual network| CN110190991B|2019-05-21|2020-06-02|华中科技大学|一种多应用场景下的分布式流处理系统的容错方法|
法律状态:
2012-02-02| RD03| Notification of appointment of power of attorney|Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20120201 | 2012-07-19| A977| Report on retrieval|Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20120718 | 2012-08-01| A131| Notification of reasons for refusal|Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120731 | 2012-10-13| A601| Written request for extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20121012 | 2012-10-22| A602| Written permission of extension of time|Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20121019 | 2012-12-27| A521| Written amendment|Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121226 | 2013-05-08| A02| Decision of refusal|Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20130507 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|