JP6041431B2 - ストリームデータ処理方法、ストリームデータ処理装置及びプログラム - Google Patents

ストリームデータ処理方法、ストリームデータ処理装置及びプログラム Download PDF

Info

Publication number
JP6041431B2
JP6041431B2 JP2012228658A JP2012228658A JP6041431B2 JP 6041431 B2 JP6041431 B2 JP 6041431B2 JP 2012228658 A JP2012228658 A JP 2012228658A JP 2012228658 A JP2012228658 A JP 2012228658A JP 6041431 B2 JP6041431 B2 JP 6041431B2
Authority
JP
Japan
Prior art keywords
tuple
clear
column
group
operator
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
JP2012228658A
Other languages
English (en)
Other versions
JP2014081759A (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
Priority to JP2012228658A priority Critical patent/JP6041431B2/ja
Publication of JP2014081759A publication Critical patent/JP2014081759A/ja
Application granted granted Critical
Publication of JP6041431B2 publication Critical patent/JP6041431B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、ストリームデータ処理のクエリ定義インタフェース及びクエリの実行方法に関する。
株式取引の自動化や、交通情報処理の高度化、クリックストリームの解析といった、高いレートで継続的に発生する情報をリアルタイムに解析し、重要なイベントの発生に対して瞬時にアクションを起こす要求の高まりを背景に、高レートデータのリアルタイム処理を実現するため、ストリームデータ処理が注目されている。ストリームデータ処理は、様々なデータ処理に適用可能な汎用ミドルウェア技術であるため、個別の案件ごとにシステムを構築するのでは間に合わないようなビジネス環境の急激な変化にも応えつつ、実世界のデータをリアルタイムにビジネスに反映することを可能とする。
ストリームデータ処理が対象とするストリームとは、タイムスタンプ付きのデータであるタプルが連続して到来する、時系列データである。ストリームデータ処理システムを利用するユーザが、ストリームに対する監視ルールをクエリとして定義すると、ストリームデータ処理システムはクエリ定義をクエリグラフに変換する。クエリグラフは、オペレータと呼ばれる処理単位をノードとし、同オペレータ間のタプルキューをエッジとする有向グラフである。ストリームデータ処理システムでは、入力ストリームを構成する個々のタプルについて、有向グラフを通過させることで、データフロー的に処理を進める。
各タプルは、クエリグラフの入口において、ウィンドウオペレータによって生存期間を付与される。ウィンドウオペレータとしては、大きく分けて個数ウィンドウ、時間ウィンドウ、グループ別ウィンドウの三種類が存在する。
個数ウィンドウ“[ROWS N]”は、同時に生存するタプルの個数を、ユーザが指定した数Nに制限する。すなわち、各タプルは、自身から数えてN+1番目のタプルの到来時刻に、生存期間を終了する。
時間ウィンドウ“[RANGE T]”は、各タプルの生存期間を、ユーザが指定した時間Tに制限する。すなわち、各タプルは、自身の到来時刻から時間Tが経過した時刻に、生存期間を終了する。
グループ別ウィンドウは“[PARTITION BY C1...Cm ROWS N]”のように、ユーザが指定したカラムC1...Cmの値によってタプルをグループ分けし、グループ別に個数ウィンドウの定義に従って生存期間を制限する。以降では、これらのカラムをグルーピングカラムと呼ぶ。グルーピングカラムは、単独指定に限らず、複数の組合せでも構わない。
各タプルの生存期間は、期間の開始を意味するプラスタプルと、終了を意味するマイナスタプルによって表現される。各ウィンドウは、タプルの入力時にプラスタプルを出力し、タプルの生存期間終了時にマイナスタプルを出力する。例えば、ユーザが同時生存数を3と指定した個数ウィンドウに、4つのタプルA、B、C、Dが順番に到来した場合、同ウィンドウは、タプルDの到来時にAのマイナスタプルとDのプラスタプルを同時に出力する。以上の処理を含む、ストリームデータ処理の実現方法に関する詳細は、非特許文献1に記載されている。
各ウィンドウのメモリ使用量は次のようになる。個数ウィンドウのメモリ使用量は、一定量で制限される。時間ウィンドウのメモリ使用量は、タプルを入力するレートによって増減する。但し、メモリ使用量の増加は一時的であり、単調に増え続けることはない。一方、両ウィンドウと異なり、グループ別ウィンドウでは、一旦作成されたグループについては、ユーザ指定数を最大としてタプルが残り続けるため、既存グループに属さないタプルが到来する都度、新規グループが生成され、メモリ使用量が単調増加する可能性がある。
例えば、株式取引の分析において、銘柄毎にグループを分けるケースでは、グループの生成数は最大でも銘柄の種類数と同じであるため、メモリ使用量が増え続けることは無い。一方、トレーダ毎にグループを分けるケースでは、新規トレーダが参加する度にグループが生成され、かつトレーダの集合には制限が無いため、メモリ使用量が増え続ける可能性がある。実際には、全てのトレーダが取引し続ける訳ではないので、取引を停止したトレーダに対応するグループのタプルを消去して、使用メモリを回収するべきであるが、グループ別ウィンドウではこのような回収処理が不可能である。そのため、グループ別ウィンドウを用いた場合では、一種のメモリリークに繋がる可能性がある。
グループ別ウィンドウは、複数の分析対象の最新状態を表現するために有用である一方で、上記の課題が存在するため、上述のような特性を考慮して利用する必要がある。
本技術分野の背景技術として、時限付きグループ別ウィンドウ(非特許文献2)がある。この文献には、“S[Partition By A1...Ak Rows N Range T]”(但し、A1...Akはグルーピングカラム、Nは個数、Tは時間)という書式によって、グループ別個数制限による生存期間終了時刻と、時間制限による生存期間終了時刻を比較して、早い方の時刻にタプルを消滅させる(すなわち、当該タプルのマイナスタプルを送出する)ウィンドウの仕様が記載されている。
また、ウィンドウに対する消去タプル検索構文(非特許文献3)がある。この文献には、“ON InStream DELETE FROM MyWindow1 WHERE InStream.Symbol=MyWindow1.Symbol”(但し、InStream、MyWindow1、およびSymbolは、それぞれストリーム名、ウィンドウ名、およびカラム名の例)という書式によって、ストリームへのタプル到来をトリガとして、ウィンドウ上に生存中のタプルから、検索条件を満足するタプル集合を抽出し、同タプル集合を削除する(すなわち、同タプル集合に属する各タプルのマイナスタプルを送出する)処理の定義仕様が記載されている。
また、特開2010−108073号公報(特許文献1)が知られている。この特許文献1には、「クエリが、ある時間間隔内にシステムに到来したストリームデータを処理対象とする時間ウィンドウを含む場合に、この時間ウィンドウをより小さい幅のサブウィンドウに区切り、受け付けたストリームタプルが新しいサブウィンドウに区分けされる場合に、このサブウィンドウ内に集約タプルを生成し、集約タプルの生存期間の終了時刻を、受け付けたストリームタプルのタイムスタンプにクエリで指定された前記時間ウィンドウの幅を加えた時刻に設定し、受け付けたストリームタプルが既存のサブウィンドウに区分けされる場合に、当該ストリームタプルを用いて集約タプルを更新し、更新した集約タプルの生存期間終了時刻を、受け付けたストリームタプルのタイムスタンプにクエリで指定された時間ウィンドウの幅を加えた時刻に設定し、設定した生存期間終了時刻に、集約タプルを消去するためのフラグをつけたストリームタプルを生成し、これら集約タプルを用いてクエリの処理結果を計算するストリームデータ処理方法、及びそのシステムを提供する。」と記載されている。
特開2010−108073号公報
A. Arasu, S. Babu and J. Widom 著、The CQL Continuous Query Language: Semantic Foundations and Query Execution"、121〜142頁、2003年 "Oracle Complex Event Processing CQL Language Reference 11g Release 1(11.1.1.4.0)"、4−18頁 "Sybase CEP Option R4 CCL Reference Guide"、123頁
上記非特許文献2の方法は、グループ別ウィンドウにおけるメモリ使用量の単調増加を解消する。しかしながら、本来消去するべきではないグループについても、制限時間が経過すれば消滅してしまうため、グループ別ウィンドウで監視すべきグループが消失して不正な処理の発生に繋がる可能性がある。また、上記非特許文献2では、不要になったグループについても、制限時間が経過するまでは残留するため、一時的に無駄なメモリ領域が使用されることになる。
上記非特許文献3の方法は、不要なタプルを、丁度不要となったタイミングで削除することが可能であるため、上記のような不正処理、あるいは無駄なメモリ使用を発生させることなく、グループ別ウィンドウのメモリリークを解決可能である。一方で、タプルを削除した瞬間に大量の計算が発生する可能性がある。
例えば、図2Aのクエリstat(201)は、特定のトレーダ群について、銘柄別に直近の100個の取引の金額を、売り買い別に集計する処理である。ストリームtradeは取引イベントを、ストリームmonitorは監視対象となるトレーダの名前を表すストリームである。なお、“[UNBOUNDED]”は、生存期間を制限しないウィンドウである。カラムuser、stock、ask_bid、price、およびvolumeは、それぞれトレーダ名、取引銘柄、売りと買いを区別するフラグ、株価、および売買数量を表す。amountは、集計結果である取引金額合計を表す。本クエリでは、トレーダと銘柄の組合せを一つのグループとし、一グループ当り100個のタプルを分析対象として生存させている。
非特許文献3では、タプル消去のトリガとなるストリームdel_state、および、消去タプル検索条件を定義する、以下のような記述をクエリ201に追加することで、グループ毎にタプルを消去することが可能である。
REGISTER STREAM del_stat(user INT, stock INT);
ON del_stat
DELETE FROM trade_win
WHERE del_stat.user=trade_win.user
AND del_stat.stock=trade_win.stock;
但し、trade_winは、以下のようにウィンドウ定義のみを切り出したクエリとし、クエリstatのFROM句では、このクエリの結果をtrade_win AS tradeと置き換えて利用すると想定する。
REGISTER QUERY trade_win
SELECT *
FROM trade
[PARTITION BY user, stock ROWS100]
以上のようにストリーム、クエリ、および消去タプル検索条件を定義したうえで、ストリームdel_statに、(user,stock)=(uA,sX)のタプルを入力することで、グループ別ウィンドウtrade_winから、WHERE句の条件を満足する(すなわち、トレーダ名がuAで、銘柄名がsXである)全てのタプルを抽出し、削除することが可能である。
ここで、抽出した全タプルについて、個々にマイナスタプルがウィンドウから出力される。すなわち、100個のマイナスタプルが同時に出力されることになる。同マイナスタプル群は、後続の関係演算オペレータでも個別に処理されるため、瞬間的に高い計算負荷が発生することになる。
特許文献1の方法は、一つのサブウィンドウに区分けされるタプル群を一グループとして、一つのグループについて、グループ内のタプルを集約した一つの集約タプルのみを保持する。グループの生存期間が終了した(すなわち、グループに属する最後尾のタプルが到来してから、時間ウィンドウで指定された制限時間が経過した)ことをトリガとして、集約タプルを消去する。グループ内のタプルを常に一つのタプルに集約しておくことで、グループ消去時の計算コストを最小化していると見做すことができる。
しかしながら、特許文献1の方法は、集約演算と時間ウィンドウを組み合わせたクエリのみを対象としており、グループ別ウィンドウに関する上記課題を解決することはできない。
そこで、本発明は上記問題点に鑑みてなされたもので、グループ別ウィンドウにおいて分割された各グループを、負荷の増大を回避しながら効率的に削除することを目的とする。
本発明は、プロセッサとメモリを備えた計算機が、クエリ定義を受け付けてオペレータを配置するクエリグラフを設定し、時系列のタプルを含むストリームデータを受け付けて、前記クエリグラフのオペレータで前記タプルを処理するストリームデータ処理方法であって、前記計算機が、前記クエリ定義を受け付けて、前記タプルを一ないし複数のカラムの組であるグルーピングカラムと、当該グルーピングカラムの値の組合せに従ってタプルグループに分割し、当該分割したタプルの同時生存個数を制限し、かつ、特定の条件を含むオペレータを前記クエリグラフに設定する第1のステップと、前記計算機が、前記タプルを含むストリームデータを受け付けて、前記オペレータへ前記タプルを入力する第2のステップと、前記計算機が、前記受け付けたタプルに、前記オペレータに設定された特定の条件が含まれるか否かを判定する第3のステップと、前記計算機が、前記受け付けたタプルに、前記オペレータに設定された特定の条件が含まれると判定したときに、前記グルーピングカラムの値に従って分類されるタプルグループを抽出し、当該タプルグループに属する全てのタプルを一括消去する第4のステップと、を含む。
したがって、本発明によれば、グループ別ウィンドウにおいて分割された各グループを、効率的に削除することが可能となる。
本発明の実施例を示し、ストリームデータ処理サーバが稼働する計算機システムの一例を示すブロック図である。 従来例を示し、クエリの一例を示す図である。 本発明の実施例を示し、クエリの一例を示す図である。 本発明の実施例を示し、グループ別ウィンドウオペレータの一例を示すブロック図である。 本発明の実施例を示し、ストリームデータ処理サーバのオペレータ実行部で構成されるクエリグラフの一例を示すブロック図である。 本発明の実施例を示し、ストリームデータ処理部の構成の一例を示すブロック図である。 本発明の実施例を示し、クリアカラム設定処理の一例を示すフローチャートである。 本発明の実施例を示し、クリアタイプ0の関係演算オペレータにおけるタプル処理の一例を示すフローチャートである。 本発明の実施例を示し、クリアタイプ1の関係演算オペレータにおけるタプル処理の一例を示すフローチャートである。 本発明の実施例を示し、クリアタイプ2の関係演算オペレータにおけるタプル処理の一例を示すフローチャートである。 本発明の実施例を示し、クリアタイプ3の関係演算オペレータにおけるタプル処理の一例を示すフローチャートである。 本発明の実施例を示し、関係演算オペレータの構成を示すブロック図である。 本発明の実施例を示し、結合オペレータの構成を示すブロック図である。 本発明の実施例を示し、クリアタイプ1の集約オペレータの構成を示すブロック図である。 本発明の実施例を示し、クリアタイプ2の集約オペレータの構成を示すブロック図である。 本発明の実施例を示し、クリアタイプ3の集約オペレータの構成を示すブロック図である。 本発明の実施例を示し、射影オペレータの構成を示すブロック図である。
以下、本発明の一実施例を添付図面に基づいて説明する。
図1を用いて、本発明のストリームデータ処理サーバが稼働する計算機システムの一例を説明する。ストリームデータ処理サーバ100は、プロセッサ101、メモリ102、ネットワークI/F104、ストレージ105、およびそれらを接続するバス103によって構成される計算機である。メモリ102上には、ストリームデータ処理の論理動作を定義するストリームデータ処理部110が読み込まれる。ストリームデータ処理部110は、プロセッサ101によって実行可能な実行イメージである。
ストリームデータ処理サーバ100は、ネットワークI/F104を介して外部ネットワーク150に接続される。外部ネットワーク150に接続されたホスト計算機130上で動作するクエリ登録コマンド実行インタフェース131を介して、ホスト計算機130のユーザによって定義されたストリームクエリ132を、ストリームデータ処理サーバ100が受信すると、ストリームデータ処理部110は、該クエリ定義に従ってストリームデータ処理を実行可能なクエリグラフを生成する。
この後、外部ネットワーク150に接続されたデータ発生器(または計算機)120によって送信される入力タプル121を、ストリームデータ処理サーバ100が受信する。ストリームデータ処理サーバ100は、生成されたクエリグラフに従って受信した入力タプル121を処理し、結果タプル141を生成する。該結果タプル141は、外部ネットワーク150に接続されたデータ受信機(または計算機)140に送信される。なお、データ発生器120によって送信される入力タプル121は、データ発生器120でタイムスタンプを付与された時系列のストリームデータを構成する。
ストレージ105は、ストリームデータ処理部110の実行イメージの他、一度受取った前記ストリームクエリ132のテキストファイルを保存する。ストリームデータ処理部110は、起動時にストレージ105から該クエリファイルをロードし、クエリグラフを構築することも可能である。
ストリームデータ処理部110の各機能部はプログラムとしてメモリ102にロードされる。プロセッサ101は、各機能部のプログラムに従って動作することによって、所定の機能を実現する機能部として動作する。例えば、プロセッサ101は、ストリームデータ処理プログラムに従って動作することでストリームデータ処理部110として機能する。他のプログラムについても同様である。さらに、プロセッサ101は、各プログラムが実行する複数の処理のそれぞれを実現する機能部としても動作する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
ストリームデータ処理部110の各機能を実現するプログラム、テーブル等の情報は、ストレージ105や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
図2Bは、本発明の実施例を示し、クエリの一例を示す図である。この図2Bを用いて、グループ別ウィンドウ(グループ別ウィンドウオペレータ)定義における、データクリア条件を指定する構文を説明する。
データクリア条件は、図2Bにおいて、“[”と“]”で囲まれたウィンドウ指定の末尾に、キーワード“CLEAR ON”、および、それに続けてタプル選択条件を記載することで指定する。タプル選択条件としては、グループ別ウィンドウの入力タプルに対して定義可能な、任意の論理式を指定可能である。ここで、グループ別ウィンドウは、前記従来例にも示したように、“[PARTITION BY C1...Cm ROWS N]”のように、ユーザが指定したカラムC1...Cmの値によってタプルをグループに分割し、グループ別に個数ウィンドウを定義して生存期間を制限する。なお、これらのカラムを以下ではグルーピングカラムとする。また、グルーピングカラムは、単独指定に限らず、複数の組合せでもよい。
クエリ202の例では、グループ別ウィンドウへの入力であるtradeストリームに、カラムask_bidの値が文字列‘non’であるタプルが到来した際に、入力タプルのカラムuser、およびstockカラムの値の組合せと一致するグループのタプル最大100個を、一括して消去する。
ここで、上記グループ別ウィンドウのグルーピングカラムは{user,stock}である。このカラム群は、ウィンドウから削除されるグループも示すことになる。以降では、ウィンドウから削除されるグループを示すカラム群{user,stock}を、クリアカラムとも呼ぶ。
上記の一括消去においては、消去する各タプルについてマイナスタプルを出力するのではなく、削除されるグループのクリアカラムの値のみをコピーし、それ以外のカラムを不定値(任意の値“*”)とする、入力ストリームとスキーマが同一の、クリアタプルを一つだけ出力する。クリアタプルは、消滅したタプル群を示すタプルである。
図2Cは、グループ別ウィンドウ(オペレータ)303の一例を示すブロック図である。グループ別ウィンドウ303は、タプル203のカラムask_bidの値が文字列‘non’のデータクリア条件を満たす場合、タプル203が所属するグループ321(uA,sX)を一括して削除する。そして、グループ別ウィンドウ303は、削除したタプル203のグループ属性(クリアカラム=uA,sX)を残し、それ以外のカラムを不定値(any(“*”))に変更したクリアタプル204を一つだけ出力する。なお、タプル203は、図1の入力タプル121に含まれる。
図3を用いて、ストリームデータ処理方法において、図2Bのクエリの一例を変換した結果として、クエリ実行部に生成されるクエリグラフの一例を説明する。301、および302は、それぞれ入力ストリーム“trade”、および“monitor”を示し、303〜306はオペレータ実行部を示す。307〜310はオペレータ間でのタプルの送受に利用するタプルキューを表す。
図3は、オペレータ実行部として、グループ別ウィンドウ(オペレータ)303とUNBOUNDEDウィンドウ(オペレータ)304の次段に、結合オペレータ305を並列的に結合し、結合オペレータ305の次段に、集約オペレータ306を結合した例を示す。各オペレータ実行部を構成するオペレータ303〜306は、処理対象となる生存中のタプル群をそれぞれ管理する。図中タプル351〜364は、それぞれのオペレータで管理されるタプルを表す。
各オペレータは、クエリ定義に従った処理を効率的に実行するために、処理対象のタプルを、カラム値の組合せに従ってグループ分けし、当該組合せをキーとするインデクスで管理する。このインデクスをオペレータインデクス341、342、343、344と呼ぶ。また、このカラムの組合せを、グループ別ウィンドウと同様にグルーピングカラムと呼ぶ。以降では、キーを名前として各グループを示す。例えば、グループ別ウィンドウ303において、グルーピングカラムの組合せが{uA,sX}であるタプル351〜353を保持するグループ321は、[uA,sX]グループと呼ぶ。
図2Bのクエリでは、カラムuserが結合条件として指定されているため、結合オペレータ305では、{trade.user}をグルーピングカラムとしている。また、集約オペレータ306では、GROUP BY構文で指定されている{trade.user,trade.stock,trade.ask_bid}をグルーピングカラムとしている。
図4を用いて、本発明におけるストリームデータ処理部110の論理構成を説明する。ユーザが利用するホスト計算機130で、ストリームクエリ132の登録操作を実行すると、クエリパーサ401が、ストリームクエリ132を受け付けて、1以上のオペレータを配置したクエリグラフ構成情報402に変換する。
クエリ実行部構成処理403は、クエリグラフ構成情報402に基づいて、クエリ実行部410に、図3で示したようなクエリグラフを構築する。クエリ実行部410には、クエリグラフのノードであるオペレータ毎に、各オペレータの処理を実行するオペレータ実行部411〜416が配備される。オペレータ実行部411〜416の一例として、図3で示したグループ別ウィンドウのオペレータ303〜集約オペレータ306が含まれる。
ここで、本発明では、グループ別ウィンドウの特定グループがクリアされた際に、後続のオペレータにおけるクリア処理を効率化するように、各オペレータ実行部411〜416におけるタプルのグループ分け方法を決定する必要がある。このようなグループ別ウィンドウの特定グループがクリアされたときに、グループ分けの決定を担当するクリアカラム設定処理404を、クエリ実行部構成処理403の一部として含む。
図5を用いて、ストリームデータ処理部110で行われるクリアカラム設定処理404のフローチャートを示す。このフローチャートでは、各オペレータのグルーピングカラム、および各オペレータの入力となる前段オペレータのクリアカラムに基づいて、通常のオペレータ処理と、グループのクリア時の処理を効率化するように、各オペレータのタプル処理方法を、4つのタイプ(クリアタイプ0〜3)から選択する。図4に示したクエリグラフ構成情報402の個々のオペレータについて、このフローチャートを適用する。
ステップ501において、前段オペレータのクリアカラムを取得し、ステップ502、503、504の条件判定によって、クリアカラムとグルーピングカラムの包含関係に従って、4つのステップのいずれかひとつに分岐する。
ステップ502では、クリアカラムがグルーピングカラムの部分集合であるか否かを判定する。クリアカラムがグルーピングカラムの部分集合である場合には、ステップ503へ進み、そうで無い場合にはステップ504に進む。
ステップ503では、クリアカラムとグルーピングカラムが一致する場合は、ステップ505に進み、当該オペレータの処理方法はクリアタイプ0となる。クリアカラムを構成するカラムが全てグルーピングカラムに含まれる場合は、ステップ506に進み、当該オペレータの処理方法はクリアタイプ1となる。
一方、ステップ504の判定では、グルーピングカラムを構成するカラムが全てクリアカラムに含まれる場合は、ステップ507に進み、当該オペレータの処理方法はクリアタイプ2となる。クリアカラムとグルーピングカラムが互いに包含関係にない場合は、ステップ508に進み、クリアタイプ3となる。
クリアカラムと、グルーピングカラムは、それぞれ、入力タプル121をグループ分けして管理する目的で利用される。グルーピングカラムについては、前述のようにオペレータインデクスのキーとなる。一方の、クリアカラムも同様に、グループ分けしてインデクスで管理するためのキーとなる。クリアカラムをキーとするインデクスを、クリアインデクスと呼ぶ。
クリアカラムとグルーピングカラムの包含関係において、包含する側をキーとするインデクスは、包含されるインデクスに対して、より細かいタプルグループを形成することになる。
ここで、より細かい方のグループを内グループ、他方を外グループと呼ぶ。ステップ510〜512は、クリアカラムとグルーピングカラムの包含関係に基づいて、内グループと外グループのそれぞれを、クリアインデクスとオペレータインデクス341〜344のどちらで管理するかを定める。なお、ステップ508で設定するクリアタイプ3については、クリアカラムとグルーピングカラムの構成カラムの和集合をとって、改めてクリアカラムとすることで、クリアカラムがグルーピングカラムを包含する関係に変更したうえで、ステップ512を適用する。最後に、ステップ513では、各オペレータ実行部411〜416を、クリアタイプ0〜3毎に決められた処理で構成する。
図10は、関係演算オペレータ1001の構成を示すブロック図である。
関係演算オペレータ1001は、タプルキュー1002より取得したタプルについて、クリアタプルと通常タプルのどちらであるかを判定し、クリアタプルであればクリアタプル処理部1012で、通常タプルであれば通常タプル処理部1015で、それぞれ処理する。
クリアタプル処理部1012は、タプルグループ削除部として内グループ削除部1013と、外グループ削除部1014を備える。上述したクリアカラムとグルーピングカラムの包含関係に基づいて、内グループ削除部1013と、外グループ削除部1014を区別して利用する。
通常タプル処理部1015は、内グループをクリアインデクスかオペレータインデクスのいずれかより抽出し、内グループで管理されるデータを更新する。
クリアインデクス1021、オペレータインデクス1022、および両インデクスで管理するタプルグループ1023〜1030は、関係演算オペレータ1001を実行するオペレータ実行部411〜416のワークエリアであるテンポラルストア1020上で管理される。テンポラルストア1020上のデータに対するアクセスは、グループ抽出/更新部1017を経由して実行する。
外グループ更新処理部1018は、内グループの削除/更新に伴う外グループへの影響を各オペレータの処理内容に従って判断し、テンポラルストア1020内のデータ、あるいは結果タプルに反映する。結果タプル出力処理1019は、各オペレータの処理内容に従って、結果タプルを生成し、タプルキュー1003に出力する。
図6を用いて、クリアタイプ0の場合に関係演算オペレータ1001で行われる処理の一例を示すフローチャートについて説明する。
関係演算オペレータ1001は、ステップ601でタプルを入力し、ステップ602でタプルがクリアタプルか否かを判定する。クリアタプルの場合は、ステップ603でオペレータインデクス1022から内グループを抽出し、ステップ604では抽出された内グループに属するタプル群を一括削除する。さらにステップ605で、一括削除したタプルグループのクリアカラムの値のみをコピーし、それ以外のカラムを不定値とする、当該オペレータ実行部411の出力結果とスキーマが同一のクリアタプルを一つだけ出力する。
通常タプルの場合は、ステップ606でオペレータインデクス1022からタプルグループを抽出し、ステップ607で通常のオペレータの処理内容に従ってステップを実行し、結果タプルを出力する。
以上の処理によって、クリアタイプが0の場合には、オペレータインデクス1022から内グループを抽出して所定の処理を実行し、クリアタプルの場合は、抽出された内グループに属するタプル群を一括削除し、出力結果とスキーマが同一のクリアタプルを一つだけ出力する。
図7を用いて、クリアタイプ1の場合に関係演算オペレータ1001で行われる処理の一例をフローチャートについて説明する。
関係演算オペレータ1001は、ステップ701でタプルを入力し、ステップ702でタプルがクリアタプルか否かを判定する。クリアタプルの場合は、ステップ703でクリアインデクス1021から外グループ1023、1024を抽出し、ステップ704で抽出された外グループに属する内グループ群、および各内グループに属するタプル群を一括削除する。さらにステップ705では、抽出された外グループのクリアカラムの値のみをコピーし、それ以外のカラムを不定値とする、当該関係演算オペレータ1001の出力結果とスキーマが同一のクリアタプルを一つだけ出力する。
通常タプルの場合は、ステップ706でオペレータインデクス1022からタプルグループを抽出し、ステップ707で通常のオペレータの処理内容に従ってステップを実行し、結果タプルを出力する。
以上の処理によって、クリアタイプが1でクリアタプルの場合には、クリアインデクス1021から外グループを抽出して、外グループに属する内グループとタプル群を一括削除し、当該関係演算オペレータ1001の出力結果とスキーマが同一のクリアタプルを一つだけ出力する。
図8を用いて、クリアタイプ2の関係演算オペレータ1001における、タプル処理の一例をフローチャートに従って説明する。
関係演算オペレータ1001は、ステップ801でタプルを入力し、ステップ802でタプルがクリアタプルか否かを判定する。クリアタプルの場合は、ステップ803でクリアインデクス1021から内グループを抽出し、ステップ804では抽出した内グループを削除する。
通常タプルの場合は、ステップ805でクリアインデクス1021から内グループを抽出し、ステップ806で通常のオペレータの処理内容に従って内グループのデータを更新する。ステップ804、ステップ806の影響により、抽出された内グループを包含する外グループに関して、通常のオペレータの処理内容に従った結果タプルを出力する必要がある。外グループへの影響の反映をステップ807で実施し、結果タプルの出力をステップ808で実行する。
以上の処理によって、クリアタイプが2でクリアタプルの場合には、クリアインデクス1021から内グループを抽出して、抽出された内グループとタプル群を一括削除する。そして、内グループの影響を受ける外グループの更新を行う。
図9を用いて、クリアタイプ3の関係演算オペレータ1001における、タプル処理の一例をフローチャートに従って説明する。
関係演算オペレータ1001は、ステップ901でタプルを入力し、ステップ902でタプルがクリアタプルか否かを判定する。クリアタプルの場合は、ステップ903でクリアインデクス1021から内グループを抽出する。このとき、複数の内グループが、クリアタプルによる削除対象となる可能性がある。その全ての内グループを、ステップ904〜906のループ処理で削除する。
一方、通常タプルの場合は、ステップ907でクリアインデクス1021から内グループを抽出し、ステップ908で通常のオペレータの処理内容に従って内グループのデータを更新する。そして、関係演算オペレータ1001は、ステップ905、ステップ908の影響により、削除した内グループ群を包含する外グループ群に関して、通常のオペレータの処理内容に従った結果タプルを出力する必要がある。関係演算オペレータ1001は外グループへの影響の反映をステップ909で実施し、結果タプルの出力をステップ910で実行する。
以上の処理によって、クリアタイプが3でクリアタプルの場合には、クリアインデクス1021から内グループの集合を抽出して、抽出された内グループの集合とタプル群を一括削除する。そして、内グループの影響を受ける外グループの更新を行う。
図11を用いて、結合オペレータでのクリアタプルの処理の一例について説明する。図11のテンポラルストア1101は、図10に示した関係演算オペレータ1001のテンポラルストア1020を置き換えて、関係演算オペレータが結合オペレータとして機能する場合を示す。
図中1150、1151はそれぞれ、結合オペレータの入力スキーマ、および出力スキーマである。また、各スキーマ1150、1151内の下線部はクリアカラムである。例として、グループ別ウィンドウに(uA,sX,‘non’,pi,vi)というカラム値の組合せを持ったタプルが入力され、グループ別ウィンドウがクリアタプル1152(uA,sX,*,*,*)を出力し、クリアタプル1152が当該オペレータに入力されたケースを想定する。ただし、値「*」は任意の値である。
結合オペレータのグルーピングカラムは、図2Bで示したクエリ202の結合条件に基づき{trade.user}となる。クリアカラムがグルーピングカラムを包含するため、図8に示したクリアタイプ2のフローチャートに従って処理が実行される。図8のステップ803、804に従って、クリアインデクス1102から内グループ1103(uA,sX)を削除する。
この結果、内グループ1103(uA,sX)を包含する外グループ325(uA)のタプルセットが減少する。但し、結合オペレータの処理では、外グループ325に対する影響はそれのみであるため、ステップ807として特別な処理は不要である。ステップ808において、結果タプルとしてクリアカラム{trade.user,trade.stock}={uA,sX}のタプル群の消滅を表すクリアタプル1153を出力する。
以上のように、結合オペレータは、クリアタイプ2のクリアタプルが入力されるとテンポラルストア1101からクリアカラムが一致するタプルを除去する。そして、結合オペレータは、結合後のスキーマ1151において、クリアカラムを残し、クリアカラム以外のカラムを任意の値“*”に変更したクリアタプル1153を出力する。
図12を用いて、集約オペレータでのクリアタプルの処理を説明する。図12のテンポラルストア1201は、図10に示した関係演算オペレータ1001のテンポラルストア1020を置き換えて、関係演算オペレータが集約オペレータとして機能する場合を示す。
図12の例では図11に示した結合オペレータの出力を入力とする例を示す。図中1151、1251はそれぞれ、集約オペレータの入力スキーマ、および出力スキーマである。また、下線部はクリアカラムである。例として、クリアタプル1153(uA,sX,*,*,*,*)が、当該集約オペレータへ入力されたケースを想定する。
当該集約オペレータのグルーピングカラムは、図2Bに示したクエリ202のGROUP BY句に基づき{trade.user,trade.stock,trade.ask_bid}となる。グルーピングカラムがクリアカラムを包含するため、図7に示したクリアタイプ1のフローチャートに従って処理を実行する。図7のステップ703、704に従って、クリアインデクス1202から外グループ1203を削除する。さらにステップ705に従って、結果タプルとしてクリアカラム{trade.user,trade.stock}={uA,sX}のタプル群の消滅を表すクリアタプル1252を出力する。
以上のように、集約オペレータは、クリアタイプ1のクリアタプルが入力されると、クリアカラムがグルーピングカラムに含まれるため、テンポラルストア1201から外グループを削除する。そして、集約オペレータは、消滅したタプル群を示すクリアタプル1252(uA,sX,*,*)を出力する。
図13を用いて、図2Bのクエリ202中でのGROUP BY句のカラム(およびSELECT句で出力するカラム)の指定が{trade.user}に変更された場合の、集約オペレータにおけるクリアタプルの処理を説明する。図13のテンポラルストア1301は、図10に示した関係演算オペレータ1001のテンポラルストア1020を置き換えて、関係演算オペレータが集約オペレータとして機能する場合を示す。
図中1151、1351はそれぞれ、集約オペレータの入力スキーマ、および出力スキーマである。また、下線部はクリアカラムである。例として、クリアタプル1153(uA,sX,*,*,*,*)が、当該集約オペレータに入ったケースを想定する。
当該集約オペレータのグルーピングカラムは、上述のGROUP BY句に基づき{trade.user}となる。クリアカラムがグルーピングカラムを包含するため、図8に示したクリアタイプ2のフローチャートに従って処理が実行される。図8に示したステップ803、804に従って、クリアインデクス1302から内グループ1306を削除する。その結果、内グループ1306を包含する外グループ1304(uA)の集計値が変化することになる。図8のステップ807として、この集計値の変化を外グループ1304に記憶する。さらに、ステップ808において、この集計値の変化を表すマイナスタプル1352およびプラスタプル1353を出力する。
以上のように、集約オペレータは、クリアタイプ2のクリアタプルが入力されると、グルーピングカラムがクリアカラムに含まれるため、クリアカラムに一致する内グループ1306を削除する。削除した内グループによって集計値が変化した外グループ1304の値を更新し、集計値の変化を表すマイナスタプル1352およびプラスタプル1353を出力する。
図14を用いて、図2Bのクエリ202中でのGROUP BY句のカラム(およびSELECT句で出力するカラム)の指定が{trade.stock,trade.ask_bid}に変更された場合の、集約オペレータにおけるクリアタプルの処理を説明する。図14のテンポラルストア1401は、図10に示した関係演算オペレータ1001のテンポラルストア1020を置き換えて、関係演算オペレータが集約オペレータとして機能する場合を示す。
図中1151、1451はそれぞれ、集約オペレータの入力スキーマ、および出力スキーマである。また、下線部はクリアカラムである。例として、クリアタプル1153(uA,sX,*,*,*,*)が、当該オペレータに入ったケースを想定する。
当該集約オペレータのグルーピングカラムは、上述のGROUP BY句に基づき{trade.stock,trade.ask_bid}となる。グルーピングカラムとクリアカラムが互いに包含関係にないため、図9に示したクリアタイプ3のフローチャートに従って動作する。図9のステップ903〜906に従って、クリアインデクス1402から内グループ1408と1410を削除する。その結果、内グループ1408、1410を包含する外グループ1404、1405の集計値が変化することになる。ステップ909として、これら集計値の変化を外グループ1404、1405に記憶する。さらに、集約オペレータは、ステップ910において、この集計値の変化を表すマイナスタプル1452、1454、およびプラスタプル1453、1455を生成して出力する。
以上のように、集約オペレータは、クリアタイプ3のクリアタプルが入力されると、グルーピングカラムとクリアカラムが互いに包含関係にないため、クリアインデクス1402から内グループ1408と1410を削除する。そして、集約オペレータは、削除した内グループによって集計値が変化した外グループ1404、1405の値を更新し、集計値の変化を表すマイナスタプル1452、1454およびプラスタプル1453、1455を出力する。
図15を用いて、クエリ202にクエリ1500が追加された場合の、射影オペレータにおけるクリアタプルの処理を説明する。図15のテンポラルストア1501は、図10に示した関係演算オペレータ1001のテンポラルストア1020を置き換えて、関係演算オペレータが射影オペレータとして機能する場合を示す。
図中1251、1551はそれぞれ、射影オペレータの入力スキーマ、および出力スキーマである。また、下線部はクリアカラムである。例として、クリアタプル1252(uA,sX,*,*)が、当該オペレータに入ったケースを想定する。
当該射影オペレータのグルーピングカラムは、入力ストリームの全カラム、すなわち{trade.user,trade.stock,trade.ask_bid,amount}となる。グルーピングカラムがクリアカラムを包含するため、図7に示したクリアタイプ1のフローチャートに従って動作する。射影オペレータは常にクリアタイプ0または1となる。図7のステップ703、704に従って、クリアインデクス1502から外グループ1504を削除する。さらにステップ705に従って、射影オペレータが結果タプルとしてクリアカラム{id}={uA*1000+sX}のタプル群の消滅を表すクリアタプル1552を出力する。
なお、射影オペレータにおけるクリアカラムは、当該オペレータの前段オペレータにおける、クリアタプルのみから算出されるカラムとなる。そのため、valueカラムはクリアカラムに含まれない。
以上、本発明の実施例について説明したが、これらは本発明を説明するための例示であり、本発明の適応範囲を例示した形態のみに限定するものではない。また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体(例えば、非一時的な記憶媒体)に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
100 ストリームデータ処理サーバ
101 プロセッサ
102 メモリ
105 ストレージ
110 ストリームデータ処理部
120 データ発生器
130 ホスト計算機
131 クエリ登録インタフェース
132、201、202、1500 ストリームクエリ
140 データ受信器
150 ネットワーク
203 タプル
204 クリアタプル
307〜310、1002、1003 タプルキュー
303〜306、411〜416、1001 オペレータ実行部
321〜335、1023〜1030、1103〜1106、1203〜1205、1304〜1308、1404〜1413、1504〜1506 タプルグループ
121、141、351〜364、1206〜1209、1309〜1311、1414〜1419 タプル
341〜344、1022、1303、1403、1503 オペレータインデクス
1021、1102、1202、1302、1402、1502 クリアインデクス
1020、1101、1201、1301、1401、1501 テンポラルストア
1152、1153、1252、1552 クリアタプル
1352、1452、1454 マイナスタプル
1353、1453、1455 マイナスタプル
1150、1151、1251、1351、1451、1551 スキーマ定義
1011 クリアタプル/通常タプル判定部
1012 クリアタプル処理部
1015 通常タプル処理部
1013 内グループ削除部
1014 外グループ削除部
1016 内グループ更新処理部
1017 グループ抽出/更新部
1018 外グループ更新処理部
1019 結果タプル出力部
401 クエリパーサ
402 クエリグラフ構成情報
403 クエリ実行部構成処理
404 クリアカラム設定処理
410 クエリ実行部
421 タプル入力部
422 タプル出力部

Claims (15)

  1. プロセッサとメモリを備えた計算機が、時系列のタプルを含むストリームデータを処理するストリームデータ処理方法であって、
    前記計算機が、クエリ定義を受け付けて、前記タプルを一ないし複数のカラムの組であるグルーピングカラムと、当該グルーピングカラムの値の組合せに従ってタプルグループに分割し、当該分割したタプルの同時生存個数を制限し、かつ、特定の条件を含むオペレータをクエリグラフに設定する第1のステップと、
    前記計算機が、前記タプルを含むストリームデータを受け付けて、前記オペレータへ前記タプルを入力する第2のステップと、
    前記計算機が、前記受け付けたタプルに、前記オペレータに設定された特定の条件が含まれるか否かを判定する第3のステップと、
    前記計算機が、前記受け付けたタプルに、前記オペレータに設定された特定の条件が含まれると判定したときに、前記グルーピングカラムの値に従って分類されるタプルグループを抽出し、当該タプルグループに属する全てのタプルを一括消去する第4のステップと、
    を含むことを特徴とするストリームデータ処理方法。
  2. 請求項1に記載のストリームデータ処理方法であって、
    前記計算機は、前記タプルグループに属する全てのタプルを一括消去した後に、前記グルーピングカラムを、当該タプルのグループ別ウィンドウのクリアカラムとし、前記特定の条件を満足する前記タプルの前記クリアカラムの値をコピーして、前記クリアカラム以外のカラムの値不定値を表す所定のデータを設定し、前記タプルとスキーマを同一とするクリアタプルを生成する第5のステップと、
    前記計算機は、前記オペレータの次段に配置された第2のオペレータへ前記クリアタプルを送出する第6のステップと、
    をさらに含み、
    前記クリアカラムは、削除されるグループを示すカラムであり、前記クリアタプルは、消去されたタプル群を示すことを特徴とするストリームデータ処理方法。
  3. 請求項2に記載のストリームデータ処理方法であって、
    前記計算機が、前記クエリ定義に従って、前記第2のオペレータのグルーピングカラムを決定し、前記クリアカラムの値の組合せ毎にタプルグループを生成して、当該クリアカラムの値の組合せをキーとして当該タプルグループを分類するためのクリアインデクスを生成する第7のステップと、
    前記計算機が、前記クエリ定義に従って、前記第2のオペレータのグルーピングカラムを決定し、前記グルーピングカラムの値の組合せ毎にタプルグループを生成して、当該グルーピングカラムの値の組合せをキーとして、当該タプルグループを分類するためのオペレータインデクスを生成する第8のステップと、
    前記計算機が、前記クリアカラムと前記グルーピングカラムの包含関係に基づいて、前記第2のオペレータが、前記タプルを受け付けたときの処理を設定する第9のステップと、
    をさらに含むことを特徴とするストリームデータ処理方法。
  4. 請求項3に記載のストリームデータ処理方法であって、
    前記第9のステップは、
    前記包含関係は、前記クリアカラムと前記グルーピングカラムが等しい場合で、前記受け付けたタプルが前記クリアタプルの場合は、前記オペレータインデクスを参照して当該クリアタプルが属するタプルグループを削除し、前記クリアカラムの値をコピーして、前記クリアカラム以外のカラムの値不定値を表す所定のデータを設定し、当該第2のオペレータが出力する結果タプルとスキーマを同一とするクリアタプルを生成することを特徴とするストリームデータ処理方法。
  5. 請求項3に記載のストリームデータ処理方法であって、
    前記第9のステップは、
    前記包含関係は、前記クリアカラムに属する全てのカラムが前記グルーピングカラムに含まれる場合で、前記クリアインデクスのタプルグループの中に、当該クリアカラムの値の組合せが、当該タプルグループのキーと同一であるような前記オペレータインデクスで管理するタプルグループの全てを含ませ、前記入力されたタプルがクリアタプルの場合は、前記クリアインデクスより当該クリアタプルが所属するタプルグループを削除し、前記クリアカラムの値をコピーし、前記クリアカラム以外のカラムの値不定値を表す所定のデータを設定して、当該第2のオペレータが出力する結果タプルとスキーマを同一とするクリアタプルを生成することを特徴とするストリームデータ処理方法。
  6. 請求項3に記載のストリームデータ処理方法であって、
    前記第9のステップは、
    前記包含関係は、前記グルーピングカラムに属する全てのカラムが前記クリアカラムに含まれる場合で、前記オペレータインデクスで管理する一つのタプルグループの中に、当該グルーピングカラムの値の組合せが、当該タプルグループのキーと同一である前記クリアインデクスのタプルグループの全てを含ませ、前記入力されたタプルがクリアタプルの場合は、前記クリアインデクスより当該クリアタプルが所属する第1のタプルグループを削除し、前記オペレータインデクスで管理されるタプルのうち、前記第1のタプルグループを含む第2のタプルグループを抽出し、前記第1のタプルグループが削除された当該第2のタプルグループのタプルの集計値の変化を表す結果タプルを生成することを特徴とするストリームデータ処理方法。
  7. 請求項3に記載のストリームデータ処理方法であって、
    前記第9のステップは、
    前記包含関係が、前記グルーピングカラムと前記クリアカラムが相互に包含しない場合には、前記グルーピングカラムと前記クリアカラムの和集合をクリアカラムとし、前記オペレータインデクスで管理する一つのタプルグループの中に、当該グルーピングカラムの値の組合せが、当該タプルグループのキーと同一である前記クリアインデクスで管理するタプルグループの全てを含ませ、前記入力されたタプルがクリアタプルの場合は、前記クリアインデクスより当該クリアタプルが属する第1のタプルグループの全てを削除し、前記オペレータインデクスで管理されるタプルのうち、前記第1のタプルグループを含む第2のタプルグループを抽出し、前記第1のタプルグループが削除された当該第2のタプルグループのタプルの集計値の変化を表す結果タプルを生成することを特徴とするストリームデータ処理方法。
  8. プロセッサとメモリとを備えて、時系列のタプルを含むストリームデータを処理するストリームデータ処理装置であって、
    クエリ定義を受け付けてオペレータを配置するクエリグラフを設定するクエリ構成部と、
    前記時系列のタプルを含むストリームデータを受け付けて前記クエリグラフのオペレータで前記タプルを処理するクエリ実行部と、を備え、
    前記クエリ構成部は、
    前記クエリ定義を受け付けて、前記タプルを一ないし複数のカラムの組であるグルーピングカラムと、当該グルーピングカラムの値の組合せに従ってグループに分割し、当該分割したタプルの同時生存個数を制限し、かつ、特定の条件を含むオペレータを前記クエリグラフに設定し、
    前記クエリ実行部は、
    前記受け付けたタプルに、前記オペレータに設定された特定の条件が含まれるか否かを判定し、前記受け付けたタプルに前記オペレータに設定された特定の条件が含まれる場合には、前記グルーピングカラムの値に従って分類されるタプルグループを抽出し、当該タプルグループに属する全てのタプルを一括消去することを特徴とするストリームデータ処理装置。
  9. 請求項8に記載のストリームデータ処理装置であって、
    前記クエリ実行部は、
    前記タプルグループに属する全てのタプルを一括消去した後に、前記グルーピングカラムを、当該タプルのグループ別ウィンドウのクリアカラムとし、前記特定の条件を満足する前記タプルの前記クリアカラムの値をコピーして、前記クリアカラム以外のカラムの値不定値を表す所定のデータを設定し、前記タプルとスキーマを同一とするクリアタプルを生成し、前記オペレータの次段に配置された第2のオペレータへ前記クリアタプルを送出し、
    前記クリアカラムは、削除されるグループを示すカラムであり、前記クリアタプルは、消去されたタプル群を示すことを特徴とするストリームデータ処理装置。
  10. 請求項9に記載のストリームデータ処理装置であって、
    前記クエリ構成部は、
    前記クエリ定義に従って、前記第2のオペレータのグルーピングカラムを決定し、前記クリアカラムの値の組合せ毎にタプルグループを生成して、当該クリアカラムの値の組合せをキーとして当該タプルグループを分類するためのクリアインデクスを生成し、前記クエリ定義に従って、前記第2のオペレータのグルーピングカラムを決定し、前記グルーピングカラムの値の組合せ毎にタプルグループを生成して、当該グルーピングカラムの値の組合せをキーとして、当該タプルグループを分類するためのオペレータインデクスを生成し、
    前記クエリ実行部は、
    前記クリアカラムと前記グルーピングカラムの包含関係に基づいて、前記第2のオペレータが、前記タプルを受け付けたときの処理を設定することを特徴とするストリームデータ処理装置。
  11. 請求項10に記載のストリームデータ処理装置であって、
    前記クエリ実行部は、
    前記包含関係が、前記クリアカラムと前記グルーピングカラムが等しい場合で、前記受け付けたタプルが前記クリアタプルの場合は、前記オペレータインデクスを参照して当該クリアタプルが属するタプルグループを削除し、前記クリアカラムの値をコピーして、前記クリアカラム以外のカラムの値不定値を表す所定のデータを設定し、当該第2のオペレータが出力する結果タプルとスキーマを同一とするクリアタプルを生成することを特徴とするストリームデータ処理装置。
  12. 請求項10に記載のストリームデータ処理装置であって、
    前記クエリ実行部は、
    前記包含関係は、前記クリアカラムに属する全てのカラムが前記グルーピングカラムに含まれる場合で、前記クリアインデクスのタプルグループの中に、当該クリアカラムの値の組合せが、当該タプルグループのキーと同一であるような前記オペレータインデクスで管理するタプルグループの全てを含ませ、前記受け付けたタプルがクリアタプルの場合は、前記クリアインデクスより当該クリアタプルが所属するタプルグループを削除し、前記クリアカラムの値をコピーし、前記クリアカラム以外のカラムの値不定値を表す所定のデータを設定して、当該第2のオペレータが出力する結果タプルとスキーマを同一とするクリアタプルを生成することを特徴とするストリームデータ処理装置。
  13. 請求項10に記載のストリームデータ処理装置であって、
    前記クエリ実行部は、
    前記包含関係は、前記グルーピングカラムに属する全てのカラムが前記クリアカラムに含まれる場合で、前記オペレータインデクスで管理する一つのタプルグループの中に、当該グルーピングカラムの値の組合せが、当該タプルグループのキーと同一である前記クリアインデクスのタプルグループの全てを含ませ、前記受け付けたタプルがクリアタプルの場合は、前記クリアインデクスより当該クリアタプルが所属する第1のタプルグループを削除し、前記オペレータインデクスで管理されるタプルのうち、前記第1のタプルグループを含む第2のタプルグループを抽出し、前記第1のタプルグループが削除された当該第2のタプルグループのタプルの集計値の変化を表す結果タプルを生成することを特徴とするストリームデータ処理装置。
  14. 請求項10に記載のストリームデータ処理装置であって、
    前記クエリ実行部は、
    前記包含関係が、前記グルーピングカラムと前記クリアカラムが相互に包含しない場合には、前記グルーピングカラムと前記クリアカラムの和集合をクリアカラムとし、前記オペレータインデクスで管理する一つのタプルグループの中に、当該グルーピングカラムの値の組合せが、当該タプルグループのキーと同一である前記クリアインデクスで管理するタプルグループの全てを含ませ、前記受け付けたタプルがクリアタプルの場合は、前記クリアインデクスより当該クリアタプルが属する第1のタプルグループの全てを削除し、前記オペレータインデクスで管理されるタプルのうち、前記第1のタプルグループを含む第2のタプルグループを抽出し、前記第1のタプルグループが削除された当該第2のタプルグループのタプルの集計値の変化を表す結果タプルを生成することを特徴とするストリームデータ処理装置。
  15. プロセッサとメモリを備えた計算機で、時系列のタプルを含むストリームデータを処理するプログラムであって、
    クエリ定義を受け付けて、前記タプルを一ないし複数のカラムの組であるグルーピングカラムと、当該グルーピングカラムの値の組合せに従ってタプルグループに分割し、当該分割したタプルの同時生存個数を制限し、かつ、特定の条件を含むオペレータをクエリグラフに設定する第1の手順と、
    前記タプルを含むストリームデータを受け付けて、前記オペレータへ前記タプルを入力する第2の手順と、
    前記受け付けたタプルに、前記オペレータに設定された特定の条件が含まれるか否かを判定する第3の手順と、
    前記受け付けたタプルに、前記オペレータに設定された特定の条件が含まれると判定したときに、前記グルーピングカラムの値に従って分類されるタプルグループを抽出し、当該タプルグループに属する全てのタプルを一括消去する第4の手順と、
    を前記計算機に実行させることを特徴とするプログラム。
JP2012228658A 2012-10-16 2012-10-16 ストリームデータ処理方法、ストリームデータ処理装置及びプログラム Active JP6041431B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012228658A JP6041431B2 (ja) 2012-10-16 2012-10-16 ストリームデータ処理方法、ストリームデータ処理装置及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012228658A JP6041431B2 (ja) 2012-10-16 2012-10-16 ストリームデータ処理方法、ストリームデータ処理装置及びプログラム

Publications (2)

Publication Number Publication Date
JP2014081759A JP2014081759A (ja) 2014-05-08
JP6041431B2 true JP6041431B2 (ja) 2016-12-07

Family

ID=50785910

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012228658A Active JP6041431B2 (ja) 2012-10-16 2012-10-16 ストリームデータ処理方法、ストリームデータ処理装置及びプログラム

Country Status (1)

Country Link
JP (1) JP6041431B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6626198B2 (ja) * 2016-06-27 2019-12-25 株式会社日立製作所 管理装置、実行環境設定方法、ストリームデータ処理システム
US10728111B2 (en) * 2018-03-09 2020-07-28 Accenture Global Solutions Limited Data module management and interface for pipeline data processing by a data processing system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5337447B2 (ja) * 2008-10-28 2013-11-06 株式会社日立製作所 ストリームデータ処理方法、及びシステム
JP5465413B2 (ja) * 2008-10-29 2014-04-09 株式会社日立製作所 ストリームデータ処理方法、及びそのシステム
US8868518B2 (en) * 2009-08-14 2014-10-21 International Business Machines Corporation Processing of streaming data with keyed aggregation
JP5423553B2 (ja) * 2010-04-09 2014-02-19 株式会社日立製作所 データベース管理方法、計算機、センサネットワークシステム及びデータベース検索プログラム
JP5352691B2 (ja) * 2012-02-28 2013-11-27 株式会社日立製作所 計算機システム、ストリームデータ管理方法及びプログラム

Also Published As

Publication number Publication date
JP2014081759A (ja) 2014-05-08

Similar Documents

Publication Publication Date Title
CA2994408C (en) Selecting queries for execution on a stream of real-time data
US11868373B2 (en) Method and apparatus for monitoring an in-memory computer system
EP3537325B1 (en) Interactive user interfaces
CN113220724B (zh) 用于处理数据流的方法、系统和计算机可读存储介质
US8527458B2 (en) Logging framework for a data stream processing server
US8386466B2 (en) Log visualization tool for a data stream processing server
US9727438B2 (en) Evaluating dataflow graph characteristics
US20140201225A1 (en) Variable duration non-event pattern matching
US9104708B2 (en) Managing activities over time in an activity graph
JP4735030B2 (ja) 情報管理システム
US20140071135A1 (en) Managing activities over time in an activity graph
US11288258B2 (en) Dedicated audit port for implementing recoverability in outputting audit data
CN110389967A (zh) 数据存储方法、装置、服务器及存储介质
US11640401B2 (en) Alert rule evaluation for monitoring of late arriving data
US20140229480A1 (en) Queue monitoring and visualization
JP6041431B2 (ja) ストリームデータ処理方法、ストリームデータ処理装置及びプログラム
Hallé From complex event processing to simple event processing
JP2018198044A (ja) 複数イベント・パターン・クエリーを生成するための装置および方法
WO2023136843A1 (en) Policy driven event transformation
BE1023661B1 (nl) Een gegevensverwerkingssysteem voor het verwerken van interacties
US11562026B1 (en) Data access using sorted count mapping
CN111831754B (zh) 数据库中数据的复制方法、装置、系统和介质
Ye An Evaluation on Using Coarse-grained Events in an Event Sourcing Context and its Effects Compared to Fine-grained Events
WO2023162390A1 (ja) 分析装置及び分析方法
CN117806929A (zh) MySQL慢日志采集分析方法、系统、设备及存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150727

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160713

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161107

R150 Certificate of patent or registration of utility model

Ref document number: 6041431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150