JP6114473B2 - 時間調整を使用したストリームデータ処理方法 - Google Patents

時間調整を使用したストリームデータ処理方法 Download PDF

Info

Publication number
JP6114473B2
JP6114473B2 JP2016521387A JP2016521387A JP6114473B2 JP 6114473 B2 JP6114473 B2 JP 6114473B2 JP 2016521387 A JP2016521387 A JP 2016521387A JP 2016521387 A JP2016521387 A JP 2016521387A JP 6114473 B2 JP6114473 B2 JP 6114473B2
Authority
JP
Japan
Prior art keywords
interval
stream data
tuple
column
query
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
JP2016521387A
Other languages
English (en)
Other versions
JP2016526719A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JP2016526719A publication Critical patent/JP2016526719A/ja
Application granted granted Critical
Publication of JP6114473B2 publication Critical patent/JP6114473B2/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
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Arrangements For Transmission Of Measured Signals (AREA)

Description

開示される実施例は、計算機システムに関し、特に、時間調整を使用したストリームデータ処理方法に関する。
ストリームデータ処理が関連技術において広く使用されている。データベース管理システム(以下DBMS)に連続的に到着するデータに対してリアルタイム処理を実行するデータ処理システム、に対する需要が増しており、そのようなシステムは、ストレージシステムに格納されているデータに対して処理を行う。例えば、株式取引を行うシステムにおいて、株価の変化に対していかに速く反応できるかということは最も大きな要素の一つである。従来のDBMSにより実行されるような方法では、株式データがまずはストレージシステムに格納され、その後、格納されたデータが検索されるため、株価の変化のスピードに従ってすぐに応答することができず、ビジネスチャンスを失う可能性がある。
例えば、関連技術は、格納されているクエリを定期的に発行する機構を含む。しかし、当該機構をリアルタイムデータ処理に適用し、株価のようなデータの入力後、すぐにクエリを実行することは困難である。
連続的に到着するデータはストリームデータと定義され、ストリームデータのリアルタイム処理に適したデータ処理システムとして、ストリームデータ処理システムが提案されている。
ストリームデータ処理システムにおいて、まず、クエリがシステムに登録され、クエリは、データが到着する度に連続的に実行される。これは、関連技術のDBMSとは異なる。関連技術の実装例は、スライディングウィンドウを備え、ストリームデータを効率的に処理するために部分的にストリームデータを切り出し、データに寿命を与える。スライディングウィンドウの仕様を含むクエリ記述言語の例として、関連技術におおけるCQL(Continuous Query Language)が存在する。CQLは、スライディングウィンドウを特定するための拡張を含み、SQL(Structured Query Language)のFROM句においてストリーム名に続く括弧を使用する。これは、関連技術におけるDBMSにおいて広く使用されている。
スライディングウィンドウを特定するための二種類の方法が関連技術において存在する。(1)一つの方法は、切り出すデータ列の数を特定する。(2)もう一つの方法は、切り出すデータ列を含む期間を特定する。例えば、“Rows 50 Preceding”は、(1)の関連技術の例であり、50列に相当するデータが処理のために切り出される。“Range 15 Minutes Preceding”は(2)の関連技術の例であり、15分のデータが処理のために切り出される。(1)の場合、データ寿命は50個のデータが到着するまでと定義される。(2)の場合、データ寿命は、15分と定義される。スライディングウィンドウにより切り出されるストリームデータは、メモリに格納され、クエリ処理に使用される。
ストリームデータにおいて、ネットワークや装置等の状態によって、データの到着が遅延することがある。例えば、センサノードは、ネットワークが切れている場合には、データを送信せず、接続が再度確立したときに、まとめてデータを送信する。
開発者は、センサ状態を監視し、なんらかの異常点を捉えて将来の障害を予想するために、特定の期間においてストリームデータを維持するようにCQLを記述する場合がある。
関連技術によるストリームデータ処理サーバは、ストリームデータを、データの到着タイムスタンプに基づいて処理する。データが遅延して到着した場合、到着タイムスタンプに基づく特定の期間内の集約結果は、データ送信元タイムスタンプに基づく結果と異なる。
いくつかの種類のストリームデータ処理サーバは、データ送信元タイムスタンプに基づいてストリームデータを処理することができる。しかし、サーバは、全てのデータがサーバに到着するまで待つ必要がある。その結果。処理のレイテンシが長くなる。
図1において、センサ101〜103は、ストリームデータ処理サーバ121に、ネットワーク(NW)111によって接続されている。開発クライアント131は、CQLで記述されたクエリ151をストリームデータ処理サーバ121に送信する。ストリームデータ処理サーバ121は、開発クライアント131に送信されたクエリに基づいて処理を行う。視覚化クライアント132は、ストリームデータ処理サーバ121における処理結果を表示する。ファイルサーバ133は、ストリームデータ処理サーバ121における処理結果を格納する。タプル141〜143は、センサ101により送信される。タプル144〜146は、センサ102により送信される。これらタプルは、処理されて、対応するタプル171〜176となる。
例えばセンサ101は、タプル141(ストリームデータにおける各レコード)を、タイムスタンプ“9:00:01”と共にストリームデータ処理サーバ121に送信する。センサ102も、タプル144を、タイムスタンプ“9:00:01”と共にストリームデータ処理サーバ121に送信する。センサ101の値の3秒間の和は、9:00:03における“1+2+3=6”と計算される(タプル173)。
タプル146が、ストリームデータ処理サーバ121に、NWの状態による遅延で“9:00:04”に到着すると、センサ102の値の3秒間の和は、“1+2=3”と計算されるが、開発者161は、“1+2+3=6”の結果を予想している。
図2は、クエリ151のタイムチャート、“rstream [1 second] (select id, sum(val) from S1 [range 3 second] group by id)”、を示す。これは、ストリームデータ処理サーバ121が、1秒毎に、3秒間のストリームデータS1を維持し、各グループ“id”においてその和を計算し、現在のidと和データ(id,sum(val))を出力する、ことを意味する。
タプル201〜209、211−219は、様々な時間間隔で送信され、Range 3 second関数によって処理されてタプル221〜229、231〜239となり、241〜251、261〜271でsum(val)関数を経て、281〜289、291〜299でRStreamに返される。ここで、タプル201は9:00:01に到着する。タプル204は9:00:04より後に到着するが、タプル204は9:00:04のデータ送信元タイムスタンプを有する。
各黒色円、各白色円、及び二つの円をつなぐ各線は、各タプルの予め決められた寿命(本例において3秒)を示している。例えば、タプル221は、(データ送信元タイプスタンプ、センサID、値)=(9:00:01、a、1)の値を有し、その寿命は9:00:01から9:00:04までである。なお、黒色円は現在時点が含まれていることを示し、白色円は現在時点が含まれていないことを示す。
例えば、センサ“a”の9:00:03における和は、6(タプル243)である。なぜなら、タプル221〜223が、その寿命において存在しているからである。9:00:04において、タプル221の寿命が終了する。和は、5(タプル244)に変化する。タプル204が到着した後、和は、9に変化する。データ送信元タイムスタンプに基づけば、9:00:04における和は9となるべきはずである。しかし、実際の結果は5である。同様に、9:00:07における結果は22(タプル248)であるが、データ送信元タイムスタンプに基づく結果は18でとなるはずである。
RStream[1second]は、1秒毎に、現在の和の結果を出力する。タプル283(a、6)は、9:00:03に送信され、タプル284(a、5)は、9:00:04に送信される。データ送信元タイプスタンプに基づけば、タプル284は(a、6)となるはずである。しかし、実際の結果は、遅延のために(a、5)である。同様に、9:00:06における結果は、タプル287(a、22)であるが、データ送信元タイプスタンプに基づく結果は(a、18)となるべきである。結果的に、データ送信元タイムスタンプに基づく結果を、ストリームデータ処理サーバにおいて、到着タイムスタンプに基づき与えることは、困難となる。
本願の態様は、処理を実行する命令を含む計算機プログラムを含んでもよい。前記命令は、1以上のストリームデータ間隔定義を、ストリームデータ間隔情報から決定し、ストリームデータの定期的な到着を検出する入力間隔チェック部を、前記1以上のストリームデータ間隔定義に基づいて生成することを含んでもよい。前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義のために、前記命令は、さらに、クエリ実行部を構成する、ことを含んでもよく、前記クエリ実行部は、前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義と関連づけられた前記クエリ実行部の1以上の範囲ウィンドウ演算子を決定し、前記決定された1以上の範囲ウィンドウ演算子を、列スライディングウィンドウ演算子又は分割列スライディングウィンドウ演算子の一方、に変更し、前記クエリ実行部の列ウィンドウサイズを調整する、ことにより構成されてもよい。計算機プログラムは、計算機読み取り可能な記憶媒体又は計算機読み取り可能な信号媒体に、所望の実装に従って格納することができる。
本願の態様は、ある方法を含む。当該方法は、1以上のストリームデータ間隔定義を、ストリームデータ間隔情報から決定し、ストリームデータの定期的な到着を検出する入力間隔チェック部を、前記1以上のストリームデータ間隔定義に基づいて生成することを含んでもよい。当該方法は、さらに、前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義のためにクエリ実行部を構成することを含んでもよく、前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義と関連づけられた前記クエリ実行部の1以上の範囲ウィンドウ演算子を決定し、前記決定された1以上の範囲ウィンドウ演算子を、列スライディングウィンドウ演算子又は分割列スライディングウィンドウ演算子の一方、に変更し、前記クエリ実行部の列ウィンドウサイズを調整する、ことにより前記クエリ実行部を構成してもよい。
本願の態様は、サーバ/計算プラットフォームを含んでもよく、1以上のストリームデータ間隔定義を、ストリームデータ間隔情報から決定し、ストリームデータの定期的な到着を検出する入力間隔チェック部を、前記1以上のストリームデータ間隔定義に基づいて生成する、プロセッサを含むことができる。プロセッサは、前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義のために、さらにクエリ実行部を構成し、前記クエリ実行部は、前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義と関連づけられた前記クエリ実行部の1以上の範囲ウィンドウ演算子を決定し、前記決定された1以上の範囲ウィンドウ演算子を、列スライディングウィンドウ演算子又は分割列スライディングウィンドウ演算子の一方、に変更し、前記クエリ実行部の列ウィンドウサイズを調整してもよい。
ストリームデータ処理サーバを含むシステム例を示す。 rstreamを使用してタプルを処理する例を示す。 実施例に係る、タプルの処理例を示す。 実施例に係る、ストリームデータ処理サーバの例を示す。 実施例に係る、パースされたクエリ実行部を示す。 実施例に係る、クエリ例を示す。 実施例に係る、ストリームデータ間隔定義テーブルを示す。 実施例に係る、RStream出力間隔定義テーブルを示す。 実施例に係る、ストリームデータ処理サーバにおいて実行される全体処理を示すフローチャート例を示す。 実施例に係る、クエリをパースするフロー図を示す。 実施例に係る、範囲スライディングウィンドウを置き換えるフロー図を示す。 実施例に係る、範囲rstreamを置き換えるフロー図を示す。 実施例に係る、クエリを実行するフロー図を示す。 図12Aの代替フロー図例である。 ストリームデータ処理サーバの実施例を示す。 実施例に係る、クエリ例を示す。 実施例に係る、ストリームデータ処理サーバにおいて実行される全体処理を示すフローチャート例を示す。 ストリームデータ処理サーバの実施例を示す。 実施例に係る、ストリームデータ処理サーバにおいて実行される全体処理を示すフローチャート例を示す。 実施例に係る、範囲スライディングウィンドウを置き換えるフロー図例を示す。 実施例に係る、範囲スライディングウィンドウを置き換えるフロー例を示す。 実施例に係る、クエリ例を示す。
図面を参照していくつかの実施例が記述される。ここで説明する実施例は、本発明の概念を何ら限定するものではなく、本実施例で説明される1又は複数の要素は必ずしも本発明概念を実施するために必須ものではない。さらに、特定の要素は単数で参照されることがあるが、それら要素は必ずしも単数ではなく、所望の実装に従って、1又は複数の同様の要素と共に実装されてもよい。
下記において、プログラムが、処理の説明における主語とされる場合がある。プログラムはプロセッサにより実行され、プログラムは、予め決められた処理動作を行う。したがって、実行されているプログラムを、プロセッサとすることも可能である。プログラムを主語として説明されている処理は、プログラムを実行するプロセッサ又は当該プロセッサを含む装置(例えば、制御デバイス、コントローラ、又はストレージシステム)によって実行される処理でもある。さらに、プロセッサがプログラムを実行するときに実行される処理の一部又は全部は、プロセッサに代えて又は加えて、ハードウェア回路によって実行することもできる。
プログラムのための命令は、計算機読み取り可能な記憶媒体に格納することができ、記憶媒体は、フラッシュメモリ、ランダムアクセスメモリ(RAM)、ハードディスクドライブ(HDD)等の有体の記憶媒体を含む。または、命令は、計算機読み取り可能な信号媒体の形で格納することができ、信号媒体は搬送波等の他の媒体を含む。
ここで説明される実施例は、特定期間のストリームデータを保持する範囲ウィンドウを、特定量のストリームデータを保持する列ウィンドウに置き換える。同様に、本実施例は、特定期間毎に結果を出力する範囲rstreamを、特定量毎に結果を出力する列rstreamに置き換える。
図3は、実施例に係るタプルの処理例を示す。特に、図3は、クエリのタイムチャートを示す。タプル201〜219は、図2と同様である。タプル201〜219は、1秒毎に送信される。クエリは、図2に示すように、3秒データを保持する。3秒間保持すること(Range 3 second)は、3つの量を保持すること(Partition by three id rows)と同じであり、タプル321〜329、331〜339は、Partition by id Rows 3関数から得られるタプルである。タプルは、図2に示すように合計され、タプル341〜349、361〜369が与えられる。それらはRStreamに送られ、結果としてタプル381〜389、391〜399が与えられる。
タプル221の寿命は、9:00:04に終了する。しかし、タプル321の寿命は、9:00:04の後まで続く。その結果、9:00:04における和は、まだ6(タプル343)である。タプル204が到着した後、和は9(タプル344)に変更される。同様に、タプル248は、図3に示されていない。Row RStreamは、特定量毎(本例において1タプル毎)に、現在の結果を出力する。図2におけるタプル284(a、5)は、タプル384(a、6)に変更される。なお、タプル384は、9:00:04より後に出力される。
したがって、サーバは、データ送信元タイムスタンプに基づく結果を、ストリームデータ処理サーバにおいて、到着タイムスタンプに基づいて与えることができる。これにより、データ送信元タイムスタンプに基づく方法よりも小さいレイテンシが実現される。これは、サーバが、全てのデータが当該サーバに到着するまで待つ必要がないからである。
<実施例1>
図4Aは、実施例に係る、ストリームデータ処理サーバ121の例を示す。ストリームデータ処理サーバ121は、メモリ402、1又は複数の中央演算ユニット(CPU)401、ネットワークインタフェースコントローラ403、ホストバスアダプタ(HBA)404、1又は複数のHDD405、を含むことができる。図4Aにおいて、ストリームデータ間隔設定部411は、ストリームデータ間隔設定コマンドを受信し、ストリームデータ間隔定義テーブル418を更新する。RStream出力間隔設定部412は、rstream出力間隔設定コマンドを受信し、RStream出力間隔定義テーブル419を更新する。クエリパーサ413は、クエリ151をパースして、クエリ実行部431を生成する。入力間隔チェック生成部414は、入力間隔チェック部432をクエリ実行部431の前に挿入し、さらに、間隔調整タプル生成部433を挿入して、入力間隔チェック部432と接続する。列ウィンドウ変換部415は、範囲スライディングウィンドウ演算子を、列スライディング演算子に置き換える。
RStream変換部416は、範囲rstream演算子を、列rstream演算子に置き換える。詳細は、図10において与えられる。
出力タイムスタンプ調整生成部417は、出力タプルタイムスタンプ調整部434を、クエリ実行部431の後ろに挿入する。詳細は、図11において与えられる。
クエリ実行部431は、スライディングウィンドウや結合等の複数の演算子を含む。演算子は、キューに接続され、キューは、演算子の実行順序を、ジョブスケジューリングアルゴリズム(ラウンドロビン、実行木における葉から根、等)を利用して管理する。クエリ実行部431は、入力ストリーム141〜148を受信し、出力ストリーム171〜176を出力する。
入力間隔チェック部432は、ストリームデータが定期的に到着するか確認する。ストリームデータが定期的に到着しない場合、当該ストリームデータは、間隔調整タプル生成部433により処理される。間隔調整タプル生成部433は、想定数より多くのタプルが到着している場合にタプルを廃棄し、タプルが失われている又は省略されている場合には、間隔調整タプルを挿入する。
出力タプルタイムスタンプ調整部434は、到着間隔に基づく結果のタイムスタンプを変更する。
列スライディングウィンドウ演算子441、444、445は、それぞれ、ストリームデータからデータ列を切り出し、ストリームデータをタプル集合に変換する処理を行う。2種類の、列スライディングウィンドウ演算子が存在する。一つの列スライディングウィンドウ演算子は、S1のようなデータのストリーム全体における特定量のデータを保持し、分割列スライディングウィンドウ演算子は、データストリームにおけるセンサidのような各グループにおいて特定量のデータを保持する。
集約演算子442は、和、平均、最大値、最小値、個数、分散、標準偏差、中央値等の導出に代表される、集約処理を行う。
列RStream演算子443、448は、特定量において、タプル集合を出力ストリームに変換する処理を行う。2種類の列RStream演算子が存在する。一つの列RStream演算子は、出力全体において特定量のデータの結果を出力し、分割列RStream演算子は、データストリーム上の各グループにおいて特定量のデータの結果を出力する。
結合演算子446は、所定の条件の下で、2以上のストリームデータを結合する処理を行う。結合演算子446は、一時記憶を有し、一時的な結合結果を保持する。
射影演算子447は、複数のカラムのうちの一部のみを出力する処理を行う。
図4Aに示す演算子に加え、タイムスタンプを入力タプルに追加するスキャン演算子、タプルが予め決められた条件に基づいて出力されているか判定する処理を行うフィルタ演算子、二つの入力の双方の出力をマージする統合演算子、特定の一つのカラム(又は複数のカラム)における順位を計算する順位演算子、さらに、他のこれらのような演算子が存在する。クエリ実行部431は、所望の実装に応じて、上記のような演算子を含む又は省くように構成することができる。
図4Bは、実施例に係る、パースされたクエリ実行部を示す。クエリ実行部461は、クエリ実行部431、入力間隔チェック部432、間隔調整タプル生成部433、出力タプルタイムスタンプ調整部434に変換される。範囲スライディングウィンドウ演算子451、454、455は、データをある長さの期間から切り出す。範囲RStream453、458は、特定の期間毎に、タプル集合をストリームデータに変換する処理を行う。
図5は、実施例に係る、クエリの例を示す。ストリーム登録コマンド501は、コマンドをストリームデータ処理サーバに登録することを指示する。S1は、三つのカラムを有し、タイプスタンプタイプとしてのdsTime、ストリングタイプとしてのid、フロートタイプとしてのvalを有する。502において、クエリ名はQ1である(register query Q1)。当該クエリは、過去3秒間の範囲内でS1という名のストリームのタプルを保持する(FROM S1 [Range 3 second])。さらに、各idにおけるvalカラムの和を計算する(...sum(val)...group by id)。そして、1秒毎に現在の結果を出力する(rstream [1 second])。503において、クエリ名はQ2である(register query Q2)。当該クエリは、過去5秒間の範囲内でS1という名のストリームのタプルを保持し(FROM S1 [Range 5 second])、過去12秒間の範囲内でS2という名のストリームのタプルを保持する(FROM S2 [Range 12 second])。その後、“S1.id = S2.id”の条件において(where S1.id=S2.id)、S1とS2とを結合し、さらに、結合結果から複数のカラム“S1.id、S1.val、S2.val”を抽出する(select S1.id, S1.val, S2.val)。現在結果は、60秒毎に出力される(rstream [60 second])。
ストリーム登録コマンド501〜503が、クエリパース方法を使用してパースされる場合、図4Bが生成される。範囲スライディングウィンドウ及び範囲rstreamが列スライディングウィンドウ及び列rstreamに移された後、演算子441〜448が生成される。
図6は、実施例に係る、ストリームデータ間隔定義テーブルを示す。ストリームデータ間隔定義テーブルは、ストリームデータ間隔情報を管理し、ストリーム欄601、グループ化欄602、間隔欄603、間隔調整欄604を含む。例示されたエントリにおいて、S1行611は、ストリーム名が“S1”であり、グループ化欄が“id”であり、間隔欄が”1秒”であり、間隔調整欄が“no”である、ことを示している。S2行612は、間隔欄が“3秒”であり、間隔調整欄が“yes”である、ことを示している。
図7は、実施例に係る、RStream出力間隔定義テーブルを示す。RStream出力間隔定義テーブルは、rstream出力間隔情報を管理し、クエリ欄701、グループ化欄702、間隔欄703、出力調整欄704を含む。例示されたエントリにおいて、Q1行711は、クエリ名が“Q1”であり、グループ化欄が“id”であり、出力間隔が“1秒”であり、出力調整関数が“no”である、ことを示している。Q1行712は、出力間隔が“3秒”であり、出力調整関数が“yes”である、ことを示している。
図8は、実施例に係る、ストリームデータ処理サーバ121において実行される全体的な処理を示すフローチャート、を示している。処理は、ステップ801において開始する。ステップ802において、ストリームデータ間隔設定部411は、入力コマンドがストリームデータ間隔定義コマンドであるか判定する。その場合(Yes)、ストリームデータ間隔設定部411は、ステップ803において、ストリームデータ間隔定義テーブルを更新する。ステップ804において、RStream出力間隔設定部412は、入力コマンドがrstream出力間隔定義コマンドであるか判定する。その場合(Yes)、RStream出力間隔設定部412は、ステップ805において、RStream出力間隔定義テーブルを更新する。ステップ806において、クエリパーサ413は、入力コマンドがクエリ登録コマンドであるか判定する。その場合(Yes)、クエリパーサ413は、ステップ807において、クエリをパースする。ステップ808において、クエリ実行部431は、クエリを実行する。ステップ809において、RStream出力間隔設定部412は、入力コマンドがシステム終了コマンドであるか判定する。その場合(Yes)、処理はステップ810において終了し、そうでない場合、処理はステップ802に戻る。
図9は、実施例に係る、クエリをパースするステップ807のフロー図を示す。ステップ901において、クエリパーサ413は、図4Bに示すように、クエリをパースし、実行木431を生成する。ステップ902において、列ウィンドウ変換部415は、図10に示すように、範囲スライディングウィンドウ演算子を、列スライディングウィンドウ演算子に置き換える。ステップ903において、RStream変換部416は、図11に示すように、範囲rstream演算子を、列rstream演算子に置き換える。処理は、ステップ904で終了する。
図10は、実施例に係る、範囲スライディングウィンドウを置き換えるステップ902のためのフロー図を示す。ステップ1001において、列ウィンドウ変換部415は、図6に示すようなストリームデータ間隔定義テーブル418を参照する。ステップ1002において、入力間隔チェック生成部414は、入力間隔チェック部432を、ストリームデータ入力141〜148とクエリ実行部431との間に挿入する。ステップ1003において、列ウィンドウ変換部415は、次のストリーム定義行をストリームデータ間隔定義テーブル418において参照する。ステップ1004において、列ウィンドウ変換部415は、ストリーム欄601の値を使用する範囲ウィンドウ演算子を特定する。ステップ1005において、列ウィンドウ変換部415は、ストリームデータ間隔定義テーブル418におけるグループ化欄602の値が、設定されているか判定する。されていない場合(No)、列ウィンドウ変換部415は、ステップ1006において、範囲スライディングウィンドウ演算子を、列スライディングウィンドウ演算子に置き換える。列ウィンドウ変換部415は、その後、列ウィンドウサイズを“(範囲ウィンドウサイズ/間隔値)”に設定する。
その場合(Yes)、ステップ1007において、列ウィンドウ変換部415は、範囲スライディングウィンドウ演算子を、分割列スライディングウィンドウ演算子に置き換え、分割グループをグループ化欄602の値に設定し、さらに、分割列ウィンドウサイズを“(範囲ウィンドウサイズ/間隔値)”に、設定する。ステップ1008において、入力間隔チェック生成部414は、418における間隔調整欄604の値が“yes”であるか判定する。そうである場合(Yes)、ステップ1009において、入力間隔チェック生成部414は、間隔調整タプル生成部433を挿入し、入力間隔チェック部432と接続する。ステップ1010において、列ウィンドウ変換部415は、ストリームデータ間隔定義テーブル418において、最後のストリーム定義行であるか判定する。その場合(Yes)、処理はステップ1011において終了し、そうではない場合(No)、処理はステップ1003から繰り返される。
図11は、実施例に係る、範囲rstreamを置き換えるステップ903のためのフロー図の例を示す。ステップ1101において、RStream変換部416は、図7に示すRStream出力間隔定義テーブル419を参照する。ステップ1102において、RStream変換部416は、RStream出力間隔定義テーブル419において、次のクエリ定義行を参照する。ステップ1103において、RStream変換部416は、RStream出力間隔定義テーブル419において、クエリにおけるrstream演算子を特定する。ステップ1104において、RStream変換部416は、出力間隔定義テーブル419においてグループ化欄702の値が設定されているか判定する。
そうではない場合(No)、ステップ1105において、RStream変換部416は、範囲rstream演算子を、列rstream演算子に置き換え、列rstreamサイズを“(範囲rstreamサイズ/間隔値)”に、設定する。そうである場合(Yes)、ステップ1106において、RStream変換部416は、範囲rstream演算子を、分割列rstream演算子に置き換え、分割グループをグループ化欄の値に設定し、分割列rstreamサイズを“(範囲rstreamサイズ/間隔値)”に、設定する。ステップ1107において、出力タイムスタンプ調整生成部417は、Rstream出力間隔定義テーブル419における出力調整欄704の値が“yes”であるか判定する。そうである場合(Yes)、ステップ1108において、出力タイムスタンプ調整生成部417は、出力タプルタイムスタンプ調整部434を、クエリ実行部431と出力171〜176との間に挿入する。ステップ1109において、Rstream変換部416は、Rstream出力間隔定義テーブル419において、最後のクエリ定義行か判定する。そうである場合(Yes)、処理はステップ1110で終了する。そうでない場合(No)、処理はステップ1102に進む。
図10のフロー図の実行例において、図4Bに示すクエリ実行部461は、ステップ901の後に生成される。図10におけるステップ1002において、入力間隔チェック部432は、ストリームデータ入力141〜146とクエリ実行部461との間に挿入される。ステップ1003において、処理は、図6に示すストリームデータ間隔定義テーブル418においてS1行611を参照する。ステップ1004において、図5が示すように、S1はクエリ502で使用されており("from S1 [range 3 second]")、また、クエリ503で使用されている("from S1 [range 5 second], S2 [range 12 second]")。範囲スライディングウィンドウ演算子451、454は、特定されている。ステップ1005におけるフローがYesである場合、ステップ1007において、処理は範囲スライディングウィンドウ演算子451、454を分割列スライディングウィンドウ演算子に移す。分割グループは、グループ化欄602の値("id")に設定され、分割列ウィンドウサイズは、(範囲ウィンドウサイズ(3秒)/間隔値(1秒)=3)に設定される。これは、“S1 [partition by id rows 3]”と同様である。
ステップ1008におけるフローがNoであり、さらに、ステップ1010におけるフローがNoである場合、ステップ1003におけるフローは、ストリームデータ間隔定義テーブル418におけるS2行612を参照する。ステップ1004において、S2は、図5においてクエリ503で使用されている("from S1 [range 5 second], S2 [range 12 second]")。範囲スライディングウィンドウ演算子455は特定されている。フローがステップ1005においてNoである場合、ステップ1006におけるフローは、範囲スライディングウィンドウ演算子455を列スライディングウィンドウ演算子444に移す。列ウィンドウサイズは、(範囲ウィンドウサイズ(12秒)/間隔値(3秒)=4)に設定され、これは、“S2 [rows 4]”と同様である。ステップ1008におけるフローがYesの場合、ステップ1009におけるフローは、間隔調整タプル生成部433を挿入し、入力間隔チェック部432に接続する。ステップ1010にけるフローがYesの場合、処理は終了する。
図11のフロー図の実行例において、ステップ1102におけるフローは、図7に示すRStream出力間隔定義テーブル419の行711を参照する。ステップ1103において、rstreamは、クエリ502に使用されており(“register query Q1 rstream [1 second]”)、範囲rstream453は、特定されている。ステップ1104におけるフローがYesである場合、ステップ1106におけるフローは、範囲RStream演算子453を分割列RStream演算子443に置き換え、分割グループをグループ化欄の値(“id”)に設定し、分割列rstreamサイズを(範囲rstreamサイズ(1秒)/間隔値(1秒)=1)に設定する。これは、“Rstream [partition by id rows 1]”と同様である。ステップ1107におけるフローがNoであり、ステップ1109におけるフローもNoである場合、ステップ1102におけるフローは、Q2行712を参照する。ステップ1103において、rstreamはQ2(503)において使用されている(“register query Q2 rstream [60 second]”)、そして、範囲rstream458は特定されている。ステップ1140におけるフローがNoである場合、ステップ1105におけるフローは、範囲RStream演算子458を列RStream演算子448で置き換える。列rstreamサイズは、(範囲rstreamサイズ(60秒)/間隔値(3秒)=20)に設定される。これは、“Rstream [rows 20]”と同じである。ステップ1107におけるフローがYesの場合、ステップ1108におけるフローは、出力タプルタイムスタンプ調整部434を、クエリ実行部431とタプル171〜176との間に挿入する。本実施例では、フローはステップ1109においてYesであり、その結果、図4Bに示すクエリ実行部461は、図4Aに示すクエリ実行部431に変換され、さらに、図4Aに示す、入力間隔チェック部432、間隔調整タプル生成部433、出力タプルタイムスタンプ調整部434が、挿入される。
図12Aは、実施例に係る、クエリ808を実行するフロー図を示す。ステップ1201におけるフローは、図6に示すストリームデータ間隔定義テーブル418及び図7に示すRStream出力間隔定義テーブル419を参照する。ステップ1202において、入力間隔チェック部432は、ストリームデータの次のタプル入力を受信する。ステップ1203において、入力間隔チェック部432は、本間隔でのタプルの量が、間隔によって計算された量よりも多いが判定する。ステップ1204において、入力間隔チェック部432は、ストリームデータ間隔定義テーブル418における間隔調整欄604の値が、“yes”であるか判定する。その場合(Yes)、間隔調整タプル生成部433は、入力タプルをステップ1205で廃棄し、そうでない場合は(No)、フローはステップ1210に進む。
ステップ1206において、入力間隔チェック部432は、本間隔におけるタプルの量が、間隔によって計算された量よりも少ないか判定する。そうである場合(Yes)、フローはステップ1207に進み、そうではない場合(No)、フローはステップ1209に進む。ステップ1207において、入力間隔チェック部432は、ストリームデータ間隔定義テーブル418における間隔調整欄604の値が、“yes”であるか判定する。そうである場合(Yes)、間隔調整タプル生成部433は、ステップ1208において、同一グループ化値における前回タプルを、間隔調整タプル生成部433における間隔調整バッファから、挿入する。そうではない場合(No)、フローはステップ1210に進む。
ステップ1209において、間隔調整タプル生成部433は、同一グループ化値における前回タプルを、間隔調整タプル生成部433における間隔調整バッファから、削除する。ステップ1210において、間隔調整タプル生成部433は、エラーを出力し、ストリームデータ処理サーバ121を終了する。ステップ1211において、クエリ実行部431は、入力タプルを実行する。ステップ1212において、出力タプルタイムスタンプ調整部434は、Rstream出力間隔定義テーブル419における出力調整欄704の値が“yes”であるか判定する。そうである場合(Yes)、出力タプルタイムスタンプ調整部434は、ステップ1213において、出力タプルのタイムスタンプを、Rstream出力間隔定義テーブル419における出力間隔欄703の値に基づいて、変更する。ステップ1214において、フローは終了する。
図12Aの実施例において、図3の入力タプル201〜209が到着する。S1行611は、各グループ(“id”)における間隔が1秒であることを記述している。図3において、ステップ1203及びステップ1206におけるフローにおいて、Noが選択される。付加的なタプル(a、2.5)が9:00:02.50に入力される場合、Yesがステップ1203におけるフローにおいて選択される。Yesがステップ1204で選択される場合、タプル(a、2.5)はステップ1205で廃棄される。タプル204が9:00:05に到着しない場合、ステップ1206においてYesが選択される。ステップ1207でYesが選択される場合、同一グループ化値における前回タプル203(a、3)が、間隔調整タプル生成部433における間隔調整バッファから、挿入される。出力調整欄704の値が、Q1行711において“yes”である場合、ステップ1212においてYesが選択される。タイムスタンプ出力タプル384、389が、出力間隔(1秒)に基づいて変更される。タプル384、394のタイプスタンプは、9:00:04.50から9:00:04.00に変更される。
図12Bは、図12Aのフロー図の代替例である。ステップ1201〜1204、1206、1207、1210〜1214の処理は、図12Aと同様である。
ステップ1221におけるフローは、1205におけるフローの代替例である。間隔調整タプル生成部433は、入力タプルを、間隔調整タプル生成部433における間隔調整バッファにおいて保持する。ステップ1222におけるフローは、ステップ1208におけるフローの代替例である。間隔調整タプル生成部433は、同一グループ化値における平均値を有するタプルを、間隔調整タプル生成部433における間隔調整バッファから挿入する。ステップ1223におけるフローは、ステップ1209におけるフローの代替例である。間隔調整タプル生成部433は、間隔調整タプル生成部433における間隔調整バッファにおいて、特定期間の前に到着しているタプルを削除する。図12Bに示す代替実施例は、所望の実装に応じて、必要により使用する又は省略することができる。
特定期間のストリームデータを保持する範囲ウィンドウを、特定量のストリームデータを保持する列ウィンドウに置き換えることによって(図4Bから図4A)、データ送信元タイムスタンプに基づく結果をストリームデータ処理サーバにおいて到着タイムスタンプに基づき与えることができる。この処理は、データ送信元タイムスタンプに基づく処理方法よりも、レイテンシが小さい。これは、サーバが、全てのデータがサーバに到着するまで待つ必要がないからである。実施例1において、ストリームデータ間隔定義とrstream出力間隔定義が、テーブルフォーマットにおいて設定されている。実施例2において、ストリームデータ間隔定義とrstream出力間隔定義は、クエリフォーマットにおいて設定される。
<実施例2>
図13は、ストリームデータ処理サーバの実施例を示し、図4Aに類似する。クエリ151は、クエリ1351に変更されている。図13において、ストリームデータ間隔設定部411は、ストリームデータ間隔設定部1311に変更されている。クエリ1351におけるストリームデータ間隔定義をパースし、ストリームデータ間隔定義テーブル418を更新する。RStream出力間隔設定部412は、RStream出力間隔設定部1312に変更されている。クエリ1351におけるrstream出力間隔定義をパースし、RStream出力間隔定義テーブル419を更新する。
図14は、実施例に係る、クエリ例を示す。ストリーム登録コマンド1401は、コマンド501と関連しており、“interval 1 second group by id”が、S1ストリーム定義から追加されており、図6におけるストリームデータ間隔定義テーブル418にマッピングされている。S1行611において、ストリーム欄601は、“S1”であり、グループ化欄602は“id”であり、間隔欄603は“1秒”であり、間隔調整欄604は“no”である。“Interval 3 second with interval adjust”が、ストリーム登録コマンド501におけるS2ストリーム定義から追加され、図6におけるストリームデータ間隔定義テーブル418にマップされる。S2行612において、ストリーム欄601は、“S2”であり、間隔欄603は“3秒”であり、間隔調整欄604は“yes”である。ストリーム登録コマンド1402は、コマンド502と関連しており、“interval 1 second group by id”がコマンド502から追加され、図7におけるRStream出力間隔定義テーブル419にマップされる。Q1行711において、クエリ欄701は“Q1”であり、グループ化欄702は“id”であり、間隔欄703は“1秒”であり、出力調整欄704は“no”である。ストリーム登録コマンド1403は、ストリーム登録コマンド503と関連しており、“interval 3 second with output adjust”がコマンド503から追加され、図7におけるRStream出力間隔定義テーブル419にマップされる。Q2行712において、クエリ欄701は“Q2”であり、間隔欄703は“3秒”であり、出力調整欄704は“yes”である。
図15は、実施例に係る、ストリームデータ処理サーバにおいて実行される全体処理を示すフローチャート例を示す。具体的には、図15は、図8の他の可能な実施例である。ステップ801、806〜810のフローは、図8と同様である。ステップ1501におけるフローにおいて、ストリームデータ間隔設定部1311は、クエリ登録コマンドが、ストリームデータ間隔定義コマンドを含むか、判定する。そうである場合(Yes)、フローはステップ1502に進み、そこで、ストリームデータ間隔設定部1311は、ストリームデータ間隔定義テーブル418を更新する。ステップ1503において、RStream出力間隔設定部1312は、クエリ登録コマンドがrstream出力間隔定義コマンドを含むか、判定する。そうである場合(Yes)、ステップ1504において、RStream出力間隔設定部1312は、RStream出力間隔定義テーブル419を更新する。
実施例2において、クエリにおける範囲スライディングウィンドウ句と範囲rstream句とは、列スライディングウィンドウ句と列rstream句とに置き換えられ、加えて、入力間隔チェック部、間隔調整タプル生成部、出力タプルタイムスタンプ調整部が、挿入される。
<実施例3>
図16は、ストリームデータ処理サーバの実施例を示し、図4Aに類似する。クエリ変換部1601は、クエリストリングを変換し、入力間隔チェック生成部414、列ウィンドウ変換部1603、RStream変換部1604、出力タイムスタンプ調整生成部417を、呼び出す。入力間隔チェック生成部414と出力タイムスタンプ調整生成部417とは、図4Aと同様である。
列ウィンドウ変換部1603は、ストリームデータ間隔定義テーブル418に基づき、クエリ151における範囲スライディングウィンドウ句を、列スライディングウィンドウ句に変換する。
RStream変換部1604は、RStream出力間隔定義テーブル419に基づき、クエリ151における範囲rstream句を、列rstream句に変換する。クエリパーサ413は、図4Aと同様である。クエリパーサ413は、変換されたクエリを、従来方法を使用してパースし、クエリ実行部431を生成する。
図17は、実施例に係る、ストリームデータ処理サーバにおいて実行される全体処理を示すフローチャート例を示し、図8に類似している。ステップ801〜806、808〜810のフローは、図8と同様である。ステップ1701におけるフローは、クエリ151において、範囲スライディングウィンドウ句を列スライディングウィンドウ句に変更し、図9のステップ902におけるフローに関連し、そして、図18においてさらに説明される。ステップ1702のフローは、クエリ151において、範囲rstream句を列rstream句に変更する。このフローは、図9のステップ903におけるフローに関連し、そして、図19においてさらに説明される。ステップ1703におけるフローは、図9のステップ901におけるフローと同じである。
図18は、実施例に係る、範囲スライディングウィンドウを置き換えるフロー図の例を示す。図18は、図10に類似する。ステップ1001、1002、1005、1008、1009、1011におけるフローは、図10と同様である。ステップ1801におけるフローのため、列ウィンドウ変換部1603は、次のクエリ定義をクエリ151において参照する。ステップ1802において、列ウィンドウ変換部1603は、次の範囲スライディングウィンドウ句をクエリ151で参照する。
ステップ1803において、列ウィンドウ変換部1603は、範囲スライディングウィンドウ句を、列スライディングウィンドウ句に変更する。列ウィンドウ変換部1603は、列ウィンドウサイズを(範囲ウィンドウサイズ/間隔値)に設定する。ステップ1804において、列ウィンドウ変換部1603は、範囲スライディングウィンドウ句を、分割スライディングウィンドウ句に変更する。列ウィンドウ変換部1603は、分割グループをグループ化カラムの値に設定し、分割列ウィンドウサイズを(範囲ウィンドウサイズ/間隔値)に設定する。ステップ1805において、列ウィンドウ変換部1603は、範囲スライディングウィンドウがクエリにおいて最後であるか判定する。そうではない場合(No)、フローはステップ1801に戻り、次のスライディングウィンドウ句を処理し、他の場合(Yes)、フローはステップ1806に進む。ステップ1806において、列ウィンドウ変換部1603は、クエリが最後のものであるか判定する。そうではない場合(No)、フローはステップ1801に戻って、次のクエリを処理する。
図19は、実施例に係る、範囲スライディングウィンドウを置き換えるフローの例を示し、図11に関連している。ステップ1101、1104、1107、1108、1110におけるフローは、図11と同様である。ステップ1901において、RStream変換部1604は、次のクエリ定義をクエリ151において参照する。ステップ1902において、RStream変換部1604は、クエリにおける範囲rstream句を特定する。ステップ1903において、RStream変換部1604は、範囲rstream句を列rstream句に移す。RStream変換部1604は、列rstreamサイズを(範囲rstreamサイズ/間隔値)に設定する。ステップ1904において、RStream変換部1604は、範囲rstream句を分割列rstream句に移す。RStream変換部1604は、分割グループをグループ化欄の値に設定し、分割列rstreamサイズを(範囲rstreamサイズ/間隔値)に設定する。ステップ1905において、RStream変換部1604は、クエリが最後のものであるか判定する。そうではない場合(No)、フローはステップ1901に進み、次のクエリを処理する。
図20は、実施例に係る、クエリの例を示し、図5に類似する。変換されたストリーム登録コマンド2001は、変換されたコマンド501と同一である。変換されたストリーム登録コマンド2002は、502から変換されたコマンドと同一である。変換されたストリーム登録コマンド2003は、503から変換されたコマンドと同一である。
図18のフロー図の実行例において、図5に示すクエリ151が、登録される。変換されたクエリ501がパースされた後、クエリ502及び503がパースされる。ステップ1001におけるフローは、図6に示すストリームデータ間隔定義テーブル418を参照する。ステップ1002において、入力間隔チェック部432が、挿入される。ステップ1801におけるフローは、クエリ502を参照する。ステップ1802におけるフローは、クエリ502において“S1 [range 3 second]”を特定する。ステップ1005におけるフローは、Yesである。なぜなら、S1行におけるグループ化欄は、(“id”)に設定されているからである。ステップ1804におけるフローは、範囲スライディングウィンドウ句を、分割列スライディングウィンドウ句に移し、分割グループをグループ化欄の値(“id”)に設定し、分割列ウィンドウサイズを(範囲ウィンドウサイズ(3秒)/間隔値(1秒)=3)に設定する。クエリ502における“S1 [range 3 second]”は、“S1 [partition by id rows 3]”に変換される。ステップ1008におけるフローがNoであり、ステップ1805におけるフローがYesであり、さらに、ステップ1806におけるフローがNoである場合、ステップ1801におけるフローは、クエリ503を参照する。
ステップ1801におけるフローは、“S1 [range 5 second]”を特定する。ステップ1005におけるフローがYesである場合、ステップ1804におけるフローは、範囲スライディングウィンドウ句を分割スライディングウィンドウ句に移し、分割グループをグループ化欄の値(“id”)に設定し、分割列ウィンドウサイズを(範囲ウィンドウサイズ(5秒)/間隔値(1秒)=5)に設定する。クエリ502における“S1 [range 5 second]”は、“S1 [partition by id rows 5]”に変換される。
ステップ1008におけるフローがNoであり、かつ、ステップ1805におけるフローがNoである場合、ステップ1802におけるフローは、“S2 [range 12 second]”を特定する。ステップ1005におけるフローがNoである場合、ステップ1803におけるフローは、範囲スライディングウィンドウ句を列スライディングウィンドウ句に移し、列ウィンドウサイズを(範囲ウィンドウサイズ(12秒)/間隔値(3秒)=4)に設定する。クエリ502における“S2 [range 12 second]”は、“S2 [rows 4]”に変換される。
ステップ1008におけるフローがYesである場合、ステップ1009におけるフローは、間隔調整タプル生成部433を挿入する。ステップ1805におけるフローがYesであり、かつ、ステップ1806におけるフローがYesである場合、処理は終了する。
図19の実行例において、ステップ1101におけるフローは、図7に示すRStream出力間隔定義テーブル419を参照する。ステップ1901におけるフローは、クエリ502を参照する。ステップ1902におけるフローは、“rstream [1 second]”を特定する。ステップ1104におけるフローはYesである。なぜなら、Q1行711におけるグループ化欄は(“id”)に設定されているからである。ステップ1904におけるフローは、範囲rstream句を分割列rstream句に移し、分割グループをグループ化欄の値(“id”)に設定し、分割列rstreamサイズを(範囲rstreamサイズ(1秒)/間隔値(1秒)=1)に設定する。“RStream [1 second]”は“rstream [partition by id rows 1]”に変換される。1107におけるフローがNoであり、かつ、ステップ1905におけるフローがNoである場合、1901におけるフローはクエリ503を参照する。ステップ1902におけるフローは、“rstream [60 second]”を特定する。
ステップ1104におけるフローがNoである場合、ステップ1903におけるフローは、範囲rstream句を列rstream句に移し、列rstreamサイズを(範囲rstreamサイズ(60秒)/間隔値(3秒)=20)に設定する。“RStream [60 second]”は“rstream [rows 20]”に変換される。ステップ1107におけるフローがYesである場合、ステップ1108におけるフローは、出力タプルタイムスタンプ調整部434を挿入する。ステップ1905におけるフローがYesの場合、処理は終了する。
上記詳細な説明における一部は、計算機内における動作のアルゴリズム及び記号表現の観点で提示されている。これらアルゴリズムの記述及び記号表現は、データ処理技術における当業者によって、自らの創作の本質を当該技術分野の他の技術者に最も効率的に伝えるために使用される手段である。アルゴリズムは、定義された一例のステップであり、所望の終了状態又は結果を得ることができる。実施例において、実行されたステップは、有体の結果を得るために有体量の物理的な操作を必要とする。
さらに、本願の他の実施例は、当業者にとって、ここで記述されている実施例の詳細及びプラクティスの観点から、明らかであろう。記述された実施例の様々な態様及び/又は構成要素は、単一で又は結合して使用することができる。なお、明細書及び実施例は一例であって、本願の真の範囲と真意は、請求の範囲の記載により示される。

