JP6096182B2 - 物理的に相違する複数のストリームに対する効率的な論理マージ - Google Patents

物理的に相違する複数のストリームに対する効率的な論理マージ Download PDF

Info

Publication number
JP6096182B2
JP6096182B2 JP2014515928A JP2014515928A JP6096182B2 JP 6096182 B2 JP6096182 B2 JP 6096182B2 JP 2014515928 A JP2014515928 A JP 2014515928A JP 2014515928 A JP2014515928 A JP 2014515928A JP 6096182 B2 JP6096182 B2 JP 6096182B2
Authority
JP
Japan
Prior art keywords
stream
output
module
merge module
logical merge
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.)
Active
Application number
JP2014515928A
Other languages
English (en)
Other versions
JP2014524175A (ja
JP2014524175A5 (ja
Inventor
チャンドラモウリ,バドリシュ
イー. メイヤー,デイヴィッド
イー. メイヤー,デイヴィッド
ディー. ゴールドスタイン,ジョナサン
ディー. ゴールドスタイン,ジョナサン
エー. ザバック,ピーター
エー. ザバック,ピーター
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014524175A publication Critical patent/JP2014524175A/ja
Publication of JP2014524175A5 publication Critical patent/JP2014524175A5/ja
Application granted granted Critical
Publication of JP6096182B2 publication Critical patent/JP6096182B2/ja
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Error Detection And Correction (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Stereophonic System (AREA)
  • Ultra Sonic Daignosis Equipment (AREA)
  • Amplifiers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本願は、物理的に相違する(divergent)複数のストリームに対する効率的な論理マージに関する。
データ処理モジュール(データ・ストリーム管理システムのような)はさまざまなシナリオにおいて冗長なデータ・ストリームを受領し、処理しうる。
本稿に記載される理由により、データ処理モジュールはこのタスクの実行にあたってさまざまな困難に直面することがある。
物理的に相違する入力ストリームを論理的にマージするための機能が本稿に記載される。ある実施形態では、この機能は、任意の個別源からの入力ストリームを受領することによって作用する。次いで、この機能は、論理マージ・モジュールを使って、各入力ストリームと論理的に適合する出力ストリームを生成する。
もう一つの例示的な側面によれば、論理マージ・モジュールは、データ・ストリーム管理システム内で連続的な問い合わせ(continuous query)を実装するために適用されてもよい作用部(operator)を表す。さらに、論理マージ・モジュールの一つまたは複数のインスタンス化(instantiation)は、他の型の作用部と任意の仕方で組み合わされてもよい。
もう一つの例示的な側面によれば、この機能は、異なるそれぞれの型の入力シナリオを扱うために異なるアルゴリズムを提供することができる。異なるアルゴリズムは、異なるシナリオにおいて入力ストリームに適用されうる異なる制約条件を利用する。
もう一つの例示的な側面によれば、この機能は、異なる応用目的を達成するために異なる環境において適用されることができる。たとえば、この機能は、たとえば高い可用性、速い可用性を保証することにより、出力ストリームの可用性を改善するために使われることができる。この機能はまた、たとえば問い合わせジャンプスタート、問い合わせカットオーバーなどを提供することによって、データ・ストリームの導入および除去を容易にするために使用されることができる。この機能はまた、遅れデータ・ストリームを出力する源にフィードバック情報を提供して、その源が論理マージ・モジュールに、より適時の結果を提供できるようにすることもできる。
上記のアプローチは、さまざまな型のシステム、コンポーネント、方法、コンピュータ可読媒体、データ構造、製造物などにおいて具現されることができる。
この概要は、簡略化された形で諸概念のセレクションを紹介するために提供されており、そうした概念は以下で詳細な説明においてさらに述べられる。この概要は、特許請求される主題の鍵となる特徴や本質的な特徴を特定することは意図されておらず、特許請求される主題の範囲を限定するために使われることも意図されていない。
物理的に相違する入力ストリームと論理的に適合する出力ストリームを生成するための論理マージ・モジュールを使う例示的な機能を示す図である。 図1の論理マージ・モジュールの一つの応用の概観を示す図である。 図1の論理マージ・モジュールの別の応用の概観を示す図である。 ストリームの物理的な表現を示す図である。 時間的データベース(TDB: temporal database)インスタンスの形で入力ストリームの論理表現を示す図である。 図1の論理マージ・モジュールを使って、二つの物理的に相違する入力ストリームが論理的に適合する出力ストリームに変換される例を示す図である。 二つの物理的に相違する入力ストリームが、それぞれ異なるレベルの「饒舌さ(chattiness)」をもつ三つの代替的な出力ストリームに変換される例を示す図である。 図1の論理マージ・モジュールの一つの動作様式の概観を記述する手順である。 図1の論理マージ・モジュールの一つの実装を示す図である。 一組の入力ストリームの特徴に基づいて、(図9の論理マージ・モジュールによる使用のための)アルゴリズムを選択する手順である。 図9の論理マージ・モジュールを使って入力ストリーム内の要素を処理する手順である。 複数のそれぞれのアルゴリズムによって状態情報を維持するために使われることができる異なるデータ構造を示す図である。 図9の論理マージ・モジュールを使って入力ストリームを処理するための種々のアルゴリズムの一つを示す図である。 図9の論理マージ・モジュールを使って入力ストリームを処理するための種々のアルゴリズムの一つを示す図である。 図9の論理マージ・モジュールを使って入力ストリームを処理するための種々のアルゴリズムの一つを示す図である。 図9の論理マージ・モジュールを使って入力ストリームを処理するための種々のアルゴリズムの一つを示す図である。 論理マージ・モジュールのさまざまな応用を説明するための媒介物のはたらきをする、論理マージ・モジュールを組み込む機能を示す図である。 図17の論理マージ・モジュールのさまざまな応用を記載する手順である。 以上の図に示される特徴のいずれかの側面を実装するために使用されることのできる例示的なコンピューティング機能を示す図である。 同様のコンポーネントおよび特徴を指すために本開示および諸図面を通じて同じ番号が使われている。100番台の数はもともと図1に見出される特徴を指し、200番台の数はもともと図2に見出される特徴を指し、300番台の数はもともと図3に見出される特徴を指す、などとなる。
本開示は、次のように構成される。セクションAは、二つ以上の物理的に相違する入力ストリームと論理的に適合する出力ストリームを生成する論理マージ・モジュールの概観を与える。セクションBは、セクションAの論理マージ・モジュールの一つの代表的な実装を記述する。この実装は、可能なコンテキスト固有アルゴリズムの集合から選択されるアルゴリズムを採用することができる。セクションCは、セクションAの論理マージ・モジュールの代表的な応用を記述する。セクションDはセクションA〜Cに記述される特徴の何らかの側面を実装するために使用できる例示的なコンピューティング機能を記述する。
予備的事項として、図のいくつかは、機能、モジュール、特徴、要素などとさまざまに呼ばれる一つまたは複数の構造的なコンポーネントのコンテキストにおいて概念を記載する。図に示されるさまざまなコンポーネントは、任意の物理的および有体な機構によって、たとえばソフトウェア、ハードウェア(たとえばチップ実装される論理機能)、ファームウェアなどおよび/またはその任意の組み合わせによって、任意の仕方で実装されることができる。ある場合には、図面におけるさまざまなコンポーネントの相異なるユニットへの示される分離は、実際の実装における対応する相異なる物理的および有体なコンポーネントの使用を反映することがある。代替的または追加的に、図に示される任意の単一のコンポーネントが複数の実際の物理的コンポーネントによって実装されてもよい。代替的または追加的に、任意の二つ以上の別個のコンポーネントの図面における描出は、単一の実際の物理的コンポーネントによって実行される異なる機能を反映することもある。のちに論じる図19は、諸図面に示される機能のある例示的な物理的実装に関する追加的な詳細を提供する。
他の図面はフローチャートの形で概念を記述する。この形では、ある種の動作が、ある種の順序で実行される相異なるブロックをなすものとして記述される。そのような実装は例示的であり、限定するものではない。本稿に記載されるある種のブロックは、グループ化され、単一の動作において実行されることができ、ある種のブロックは複数のコンポーネント・ブロックに分解されることができ、ある種のブロックは本願で示されるのとは異なる順序で(諸ブロックを実行する並列的な仕方を含む)実行されることができる。フローチャートに示されるブロックは、任意の物理的および有体な機構によって、たとえばソフトウェア、ハードウェア(たとえばチップ実装される論理機能)、ファームウェアなどおよび/またはその任意の組み合わせによって、任意の仕方で実装されることができる。
用語に関し、「構成される」という句は、任意の種類の物理的および有体な機能が同定される動作を実行するよう構築されることができる任意の仕方を包含する。その機能は、たとえばソフトウェア、ハードウェア(たとえばチップ実装される論理機能)、ファームウェアなどおよび/またはその任意の組み合わせを使って動作を実行するよう構成されることができる。
用語「論理」は、タスクを実行するための任意の物理的および有体な機能を包含する。たとえば、フローチャートに示される各動作は、その動作を実行するための論理コンポーネントに対応する。動作は、たとえばソフトウェア、ハードウェア(たとえばチップ実装される論理機能)、ファームウェアなどおよび/またはその任意の組み合わせを使って実行されることができる。コンピュータ・システムによって実装されるとき、論理コンポーネントは、いかなる実装のものであれ、当該コンピューティング・システムの物理的な部分である電気的コンポーネントを表す。
以下の説明は、一つまたは複数の特徴を「任意的」と特定することがある。この型の陳述は、任意的であると考えられうる特徴を網羅的に指示しているものと解釈されるものではない。すなわち、本文中で明示的に同定されていなくても、他の特徴が任意的と考えられることもある。最後に、「例示的」または「例解の」という用語は、潜在的に多数ある実装のうちの一つの実装を指す。
A.論理マージ・モジュールの概観
図1は、物理的に相違する複数のストリームと論理的に適合する出力ストリームを生成するために論理マージ・モジュール102を使うための機能100の概観を示している(ここで、たとえば図4および図5に関する後述する説明が、「物理的」「論理的」の概念を明確にする)。より具体的には、論理マージ・モジュール102は複数のそれぞれの物理的源から二つ以上のデジタル入力ストリームを受領する。これらの入力ストリームは意味的には同じ情報を伝達するが、その情報を異なる物理的な仕方で表現することがある(後述する理由により)。論理マージ・モジュール102は動的に、物理的に相違する入力ストリームのそれぞれを論理的に表す出力ストリームを生成する。換言すれば、出力ストリームは、各入力ストリームと適合する仕方で入力ストリームの論理的なエッセンスを表現する統一された仕方を提供する。任意の型の消費エンティティ(単数または複数)が出力ストリームを利用しうる。
任意の実装環境104が論理マージ・モジュール102を使用してもよい。本稿で最も顕著にフィーチャーされる例では、実装環境104はデータ・ストリーム管理システム(DSMSシステム)に対応する。DSMSシステムは、論理マージ・モジュール102を、連続的な問い合わせにおける少なくとも一つのコンポーネントとして適用してもよい。(背景として、連続的な問い合わせ(continuous query)とは、データベース問い合わせのストリーミング版をいう。静的なデータベースの内容に対する単一の調査を実行する代わりに、連続的な問い合わせは、幅のある時間期間にわたって作用し、一つまたは複数の入力ストリームを動的に一つまたは複数の出力ストリームに変換する。)より具体的には、DSMSシステムは論理マージ・モジュール102をプリミティブ作用部として扱ってもよい。さらに、DSMSシステムは論理マージ・モジュール102をそれ自身で適用することもできるし、あるいは他の任意の作用部との組み合わせにおいて適用することもできる。しかしながら、論理マージ・モジュール102のDSMS環境への適用は代表例であり、限定するものではない。さまざまな信号処理環境、誤り訂正環境など、他の環境が論理マージ・モジュール102を利用することができる。
図2は、論理マージ・モジュール202の一つの応用の概観を示す図である。この場合、複数のユニット(M1,M2,…,Mn)が複数のそれぞれの入力ストリームを論理マージ・モジュール202にフィードする。たとえば、ユニット(M1,M2,…,Mn)は、測定データ(限定するものではないが、CPUおよび/またはメモリ利用度測定データ、化学的測定データなど)を論理マージ・モジュール202に提供するコンピューティング機械(または単一の機械上のスレッドまたは仮想マシン・インスタンスなど)を表していてもよい。別の事例では、ユニット(M1,M2,…,Mn)は、可能性としては異なるそれぞれの問い合わせプランを使って同じ問い合わせを実装する異なるコンピューティング機械(または単一の機械上のスレッドまたは仮想マシン・インスタンスなど)を表していてもよい。ユニット(M1,M2,…,Mn)は、論理マージ・モジュール202に対してローカルであってもリモートであってもよい。リモートであれば、一つまたは複数のネットワーク(図示せず)がユニット(M1,M2,…,Mn)を論理マージ・モジュール202に結合してもよい。
論理マージ・モジュール202は、入力ストリームのそれぞれと論理的に適合する出力ストリームを生成することができる。論理マージ・モジュール202は、高い可用性、速い可用性、問い合わせ最適化などを提供するといった、一つまたは複数の目的を満足するためにこの機能を実行することができる。セクションCは、論理マージ・モジュール202の代表的な応用に関する追加的な情報を提供する。
図3は、DSMSシステムにおいて連続的な問い合わせを実装するために、論理マージ・モジュール302が他の作用部(operator)と組み合わされることができる一つの仕方の概観を示している。これらの作用部は、総合機能を実行する総合作用部、フィルタリング機能を実行する選択子作用部、ソート動作を実行するソート作用部、二つ以上のデータ・ストリームの物理的な併合(union)を実行する併合作用部などを含む、他の型の作用部プリミティブを表していてもよい。追加的または代替的に、論理マージ・モジュール302は他の論理マージ・モジュールと組み合わされることができる。
たとえば、ある場合には、論理マージ・モジュール302にフィードされる入力ストリームは、一つまたは複数の他の作用部304によって生成された出力ストリームを表していてもよい。追加的または代替的に、論理マージ・モジュール302によって生成される出力ストリームは一つまたは複数の他の作用部306にフィードされることができる。
図4は、図1の論理マージ・モジュール102にフィードされうるストリームまたは論理マージ・モジュール102によって出力されうるストリームの一つの表現を示している。ストリーム(s)は一連の要素(e1,e2,…)を含む。これらの要素は、入力ストリームから抽出された情報が出力ストリームに伝搬させられる仕方を支配する命令(詳細は後述)との関連で、ペイロード情報を提供する。入力ストリームのプレフィックスS(i)は、入力ストリームの一部を表す。たとえば、S(i)=e1,e2,…ei
入力ストリームの物理的記述は、その構成要素および該構成要素の配置の文字による説明を提供する。二つ以上の入力ストリームは意味的に同じ情報を伝達してもよいが、異なる物理的表現を有していてもよい。そのような差異には種々の因子が寄与しうる。そのいくつかを下記にまとめておく。
ストリーム中の順序乱れ(disorder)に寄与する因子。源はそのデータ・ストリームを、輻輳または他の伝送遅延を受けるネットワークまたは他の伝送媒体を通じて論理マージ・モジュール102に伝送することがある。これらの遅延は、入力ストリームの諸要素の順序が乱れる原因となりうる。代替的または追加的に、入力ストリームを供給する「上流の」処理モジュール(併合作用部など)が入力ストリームの諸要素の順序乱れを生じさせることもある。一般に、ある入力ストリームの順序が乱される仕方は、別の入力ストリームの順序が乱される仕方とは異なることがあり、よって本来なら論理的に等価な入力ストリームにおける物理的な差異が導入される。
修正。代替的または追加的に、源は、そのデータ・ストリームの伝送の過程において、そのデータ・ストリームを修正することがある。たとえば、源は、入力ストリームの破損した部分をもつノイズを検出することがある。応答して、源は、入力ストリームのその破損した部分の訂正されたバージョンを供給しようとするフォローアップ要素を発してもよい。ある源がそのような修正を発する仕方は他の源がこの機能を実行する仕方とは異なることがあり、その結果、本来なら論理的に等価なストリームに物理的な差異が生じる。
代替的または追加的に、源はそのデータ・ストリームを、不完全な情報を押し出すという意図的なポリシーのために修正してもよい。たとえば、源は、オペレーティング・システム・プロセスを実行するコンピューティング機械に対応していてもよい。そのプロセスは、それが動作する時間の広がりを記述する寿命を有する。レイテンシーを引き起こさないよう、源は、プロセスの開始時刻を伝達するが終了時刻は伝達しない初期要素を送ってもよい(初期には、終了時刻は既知でないことがあるので)。ひとたび終了時刻がわかったら、源は欠けている終了時刻を供給する要素を送ることができる。ある源によって採用される修正ポリシーは別の源の修正ポリシーとは異なることがあり、結果として本来なら論理的に等価なストリームの間に差異が生じる。
別の例では、二つの異なる源がそれぞれ異なる仕方で総合(aggregation)動作を実行してもよい。たとえば、保守的な総合作用部は、計数プロセス全体が終了するのを待ってから最終的なカウント値を送ってもよい。だがより積極的な総合作用部は、計数動作の途中で一つまたは複数の中間計数値を送ることができる。最終結果は同じである(最終的な計数を反映する)が、それでも、これら二つの源によって生成されるストリームは物理的には異なる(第二のストリームのほうが第一のストリームに比べてより「饒舌(chatty)」である)。
異なる問い合わせプラン。代替的または追加的に、二つの異なる源は、意味的に等価な処理機能を実行するために異なる問い合わせプランを使ってもよい。それら二つの源は、同じ帰結を論理的に表す出力ストリームを生成するが、潜在的には異なる仕方でである。たとえば、第一の源は三元の統合(join)を、データ・ストリームAをデータ・ストリームBと組み合わせ、次いで結果として得られる中間結果をデータ・ストリームCと組み合わせることによって実行することができる。第二の源は、まずデータ・ストリームBをデータ・ストリームCと組み合わせ、次いで結果として得られる中間結果をデータ・ストリームAと組み合わせることができる。第一の源によって発されるストリームは、第二の源によって発されるストリームとは、これらの源による異なる処理戦略の使用のために、物理的に異なることがある。
異なるコンピューティング資源。追加的または代替的に、二つの異なる源が異なるコンピューティング機械上で同じ問い合わせを実行することがある。任意の所与の時点において、第一のコンピューティング機械は、第二のコンピューティング機械に比べて異なる資源需要を受けることがあり、その結果、潜在的には、それら二つのコンピューティング機械によって物理的に異なるストリームの出力につながることがある。あるいは、それら二つの異なる源は単に異なる処理機能(たとえば、異なる処理および/またはメモリ機能)をもつことがあり、その結果、物理的に異なるストリームの生成につながることがある。非決定論性の他の源(入力データの予測不能な到着など)も物理的に異なる出力ストリームの出力につながりうる。
上記の因子は、限定ではなく例として挙げられている。さらに他の因子が異なる入力ストリーム間の物理的な差異に寄与することがある。
入力ストリーム(または出力ストリーム)は、異なる型の構成要素に関連する異なる型の命令を含むことができる。ある例示的な環境では、ストリームは挿入要素、調整要素および安定要素を含む。挿入要素insert(p,Vs,Ve)は寿命が期間(Vs,Ve)であるペイロードpをもつイベントを出力ストリームに加える。前述のように、Veは開端(たとえば+∞)のままにされることができる。簡単のため、挿入要素は下記では時にinsert()と称される。
調整要素adjust(p,Vs,Vold,Ve)は前に発されたイベント(p,Vs,Vold)を(p,Vs,Ve)に変更する。Ve=Vsであれば、イベント(p,Vs,Vold)は除去される(たとえば、取り消される)。たとえば、要素のシーケンスinsert(A,6,20)→adjust(A,6,20,30)→adjust(A,6,30,25)は単一の要素insert(A,6,25)と等価である。簡単のため、調整要素は下記では時にadjust()と称される。
安定要素stable(Vc)は時刻Vcより前に発生する出力ストリームの部分を固定する。これは、Vs<Vcをもつ将来のinsert(p,Vs,Ve)要素はありえないし、Vold<VcまたはVe<Vcをもつ調整要素もありえないことを意味する。換言すれば、stable(Vc)は、出力ストリームのある部分を「凍結する」ものとして見ることができる。イベント(p,Vs,Vc)は、Vs<Vc≦Veであれば半分凍結しており(HF: half frozen)、Ve<Vcであれば完全に凍結している(FF: fully frozen)。(p,Vs,Ve)が完全に凍結していれば、将来のadjust()がそれを変更することはできず、そのイベントは出力ストリームのあらゆる将来のバージョンにおいて現れる。半分凍結でも完全凍結でもない任意の出力ストリームは、未凍結(UF: unfrozen)と言われる。簡単のため、安定要素は下記では時にstable()と称される。
物理的なストリーム(たとえば入力ストリームまたは出力ストリーム)の論理的な表現は、そのストリームの論理的なエッセンスを表す。より具体的には、各物理的なストリーム(および物理的なストリームの各プレフィックス)は、その物理的なストリームのエッセンスを捕捉する論理的な時間的データベース(TDB)インスタンスに対応する。TDBインスタンスはイベントの寄せ集め(bag)を含み、それらのイベントの時間的順序付けはない。ある実装では、各イベントはペイロードおよび有効性期間を含む。ペイロード(p)は、データ(測定データなどのような)を伝達するリレーショナル・タプルに対応する。有効性期間はイベントがアクティブであり、出力に寄与する時間期間を表す。より正式な言い方では、有効性期間は開始時刻(Vs)および終了時刻(Ve)に関して定義され、終了時刻は、特定の有限な時刻または開端のパラメータ(たとえば+∞)であることができる。開始時刻をイベントのタイムスタンプとして見ることもできる。
マッピング機能はストリーム中の要素をTDBインスタンスのインスタンス(たとえばイベント)に変換する。すなわち、マッピング関数tdb(S,i)は、ストリーム・プレフィックスS[i]に対応するTDBインスタンスを生成する。たとえば図5は、物理的なストリームの、TDBインスタンスへのそのようなマッピングの例を示している。すなわち、第一の物理的なストリーム(入力1)は要素の第一の時間的シーケンスを与え、第二の物理的なストリーム(入力2)はイベントの第二の時間的シーケンスを与える。「a」要素a(value,start,end)は、上記のinsert()要素の短縮記法である。すなわち、「a」要素はvalueをペイロードとしてもち、startからendまでの継続時間をもつ新たなイベントを加える。「m」要素m(value,start,newEnd)は上記のadjust()要素についての短縮記法である。すなわち、「m」要素は所与のvalueおよびstartをもつ既存のイベントを、新たな終了(new end)時刻をもつよう修正する。「f」要素f(time)は上記のstable()要素についての短縮記法である。すなわち、「f」要素は、現在のendがtimeより早いあらゆるイベントをファイナライズする(たとえばさらなる修正から凍結する)。見て取れるように、第一の物理的なストリームおよび第二の物理的なストリームは、異なる要素の系列をもつため物理的には異なっている。だが、これら二つの入力ストリームは同じ目標を達成し、よって意味的(論理的)には等価である。図5の右の部分は、これらの入力ストリーム両方を論理的に記述する二イベントTDBインスタンスを示している。たとえば、TDBインスタンス内の第一のイベントはペイロードAが、時刻インスタンス6から時刻インスタンス12まで走る有効性期間にわたって存在する(またはストリームに寄与する)ことを示す。これは、両方の物理的なストリームにおける要素の系列と適合する論理的な結論である。新たな物理的な要素が到着すると、対応する論理的なTDBはしかるべく発展しうる(たとえば要素が追加されるたびにイベントの異なる寄せ集めになる)。任意の二つの物理的なストリームのプレフィックスが常に論理的に等価であるとは限らないが、それでも将来等価になることができる点で適合であることを注意しておく。
「物理的」および「論理的」の概念の上記の明確化を与えたところで、論理マージ・モジュール102の動作および属性をより正確に表現できる。論理マージ・モジュール102は物理的な入力ストリームを論理的に等価なものとして扱う。これは、それらのストリームが結果的には同じになる論理的なTDB表現をもつことを意味する。論理マージ・モジュール102は、その諸入力ストリームと論理的に等価な出力ストリームを生成する。つまり、出力ストリームは、諸入力ストリームのTDB表現と最終的には同じになるTDB表現をもつ。
より正式な言い方では、ストリーム・プレフィックス{I1[k1],…,In[kn]}は、E1:I1[k1]:F1≡…≡Ei:Ii[ki]:Fi≡…≡En:In[kn]:Fnとなるような有限なシーケンスEiおよびFi 1≦i≦nが存在する場合に、互いに整合する(consistent)と考えられる。(ここで、A:Bという記法はAおよびBの連結を表す。)入力ストリーム{I1,…,In}は、それらのすべての有限プレフィックスが互いに整合であれば、互いに整合すると考えられる。出力ストリーム・プレフィックスO[j]は、入力プレフィックスのある拡張I[k]:Eについて、それと等価な出力シーケンスの拡張O[j]:Fが存在すれば、入力ストリーム・プレフィックスI[k]と適合する(compatible)と考えられる。ストリーム・プレフィックスO[j]は、I1[k1]:E1,…,In[kn]:Enを等価にする拡張E1,…,Enの任意の組について、それらすべてと等価な出力シーケンスの拡張O[j]:Fがあれば、入力ストリーム・プレフィックスの互いに整合する組I={I1[k1],…,In[kn]}と適合する。
図6は、図1の論理マージ・モジュール102の動作の例を示している。この場合、二つの入力ストリーム(入力1および入力2)は第一の出力ストリーム(出力1)または第二の出力ストリーム(出力2)または第三の出力ストリーム(出力3)にマッピングされることができる。これらの出力ストリームは、みな前記二つの入力ストリームと論理的に等価な物理的なストリームである(つまり入力ストリームと同じTDBをもつ)。だが、これらの出力ストリームは、この等価性を、異なる物理的な仕方で生成している。より具体的には、第一の出力ストリーム(出力1)は、入力ストリームからの遭遇するあらゆる変化を伝搬させるので、積極的な出力ポリシーを表す。第二の出力ストリーム(出力2)は、要素を出力するのを、該要素がファイナルであるという保証を受け取るまで遅らせるので、保守的なポリシーを表す。よって、第二の出力ストリームは、第一の出力ストリームより少数の要素を生成するが、第一の出力ストリームより遅い時刻に生成する。第三の出力ストリーム(出力3)は、第一の出力ストリームと第二の出力ストリームの間の中間的なポリシーを表す。すなわち、第三の出力ストリームは、所与のペイロードおよびstartをもつ遭遇する第一の要素を出力するが、修正があってもそれがファイナルであることが確証されるまで該修正をセーブする(save)。
ある環境によって採用される特定のポリシーは、拮抗する考察の間のトレードオフを表しうる。たとえば、ある環境は、より少数の変化を報告することによって、出力ストリームの「饒舌さ」を抑えることを望むことがある。だがこの決定は、環境が結果を消費者に提供するレイテンシーを増大させうる。
図7は、図2の論理マージ・モジュール102の動作の別の例を示している。この場合、論理マージ・モジュール102は二つの入力ストリーム(入力1、入力2)を三つの可能な出力ストリームにマッピングする。この場合、入力ストリームおよび出力ストリームはいずれもそのTDBによって記述されている。各TDBについて、この例における「最後」パラメータは、stable(V)要素において遭遇された最新の値Vを指す。右端の列は各要素の凍結状態、たとえば未凍結ならUF、半分凍結ならHF、完全凍結ならFFを表す。
第一の出力ストリーム(出力1)および第二の出力ストリーム(出力2)はいずれも二つの入力ストリームと論理的に適合すると考えられる。より具体的には、第一の出力ストリームは、出力において必ず現れる情報のみを出力する保守的な伝搬ポリシーの適用を表す。よって、第一の出力ストリームの終了時刻を調整することが適切であろう。第二の出力ストリームは、見られたあらゆる入力イベントに対応するイベントを、たとえそうしたイベントが未凍結であっても、含むので、より積極的なポリシーの適用を表す。よって、第二の出力ストリームは、出力ストリームにおいていくつかのイベントを完全に除去するためにのちの諸要素を発する必要がある。
対照的に、第三の出力ストリームは二つの理由により、二つの入力ストリームと適合しない。第一に、イベント(A,2,12)は第二の入力ストリーム中のイベントに一致するが、第一の入力ストリームの内容(終了時刻が14以上であることを指定している)に矛盾する。このイベントは第三の出力ストリームでは完全に凍結されているため、それを是正することのできるその後のストリーム要素はない。第二に、第三の出力ストリームはイベント(B,3,10)を欠いている。このイベントは入力ストリームにおいては完全に凍結されているが、与えられた安定点を考えると、第三の出力ストリームに加えることはできない。
したがって、図7は、概括的には、論理マージ・モジュール102が直面する困難の一つを浮き彫りにしている。論理マージ・モジュール102は、任意の所与の時点において出力ストリームが入力ストリームへの将来の追加に追随できることを保証する務めを負わされている。この目標が達成される仕方は、たとえば入力ストリーム内で使用されている要素の型、入力ストリームに適用される他の制約(もしあれば)などを含む複数の事情に依存する。
図8は、論理マージ・モジュール102の上記の動作をまとめる手順900を示している。ブロック902では、論理マージ・モジュール102は、複数の物理的に相違する入力ストリームを、任意のそれぞれの源から受領する。上記で説明したように、それらの源は、生データ(たとえば未加工の測定データ)を供給するエンティティに対応してもよい。代替的または追加的に、それらの源は、処理を実行し、結果として得られる出力ストリームを提供する一つまたは複数の作用部に対応していてもよい。ブロック904では、論理マージ・モジュールは、入力ストリームのそれぞれと論理的に適合する出力ストリームを生成する。上記のように、これは、出力ストリームが、入力ストリームのTDB表現と最終的には同じになるTDB表現をもつことを意味する。
B.論理マージ・モジュールの例示的な実装
図9は、図1の論理マージ・モジュール102のある実装を示している。図9に示される論理マージ・モジュール102は、可能なアルゴリズムの集合から選択されるアルゴリズムを実装する。各アルゴリズムは、あるクラスの諸制約を受ける入力ストリームのコレクションを扱うよう構成される。よって、本セクションはまず、入力ストリームのコレクションに影響しうる制約の例示的な諸クラスを記述する。ある場合には、入力ストリームのコレクションの構成員のすべては同じクラスの制約を受けると想定される。しかしながら、他の実装はこの特性をさまざまな度合いで緩和することができる。
第一の場合(場合R0)では、入力ストリームはinsert()およびstable()要素のみを含む。換言すれば、入力ストリームは、入力ストリーム中の以前の要素を修正することはできない。さらに、諸要素における諸Vs時刻は厳密に増加していく。よって、ストリームは、重複したタイムスタンプのない決定論的な順序を示す。いくつかの単純化する想定を、R0型の制約を受けるストリームに関して引き出すことができる。たとえば、ひとたび時間が時点tまで進んだら、論理マージ・モジュール102はVs≦tをもつペイロードすべてを見たと安全に想定できる。
第二の場合(場合R1)では、入力ストリームはやはりinsert()およびstable()要素のみを含む。さらに、諸Vs時刻は非減少である。さらに、今や等しいVs時刻をもつ複数の要素があってもよいが、等しいVs時刻をもつ要素の間での順序は決定論的である。たとえば、等しいVs時刻をもつ要素は、ペイロードp内のID情報に基づいてソートされてもよい。
第三の場合(場合R2)では、入力ストリームはやはりinsert()およびstable()要素のみを含む。だがこの場合、同じVs時刻をもつ要素の順序は入力ストリームを横断して異なることができる。さらに、任意のストリーム・プレフィックスS[i]について、ペイロード(p)およびVs時刻の組み合わせは、出力ストリームのTDB表現における対応するイベントを位置特定するための鍵をなす。より正式な言い方では、組み合わせ(p,Vs)が、tdb(S,i)についての鍵をなす。たとえば、pがID情報および読みを含み、どの源も時間期間毎に高々一つの読みしか与えない場合、そのような属性が生じうる。後述するように、この制約は、入力ストリームを横断して対応するイベントをマッチさせることを容易にする。
第四の場合(場合R3)では、入力ストリームは今やadjust()要素を含めすべての型の要素を含む。さらに、この場合は、stable()要素に関するもののほかは、要素の順序に対して何の制約も課さない。場合R2と同様に、任意のストリーム・プレフィックスS[i]について、組み合わせ(p,Vs)が、出力ストリームにおける対応するイベントを位置特定するための鍵をなす。より正式な言い方では、組み合わせ(p,Vs)が、tdb(S,i)についての鍵をなす。
第五の場合(場合R4)では、第四の場合のすべての自由度を有しうる。加えて、この場合では、TDBはマルチ・セットである。つまり、同じペイロードおよび寿命をもつ二つ以上のイベントがあってもよい。
これらのストリーム・クラスは限定するものではなく、代表例である。他の環境は、入力ストリームの性質に依存して、異なる仕方で入力ストリームの諸セットの属性を範疇分けできる。
場合決定モジュール902は、どの制約が入力ストリームのコレクションに適用されうるかを決定する目的で、入力ストリームのコレクションを解析し、その特性を決定する機能を表す。場合決定モジュール902はこの決定を種々の仕方で行える。ある場合には、場合決定モジュール902は、たとえば、入力ストリームを生成する機能の特性を調べることにより、論理マージ・モジュール102が使用される処理環境の予備的解析の間に抽出される情報に依拠する。この予備的解析はコンパイル時にまたは他の任意の予備的機会に実行されることができる。たとえば、処理環境が、順序が乱れた入力ストリームを受け入れ、これらのストリームをバッファリングし、時間整列されたストリームを論理マージ・モジュール102に出力する並べ替えまたは浄化作用部を含む第一の例を考える。場合決定モジュール902は、この状況において入力ストリームが時間整列されたVs時刻を含むと想定することができる(上記の型の並べ替えまたは浄化作用部の存在のため)。
別の場合には、処理環境は、重複するタイムスタンプをもつ要素を論理マージ・モジュール102に出力する多値作用部を用いてもよい。それらの要素は決定論的な仕方で(たとえばセンサーID情報に基づいてなど)ランク付けされる。場合R1がこれらの入力ストリームに当てはまる。別の場合には、処理環境は重複するタイムスタンプをもつ要素を論理マージ・モジュール102に出力する作用部を用いていてもよいが、それらの要素は決定論的な順序をもたない。これらの入力ストリームには場合R2が当てはまる。
追加的または代替的に、場合決定モジュール902は、入力ストリームのコレクションの特徴のランタイム解析を実行することができる。代替的または追加的に、入力ストリームを供給する源は、入力ストリームに、その特徴を明らかにする情報を注釈付けすることができる。たとえば、各入力ストリームは、そのストリームが順序づけられているか、adjust()要素をもつか、重複するタイムスタンプをもつかなどを示す情報を公開することができる。
適用される場合(R0、R1など)の決定に基づいて、論理マージ・モジュール102は、入力ストリームの当該コレクションを処理する対応するアルゴリズムを選択することができる。つまり、場合R0については、論理マージ・モジュール102はR0アルゴリズムを選択する;場合R1については、論理マージ・モジュール102はR1アルゴリズムを選択するなどである。入力ストリームの制約された組を扱うためにコンテキスト固有のアルゴリズムを選ぶことは、論理マージ・モジュール102のパフォーマンスを改善するために有利でありうる。そのようなアルゴリズムは、適用可能な場合に関連付けられた、組み込まれた想定を利用することができるからである。あるいはまた、論理マージ・モジュール102は保守的なアプローチを取り、さまざまなレベルの制約をもつ入力ストリームのコレクション(たとえば、R0、R1、R2またはR3の制約を受ける入力ストリームのセット)を処理するために、場合R3のためのアルゴリズムのような、より汎用のアルゴリズムを使うことができる。
論理マージ・モジュール102自身は、それぞれの機能を実行するモジュールのコレクションを含むことができる(あるいは該コレクションを含むと概念化されることができる)。手始めに、要素パース・モジュール904が、入力ストリーム内の個々の要素を同定する。次いで論理マージ・モジュール102は、要素が受領されるにつれて入力ストリーム内の各要素に対して要素毎の処理を実行する。論理マージ・モジュール102はまた、処理を促進するために、要素の諸グループに対する処理を並行して実行することもできる。
要素型決定モジュール906は、各要素の型を同定する。ある例示的な実施形態では、一つの要素型は上記のinsert()要素である。この要素は、たとえばタイムスタンプVsにおいて新たな有効性期間を開始することによって、新たな出力情報を伝搬させるための命令を提供する。もう一つの要素型は、上記のadjust()要素である。この要素は、たとえば前の要素について新たなVeを供給することによって、前の要素によって付与される情報を調整する。もう一つの要素型は、上記のstable()要素である。この要素は、その時点より前では出力ストリームに対して(たとえばinsert()要素またはadjust()要素を使った)さらなる変更ができないような時刻をマークする進行マーカー情報を提供する。
要素処理モジュール908は、各要素について、出力ストリームにイベントを伝搬させるか否かを判定する。たとえば、insert()要素については、要素処理モジュール908は、挿入イベントを出力ストリームに加えることが適切かどうかを判定することができる。adjust()要素については、要素処理モジュール908は、出力ストリームに対して調整要素を加えることが適切であるかどうかを判定することができる。そしてstable()要素については、要素処理モジュール908は安定要素を出力ストリームに加えることが適切であるかどうかを判定できる。さらに、いくつかのアルゴリズムについては、入力ストリームに現れるある種の要素は、要素処理モジュール908に出力ストリームに対する他の調整をするよう促してもよい。たとえば、R3およびR4アルゴリズム(後述)の場合については、要素処理モジュール908は、入力ストリームにおいてstable()要素を受信したとき、ある種の状況では調整要素を出力ストリームに伝搬させることができる。この動作は、諸入力ストリームと出力ストリームとの間の論理的な適合性を保証するために実行される。
より一般には、要素処理モジュール908は、たとえば諸入力ストリームの諸TDBインスタンスにマッチするTDBインスタンスをもつ出力ストリームを生成することによって、入力ストリームのそれぞれの論理的なエッセンスを表現する出力ストリームを生成しようと試みる(ここで、諸入力ストリームの諸TDBインスタンスは等価と考えられる)。要素処理モジュール908は、任意の所与の時点までに受領されたストリーム要素に基づいてこの解析を動的に実行する。この解析は、たとえば要素が有限のVeを指定するときの硬制約;要素が開端のVeを指定するときの開端の制約;およびたとえばstable()要素が同定された時刻Vc前では出力ストリームの一部をさらなる変更を受けないとするときの閉鎖関係の制約を含む大量の複雑さと競合する。これらの複雑さは二つの一般的な課題を呈する。第一に、要素処理モジュール908は、入力ストリームのコレクションによってすでに課されている制約のいずれかと直接矛盾しない出力ストリームを形成することを求められる。たとえばここで、かかる矛盾は仮定ではなく、明白なものである。第二に、任意の所与のインスタンスにおいて、要素処理モジュール908は、「もし…だったら」という解析を実行することを求められる。これはすなわち、これまでに受領されたストリーム要素に関連する制約(および自由度)に鑑みて将来受領されることが考えられうるストリーム要素を考慮に入れる出力ストリームを形成することによる解析である。(これは、論理マージ・モジュール102の一般的なねらいが、最終的に諸入力ストリームの諸TDBインスタンスと等価になるTDBインスタンスを有する出力ストリームを生成することであるためである。)
状態管理モジュール910は、データ・ストア912内の一つまたは複数のデータ構造内に状態情報を記憶する。状態情報は、入力ストリームに関する情報と、場合によっては、出力ストリームに伝搬させられた情報を捕捉する。より具体的には、異なるアルゴリズムは、入力ストリームに適用される制約に依存して、異なる型の状態情報を維持する。たとえば、図12は、アルゴリズムR0、R1、R2およびR3によって使用されうるデータ構造をまとめている。見て取れるように、入力ストリームから制約が除去されると、状態管理モジュール910は記憶する状態情報の量を増す。図12に示されるデータ構造は、場合R0〜R4についてのアルゴリズムの説明のコンテキストにおいて、より詳細に記述することになる。
図10は、場合決定モジュール902の上記の動作をまとめた手順1000を示している。ブロック1002では、場合決定モジュール902は、入力ストリームを解析して、その特徴を決定する、特に、入力ストリームに一つまたは複数の制約が当てはまるかどうかを決定する。ブロック1004では、場合決定モジュール902はブロック1202において評価された制約に関連する場合を選択する。ブロック1006では、場合決定モジュール902は、論理マージ・モジュール102に、ブロック1004において決定された場合を扱うための特定のアルゴリズムを呼び出すよう命令する。
図11は、特定の要素に関して、図9に記載される論理マージ・モジュール102の動作をまとめた手順1100を示している。ブロック1102では、論理マージ・モジュール102は、考察対象の要素の型を決定する(たとえばinsert()要素、adjust()要素またはstable()要素)。ブロック1104では、論理マージ・モジュール102は、どの型の要素(単数または複数)が考察対象の要素に反応して出力ストリームに伝搬させられるかを決定する。たとえば、論理マージ・モジュール102は:(a)出力ストリームに対するいかなる情報も伝搬させることを控える;(b)たとえばinsert()要素を使って、新たな出力情報を伝搬させる;(c)たとえばadjust()要素を使って、前の出力情報を調整する;または(d)たとえばstable()要素を使って、(出力ストリーム中のいくつかのイベントを部分的または完全に凍結させる)進行マーカー情報を提供することがありうる。
図13〜図16は、場合R0、R1、R2およびR4をそれぞれ扱うための例示的なアルゴリズムを記述している。これらの図は、図12に示される対応するデータ構造を参照して説明される。さらに、これらのアルゴリズムは、二つの入力ストリームの処理に関して記述されるが、これらのアルゴリズムは、三つ以上の入力ストリームがあるシナリオにも適用できる。
場合R0についての論理マージ・アルゴリズム
R0の場合について、入力ストリームは、adjust()要素なしで、厳密に増加するVs値をもつ諸要素をもつ。よって、重複するタイムスタンプはない。この場合、状態管理モジュール910は二つの情報しか維持しない。第一に、状態管理モジュール910は、入力ストリームにおいて遭遇された最大Vs(MaxVs)を記憶する。第二に、状態管理モジュール910は、すべての入力ストリームを横断して見られる最大の安定なタイムスタンプ(MaxStable)を記憶する。
図13は、R0の場合を扱うアルゴリズムを示している。ステップ1302では、論理マージ・モジュール102はMaxVsおよびMaxStableの値を初期化する。
ステップ1304では、論理マージ・モジュール102は、実際に考察対象の要素がinsert()要素である場合にinsert()要素を処理する。すなわち、論理マージ・モジュール102はinsert()要素を、該要素のVsが支配的なMaxVsより大きければ、出力ストリームに伝搬させる。さらに、論理マージ・モジュール102は、MaxVsの値を、該要素のVs値に対応するよう更新する。そうでなければ(すなわち、VsがMaxVs値より大きくなければ)、論理マージ・モジュール102はこの要素を出力ストリームに伝搬させない。記号「s」は特定の入力ストリームに対応する識別子(たとえば整数)を表すことを注意しておく。
ステップ1306では、論理マージ・モジュール102は、実際に考察対象の要素がstable()要素である場合にstable()要素を扱う。すなわち、論理マージ・モジュール102はstable()要素を、そのタイムスタンプt(上記の例ではVcとも称される)がMaxStableより大きければ、出力する。
場合R1についての論理マージ・アルゴリズム
R1の場合について、入力ストリームは、adjust()要素なしで、非減少のVs値をもつ諸要素をもつ。ここでは、入力ストリームは重複するVsタイムスタンプをもつことがあるが、そのような要素は決定論的な順序で呈示される(たとえばペイロード中のあるフィールドでソートされる)。この場合、状態管理モジュール910は(場合R0についての)前記と同様、MaxVsおよびMaxStableを維持する。加えて、状態管理モジュール910は、各入力ストリームについてのカウンタ値をもつアレイを維持する。特定の入力ストリームについてのカウンタ値は、そのストリーム上のVs=MaxVsである要素の数を反映する。
図14は、R1の場合を扱うアルゴリズムを示している。ステップ1402では、論理マージ・モジュール102はMaxVsおよびMaxStableの値を初期化する。論理マージ・モジュール102はまた、カウンタのアレイの値をも初期化する。
ステップ1404では、論理マージ・モジュール102は、実際に考察対象の要素がinsert()要素である場合にinsert()要素を処理する。すなわち、論理マージ・モジュール102はinsert()要素のVs値がMaxVsの現在の値より大きければ、カウンタ値のアレイを0にリセットし、次いでMaxVsをVsに等しいと設定する。行8において、論理マージ・モジュール102は、ストリームs上のinsert()要素がsについてのカウンタを、すべてのストリームを横断する最大カウンタ値を超えて増大させるかどうかを判定する。もしそうであれば、論理マージ・モジュール102はinsert()要素を出力ストリームに伝搬させる。換言すれば、論理マージ・モジュール102は、挿入要素が同じVsを共有する可能な諸要素の決定論的に順序づけられたグループの新しい構成員を表す場合に、その挿入要素を出力する。たとえば、各ストリームが、各Vsについて、固定した順序で呈示される(たとえば三つの異なるセンサーIDに対応する)三つのinsert()要素を含むと想定する。さらに、解析における特定の点において、特定のストリームs上で第二の挿入要素が受領されたとする。論理マージ・モジュール102は、他のどのストリームもすでにこのVsについてのそれぞれの第二の要素を受領していない場合に、このinsert()要素を出力する。
ステップ1406では、論理マージ・モジュール102は、実際に考察対象の要素がstable()要素である場合にstable()要素を扱う。すなわち、論理マージ・モジュール102はstable()要素を、アルゴリズムR0と同じ仕方で扱う。
場合R2についての論理マージ・アルゴリズム
R2の場合について、入力ストリームは、adjust()要素なしで、非減少のVs値をもつ諸要素をもつ。さらに、入力ストリームは重複するVsタイムスタンプを有することがあり、この場合には、そのような要素は決定論的な順序で呈示される必要はない。この場合には、状態管理モジュール910は前記と同様にMaxVsおよびMaxStableを維持する。さらに、状態管理モジュール910は、ペイロード(p)を鍵としてもつルックアップテーブルを維持する。テーブル中の各エントリーは、特定のペイロード鍵(p)について、Vs=MaxVsとなる諸要素を記憶している。このデータ構造の図下については図12を参照されたい。
図15は、R2の場合を扱うアルゴリズムを示している。ステップ1502では、論理マージ・モジュール102はMaxVsおよびMaxStableの値を初期化する。論理マージ・モジュール102はまた、ルックアップテーブルを生成する。
ステップ1504では、論理マージ・モジュール102は、実際に考察対象の要素がinsert()要素である場合にinsert()要素の処理を開始する。すなわち、論理マージ・モジュール102はまず(要素内で指定されているペイロードpを鍵として使って)ルックアップテーブルを参照する。テーブルが、ペイロードとVsのその特定の組み合わせがすでに存在する(他の何らかのストリームから受領されたため)ことを示す場合には、論理マージ・モジュール102はそれ以上のアクションは実行しない。それ以外の場合には、論理マージ・モジュール102はルックアップテーブルを更新し、挿入要素を出力する。
ステップ1506では、論理マージ・モジュール102は、VsをMaxVsを超えて大きくする要素に遭遇する場合、ルックアップ・テーブルをクリアする。論理マージ・モジュール102はまた、MaxVsへの値を、Vsに対応するよう更新する。
ステップ1508では、論理マージ・モジュール102は、実際に考察対象の要素がstable()要素である場合にstable()要素を扱う。すなわち、論理マージ・モジュール102はstable()要素を、前記と同じ仕方で扱う。
場合R3についての論理マージ・アルゴリズム
R3の場合については、入力ストリーム内の要素は今度は、insert()要素、adjust()要素およびstable()要素を含む任意の型の要素を含むことができる。さらに、これらの要素は任意の時間的順序で呈示されることができる。残る制約として、R3についてのアルゴリズムは、Vsとペイロード(p)の組み合わせが、出力ストリーム中の対応するエントリーを決定するための鍵のはたらきをしうる。より具体的には、図12に示されるように、状態管理モジュール910は、鍵(Vs,ペイロード)によってエントリーにインデックス付けするマスター・データ構造を維持することができる。各エントリーはイベント(e)(たとえばVsおよびペイロード)および各入力ストリームsについて、鍵sによってインデックス付けされたそのストリームについての現在のVeを含む小さなルックアップテーブルからなる。ルックアップテーブルは、(出力ストリームに伝搬させられた出力イベントに関連付けられた)出力Veを提供する鍵αをもつエントリー(OutVe)をも含む。
図16は、R3の場合を扱うアルゴリズムを示している。ステップ1602では、論理マージ・モジュール102はMaxVsおよびMaxStableの値を初期化する。論理マージ・モジュール102はまた、マスター・データ構造を生成する。ある場合には、論理マージ・モジュール102は、該マスター・データ構造を実装するために赤黒木(red-black tree)を生成することができる。
ステップ1604では、論理マージ・モジュール102は、実際に考察対象の要素がinsert()要素である場合にinsert()要素の処理を開始する。すなわち、論理マージ・モジュール102は考察対象のinsert()要素に関連する同じ(Vs,ペイロード)をもつエントリーを見出すためにマスター・データ構造のルックアップを実行する。マスター・データ構造にそのようなエントリーが存在しない場合には、論理マージ・モジュール102は当該エントリーを加え、出力を生成する。エントリー(Vs,ペイロード)に関連するルックアップテーブルにおいて、論理マージ・モジュール102はストリームsについておよび出力ストリームに伝搬させられた出力についてのVeエントリーを加える。しかしながら、論理マージ・モジュール102は、(行6で評価されるところにより)VsがMaxStableより小さいと判定される場合には、この更新動作を実行しない。これは、対応するエントリーがマスター・データ構造に前に存在していたがその後除去されたことを示す。
ブロック1606では、マスター・データ構造中に特定の鍵(ペイロード,Vs)についてエントリーがすでに存在していれば、論理マージ・モジュール102は適切な仕方でこのエントリーについてルックアップテーブルを更新する。
ブロック1608では、論理マージ・モジュール102は、実際に考察対象の要素がadjust()要素である場合にadjust()要素を処理する。すなわち、マスター・データ構造中にadjust()要素において指定されている特定の鍵(ペイロード,Vs)についてエントリーがすでに存在していれば、論理マージ・モジュール102はこのエントリーについてルックアップテーブルを更新する。あるポリシー選択によれば、ブロック1608は、いかなる状況でもいかなるadjust()要素を伝搬させることも含まない。
ブロック1610では、論理マージ・モジュール102は、実際に考察対象の要素がstable()要素である場合にstable()要素を処理する。行18において示されるように、論理マージ・モジュール102は、タイムスタンプtがMaxStableより大きいのでない限り、いかなるアクションも実行することなく復帰する。この条件が満たされる場合には、論理マージ・モジュール102はまず、マスター・データ構造において、stable()要素の伝搬の結果として半分凍結されることになるエントリーを見出す。すなわち、これらはstable()要素のタイムスタンプより小さなVs値をもつエントリーである。そのような各エントリーについて、論理マージ・モジュール102は、入力と出力との間のミスマッチがあるインスタンスを決定する。その場合、stable()要素が出力ストリームに伝搬させられたら、適合性違反が起こるであろう。
より具体的には、ある実装では、論理マージ・モジュール102は適合性違反が起こる三つの状況を考慮する。第一の場合には、ストリームsには(Vs,ペイロード)について何の入力イベントもないが、(他の何らかの入力ストリームの寄与のため)出力イベントはある。第二の場合には、現在出力されるイベントはstable()要素eの伝搬のために完全に凍結されることになるが、対応する入力は完全には凍結されない。第三の場合には、入力イベントは完全に凍結されることになるが、現在の出力は完全には凍結されない。これらの場合すべてにおいて、ある可能なポリシーによれば、論理マージ・モジュール102は、入力にマッチするよう出力を調整する(これは行24〜27で行われる)。この動作は、適切なadjust()要素を出力ストリームに伝搬させ、マスター・データ構造をしかるべく更新することによって実行される。
さらに、行28〜29では、入力が完全に凍結した場合、論理マージ・モジュール102は、マスター・データ構造から対応するエントリーを削除することができる。最後に、行30〜31では、論理マージ・モジュール102はMaxStableの値を更新し、stable()要素を出力する。
まとめると、ブロック1610は、考察対象のstable()要素の伝搬が、入力ストリームと出力ストリームとの間の将来の論理的な不適合を引き起こさないことを保証するために出力ストリームを修正することを含む。そうすれば、論理マージ・モジュール102は安全にstable()要素を出力できる。
場合R4についての論理マージ・アルゴリズム
R4の場合についてのデータ・ストリームは場合3と同じすべての自由度をもつ。だが今や、データ・ストリーム中の複数の要素が、異なるVe値をもつ同じ(Vs,ペイロード)をもつことができる。さらに、入力ストリームは重複するエントリーを含むことができる。この状況に対処するため、R3の場合についてのマスター・データ構造は、種々のVe値の存在を考慮に入れるよう修正されることができる。マスター・データ構造中の特定の(ペイロード,Vs)エントリーに関連付けられたルックアップテーブルを考える。あるエントリーについてのVeの単一の値(R3の場合に与えられるような)は今や、その入力ストリーム中のその(Vs,ペイロード)組み合わせについての、カウントとともに、遭遇した一意的なVe値に基づいてインデックス付けされる小さなVeデータ構造で置き換えられる。
R3アルゴリズムの場合と同様に、R4アルゴリズムはstable()要素を出力する前に(調整要素を使って)出力ストリームを修正してもよい。それにより、入力ストリームと出力ストリームとの間の将来の不適合を避けるためである。だが、論理マージ・モジュール102は今や、その修正を、より複雑な考察に基づかせる。
たとえば、第一の考察によれば、論理マージ・モジュール102は、出力ストリームが、特定の(Vs,ペイロード)について、高々、その(Vs,ペイロード)について任意の入力ストリーム中のイベントの最大数のイベントしか含まないことを保証しようと試みる。この条件は、必須ではないが、出力の饒舌さを制限するために望ましいことがある。
第二の考察によれば、はいってくるstable()要素が何らかのVsより大きなタイムスタンプをもつ(よってVsは半分凍結される)場合、論理マージ・モジュール102は、半分凍結される入力中の各(Vs,ペイロード)組み合わせについて、入力中と厳密に同数の、(Vs,ペイロード)のある値をもつ出力イベントがあることを保証しようと試みる。このタスクを実行するために、論理マージ・モジュール102は、その(Vs,ペイロード)組み合わせについて新たな出力要素を生成する、あるいは以前の出力要素を「取り消す」ことがある。
第三の考察によれば、特定の(Vs,ペイロード)について、はいってくるstable()要素の結果として何らかのVeが完全に凍結した場合、論理マージ・モジュール102は、出力ストリームが、stable()要素を伝搬させる前のその(Vs,ペイロード,Ve)と同数のイベントを含むことを保証しようと試みる。対応するVsがすでに半分凍結されている場合には、このプロセスは単に、同じ(Vs,ペイロード)をもつ先に出力されたイベントのVeを調整することを含む。
第四の考察によれば、特定の(Vs,ペイロード)について、stable()タイムスタンプがVeデータ構造中の最大Veを超えて動くとき、論理マージ・モジュール102は、データ構造から対応する(Vs,ペイロード)エントリーを削除することができる。
上記のように、論理マージ・モジュール102は、ある種の状況では、要素を出力ストリームに伝搬させるときに、どのアクションを取るかを決定することにおいて、ポリシーに従ってもよい。異なる環境は、異なるそれぞれの考察に基づいて異なるポリシーを採用することができる。上記のように、多くのポリシーは、饒舌さ(出力ストリームに伝搬される情報の量)とレイテンシー(入力ストリーム中の情報が出力ストリームに伝搬させられる適時性)との間の特定のトレードオフを採用する。低レイテンシーを生ずるためには、ポリシーは、要素が受領されるとすぐに、たとえ該要素が不完全な情報を含んでいたりまたは後刻修正される必要があるかもしれなくても、該要素を伝搬させることを選んでもよい。饒舌さを低減するには、ポリシーは、要素の伝搬をさまざまな度合いで抑制することを望むことがありうる。
たとえば、R3アルゴリズムにおいてadjust()要素を処理するときに(たとえばステップ1608において)論理マージ・モジュール102によって採用されるポリシーを考える。論理マージ・モジュール102は、adjust()イベントを決して出力しないよう構成される。論理マージ・モジュール102は、stable()要素を処理するときにのみ、出力するストリームが入力ストリームに適合することを保証する。
だがこのポリシーはさまざまな仕方で修正されることができる。別の場合には、論理マージ・モジュール102は、出力ストリームにおいてあらゆるadjust()要素を反映することができる。この選択は、上記のポリシーに比べればより「饒舌な」出力ストリームを生じる。だが、この選択はまた、下流の消費者が、自ら選ぶなら、そのような変化をより早期に受け入れ、処理することをも許容する。別の選択肢では、論理マージ・モジュール102は、特定の入力ストリーム、たとえば現在の最大のstable()タイムスタンプをもつストリーム(先導ストリーム(leading stream)と称される)に「追随する」ことができる。この選択はアルゴリズムを単純化し、ある入力ストリームが他よりも進む傾向があるときに適切となりうる。しかしながら、先導ストリームが頻繁に変化する場合には、このポリシーは出力を再調整することにおいて有意なオーバーヘッドを被ることがある。
次に、論理マージ・モジュール102がR3アルゴリズム内で行10において実行する処理を考える。この時点では、特定のVsについての第一のinsert()要素を処理するとき、論理マージ・モジュール102はそれを出力ストリームにすぐ伝搬させる。このポリシーは、出力が最大の応答性を保証する。だがこのポリシーは、他のポリシー目的にかなうようさまざまな仕方で修正されることができる。
たとえば、別の場合には、論理マージ・モジュール102は、insert()要素を、それが最大stable()タイムスタンプをもつまたは最大数の未凍結要素を有する入力ストリームによって生成される場合にのみ出力することができる。別の場合には、論理マージ・モジュール102は、要素を出力として送るのを、該要素が何らかの入力ストリーム上で半分凍結されるまで避けることができる。このポリシーは、論理マージ・モジュール102が、より高いレイテンシーを代償として、決して、出力上に置かれている要素を完全に除去しないことを保証する。別の場合には、論理マージ・モジュール102は、入力ストリームの何らかの部分が各Vsについての要素を生成するまで待ってからその要素を出力に送ることによって、ハイブリッド選択を採用することができる。諸入力ストリームが物理的に異なっている場合、このポリシーは、のちに完全に削除される必要があるスプリアスの出力を生成する可能性を減らしうる。
このセクションの最後のトピックとして、上記のアルゴリズムは、たとえば入力ストリームの破損または他の任意の現象によって引き起こされる、入力ストリーム中の要素欠損に対して耐性があることを注意しておく。たとえば、場合R0、R1およびR2についてのアルゴリズムは、何らかのストリームs中で欠けている要素を、ストリームsがより高いVsをもつ要素を送達する前に他の何らかのストリームがその欠けている要素を論理マージ・モジュール102に送達するならば、出力することができる。場合R3およびR4についてのアルゴリズムは、要素eを、MaxStableを(その要素についての)Vsを超えて増大させるストリームが要素eを生じるならば、出力する。
C.論理マージ・モジュールの例示的な応用
セクションAに記されるように、異なる環境は、異なる応用のために論理マージ・モジュール102を使うことができる。本セクションは、例示的な応用の網羅的ではないコレクションを記述する。
図17を考える。ここで、任意の型のホスト環境1702が、参照の簡単のため単数形で論理マージ・モジュール1704と称される、一つまたは複数の論理マージ・モジュールを含む。論理マージ・モジュール1704は、複数のそれぞれのユニット(たとえば、ユニット1706、1708および1710)から複数の入力ストリームを受領する。ある場合には、ユニット(1706、1708、1710)はコンピューティング機械(または単一の機械内の別個のプロセス)に対応してもよい。論理マージ・モジュール1704は次いで、各入力ストリームに論理的に適合する出力ストリームを生成する。
高い可用性。第一の応用では、環境1702は論理マージ・モジュール1704を高い可用性を保証するために使ってもよい。たとえば、出力ストリームを生成するために連続的な問い合わせが長い処理窓に依拠する場合を考える。したがって、障害時にそのような連続的な問い合わせを再開始するためには、対応して長い時間がかかることになる。この問題に対処するため、環境1702は、連続的な問い合わせの冗長なコピーを種々のユニット(1706、1708、1710)上にインストールすることができる。その各ユニットが、入力ストリームを論理マージ・モジュール1704に提供する。すると、環境1702は、特定の時点において障害を起こしていないいずれか任意の入力ストリームから結果を引き出すために論理マージ・モジュール1704を適用することができる。これは、n個の入力ストリーム中のn−1個までが障害を起こした場合を受け入れられる。さらに、環境1702は、ひとたび連続的な問い合わせが(後述する仕方で)再開始されたまたは新たに導入された後に適正に「スピンアップ」したら、新たな入力ストリームを組み込むために、論理マージ・モジュール1704を使うことができる。
もう一つの応用では、ユニット(1706、1708、1710)は、環境1702からリモートに位置され、そのストリームを任意の型のネットワーク(インターネットなど)を介して送達する機械を表していてもよい。その場合、環境1702は、一つまたは複数の入力ストリームにおける遅延または他の劣化を引き起こしうるネットワーク輻輳の効果を軽減するために論理マージ・モジュール1704に依拠することができる。上記の場合と同様、論理マージ・モジュール1704は、満足のいくパフォーマンスを示す一つまたは複数の入力ストリームから選択的に要素を引き出すことによってこのタスクを実行できる。
速い可用性。もう一つの応用では、環境1702は、速い可用性を保証するために、すなわち、消費者ができるだけ早く出力結果を得られるようにすることによって、論理マージ・モジュール1704を使ってもよい。この目的を達成するために、環境1702は、ユニット(1706、1708、1710)上に異なる(だが意味的には等価な)問い合わせプランをインストールすることができる。すると、環境1702は、任意の特定の時点において最も適時の結果を提供しつつある任意のユニット(単数または複数)から結果を引き出すために論理マージ・モジュール1704を使うことができる。種々の問い合わせプランは、無数の環境固有の理由のために、他の問い合わせプランより満足のいくパフォーマンスを示すことがありうる。たとえば、特定の問い合わせプランは、別の問い合わせプランに比べて、特定の型のデータセットを処理するためにより好適であることがある。代替的または追加的に、特定の問い合わせプランを実行するユニットは、たとえば資源競合問題および/または種々の仕方でユニットに影響する他の処理遅延のために、他のユニットよりもよいパフォーマンスを提供することがある。
ある可用性基準(たとえば高い可用性)を満たそうと試みる環境が別の可用性基準(たとえば速い可用性)をも満たすこともあることを注意しておく。速い可用性についての上記の戦略は、問い合わせ最適化のために、すなわち、任意の所与の時点において一つまたは複数のパフォーマンス目的の観点で最も望ましい結果を与える問い合わせプランを選択することによって、使用されることもできる。
プラン早送り(Plan Fast-Forward)。さまざまな因子のため、ある問い合わせプランが他の問い合わせプランより遅れることがありうる。これが起こる場合、環境1702は、この遅れる問い合わせプランによって生成される出力ストリームの効果的な使用ができず、その仕事が事実上無駄になる。この状況に対処するため、環境1702は、遅れる問い合わせプランを他の問い合わせプランに対して最新(up-to-date)にするのを助けるフィードバック・モジュール1712を含むことができる。動作では、論理マージ・モジュール1704は、フィードバック・モジュール1712に、一つまたは複数の出力ストリームが、たとえば他のストリームの結果より遅れており、よって他のストリームによってすでに供給されている古びた情報を提供しているため、有用な結果を提供していないと通知することができる。応答して、フィードバック・モジュール1712は、基準に満たないパフォーマンスのプラン(単数または複数)を実行しているユニット(単数または複数)にフィードバック情報を送ることができる。ある場合には、指定された時刻tより前の動作が論理マージ・モジュール1704によって必要とされていないことをユニット(単数または複数)に知らせることができる。追加的または代替的に、フィードバック・モジュール1712は、より満足のいくパフォーマンスを発揮しているプランの状態に関する情報を伝達することができる。フィードバック情報を受領したら、ユニットはさまざまな形の是正アクションを実行することができる。たとえば、役に立たない(古びた)状態情報をパージする、より適時の状態情報を組み込む、役に立たない処理動作を放棄する、より現在の処理動作にジャンプするなどである。
より一般には、「上流」の作用部がフィードバック情報に反応することを選ぶ仕方は、それが実行する特定の機能の性質に依存してもよい。ある実装では、フィードバック情報を受領する任意の作用部がフィードバック情報を問い合わせ処理フローにおけるさらに上流の一つまたは複数の作用部に伝搬させることができる。
問い合わせジャンプスタート。もう一つの応用では、環境1702は、新たな入力ストリームを生成する新たな連続的な問い合わせの導入を容易にするために論理マージ・モジュール102を使ってもよい。たとえば、図17において、連続的な問い合わせの新たなインスタンスを実行するために新たなユニット1714が導入されるとする。上記のように、いくつかの連続的な問い合わせは、消費のために有望な結果を生じることができる前に、比較的長い時間期間にわたって状態情報を蓄積することによって動作する。この問題に対処するため、環境1702は、たとえばディスク上に記憶されたまたは当該問い合わせの別の実行中のコピーによって提供されるチェックポイント情報に基づいて、新たに導入された連続的な問い合わせの問い合わせ状態に「シードを与える」ことができる。すると、環境1702は、新たに導入されたストリームを進行中の他のストリームとシームレスにマージするために、論理マージ・モジュール1704を適用して、新たに導入されたストリームの出力をできるだけ早く消費のために利用可能にすることができる。
問い合わせカットオーバー。もう一つの応用では、環境1702は、ある問い合わせインスタンスから新たにインスタンス化された問い合わせインスタンス(同じ問い合わせプランまたは異なる問い合わせプランを表す)に効率的に「カットオーバー」するために論理マージ・モジュール1704を適用することができる。環境は、問い合わせ最適化を容易にするためにこのタスクを実行することができる。たとえば、クラウド・コンピューティング環境は、作業負荷条件に基づいて実行中の問い合わせを移行する(migrate)ためにそのようなカットオーバー機構を用いてもよい。
より一般には、上記のさまざまな応用は、ストリームの導入または除去に関わる。論理マージ・モジュール1704は、これらのタスクを容易にするための適切な機構を含むことができる。たとえば、ストリームが論理マージ・モジュール1704への入力として除去されるとき、論理マージ・モジュールはそのストリームを、去ったものとしてマークすることができる。(場合R0〜R4についての)上記のアルゴリズムは最終的には、除去されたストリームはもはや考慮しない。
ジョインする(joining)ためには、ジョインするストリームは、tから始まるあらゆる点(すなわちVe≧tである出力中のあらゆるイベント)について有望な出力を生成することが保証されるようなタイムスタンプtを提供する。論理マージ・モジュール1704は、MaxStableがtに達したらすぐ、ストリームに、「ジョインされた」とマークすることができる。というのも、この点以降は、論理マージ・モジュール1704は他のすべてのストリームの同時の障害または除去に耐えることができるからである。
図18は、上記の選択された応用をまとめる手順1800である。ブロック1802では、論理マージ・モジュール1704は二つ以上のストリームを任意のそれぞれの源から受領する。ブロック1804では、論理マージ・モジュール1704は、入力ストリームに対して一つまたは複数の応用固有の処理を実行する。そのような応用は、高い可用性および/または速い可用性を保証するために入力ストリームのうちから選択すること、ストリームの導入または除去を容易にすること、基準に達しないパフォーマンスのストリームの存在をフィードバック・モジュール1712に通知すること(それに際してフィードバック・モジュール1712はフィードバック情報を適切な源に送ることができる)、などを含むことができる。
D.代表的なコンピューティング機能
図19は、上記の機能の任意の側面を実装するために使用できる例示的なコンピューティング機能1900を記載している。たとえば、コンピューティング機能1900は、図1の論理マージ・モジュール102の任意の側面を実装するために使用できる。ある場合には、コンピューティング機能1900は、一つまたは複数の処理装置を含む任意の型のコンピューティング装置に対応してもよい。コンピューティング装置は任意的に、そのようなコンピューティング装置のクラスターの構成員であってもよい。
コンピューティング機能1900は、RAM 1902およびROM 1904のような揮発性および不揮発性のメモリならびに処理装置1906(たとえば一つまたは複数のCPUおよび/または一つまたは複数のGPUなど)を含むことができる。コンピューティング機能1900はまた、任意的に、ハードディスク・モジュール、任意的なディスク・モジュールなどといったさまざまな媒体装置1908を含む。コンピューティング機能1900は、処理装置(単数または複数)1906がメモリ(たとえばRAM 1902、ROM 1904または他の場所)によって維持されている命令を実行するときに上記で同定された様々な処理を実行することができる。
より一般には、命令および他の情報は、静的メモリ記憶装置、磁気記憶装置、光学式記憶装置などを含むがこれに限られない任意のコンピュータ可読媒体1910上に記憶されることができる。コンピュータ可読媒体の用語は、複数の記憶装置をも包含する。すべての場合において、コンピュータ可読媒体1910は何らかの形の物理的および有体なエンティティを表す。
コンピューティング機能1900はまた、さまざまな入力を(入力モジュール1914を介して)受領し、(出力モジュールを介して)さまざまな出力を提供する入出力モジュール1912をも含む。ある特定の出力機構は、呈示モジュール1916および関連するグラフィカル・ユーザー・インターフェース(GUI)1918を含んでいてもよい。コンピューティング機能1900はまた、一つまたは複数の通信導路1922を介して他の装置とデータを交換するための一つまたは複数のネットワーク・インターフェース1920をも含むことができる。一つまたは複数の通信バス1924が上記のコンポーネントを通信上、一緒に結合する。
通信導路(単数または複数)1922は任意の仕方で、たとえばローカル・エリア・ネットワーク、広域ネットワーク(たとえばインターネット)などまたはその任意の組み合わせによって、実装されることができる。通信導路1922は、任意のプロトコルまたはプロトコルの組み合わせによって支配される、固定構成のリンク、無線リンク、ルータ、ゲートウェイ機能、名前サーバーなどの任意の組み合わせを含むことができる。
代替的または追加的に、セクションA〜Cにおいて記述した機能の任意のものは、少なくとも部分的には、一つまたは複数のハードウェア論理コンポーネントによって実行されることができる。たとえば、限定するものではないが、使用できるハードウェア論理コンポーネントの例示的な型は、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準プロダクト(ASSP)、システムオンチップ・システム(SOC)、コンプレックス・プログラマブル論理デバイス(CPLD)などを含む。
締めくくりに、本記述は、例示的な課題または問題のコンテキストにおいてさまざまな概念を記述してきた。このような説明法は、本稿で特定されている仕方でそれらの課題または問題を他者が認識したおよび/または明言したという自認をなすものではない。
主題について構造的な特徴および/または方法論的な工程に固有の言葉で記述してきたが、付属の請求項において定義される主題は必ずしも上記の特定の特徴または工程に限定されるものではないことは理解しておくものとする。むしろ、上記の特定の特徴および工程は請求項を実装する例示的な形として開示されているのである。
いくつかの態様を記載しておく。
〔態様1〕
データのストリームをマージするための、物理的かつ有体なコンピューティング機能によって実装される方法であって:
複数の物理的に相違する入力ストリームをそれぞれの源から受領する段階と;
論理マージ・モジュールを使って、各入力ストリームと論理的に適合する出力ストリームを生成する段階とを含む、
方法。
〔態様2〕
各入力ストリーム中の各要素について:
前記要素の型を評価する段階と;
前記要素に応答して取るべき出力アクションを決定する段階であって、前記出力アクションは:
前記出力ストリームに何の寄与も提供しないこと;
前記出力ストリームに新たな出力情報を提供すること;
前記出力ストリーム中の前の出力情報を調整すること;および
前記出力ストリームに進行マーカー情報を提供すること、のうちから選択される、段階と;
前記論理マージ・モジュールに関連付けられた状態を調整する段階とをさらに含む、
態様1記載の方法。
〔態様3〕
前記論理マージ・モジュールが、前記決定する段階および前記調整する段階を実行するために、複数のアルゴリズムのうちから選択されるアルゴリズムを適用し、前記複数のアルゴリズムは前記複数の入力ストリームに関連付けられる制約のさまざまな個別のレベルに関連付けられている、態様2記載の方法。
〔態様4〕
前記入力ストリームが複数の個別のユニットから発し、前記ユニットが同じ連続的な問い合わせを実装する、態様1記載の方法。
〔態様5〕
前記複数の個別のユニットが異なるそれぞれの問い合わせプランを使って前記連続的な問い合わせを実行する、態様4記載の方法。
〔態様6〕
前記複数のユニットのうちの少なくとも一つがその動作を先に進めることができるようにするため、前記複数のユニットのうちの前記少なくとも一つにフィードバック情報を送る段階をさらに含む、態様4記載の方法。
〔態様7〕
任意の所与の時点において少なくとも一つの障害を起こしていない入力ストリームから選択することによって、前記出力ストリームが前記論理マージ・モジュールによって生成されて、高い可用性を提供する、態様1記載の方法。
〔態様8〕
任意の所与の時点において少なくとも一つの適時の入力ストリームから選択することによって、前記出力ストリームが前記論理マージ・モジュールによって生成されて、速い可用性を提供する、態様1記載の方法。
〔態様9〕
ストリームを処理するための、物理的かつ有体なコンピューティング機能によって実装される論理マージ・モジュールであって:
複数の物理的に相違する入力ストリーム中の諸要素をパースする要素パース・モジュールと;
前記要素パース・モジュールによって同定された各要素の型を評価する要素型判別モジュールと;
出力ストリームを生成するために、同定された各要素に応答して取るべき出力アクションを決定する要素処理モジュールであって、前記出力アクションは:
前記出力ストリームに何の寄与も提供しないこと;
前記出力ストリームに新たな出力情報を提供すること;
前記出力ストリーム中の前の出力情報を調整すること;および
前記出力ストリームに進行マーカー情報を提供すること、のうちから選択される、要素処理モジュールと;
前記論理マージ・モジュールに関連付けられた状態を調整する状態管理モジュールとを有しており、
前記要素処理モジュールによって生成される前記出力ストリームは、前記複数の入力ストリームのそれぞれと論理的に適合する、
論理マージ・モジュール。
〔態様10〕
一つまたは複数の処理装置によって実行されたときに論理マージ・モジュールを提供するコンピュータ可読命令を記憶しているコンピュータ可読記憶媒体であって、前記コンピュータ可読命令は:
複数の物理的に相違する入力ストリームを、同じ連続的な問い合わせを実行するそれぞれの源から受領する論理と;
論理マージ作用部を使って、各入力ストリームのTDB表現と論理的に等価な時間的データベース(TDB)表現をもつ出力ストリームを生成する論理とを含む、
コンピュータ可読記憶媒体。

Claims (10)

  1. データのストリームをマージするための、コンピュータによって実行される方法であって:
    複数の物理的に相違する入力ストリームをそれぞれの源から受領手段によって受領する段階と;
    前記複数の入力ストリーム中の諸要素をパース手段によってパースして同定する段階と;
    論理マージ・モジュールを使って、各入力ストリームと論理的に適合する出力ストリームを生成する段階であって、前記論理マージ・モジュールが:
    前記同定された要素を要素受領手段によって受領し;
    前記複数の入力ストリームに関連付けられる制約のさまざまな個別のレベルに関連付けられている複数のアルゴリズムのうちから選択されたアルゴリズムの指示をアルゴリズム指示受領手段によって受領し;
    前記選択されたアルゴリズムをアルゴリズム適用手段によって適用して、同定された各要素に応答して取るべき出力アクションを決定する、
    段階とを含み、
    前記出力アクションは:
    前記出力ストリームに何の寄与も提供しないこと;
    前記出力ストリームに新たな出力情報を提供すること;
    前記出力ストリーム中の前の出力情報を調整すること;および
    前記出力ストリームに進行マーカー情報を提供すること、のうちから選択される、方法。
  2. 記論理マージ・モジュールに関連付けられた状態を調整手段によって調整する段階をさらに含む、
    請求項1記載の方法。
  3. 場合決定モジュールの解析手段によって、前記入力ストリームを解析して前記入力ストリームに関連付けられた一つまたは複数の制約を判別する段階と;
    前記場合決定モジュールの選択手段によって、前記一つまたは複数の制約に関連付けられた場合を選択する段階と;
    前記場合決定モジュールの提供手段によって、前記場合に基づく特定のアルゴリズムの指示を前記論理マージ・モジュールに提供する段階とをさらに含む、
    請求項1または2記載の方法。
  4. 前記入力ストリームが複数の個別のユニットから発し、前記ユニットが同じ連続的な問い合わせを実装する、請求項1記載の方法。
  5. 前記複数の個別のユニットが異なるそれぞれの問い合わせプランを使って前記連続的な問い合わせを実行する、請求項4記載の方法。
  6. 前記複数のユニットのうちの少なくとも一つがその動作を先に進めることができるようにするため、前記複数のユニットのうちの前記少なくとも一つにフィードバック情報を送る段階をさらに含む、請求項4記載の方法。
  7. 任意の所与の時点において少なくとも一つの障害を起こしていない入力ストリームから選択することによって、前記出力ストリームが前記論理マージ・モジュールによって生成されて、高い可用性を提供する、請求項1記載の方法。
  8. 任意の所与の時点において少なくとも一つの適時の入力ストリームから選択することによって、前記出力ストリームが前記論理マージ・モジュールによって生成されて、速い可用性を提供する、請求項1記載の方法。
  9. ストリームを処理するための、物理的かつ有体なコンピューティング資源によって実装される論理マージ・モジュールであって:
    複数の物理的に相違する入力ストリーム中の諸要素をパースする要素パース・モジュールと;
    前記要素パース・モジュールによって同定された各要素の型を評価する要素型判別モジュールと;
    前記複数の入力ストリームのそれぞれと論理的に適合する出力ストリームを生成するために、同定された各要素に応答して取るべき出力アクションを決定する要素処理モジュールであって、前記出力アクションは:
    前記出力ストリームに何の寄与も提供しないこと;
    前記出力ストリームに新たな出力情報を提供すること;
    前記出力ストリーム中の前の出力情報を調整すること;および
    前記出力ストリームに進行マーカー情報を提供すること、のうちから選択される、要素処理モジュールと;
    前記論理マージ・モジュールに関連付けられた状態を調整する状態管理モジュールとを有しており、
    前記要素処理モジュールは、前記複数の入力ストリームに関連付けられる制約のさまざまな個別のレベルに関連付けられている複数のアルゴリズムのうちから選択されたアルゴリズムを適用する、
    論理マージ・モジュール。
  10. 一つまたは複数の処理装置に:
    複数の物理的に相違する入力ストリームを、同じ連続的な問い合わせを実行するそれぞれの源から受領手段によって受領する段階と;
    前記複数の入力ストリーム中の諸要素をパース手段によってパースして同定する段階と;
    各入力ストリームと論理的に適合する出力ストリームを生成する段階であって、前記出力ストリームを生成する段階が:
    前記同定された要素を要素受領手段によって受領し;
    前記複数の入力ストリームに関連付けられる制約のさまざまな個別のレベルに関連付けられている複数のアルゴリズムのうちから選択されたアルゴリズムの指示をアルゴリズム指示受領手段によって受領し;
    前記選択されたアルゴリズムをアルゴリズム適用手段によって適用して、同定された各要素に応答して取るべき出力アクションを決定する、
    段階とを実行させるためのコンピュータ・プログラムであって、前記出力アクションは:
    前記出力ストリームに何の寄与も提供しないこと;
    前記出力ストリームに新たな出力情報を提供すること;
    前記出力ストリーム中の前の出力情報を調整すること;および
    前記出力ストリームに進行マーカー情報を提供すること、のうちから選択される、コンピュータ・プログラム。
JP2014515928A 2011-06-17 2012-06-13 物理的に相違する複数のストリームに対する効率的な論理マージ Active JP6096182B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/162,973 2011-06-17
US13/162,973 US9965520B2 (en) 2011-06-17 2011-06-17 Efficient logical merging over physically divergent streams
PCT/US2012/042105 WO2012174023A2 (en) 2011-06-17 2012-06-13 Efficient logical merging over physically divergent streams

Publications (3)

Publication Number Publication Date
JP2014524175A JP2014524175A (ja) 2014-09-18
JP2014524175A5 JP2014524175A5 (ja) 2015-07-09
JP6096182B2 true JP6096182B2 (ja) 2017-03-15

Family

ID=47354822

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014515928A Active JP6096182B2 (ja) 2011-06-17 2012-06-13 物理的に相違する複数のストリームに対する効率的な論理マージ

Country Status (11)

Country Link
US (1) US9965520B2 (ja)
EP (1) EP2721511A4 (ja)
JP (1) JP6096182B2 (ja)
KR (1) KR101960985B1 (ja)
CN (1) CN103620584B (ja)
AU (1) AU2012271776B2 (ja)
BR (1) BR112013032186A2 (ja)
CA (1) CA2838966C (ja)
MX (1) MX2013015009A (ja)
RU (1) RU2608474C2 (ja)
WO (1) WO2012174023A2 (ja)

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8676841B2 (en) 2008-08-29 2014-03-18 Oracle International Corporation Detection of recurring non-occurrences of events using pattern matching
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
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
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)
US9148495B2 (en) 2011-07-26 2015-09-29 International Business Machines Corporation Dynamic runtime choosing of processing communication methods
US8990452B2 (en) 2011-07-26 2015-03-24 International Business Machines Corporation Dynamic reduction of stream backpressure
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
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9563663B2 (en) 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
US9262479B2 (en) * 2012-09-28 2016-02-16 Oracle International Corporation Join operations for continuous queries over archived views
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
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
JP6201417B2 (ja) * 2013-05-17 2017-09-27 富士通株式会社 データ抽出プログラム、データ抽出方法およびデータ抽出装置
US9418113B2 (en) 2013-05-30 2016-08-16 Oracle International Corporation Value based windows on relations in continuous data streams
US9130831B2 (en) * 2013-11-07 2015-09-08 International Business Machines Corporation Streaming state data for cloud management
US9934279B2 (en) * 2013-12-05 2018-04-03 Oracle International Corporation Pattern matching across multiple input data streams
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
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
US9632846B2 (en) 2015-04-02 2017-04-25 Microsoft Technology Licensing, Llc Complex event processor for historic/live/replayed data
WO2017018901A1 (en) 2015-07-24 2017-02-02 Oracle International Corporation Visually exploring and analyzing event streams
WO2017135837A1 (en) 2016-02-01 2017-08-10 Oracle International Corporation Pattern based automated test data generation
WO2017135838A1 (en) 2016-02-01 2017-08-10 Oracle International Corporation Level of detail control for geostreaming
US10178161B2 (en) * 2016-05-11 2019-01-08 Microsoft Technology Licensing, Llc Digital signal processing over data streams
US10616316B2 (en) * 2016-09-15 2020-04-07 International Business Machines Corporation Processing element host management in a stream computing environment
US10341189B2 (en) * 2016-09-22 2019-07-02 International Business Machines Corporation Operator fusion management in a stream computing environment
US11563789B2 (en) * 2017-05-09 2023-01-24 EMC IP Holding Company LLC Executing streaming data writes without duplication or loss
US11196834B2 (en) 2017-09-29 2021-12-07 Arista Networks, Inc. System and a method for distributing information
WO2020164731A1 (en) * 2019-02-15 2020-08-20 Huawei Technologies Co., Ltd. A system for embedding stream processing execution in a database

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5539749A (en) 1993-09-13 1996-07-23 Siemens Aktiengesellschaft Method for merging data streams
US5745906A (en) 1995-11-14 1998-04-28 Deltatech Research, Inc. Method and apparatus for merging delta streams to reconstruct a computer file
US6029239A (en) * 1997-12-01 2000-02-22 Advanced Micro Devices, Inc. Configuring a communications system with a configurable data transfer architecture
FI112271B (fi) 2000-02-04 2003-11-14 Sandvik Tamrock Oy Menetelmä ja sovitelma pölyhaittojen vähentämiseksi kallionporauksessa
US20030002474A1 (en) * 2001-03-21 2003-01-02 Thomas Alexander Multi-stream merge network for data width conversion and multiplexing
WO2002084957A2 (en) * 2001-04-13 2002-10-24 Motorola, Inc., A Corporation Of The State Of Delaware Manipulating data streams in data stream processors
US7117278B2 (en) 2001-07-12 2006-10-03 Sun Micro Systems, Inc. Method for merging a plurality of data streams into a single data stream
WO2005018124A1 (en) 2003-08-15 2005-02-24 Xyratex Technology Limited A data merge unit, a method of producing an interleaved data stream, a network analyser and a method of analysing a network
US7668856B2 (en) 2004-09-30 2010-02-23 Alcatel-Lucent Usa Inc. Method for distinct count estimation over joins of continuous update stream
US9182228B2 (en) 2006-02-13 2015-11-10 Sony Corporation Multi-lens array system and method
US20070226362A1 (en) 2006-03-21 2007-09-27 At&T Corp. Monitoring regular expressions on out-of-order streams
US8457214B2 (en) 2007-09-10 2013-06-04 Cisco Technology, Inc. Video compositing of an arbitrary number of source streams using flexible macroblock ordering
JP5337447B2 (ja) 2008-10-28 2013-11-06 株式会社日立製作所 ストリームデータ処理方法、及びシステム
FR2940487A1 (fr) 2008-12-19 2010-06-25 Thales Sa Procede et systeme pour la fusion de donnees ou d'informations
RU2413277C1 (ru) 2009-09-17 2011-02-27 Российская Федерация, от имени которой выступает Министерство обороны Российской Федерации Устройство перепаковки потоков для вывода данных

Also Published As

Publication number Publication date
CA2838966A1 (en) 2012-12-20
EP2721511A2 (en) 2014-04-23
JP2014524175A (ja) 2014-09-18
CN103620584A (zh) 2014-03-05
EP2721511A4 (en) 2014-12-24
WO2012174023A2 (en) 2012-12-20
US9965520B2 (en) 2018-05-08
RU2013155910A (ru) 2015-06-27
MX2013015009A (es) 2014-01-24
RU2608474C2 (ru) 2017-01-18
KR101960985B1 (ko) 2019-03-21
CN103620584B (zh) 2018-03-20
WO2012174023A3 (en) 2013-07-11
AU2012271776B2 (en) 2016-09-29
BR112013032186A2 (pt) 2016-12-20
US20120324453A1 (en) 2012-12-20
CA2838966C (en) 2019-09-03
KR20140038462A (ko) 2014-03-28

Similar Documents

Publication Publication Date Title
JP6096182B2 (ja) 物理的に相違する複数のストリームに対する効率的な論理マージ
AU2012271776A1 (en) Efficient logical merging over physically divergent streams
US8326821B2 (en) Transforming relational queries into stream processing
Zhang et al. Recognizing patterns in streams with imprecise timestamps
US20180097684A1 (en) Reachability-Based Coordination for Cyclic Dataflow
US9910896B2 (en) Suspending and resuming continuous queries over data streams
US8972480B2 (en) Enhanced barrier operator within a streaming environment
Grover et al. Data Ingestion in AsterixDB.
US8290939B2 (en) Visualizing query results in stream processing systems
JP6114473B2 (ja) 時間調整を使用したストリームデータ処理方法
US11210277B2 (en) Distributing and processing streams over one or more networks for on-the-fly schema evolution
US20160026530A1 (en) Speculative Data Processing of Streaming Data
Volz et al. Supporting strong reliability for distributed complex event processing systems
Liu et al. Efficient and safe network updates with suffix causal consistency
US20140164434A1 (en) Streaming data pattern recognition and processing
WO2015165297A1 (zh) 一种不确定图查询方法及装置
Ameloot et al. On the CRON conjecture
AMELOOT Deciding correctness with fairness for simple transducer networks
Wilkin et al. Decentralized fault-tolerant event correlation
CN117851447A (zh) 分布式数据库分析能力的优化方法、装置、设备及介质
Chandramouli et al. Physically Independent Stream Merging
Chen et al. Provably Correct Distributed Provenance Compression
Istrate BOOM Analytics: Exploring Data-Centric, Declarative Programming for the Cloud
Ganjoo Real-time Stock Market Trend Analysis using Stream Processing Frameworks

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150518

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150518

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160802

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161031

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: 20170117

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170215

R150 Certificate of patent or registration of utility model

Ref document number: 6096182

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250