Claims (6)

  1. 処理を実行する命令を含む計算機プログラムであって、前記命令は、
    1以上のストリームデータ間隔定義を、ストリームデータ間隔情報から決定し、
    ストリームデータの定期的な到着を検出する入力間隔チェック部を、前記1以上のストリームデータ間隔定義に基づいて生成し、
    前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義のために、クエリ実行部を構成する、ことを含み、
    前記クエリ実行部は、
    前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義と関連づけられた前記クエリ実行部の1以上の範囲ウィンドウ演算子を決定し、
    前記決定された1以上の範囲ウィンドウ演算子を、列スライディングウィンドウ演算子又は分割列スライディングウィンドウ演算子の一方、に変更し、
    前記クエリ実行部の列ウィンドウサイズを調整する、ことにより構成され
    前記クエリ実行部を構成することは、
    前記ストリームデータの周期的な到着が調整される場合、間隔調整タプル生成部を挿入し、前記入力間隔チェック部と接続する、ことを含み、
    前記間隔調整タプル生成部は、1以上の超過タプルを受信した場合に少なくとも一つのタプルを廃棄し、タプルの省略を検出した場合に間隔調整タプルを挿入する、計算機プログラム。
  2. 請求項1に記載の計算機プログラムであって、前記命令はさらに、
    前記ストリームデータの周期的な到着が調整される場合、
    受信されたタプルの数が受信すべき間隔より大きい場合に、前記ストリームデータの前記周期的な到着からタプルを廃棄し、
    受信されたタプルの数が受信すべき間隔より小さい場合に、前記間隔調整タプル生成部における間隔調整バッファから同一グループ化値を有する前回タプルを挿入し、
    前記間隔調整タプル生成部における前記間隔調整バッファから前記同一グループ化値を有する前記前回タプルを削除する、ことを含む、計算機プログラム。
  3. 1以上のストリームデータ間隔定義を、ストリームデータ間隔情報から決定し、
    ストリームデータの定期的な到着を検出する入力間隔チェック部を、前記1以上のストリームデータ間隔定義に基づいて生成し、
    前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義のために、クエリ実行部を構成する、ことを含み、
    前記クエリ実行部を構成することは、
    前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義と関連づけられた前記クエリ実行部の1以上の範囲ウィンドウ演算子を決定し、
    前記決定された1以上の範囲ウィンドウ演算子を、列スライディングウィンドウ演算子又は分割列スライディングウィンドウ演算子の一方、に変更し、
    前記クエリ実行部の列ウィンドウサイズを調整し、
    前記クエリ実行部を構成することは、
    前記ストリームデータの周期的な到着が調整される場合、間隔調整タプル生成部を挿入し、前記入力間隔チェック部と接続する、ことを含み、
    前記間隔調整タプル生成部は、1以上の超過タプルを受信した場合に少なくとも一つのタプルを廃棄し、タプルの省略を検出した場合に間隔調整タプルを挿入する、方法。
  4. 請求項3に記載の方法であって、
    前記ストリームデータの周期的な到着が調整される場合、
    受信されたタプルの数が受信すべき間隔より大きい場合に、前記ストリームデータの前記周期的な到着からタプルを廃棄し、
    受信されたタプルの数が受信すべき間隔より小さい場合に、前記間隔調整タプル生成部における間隔調整バッファから同一グループ化値を有する前回タプルを挿入し、
    前記間隔調整タプル生成部における前記間隔調整バッファから前記同一グループ化値を有する前記前回タプルを削除する、ことを含む、方法。
  5. プロセッサを含むサーバであって、前記プロセッサは、
    1以上のストリームデータ間隔定義を、ストリームデータ間隔情報から決定し、
    ストリームデータの定期的な到着を検出する入力間隔チェック部を、前記1以上のストリームデータ間隔定義に基づいて生成し、
    前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義のために、クエリ実行部を構成し、
    前記クエリ実行部の構成を、
    前記1以上のストリームデータ間隔定義の各ストリームデータ間隔定義と関連づけられた前記クエリ実行部の1以上の範囲ウィンドウ演算子を決定し、
    前記決定された1以上の範囲ウィンドウ演算子を、列スライディングウィンドウ演算子又は分割列スライディングウィンドウ演算子の一方、に変更し、
    前記クエリ実行部の列ウィンドウサイズを調整する、ことにより行い、
    前記ストリームデータの周期的な到着が調整される場合、間隔調整タプル生成部を挿入し、前記入力間隔チェック部と接続することにより、前記クエリ実行部を構成し、
    前記間隔調整タプル生成部は、1以上の超過タプルを受信した場合に少なくとも一つのタプルを廃棄し、タプルの省略を検出した場合に間隔調整タプルを挿入する、サーバ。
  6. 請求項5に記載のサーバであって、前記プロセッサは、
    前記ストリームデータの周期的な到着が調整される場合、
    受信されたタプルの数が受信すべき間隔より大きい場合に、前記ストリームデータの前記周期的な到着からタプルを廃棄し、
    受信されたタプルの数が受信すべき間隔より小さい場合に、前記間隔調整タプル生成部における間隔調整バッファから同一グループ化値を有する前回タプルを挿入し、
    前記間隔調整タプル生成部における前記間隔調整バッファから前記同一グループ化値を有する前記前回タプルを削除する、サーバ。
JP2016521387A 2013-06-21 2013-06-21 時間調整を使用したストリームデータ処理方法 Active JP6114473B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/047120 WO2014204489A2 (en) 2013-06-21 2013-06-21 Stream data processing method with time adjustment

Publications (2)

Publication Number Publication Date
JP2016526719A JP2016526719A (ja) 2016-09-05
JP6114473B2 true JP6114473B2 (ja) 2017-04-12

Family

ID=52105457

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016521387A Active JP6114473B2 (ja) 2013-06-21 2013-06-21 時間調整を使用したストリームデータ処理方法

Country Status (3)

Country Link
US (1) US10331672B2 (ja)
JP (1) JP6114473B2 (ja)
WO (1) WO2014204489A2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6114473B2 (ja) * 2013-06-21 2017-04-12 株式会社日立製作所 時間調整を使用したストリームデータ処理方法
CN106911589B (zh) * 2015-12-22 2020-04-24 阿里巴巴集团控股有限公司 一种数据处理方法和设备
US20170220616A1 (en) * 2016-02-02 2017-08-03 International Business Machines Corporation Efficiently applying timestamps to high volume streaming data
WO2018002976A1 (ja) * 2016-06-27 2018-01-04 株式会社日立製作所 管理装置、実行環境設定方法、ストリームデータ処理システム
US10514952B2 (en) * 2016-09-15 2019-12-24 Oracle International Corporation Processing timestamps and heartbeat events for automatic time progression
US10417235B2 (en) 2017-02-03 2019-09-17 International Business Machines Corporation Window management in a stream computing environment
EP3676682A4 (en) * 2017-08-18 2021-03-31 PayPal, Inc. SELF-GENERATING REAL-TIME DATA PROCESSING

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6842715B1 (en) * 2003-07-21 2005-01-11 Qualcomm Incorporated Multiple measurements per position fix improvements
US8639520B2 (en) * 2003-10-06 2014-01-28 Cerner Innovations, Inc. System and method for creating a visualization indicating relationships and relevance to an entity
US7447666B2 (en) * 2004-04-09 2008-11-04 The Boeing Company System and method for analyzing a pattern in a time-stamped event sequence
KR100813000B1 (ko) * 2005-12-01 2008-03-13 한국전자통신연구원 데이터 중복 처리 방지 기능을 가지는 스트림 데이터 처리시스템 및 그 방법
US7548937B2 (en) * 2006-05-04 2009-06-16 International Business Machines Corporation System and method for scalable processing of multi-way data stream correlations
JP4804233B2 (ja) * 2006-06-09 2011-11-02 株式会社日立製作所 ストリームデータ処理方法
JP4933222B2 (ja) * 2006-11-15 2012-05-16 株式会社日立製作所 インデックス処理方法及び計算機システム
US7945540B2 (en) * 2007-05-04 2011-05-17 Oracle International Corporation Method to create a partition-by time/tuple-based window in an event processing service
US8392381B2 (en) * 2007-05-08 2013-03-05 The University Of Vermont And State Agricultural College Systems and methods for reservoir sampling of streaming data and stream joins
US20080301125A1 (en) * 2007-05-29 2008-12-04 Bea Systems, Inc. Event processing query language including an output clause
US7979420B2 (en) * 2007-10-16 2011-07-12 Oracle International Corporation Handling silent relations in a data stream management system
US7991766B2 (en) * 2007-10-20 2011-08-02 Oracle International Corporation Support for user defined aggregations in a data stream management system
JP5377897B2 (ja) * 2007-10-29 2013-12-25 株式会社日立製作所 ストリームデータのランキングクエリ処理方法およびランキングクエリ処理機構を有するストリームデータ処理システム
JP5198929B2 (ja) 2008-04-25 2013-05-15 株式会社日立製作所 ストリームデータ処理方法及び計算機システム
JP5337447B2 (ja) * 2008-10-28 2013-11-06 株式会社日立製作所 ストリームデータ処理方法、及びシステム
JP5154366B2 (ja) * 2008-10-28 2013-02-27 株式会社日立製作所 ストリームデータ処理プログラム及び計算機システム
JP4659877B2 (ja) * 2008-12-03 2011-03-30 株式会社日立製作所 ストリームデータ処理制御方法、ストリームデータ処理装置及びストリームデータ処理制御プログラム
US8180801B2 (en) * 2009-07-16 2012-05-15 Sap Ag Unified window support for event stream data management
JP5396184B2 (ja) * 2009-07-31 2014-01-22 株式会社日立製作所 計算機システム及び複数計算機によるストリームデータ分散処理方法
JP4880025B2 (ja) * 2009-11-26 2012-02-22 株式会社日立製作所 ストリームデータ処理方法、ストリームデータ処理プログラム及びストリームデータ処理装置
US8661014B2 (en) * 2010-09-23 2014-02-25 Hewlett-Packard Development Company, L.P. Stream processing by a query engine
US8620945B2 (en) * 2010-09-23 2013-12-31 Hewlett-Packard Development Company, L.P. Query rewind mechanism for processing a continuous stream of data
US8788484B2 (en) * 2010-12-27 2014-07-22 Software Ag Systems and/or methods for user feedback driven dynamic query rewriting in complex event processing environments
US9405795B2 (en) * 2011-07-20 2016-08-02 Hitachi, Ltd. Stream data processing server and a non-transitory computer-readable storage medium storing a stream data processing program
US9361342B2 (en) * 2011-10-10 2016-06-07 Hewlett Packard Enterprise Development Lp Query to streaming data
US9910118B2 (en) * 2012-04-20 2018-03-06 University Of Virginia Patent Foundation Systems and methods for cartesian dynamic imaging
US8768956B2 (en) * 2012-04-25 2014-07-01 Hitachi, Ltd. Stream data processing method with multiple windows on single stream
KR101959562B1 (ko) * 2012-07-03 2019-03-18 삼성전자 주식회사 데이터 스트림에서 효율적인 다중 연속 집계 질의 처리 장치 및 방법
US9563663B2 (en) * 2012-09-28 2017-02-07 Oracle International Corporation Fast path evaluation of Boolean predicates
JP5433760B2 (ja) * 2012-10-18 2014-03-05 株式会社日立製作所 会議分析システム
US9400823B2 (en) * 2012-12-20 2016-07-26 Hitachi, Ltd. Stream data processing method on recursive query of graph data
US10298444B2 (en) * 2013-01-15 2019-05-21 Oracle International Corporation Variable duration windows on continuous data streams
US9596279B2 (en) * 2013-02-08 2017-03-14 Dell Products L.P. Cloud-based streaming data receiver and persister
US9477722B1 (en) * 2013-03-07 2016-10-25 Arris Enterprises, Inc. Sliding window view constructs in relational database query language
US9674249B1 (en) * 2013-03-11 2017-06-06 DataTorrent, Inc. Distributed streaming platform for real-time applications
JP6114473B2 (ja) * 2013-06-21 2017-04-12 株式会社日立製作所 時間調整を使用したストリームデータ処理方法

Also Published As

Publication number Publication date
JP2016526719A (ja) 2016-09-05
US10331672B2 (en) 2019-06-25
WO2014204489A3 (en) 2015-06-25
WO2014204489A2 (en) 2014-12-24
US20160125033A1 (en) 2016-05-05

Similar Documents

Publication Publication Date Title
JP6114473B2 (ja) 時間調整を使用したストリームデータ処理方法
US11882054B2 (en) Terminating data server nodes
US10644932B2 (en) Variable duration windows on continuous data streams
US9396158B2 (en) Stream application performance monitoring metrics
JP6190255B2 (ja) グラフデータの再帰クエリを用いたストリームデータ処理方法
JP5906161B2 (ja) シングルストリームの複数ウィンドウでのストリームデータ処理方法
US8730819B2 (en) Flexible network measurement
US9910896B2 (en) Suspending and resuming continuous queries over data streams
EP2752779B1 (en) System and method for distributed database query engines
US9098587B2 (en) Variable duration non-event pattern matching
JP5154366B2 (ja) ストリームデータ処理プログラム及び計算機システム
US8290939B2 (en) Visualizing query results in stream processing systems
WO2019120093A1 (en) Cardinality estimation in databases
US11347620B2 (en) Parsing hierarchical session log data for search and analytics
US9959301B2 (en) Distributing and processing streams over one or more networks for on-the-fly schema evolution
Yue et al. Deco: Fast and Accurate Decentralized Aggregation of Count-Based Windows in Large-Scale IoT Applications.
CN117112697A (zh) 数据管理方法及相关装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170131

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170217

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170316

R150 Certificate of patent or registration of utility model

Ref document number: 6114473

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150