JP2014123354A - グラフデータの再帰クエリを用いたストリームデータ処理方法 - Google Patents

グラフデータの再帰クエリを用いたストリームデータ処理方法 Download PDF

Info

Publication number
JP2014123354A
JP2014123354A JP2013250965A JP2013250965A JP2014123354A JP 2014123354 A JP2014123354 A JP 2014123354A JP 2013250965 A JP2013250965 A JP 2013250965A JP 2013250965 A JP2013250965 A JP 2013250965A JP 2014123354 A JP2014123354 A JP 2014123354A
Authority
JP
Japan
Prior art keywords
execution
recursion
query
recursive
unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013250965A
Other languages
English (en)
Other versions
JP2014123354A5 (ja
JP6190255B2 (ja
Inventor
Toshihiko Kashiyama
俊彦 樫山
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 JP2014123354A publication Critical patent/JP2014123354A/ja
Publication of JP2014123354A5 publication Critical patent/JP2014123354A5/ja
Application granted granted Critical
Publication of JP6190255B2 publication Critical patent/JP6190255B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

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)

Abstract

【課題】グラフデータの再帰クエリを用いたストリームデータ処理方法を提供する。
【解決手段】ストリームデータ処理コンピュータは、ストリームデータである入力ストリームを受信し、クエリを実行する演算部の実行順序を管理し、ストリームデータである出力ストリームを出力するクエリ実行部と、前記クエリを実行する際に生成されるデータを格納する一時格納部を含むメモリと、を含む。前記演算部は、複数の静的再帰実行部と、判定演算部と、動的再帰実行部と、を含む。前記複数の静的再帰実行部は、前記クエリの静的再帰実行を再帰数の回数行う。前記判定演算部は、前記クエリの静的再帰実行が前記再帰数の回数行われた後で、予め設定された条件が満たされているか否かを判定する。前記動的再帰実行部は、前記予め設定された条件が満たされていない場合、動的再帰実行によって前記クエリの実行を続行する。
【選択図】図2

Description

本発明は、一般にコンピュータシステムに関し、より詳細には、グラフデータの再帰クエリを用いたストリームデータ処理方法に関する。
ストリームデータ処理は広く利用されている。ストレージ装置に格納されるデータを処理するデータベース管理システム(以下、DBMSと称する)に連続して入力されるデータをリアルタイムで処理するデータ処理システムに対する需要が増大している。例えば、株取引を行うシステムにおいては、いかに速く株価の変化に反応できるかが最重要課題のひとつであり、従来のDBMSが実行する、いったんストレージ装置に株価データを格納し、格納されたデータを検索する方法では、株価の変化のスピードに応じて即座に対応できず、ビジネスチャンスを逃してしまう恐れがある。例えば、米国特許第5495600号においては、格納されたクエリを定期的に発行する仕組みが開示されているが、この仕組みを、株価などのデータが入力された直後にクエリを実行することが重要な、リアルタイムデータ処理に適用するのは困難である。
連続して入力されるデータのことをストリームデータと定義し、ストリームデータのリアルタイム処理に適したデータ処理システムとして、ストリームデータ処理システムが提案されている。例えば、R.Motwani,J.Widom,A.Arasu、B.Babcock、S.Babu、M.Datar,G.Manku、C.Olston,J.Rosenstein,R.Varma著、「Query Processing,Resource Management,and Approximation in a Data Stream Management System」(Proc.of the 2003 Conf.on Innovative Data Systems Research(CIDR) オンライン 2003年1月掲載 インターネットURL<https://database.cs.wisc.edu/cidr/cidr2003/program/p22.pdf> 2012年1月19日検索)は、ストリームデータ処理システム「STREAM」を開示している。
このストリームデータ処理システムでは、まずクエリがシステムに登録され、クエリはデータが入ってくるたびに連続して実行される。この点が従来のDBMSと異なる点である。上述のSTREAMでは、スライディングウィンドウと呼ばれる概念を採用している。スライディングウィンドウは、ストリームデータを効率よく処理するため、ストリームデータの一部を切り出し、そのデータに存続期間を設ける。スライディングウィンドウの仕様を含むクエリ記述言語の好適な例として、前述のR.Motwaniによる文献に開示された連続クエリ言語(CQL:Continuous Query Language)がある。CQLはDBMSに広く使用されているSQL(Structured Query Language)のFROM句において、ストリーム名に続いて括弧を用いてスライディングウィンドウを規定する拡張機能を有している。スライディングウィンドウを規定する代表的な方法には2種類あり、(1)切り出すデータ列数を指定する方法と、(2)切り出す列数のデータを含む時間間隔を指定する方法がある。例えば、前述のR.Motwaniによる文献の第2項に記載の「前50行」は、方法(1)による好適な例であり、50行に相当するデータが切り出され、処理される。また、同様に「前15分の範囲」は、方法(2)による好適な例であり、15分間分のデータが切り出され、処理される。方法(1)の場合、データの存続期間は50個のデータが届くまで、と定義される。方法(2)の場合は、データの存続期間は15分間と定義される。スライディングウィンドウによって切り出されたストリームデータはメモリに保持され、クエリ処理に利用される。
一つの課題は、グラフパス探索は、再帰手法を使用するという点である。ストリームデータ処理エンジンは、仮状態の集約結果を一時的に格納する一時保存部を有する。ところが、ストリームデータ処理エンジンが再帰手法を使用する場合、仮の状態を保持し続けるには莫大な処理コストがかかり、膨大なメモリスペースが必要となる。図1はグラフの例を示す。例えば、パス「A→P」は、「A→D→L→M→O→P」と算出される。ストリームデータ処理エンジンは、所定期間/所定数(10分間、50ノード、等)のグラフノード及びグラフエッジを保持する。グラフはノード/エッジの追加/削除だけでなく、スライディングウィンドウからの切り出しによっても変化する。例えば、グラフノード103が新たに加入された場合、ストリームデータエンジンは、一時的に格納されているデータ「A→D→L→M→O」を元に計算することができる。新たにエッジ104を追加し、ノード105を削除し、エッジ106を削除する場合も同様である。ところが、エンジンはグラフに変更があるたびにすべての一時保存部のメンテナンスが必要となる。
Miyuru Dayarathna、Toyotaro Suzunuma著、「Hirundo:A Mechanism for Automated Production of Optimized Data Stream Graphs」(ICPE2012 ACM/SPEC 3rd International Conference on Performance Engineering、2012年4月、於米国ボストン)は、グラフデータのデータストリーム処理方法を示している。ただし、この方法は、クエリ内に埋め込まれた関数によってグラフデータを処理する。また、米国公開特許公報第2010/0106946号は、再帰クエリ方法を示している。しかし、この方法は、再帰数の設定を前提としていない。従来のRDBMS(Relational DataBase Management System)には、数、すなわち再帰数を設定する機能を有するものもある。しかし、こうした従来のRDBMSは、データセットを扱うのみであり、複数のデータストリームを扱うわけではなく、一時保存部もない。その結果、メンテナンスコストの低い再帰クエリ方法を提供するのは困難である。
本発明の好適な実施形態は、グラフデータの再帰クエリを用いたストリームデータ処理方法を提供する。具体的形態において、当該方法は、再帰クエリの段数を設定する。ストリームデータ処理エンジンは、実行ツリーを作成し、一時保存部(静的再帰実行部)に仮の集約結果を保持する。実行ツリー内の、「判定演算部」という特別な演算部が、静的再帰実行部が新たな結果を生成したか否かを判定する。新たな結果が生成されていない場合、動的再帰実行部においてパス探索が続行される。このように、静的再帰実行部が毎回グラフ内の全経路を検索する必要がない。この手法によれば、動的再帰実行部を利用することにより、一時保存部のメンテナンスを削減することができ、メモリスペースと処理コストの均衡をとることが可能となる。
本発明の一態において、ストリームデータ処理コンピュータは、プロセッサと、ストリームデータである入力ストリームを受信し、クエリを実行する演算部の実行順序を管理し、ストリームデータである出力ストリームを出力する、クエリ実行部と、前記クエリを実行する際に生成されるデータを格納する一時格納部を含むメモリと、を含む。前記演算部は、複数の静的再帰実行部と、判定演算部と、動的再帰実行部と、を含む。前記複数の静的再帰実行部は、前記クエリの静的再帰実行を再帰数の回数行う。前記判定演算部は、前記クエリの静的再帰実行が前記再帰数の回数行われた後で、予め設定された条件が満たされているか否かを判定する。前記動的再帰実行部は、前記予め設定された条件が満たされていない場合、動的再帰の値に基づいて、前記複数の静的再帰実行部の最後の静的再帰実行部の最後の結果から、動的再帰実行によって前記クエリの実行を続行する。
いくつかの実施形態において、前記予め設定条件は、前記複数の静的再帰実行部が前記クエリの静的再帰実行を前記再帰数の回数行った後に新たな結果を生成している場合に満たされる。前記判定演算部は、前記複数の静的再帰実行部が前記クエリの静的再帰実行を前記再帰数の回数行った後に新たな結果を生成しているか否かを判定する。前記動的再帰実行部は、前記新たな結果が生成されていない場合、前記複数の静的再帰実行部の最後の静的再帰実行部の最後の結果からの動的再帰実行を、前記動的再帰の値と同じ再帰回数行うことによって、前記クエリの実行を続行する。
特定の実施形態において、クエリ解析部は、実行ツリーにおいて、前記クエリの静的再帰実行の前記再帰数と合致する数の静的再帰実行部を生成する、前記メモリにおける静的再帰クエリ生成部と、前記判定演算部を生成する、前記メモリにおける判定演算部生成部と、前記動的再帰実行部を生成する、前記メモリにおける動的再帰クエリ生成部と、を呼び出す。前記クエリ解析部は、前記入力ストリームに基づいて、かつ前記クエリを解析することによって、複数のストリームの入力タプルの集合を含む前記実行ツリーを作成する。前記演算部は、複数のデータ列を切り出す時間間隔を指定して前記複数のストリームからそれぞれ複数のデータ列を切り出す複数のスライディングウィンドウ演算部を含む。前記複数の静的再帰実行部は、前記複数のストリームのための前記複数のスライディングウィンドウ演算部の後ろに配置される。前記判定演算部は、前記最後の静的再帰実行部の後ろに配置される。前記動的再帰実行部は、前記判定演算部の後ろに配置される。
いくつかの実施形態において、前記動的再帰実行部は、前記最後の静的再帰実行部の前記最後の結果からの前記クエリの動的再帰実行を再帰数の回数行うか否かを、前記動的再帰の値と動的再帰実行の再帰した回数とに基づいて判定する再帰回数判定部を含む。前記予め設定された条件は、パス重みとパス数の少なくとも一方に関する条件である。前記クエリの静的再帰実行の前記再帰数と、前記動的再帰の値とは、予め定められている。前記ストリームデータ処理コンピュータは、当該ストリームデータ処理コンピュータの資源使用量を監視する資源使用量監視部と、前記測定された資源使用量に基づいて、前記クエリの静的再帰実行の前記再帰数及び前記動的再帰の値の少なくとも一方を調節する、再帰数調節部と、をさらに含む。
特定の実施形態において、前記ストリームデータ処理コンピュータは、再帰数調節設定コマンドに基づいて再帰数調節定義テーブルを更新する、再帰数調節設定部をさらに含む。前記資源使用量監視部は、前記再帰数調節定義テーブルに基づいて当該ストリームデータ処理コンピュータの資源使用量を監視する。前記再帰数調節設定部は、前記監視されている資源使用量と前記再帰数調節定義テーブルとに基づいて、前記クエリの静的再帰実行の前記再帰数及び前記動的再帰の値の少なくとも一方を変更する。
本発明の他の態様は、データプロセッサを制御してストリームデータ処理を行う複数の指示を格納しているコンピュータ読み取り可能非一時的記憶媒体であって、前記ストリームデータ処理は、一時格納部を有するメモリを含むストリームデータ処理コンピュータにおいて、一次情報としてストリームデータ入力情報を受信し、前記受信した一次情報から予め定められた期間内の一次情報を取得することによって二次情報を生成する。前記複数の指示は、前記データプロセッサに、ストリームデータである入力ストリームを受信し、複数の静的再帰実行部と判定演算部と動的再帰実行部とを含む演算部の実行順序をクエリの実行のために管理し、ストリームデータである出力ストリームを出力させる指示と、前記データプロセッサに、前記クエリを実行する際に生成されるデータを前記一時格納部に格納させる指示と、前記複数の静的再帰実行部に、前記クエリの静的再帰実行を再帰数の回数行わせる指示と、前記判定演算部に、前記クエリの静的再帰実行が前記再帰数の回数行われた後に、予め設定された条件が満たされているか否かを判定させる指示と、前記動的再帰実行部に、前記予め設定された条件が満たされていない場合、動的再帰の値に基づいて、前記複数の静的再帰実行部の最後の静的再帰実行部の最後の結果からの動的再帰実行によって、前記クエリの実行を続行させる指示と、を含む。
本発明の、上記及び他の特徴や利点は、以下の具体的な実施形態の詳細な説明から、当業者には明らかとなるであろう。
図1は、グラフのサンプル例を示す。 図2は、本発明の第1の実施形態に係るストリームデータ処理サーバ200の例を示す。 図3は、クエリの一例を示す。 図4は、ストリームデータの一例を示す。 図5は、再帰クエリ定義テーブルの一例を示す。 図6は、クエリが解析される際のクエリ実行部の処理フローの一例を示す。 図7は、第1の実施形態に係る図2のストリームデータ処理システムにおいて実行される全体処理を説明するフロー図の一例である。 図8は、図7のステップ705のクエリ解析を説明するフロー図の一例である。 図9は、第1の実施形態に係る図7のステップ706のクエリ実行を説明するフロー図の一例である。 図10は、図9の実行例を示す。 図11は、本発明の第2の実施例に係るストリームデータ処理サーバ200の例を示す。 図12は、判定条件定義テーブルの一例を示す。 図13は、第2の実施形態に係る図11のストリームデータ処理システム200において実行される全体処理を説明するフロー図の一例である。 図14は、第2の実施形態に係る図13のステップ1308のクエリ実行を説明するフロー図の一例である。 図15は、本発明の第3の実施形態に係るストリームデータ処理サーバの例を示す。 図16は、再帰数調節定義テーブルの一例を示す。 図17は、資源利用監視テーブルの一例を示す図である。 図18は、第2の実施例に係る図15のストリームデータ処理システムにおいて実行される全体処理を説明するフロー図の一例である。 図19は、図18のステップ1810の再帰数を調節する処理の詳細を説明するフロー図の一例である。
以下の本発明の詳細な説明では、本発明の開示の一部となる添付図面を参照しつつ、発明を実施する好適な実施形態が示される。尚、実施形態は発明を説明する目的で示されるものであり、限定する目的で示されるものではない。各図面において、類似した数字符号は、複数図面にわたり実質的に同様の構成要素を示す。尚、以下において記載し、図面にも示されるように、詳細な説明には様々な実施形態が示されるが、本発明は、以下に記載し、説明される実施形態に限定されるものではなく、当業者が現在あるいは将来的に知りうる、他の実施形態にも拡大適用することができる。本明細書中の「ある実施形態」、「本実施形態」、「これら実施形態」等の記載は、当該実施形態に関して記載された特有の特徴や構造、あるいは特性が本発明の少なくとも一つの実施形態に含まれることを意味し、本明細書の随所に見られるこれらの記載は、必ずしもすべて同一の実施形態に言及しているとは限らない。更に、以下の詳細な説明においては、本発明を完全に理解するため、具体的事項が数多く記載されるが、当業者にとっては、それらの具体的事項のすべてが、本発明を実施するに当たり、不可欠なものであるとは限らないことは明らかであろう。状況によって、周知の構造、材料、回路、処理、インターフェース等は詳細に記載されず、ブロック図で説明される場合もあるが、それは本発明を不必要に不明確にしないためのものである。
更に、以下に記載の本発明の詳細な説明の一部は、アルゴリズムやコンピュータ内の演算を表す記号表現の面から記載されるが、これらアルゴリズムの記述や記号表現は、データ処理技術に従事する者が、別の当業者にその革新的部分の本質を最も効果的に伝達するために使用する手段である。アルゴリズムとは、所望の最終状態、すなわち結果に至る、一続きの定められた処理ステップのまとまりである。本発明において、具体的な結果を得るために、各処理ステップは具体的な数量を物理的に操作して実行することが求められる。必ずしもそうではない場合もあるが、通常これら数量は、格納や転送、結合、比較、あるいはその他の操作が可能な、電気的あるいは磁気的な信号、すなわち、指示の形態をとる。これら信号は、ビット、値、要素、記号、文字、語、数、指示、等と称すると、慣用的な表現であることから、都合がよい場合もある。しかし、これらの語や類似語はすべて、適切な物理量と対応づけられており、単にこれらの物理量に付すのが便利な名称であるだけであるということは承知されたい。以下の記載から明らかなように、本発明の説明を通して、「処理」、「計算」、「算出」、「判定」、「表示」等の用語を用いた説明は、具体的記載がない限り、コンピュータ装置のレジスタやメモリ内の物理(電子)的数量を示すデータを操作したり、コンピュータ装置のレジスタやメモリ、あるいは、他の情報格納装置や送信装置、表示装置内において、同様に物理量として表す他のデータに変換する、コンピュータ装置やその他の情報処理装置の動作や処理を含みうることを理解されたい。
本発明は、更に、以下に記載の演算を行う装置に関する。当該装置は、要求された目的のため特別に構成されたものでも、1以上のコンピュータプログラムによって選択的に起動されたり設定されたりする1以上の汎用コンピュータを含むものであってもよい。こうしたコンピュータプログラムは、光ディスク、磁気ディスク、ROM(Read−Only Memory)、RAM(Random Access Memory)、SSD(Solid State Device)(これらに限定されない)等の非一時的媒体や、電子情報の格納に適した他の種類の媒体等のコンピュータ読み取り可能な記憶媒体に格納されていてもよい。以下に示すアルゴリズムや表示は、特別なコンピュータや他の装置に固有に関わるものではない。各種の汎用機を以下に記載のアイデアに従ってプログラムや機能部とともに使用してもよいし、あるいは所望の処理ステップを実行する、より専門的な装置を構成するほうが都合がよいこともあろう。また、本発明は特別なプログラミング言語に基づかずに説明される。様々なプログラミング言語を用いて、以下に記載の本発明のアイデアを実現することができることが理解されよう。プログラミング言語による指示は1以上の処理装置、例えばCPU(Central Processing Unit)、プロセッサ、あるいはコントローラによって実行される。
本発明の好適な実施形態は、以下により詳細に記載されるとおり、グラフデータの再帰クエリを用いたストリームデータ処理のための装置、方法、及びコンピュータプログラムを提供する。
第1の実施形態
図2は、本発明の第1の実施形態に係るストリームデータ処理サーバ200の一例を示している。ストリームデータ処理サーバ200は、CPU201、メモリ202、NIC(Network Interface Card)203、HBA(Host Bus Adapter)204、及びHDD(Hard Disk Drive)205を有する。メモリ202は、再帰クエリ設定部211、クエリ解析部212、静的再帰クエリ生成部213、動的再帰クエリ生成部214、判定演算部生成部215、再帰クエリ定義テーブル216、及びクエリ実行部217を格納する。クエリ実行部217は、スライディングウィンドウ232、静的再帰実行部233、判定演算部234、及び従来型パス探索部243と再帰回数判定部244とを有する動的再帰実行部235を含む。
再帰クエリ設定部211は、再帰クエリ定義コマンドを受信し、再帰クエリ定義テーブル216を更新する(図5及び図7参照)。クエリ解析部212は、クエリ221(図3参照)を解析し、クエリ実行部217を生成する(図8参照)。静的再帰クエリ生成部213は、クエリ221から静的再帰実行部233を生成する(図8、ステップ804から806参照)。動的再帰クエリ生成部214は、クエリ221から動的再帰実行部235を生成する(図8、ステップ808参照)。判定演算部生成部215は、クエリ221から判定演算部234を生成する(図8、ステップ807参照)。再帰クエリ定義テーブル216は、各クエリにおける再帰数(静的再帰/動的再帰)を管理する(図5参照)。クエリ実行部217は、スライディングウィンドウ232や、結合演算部241及び一時格納部242を有する静的再帰クエリ実行部233、判定演算部234、従来型パス探索部243と再帰回数判定部244とを有する動的再帰実行部235、等の複数の演算部を含む。これら演算部はキューで接続されている。クエリ実行部217は各演算部の実行順序をジョブスケジューリングアルゴリズム(ラウンドロビン方式、実行ツリーの葉から根への順序、等)によって管理し、入力ストリーム231(図4参照)を受信し、出力ストリーム236を出力する(図6参照)。
スライディングウィンドウ232を規定するには代表的な2種類の方法がある。(1)切り出すデータ列数を指定する方法と、(2)切り出す列数のデータを含む時間間隔を指定する方法である。静的再帰実行部233は、図6に示す静的再帰部620に関連し、結合演算部や射影演算部といった複数の演算部を有する。静的再帰実行部233は、実行ツリーを作成し、仮集約結果を一時格納部242に保持する、ストリームデータの処理エンジンである。実行ツリー内の「判定演算部」234という特別な演算部が、静的再帰実行部233が新しい結果を生成したか否かを判定する。判定演算部234は、図6の判定演算部641に関連し、再帰クエリ定義テーブル216を参照する。動的再帰実行部235は、図6に示す判定演算部631に関連する。判定演算部234が、静的再帰実行部233が新しい結果を生成していないと判定した場合、動的再帰実行部235は、静的再帰実行部233が最後に出した結果から、パス探索の続きを行う。結合演算部241は、複数のストリームを結合し、結合した結果を一時格納部242に保持する。一時格納部242は、仮集約データ、すなわち結合演算部241の結合結果を保存する。従来型パス探索部243は、従来型のパス探索を実行する。再帰回数判定部244は、再帰クエリ定義テーブル216を参照し、動的再帰実行部の再帰数が存在するか否かを判定する。
図3は、クエリの一例を示している。クエリ名はQ1である(register query Q1で規定)。このクエリは、エッジという名称のストリームの過去10分間の範囲のタプルの集合(FROM edge[10 minute])と、パスという名称のストリームの過去10分間の範囲のタプルの集合(FROM path[10 minute])と、ノードという名称のストリームの過去10分間の範囲のタプルの集合(FROM edge[10 minute])と、を保持する。「With recursive・・・」で始まる部分を、起点、終点、パス、及びホップ数の関数として再帰的に実行する(with resursive existPath(origin,target,path、totalhop)as(select・・・))。具体的には以下の通りである。「origin=path.origin」の条件を満たす場合(where origin=path.origin)、エッジとパスとを結合する。結合した結果から「origin,target,origin||'→'||target,1」のカラムを抽出する(select origin,target,origin||'→'||target,1)。前のクエリの結果と後のクエリの結果を和結合する(select origin・・・union all select in.target・・・)。和結合の結果から「in.target,out.target,in.path||'→'||out.target,totalhop+1」の各カラムを抽出する(select in.target,out.target,in.path||'→'||out.target,totalhop+1)。「in.target=out.target」の条件を満たす場合、現存パスとエッジを結合し、「in.origin<>path.target」の条件を満たす場合、既存パスとパスとを結合する(where in.target=out.origin and in.origin<>path.target)。さらに、クエリは、「path」と「totalhop」のカラムを抽出し(select path、totalhop)、「target=path.target」の条件を満たす場合に、既存パスとパスとを結合し、「path.origin=node.nodeid」であって、かつ、「path.target=node.nodeid」の条件を満たす場合は、パスとノードとを結合し、ホップ数における上位10を降順に算出し、新たなデータ入力によって生ずる新しい結果のみを出力する(istream(・・・);)。
図4は、ストリームデータの例を示している。パスストリーム401は、検索対象のパス情報を示し、時刻のカラム「time」402、パスIDのカラム「pid」403、起点のカラム「org」404、及び終点のカラム「tar」405を含む。エントリの例406、407が示されている。ノードストリーム411は、グラフにおけるノードの情報を示し、時刻のカラム「time」412、ノードIDのカラム「nid」413、及び名称のカラム「lab」414を含む。エントリの例415、416が示されている。9時10分の時点で、10分間のスライディングウィンドウにはノードIDがA、S、C、D、Eの5データが存在する。エントリ416が入力されると、エントリ415はウィンドウから消去される。エッジストリーム412は、グラフにおけるエッジの情報を示し、時刻のカラム「time」422、エッジIDのカラム「eid」423、起点のカラム「org」424、終点のカラム「tar」425、及び重みのカラム「wgt」426を含む。エントリの例427、428が示されている。
図5は、再帰クエリ定義テーブル501の一例を示している。このテーブルは、クエリごとに再帰クエリ回数を管理する。再帰クエリ定義テーブル501は、クエリの名称を示すクエリのカラム502、静的再帰実行部233の再帰数を示す静的再帰のカラム503、及び動的再帰のカラム504を含む。エントリの例511〜513が示されている。例えば、エントリ511は、クエリQ1において、クエリ実行部217が、5段の静的再帰実行部233を有しており、動的再帰実行部235において更に5ホップ分の検索を行うことを示している。
図6は、クエリ221が解析された場合のクエリ実行部217の処理フローの一例を示す。本実行ツリーは、クエリ解析部212によって作成される。クエリ実行部217は、それぞれが処理を行う実行部として機能する演算部と、各演算部を互いに接続するキューによって構成される。図6において、左端が入力側を示し、右端が出力側を示す。入力タプルとして、パスストリーム601、エッジストリーム604、及びノードストリーム607が入力される。クエリ実行部217のクエリの処理結果は、リアルタイム出力結果665として出力される。演算部の種別は処理内容に応じて異なる。各演算部の実行順序はジョブスケジューリングアルゴリズム(ラウンドロビン方式、実行ツリーの葉から根への順序、等)によって管理される。スキャン演算部602、605、608はそれぞれ、入力タプル601、604、607にタイムスタンプを付与する。スライディングウィンドウ演算部603、606、609はそれぞれ、ストリームデータ601、604、607から、切り出すデータ列を含む時間間隔を指定する方法でデータ列を切り出し、ストリームデータ601、604、607をタプルの集合に変換する処理を行う(from path[10 minute]、from edge[10 minute]、from node[10 minute])。射影演算部622、624、632、634、662は、カラムの一部のみを出力する処理を行う(「select origin,target,origin||'−>'||target,1」、「select path,totalhop」等)。結合演算部621、623、631、633、661は、所定の条件下で(「where origin=path.origin」、「where target=path.target"」等)、2つ以上のストリームデータを結合する処理を行う。結合演算部241は、仮の結合結果を保持する一時格納部242を有する。和結合演算部625、635はそれぞれ、射影演算部622の出力と射影演算部624の出力、射影演算部632の出力と射影演算部634の出力をマージする(「select・・・union all select・・・」)。
静的再帰部620及び630はそれぞれ、要素621〜625、要素631〜635を含む(「with recursive existPath(origin,target,path,totalhop)as(select・・・)」)。静的再帰部の数は、図5に示した再帰クエリ定義テーブル501において定義されている。判定演算部641は、静的再帰実行部233が新たな結果を生成したか否かを判定する特別な演算部である。新たな結果を生成していない場合、動的再帰実行部235において、パス探索が続行される。図6における判定演算部641は、図2における判定演算部234と同一である。動的再帰部650は、静的再帰実行部233の最後の結果から従来型パス探索部651を実行する。図6における従来型経路探索部651は、図2における従来型パス探索部243と同一である。再帰回数判定部652は、図2における再帰回数判定部244と同一である。
ランキング演算部663は、ある特定のカラム(複数でもよい)の順位を計算する(「rank 10 with totalhop desc」)。ストリーミング演算部664は、タプルの集合をストリームデータに変換する処理を行う(「istream(・・・)」)。尚、図6に示す演算部に加えて、タプルを所定条件に基づいて出力するか否かを決定する処理を行うフィルタ演算部や、和、平均、最大値、最小値、総数、分散、標準偏差、中央値等の導出に示される集約処理を行う集約演算部、その他の演算部がある。
図7は、第1の実施形態に係る、図2のストリームデータ処理システム200において行われる処理の全体を説明するフロー図の一例である。処理は、ステップ701で開始される。再帰クエリ設定部211は、入力コマンドが、再帰クエリ定義コマンドであるか否かを判定する(ステップ702)。ステップ702において「YES」と判定された場合、再帰クエリ設定部211は再帰クエリ定義テーブル216を更新する(ステップ703)。一方、ステップ702において「NO」と判定された場合、クエリ解析部212が、入力コマンドはクエリ登録コマンドであるか否かを判定する(ステップ704)。ステップ704において「YES」と判定された場合、クエリ解析部212は、クエリを解析する(ステップ705)。ステップ705の詳細は図8に示す。ステップ704において「NO」と判定された場合、クエリ実行部217がクエリを実行する(ステップ706)。ステップ706の詳細は図9に示す。その後、クエリ解析部212は、入力コマンドがシステム終了コマンドであるか否かを判定する(ステップ707)。ステップ707において「YES」と判定された場合、処理は終了する(ステップ708)。ステップ707において「NO」と判定された場合、処理手順はステップ702に戻る。
図8は、図7におけるステップ705の処理、クエリ解析を説明するフロー図の一例である。まず、クエリ解析部212は、再帰クエリにおける、再帰クエリの部分とスライディングウィンドウの部分を除いた部分のクエリを従来の方法で解析し、クエリ実行部217内に実行ツリーを作成する(ステップ802)。クエリ解析部212は、再帰クエリ定義テーブル216を参照する(ステップ803)。静的再帰クエリ生成部213は、再帰クエリ定義テーブル216における静的再帰の値がゼロでないか判定する(ステップ804)。ステップ804において「YES」(すなわちゼロでない)と判定された場合、クエリ解析部212は、再帰クエリの部分を解析し、静的再帰実行部233を1つ生成する。そして、静的再帰実行部233は、スライディングウィンドウ演算部232(フィルタ演算部があればフィルタ演算部)の後ろに配置される(ステップ805)。静的再帰クエリ生成部213は、テーブルに規定された回数、静的再帰実行部を生成する処理を繰り返す(ステップ806)。判定演算部生成部215は判定演算部234を生成し、最後の静的再帰実行部の後ろに配置し、初めに解析された実行ツリーの残りの部分の最初の演算部と接続する(ステップ807)。また、動的再帰クエリ生成部214は、動的再帰実行部235を生成し、判定演算部234の後ろに配置し、初めに解析された実行ツリーの残りの部分における最初の演算部と接続する(ステップ808)。ステップ808の後、あるいは、ステップ804において「NO」と判定された場合、処理は終了する(ステップ809)。
図8の処理の例として、図3に示すクエリ301が登録される場合を示す。ステップ802において、クエリ解析部212は、図6における要素601〜609、並びに要素661〜665を生成する。ステップ803において、クエリ解析部212は、図5における再帰クエリ定義テーブル501の行511を参照する。ステップ804において、静的再帰クエリ生成部213は、静的再帰の値が5であるのでYESと判定する。ステップ805において、静的再帰クエリ生成部213は、要素611、621〜626を有する静的再帰部620を生成し、スライディングウィンドウ演算部である要素603と606の後ろに配置する。尚、既存パス611は初めからは存在しないため、最初の静的再帰部602は、既存パス611、結合演算部623、及び射影演算部624を含まない。ステップ806において、静的再帰クエリ生成部213は残りの4つ(静的再帰実行部の総数は5で、1つは既に生成済)の静的再帰部630・・・670、680を生成する。ステップ807において、判定演算部生成部215は、判定演算部641を生成し、最後の静的再帰部である要素680の後ろに配置し、第1の解析中実行ツリーの残り部分の最初の演算部である結合演算部661と接続する。ステップ808において、動的再帰クエリ生成部214が、動的再帰部650を生成し、初めに解析された実行ツリーの残り部分の最初の演算部である結合演算部661と接続する。
図9は、図7におけるステップ706の処理、第1の実施形態に係るクエリ実行を説明するフロー図の一例である。まず、クエリ実行部217は、次に実行する演算部を判定する(ステップ902)。クエリ実行部217は、ジョブスケジューリングアルゴリズム(ラウンドロビン方式、実行ツリーの葉から根への順序、等)を使って演算部の実行順を管理する。クエリ実行部217は、次の演算部が判定演算部であるか否かを判定する(ステップ903)。ステップ903において「YES」と判定された場合、図6における判定演算部641は、最後の静的再行部である要素680から新たな結果が出力されているか否かを判定する(ステップ904)。ステップ903において「NO」と判定された場合は、動的再帰部650が再帰クエリ定義テーブル216を参照する(ステップ905)。動的再帰部650は、最後の静的再帰部680の一時格納部(静的再帰実行部が存在しない場合はスライディングウィンドウのデータ)を参照する(ステップ906)。動的再帰部650の再帰回数判定部652は、再帰した回数、すなわち移動の回数(例えばホップ数)が、再帰クエリ定義テーブル216の動的再帰の値より大きいか否かを判定する(ステップ907)。ステップ907において「NO」と判定された場合、動的再帰部650の従来型パス探索部651は、エッジと既存パスを用いて1ホップ分移動する(ステップ908)。ステップ904において「YES」と判定された場合、またはステップ907において「YES」と判定された場合、クエリ実行部217は、次の演算部が判定演算部以外の演算部であるか否かを判定する(ステップ909)。ステップ909において「YES」と判定された場合、演算部が従来の方法により実行される(ステップ910)。ステップ910の後、またはステップ909において「NO」と判定された場合、処理は終了する(ステップ911)。
図10は、図9の実行例を示す。図10では、図6の実行ツリーを簡略化している。図4にパスストリーム401、エッジストリーム411、及びノードストリーム421が示されている。時刻9時9分において、スライディングウィンドウ603は、一時格納部に10分間のデータ1031を保持している。同様に、スライディングウィンドウ606はデータ1032を、スライディングウィンドウ609はデータ1033を保持している。静的再帰部620、630、680はそれぞれ、一時格納部1001、1002、1003を有する。
図9及び図10の例において、パス「0、A、P」は以下のように算出される。一時格納部1001は、パス「A、B、A→B、1」を保持し、一時格納部1002はパス「B、E、A→B→E、2」を保持し、一時格納部1003はパス「O、P、A→D→L→M→O→P、5」を保持する。判定演算部641は、ステップ904において「YES」と判定する。最後に、出力データ1021「A→D→L→M→O→P、5」が出力される。
第2の例として、パス1041を加える場合について記載する。一時格納部のデータ1001、1002、1003は上記と同様に計算される。ステップ904において、判定演算部641は、「NO」と判定する。一時格納データ1003が経路「O、P、A→D→L→M→O→P、5」しか有しておらず、これは加入されたパス1041とは異なるからである。ステップ905において、動的再帰部650は再帰クエリ定義テーブル216を参照する。図5の再帰クエリ定義テーブル501は、Q1についての動的再帰の値として5を示している。ステップ906において、動的再帰部650は、最後の静的再帰部680内の一時格納データ1003を参照する。ステップ907において、再帰クエリ定義テーブル501における動的再帰の値が5であるため、「NO」と判定される。ステップ908において、動的再帰部650は「O、P、A→D→L→M→O→P、5」から1ホップ移動する。動的再帰部650の再帰回数判定部652は、パス「P、R、A→D→L→M→O→P→R、6」を出力する。ステップ907において再度「NO」と判定される。ステップ908において、再帰回数判定部652は、パス「R、U、A→D→L→M→O→P→R→U、7」を出力し、最終的に出力データ1022「A→D→L→M→O→P→R→U、7」が出力される。
第3の例として、新しいタプル1042(エッジ)を加える場合について記載する。この場合、4番目の静的再帰実行部の出力とタプル1014が結合される。ストリームデータ処理サーバ200は、一時格納部を利用することによって、レイテンシを短縮して結果を算出することができる。
第4の例では、スライディングウィンドウは10分間のデータしか保持しないため、一部のデータがスライディングウィンドウから切り出される。タプル1011がスライディングウィンドウ606から切り出された場合、スライディングウィンドウ606からマイナスタプル1011が出力される。タプル1011はタプル1012に移行する。静的再帰部630の結合演算部633は、静的再帰部620の出力とタプル1012とを結合する。結合演算部633はマイナスタプル1013を出力する。
第1の実施形態の方法によれば、静的再帰実行部は毎回グラフ内のパスのすべてを検索する必要はない。本方法によれば、動的再帰実行部を利用することにより、一時格納部のメンテナンスを削減することができ、メモリスペースと処理コストの均衡をとることが可能となる。
第2の実施形態
第1の実施形態では、判定演算部は、最後の静的再帰実行部から新たな結果が出力されるか否かを判定する。第2の実施形態においては、判定演算部は、この判定を、新たな結果の有無についてのみならず、ホップ数で表すパスの数(パス数)や、各パスの合計や平均で表すパスの重み(パス重み)(これらはパスコストやパス長として知られている)について行う。
図11は、本発明の第2の実施形態に係る、ストリームデータ処理サーバ200の一例を示している。図11は、判定条件設定部1101と判定条件定義テーブル1102が加わり、条件チェック部1112を有する判定演算部1111が図2の判定演算部234に代わった以外は、図2(第1の実施形態)とほぼ同様である。判定条件設定部1101は、判定条件設定コマンドを受信し、判定条件定義テーブル1102を更新する。判定条件定義テーブル1102は、各クエリにおける判定演算部1111の判定方法を管理する(図12参照)。条件チェック部1112は、判定条件定義テーブル1102内の条件に基づいて、動的再帰実行部の実行を判定する。
図12は、判定条件定義テーブル1201の一例を示す。判定条件定義テーブル1201は、クエリのカラム1202、判定方法のカラム1203、及び判定条件のカラム1204を含む。エントリの例1211〜1213が示されている。エントリ1211は、第1の実施形態と同じ判定方法を示している。条件チェック部1112は、最後の静的再帰実行部から新たな結果が出力されているか否かを判定する。エントリ1212は、経路重み<0.6という条件を示している。条件チェック部1112は、新たな結果の重みの最大値が0.6未満であるか否かを判定する。エントリ1213は、パス数<3という条件を示している。条件チェック部1112は、新たな結果の数が3未満であるか否かを判定する。
図13は、第2の実施形態に係る、図11のストリームデータ処理システム200において行われる処理の全体を説明するフロー図の一例である。ステップ1301〜1303は、図7のステップ701〜703と同様である。ステップ1306〜1310は、図7のステップ704〜708と同様である。新しいステップ1304において、判定条件設定部1101は、入力コマンドが判定条件設定コマンドであるか否かを判定する。ステップ1304において「YES」と判定された場合、判定条件設定部1101は、新しいステップ1305において判定条件定義テーブル1102を更新する。
図14は、第2の実施形態に係る、図13のステップ1308のクエリ実行を説明するフロー図の一例である。ステップ1401〜1403は、図9におけるステップ901〜903と同様である。ステップ1406〜1412は、図9におけるステップ905〜911と同様である。ステップ1404と1405が、図9のステップ904に置き換わっている。ステップ1404において、クエリ実行部217は、判定条件定義テーブル1102を参照する。ステップ1405において、条件チェック部1112は、新たな結果が判定条件定義テーブル1102の条件に合っているか否かを判定する。
第3の実施形態
第1の実施形態では、静的再帰及び動的再帰の回数はユーザによって設定される。第3の実施形態においては、ストリームデータ処理エンジンは、CPU使用量やメモリ使用量等の資源監視情報に基づいて再帰数を調節する。CPU/メモリを多く使用している場合は、静的再帰実行部の数を減少させる。クエリ実行部の一時格納部が縮小し、一時格納部のメンテナンス(たとえば、仮集約結果の更新等)が削減されるため、CPU/メモリ使用量は低減する。一方、CPU/メモリ使用が少ない場合、静的再帰実行部の数を増加させる。クエリ実行部はより多くの一時格納部を有し、一時格納部を使って計算を開始するため、実行レイテンシは短くなる。本実施形態において、ストリームデータ処理エンジンは、CPU/メモリ使用量と実行レイテンシの均衡をとることができる。
図15は、本発明の第3の実施形態に係る、ストリームデータ処理サーバ200の一例を示している。図15は、図2(第1の実施形態)とほぼ同様である。クエリ実行部217は簡略化されて示されているが、要素231〜244を含んでいる。要素1501〜1505が第3の実施形態において新たに加えられている。再帰数調節設定部1501は、再帰数調節設定コマンドを受信し、再帰数調節定義テーブル1504を更新する。資源使用量監視部1502は、CPUやメモリ等の資源使用量を測定し、資源使用量監視テーブル1505を更新する。再帰数調節部1503は、再帰数を変更し、資源使用量監視テーブル1505を更新し、クエリ実行部217に変更を加える。再帰数調節定義テーブル1504は、クエリ毎に監視資源、閾値情報、及び調節値を管理する(図16参照)。資源使用量監視テーブル1505は、時間毎並びにクエリ毎に、資源使用量及び静的再帰の回数を管理する(図17参照)。
図16は、再帰数調節定義テーブル1601の一例を示している。再帰数調節定義テーブル1601は、クエリ名のカラム1602、監視資源のカラム1603、測定間隔のカラム1604、上限閾値のカラム1605、下限閾値のカラム1606、静的再帰初期値のカラム1607、調節方法のカラム1608、及び調節値のカラム1609を含む。図16では、エントリ1611〜1613を示している。エントリ1611は、メモリ使用量が50MBより多い場合は、再帰数調節設定部1501が現在の静的再帰数から1を減じ、メモリ使用量が30MBより少ない場合は、再帰数調節設定部1501が現在の静的再帰数に1を加えることを示している。エントリ1612は、CPU使用量が10%より多い場合は、再帰数調節設定部1501が現在の静的再帰数から20%分を減じ、CPU使用量が5%より少ない場合は、再帰数調節設定部1501が現在の静的再帰数より20%分多くすることを示している。エントリ1613は調節が不要であることを示している。
図17は、資源使用量監視テーブル1701の一例を示している。資源使用量監視テーブル1701は、時刻のカラム1702、クエリのカラム1703、監視資源のカラム1704、資源使用量のカラム1705、及び静的再帰のカラム1706を含む。図17では、エントリ1711〜1716を示している。エントリ1711は、9時のメモリ使用量が55MBであり、静的再帰数が5であることを示している。エントリ1713は、9時10分のメモリ使用量が28MBであり、静的再帰数が4(現在回数5から1を減じた)であることを示している。
図18は、第3の実施形態に係る、図15のストリームデータ処理システム200において行われる処理の全体を説明するフロー図の一例である。ステップ1801〜1803は、図7のステップ701〜703と同様である。ステップ1806〜1808は、図7のステップ704〜706と同様である。ステップ1811及び1812は、図7のステップ707及び708と同様である。ステップ1804〜1805、及びステップ1809〜1810が新たに加えられたステップである。ステップ1804において、再帰数調節設定部1501は、入力コマンドが再帰数調節設定コマンドであるか否かを判定する。ステップ1804において「YES」と判定された場合、再帰数調節設定部1501は、再帰数調節定義テーブル1504を更新する(ステップ1805)。ステップ1809において、資源使用量監視部1502は、資源を測定する時間イベントが発生したか否かを判定する。ステップ1809においてYESと判定された場合、再帰数調節部1503は、再帰数を調節する(ステップ1810)(図19参照)。
図19は、図18のステップ1810の再帰数を調節する処理の詳細を説明するフロー図の一例である。処理は、ステップ1901において開始される。資源使用量監視部1502は、資源使用量を測定し、資源使用量監視テーブル1505を更新する(ステップ1902)。再帰数調節部1503は、資源使用量監視テーブル1505を参照し(ステップ1903)、測定値が上限閾値より高いか否かを判定する(ステップ1904)。ステップ1904において「YES」と判定された場合、再帰数調節部1503は、調節方法1608の値が割合であれば、新しい再帰数を旧再帰数×(1−調節値)に設定し、調節方法1608の値が設定量であれば、新しい再帰数を旧再帰数−調節値に設定する(ステップ1905)。一方、ステップ1904において「NO」と判定された場合、再帰数調節部1503は、測定値が下限閾値より低いか否かを判定する(ステップ1906)。ステップ1906において「YES」と判定された場合、再帰数調節部1503は、調節方法1608の値が割合であれば、新しい再帰数を旧再帰数*(1+調節値)に設定し、調節方法1608の値が設定量であれば、新しい再帰数を旧再帰数+調節値に設定する(ステップ1907)。ステップ1905の後、あるいはステップ1907の後、再帰数調節部1503は、クエリ実行部217を変更する(ステップ1908)。
再帰数を調節する一例を説明する。時刻9時に、ステップ1809における時間間隔イベントが発生したとする。ステップ1902において、再帰数調節設定部1501は、再帰数調節定義テーブル1504を図17のエントリ1711に示すように更新する。エントリ1711は、メモリ使用量が55MBであることを示している。現在のメモリ使用量55MBは、上限閾値の50MBより多いので、ステップ1904において、「YES」と判定される。ステップ1905において、新たな再帰数が、旧再帰数5−調節値1=4と計算される。ステップ1908において、クエリ実行部217の次の10分間の静的再帰の回数は、5から4に変更される。
別の例で、時刻9時10分に、ステップ1809における時間間隔イベントが発生したとする。ステップ1902において、再帰数調節設定部1501は、再帰数調節定義テーブル1504を図17のエントリ1713に示すように更新する。エントリ1713は、メモリ使用量が28MBであることを示している。現在のメモリ使用量28MBは、上限閾値の50MB以下であるので、ステップ1904では「NO」と判定される。一方、ステップ1906においては、現在のメモリ使用量28MBは、下限閾値の30MB未満であるので、「YES」と判定される。ステップ1907において、新たな再帰数が、旧再帰数4+調節値1=5と計算される。ステップ1908において、クエリ実行部217の次の10分間の静的再帰数は、4から5に変更される。
本発明を実装するコンピュータや記憶装置は、上述の発明を実装するために使用される各機能部やプログラム、データ構造の格納や読み込みが可能な周知の入出力装置(例えば、CDドライブやDVDドライブ、フロッピードライブ、ハードドライブ、等)を備えることが可能である。これら機能部、プログラムやデータ構造は、コンピュータで読み取り可能な媒体上に符号化することができる。例えば、本発明のデータ構造は、本発明において使用されるプログラムが存在する1以上のコンピュータ読み取り可能媒体とは別のコンピュータ読み取り可能媒体に格納することができる。システム内の構成要素は例えば通信ネットワーク等のデジタルデータ通信用の形態あるいは媒体によって接続することができる。通信ネットワークの例としては、ローカルエリアネットワークや、インターネット等の広域ネットワーク、無線ネットワーク、ストレージエリアネットワーク、等がある。
実施例の記載において、本発明が完全に理解されるよう、説明のために多くの詳細な点が記載されたが、当業者には、これら具体的詳細のすべてが本発明を実践するために必要なわけではないことは明らかであろう。また、本発明は、通常はフローチャート、フロー図、構成図、ブロック図等で表される処理として記載することが可能であると理解されよう。フローチャートは、各演算を1つの連続した処理として記載するが、各演算の多くは、並行して同時に行うことができる。更に、各演算の順序は並べ替えることが可能である。
当技術分野において周知のとおり、上記記載の演算は、ハードウェア、ソフトウェア、あるいはソフトウェアとハードウェアの組み合わせによって行うことができる。本発明の実施例の様々な特徴は、回路や論理デバイス(ハードウェア)を利用して実装し、また他の特徴は機械読み取りが可能な媒体に格納された指示(ソフトウェア)を利用して実装してもよい。ソフトウェアは、プロセッサによって実行された場合、プロセッサが発明の実施例を実施する方法による処理を実行する。更に、本発明の実施例の一部はハードウェアのみによって実施され、実施例の別の一部はソフトウェアによってのみ実施されてもよい。また、記載された様々な機能は1つの構成単位において実施することも、いくつかの構成部分にいかように分配して実施することも可能である。ソフトウェアによって実施する場合、各方法による処理は、コンピュータ読み取り可能な媒体に格納された指示に基づいて、汎用コンピュータ等の処理装置によって実行されてもよい。所望であれば、各指示は圧縮された形式及び/または暗号化された形式で媒体に格納することができる。
上記記載から、本発明は、グラフ構造のデータ用再帰クエリを用いたストリームデータ処理の方法、装置、及びコンピュータ読み取り可能媒体に格納されたプログラムを提供することが明らかであろう。また、本明細書において、具体的実施例を記載し、説明したが、当業者には、同じ目的を達成するために意図されたいかなる手段も、開示された具体的実施例と置き換えることが可能であることが理解されよう。本開示は、本発明のいかなる変更例をも含むことを意図しており、以下の特許請求の範囲において使用される表現は、本発明を、本発明に開示された具体的実施例に限定して解釈するものではないことを理解されたい。本発明の範囲は、以下の特許請求の範囲によってのみ画定され、特許請求の範囲は、請求項の解釈の確立された原理に従い、各請求項が権利範囲として有する均等物の全てをも含めて解釈されるべきものである。

Claims (20)

  1. プロセッサと、
    ストリームデータである入力ストリームを受信し、クエリを実行する演算部の実行順序を管理し、ストリームデータである出力ストリームを出力する、クエリ実行部と、
    前記クエリを実行する際に生成されるデータを格納する一時格納部を含むメモリと、を含むストリームデータ処理コンピュータであって、
    前記演算部は、複数の静的再帰実行部と、判定演算部と、動的再帰実行部と、を含み、
    前記複数の静的再帰実行部は、前記クエリの静的再帰実行を再帰数の回数行い、
    前記判定演算部は、前記クエリの静的再帰実行が前記再帰数の回数行われた後で、予め設定された条件が満たされているか否かを判定し、
    前記動的再帰実行部は、前記予め設定された条件が満たされていない場合、動的再帰の値に基づいて、前記複数の静的再帰実行部の最後の静的再帰実行部の最後の結果から、動的再帰実行によって前記クエリの実行を続行する、ストリームデータ処理コンピュータ。
  2. 請求項1に記載のストリームデータ処理コンピュータであって、
    前記予め設定条件は、前記複数の静的再帰実行部が前記クエリの静的再帰実行を前記再帰数の回数行った後に新たな結果を生成している場合に満たされる、ストリームデータ処理コンピュータ。
  3. 請求項2に記載のストリームデータ処理コンピュータであって、
    前記判定演算部は、前記複数の静的再帰実行部が前記クエリの静的再帰実行を前記再帰数の回数行った後に新たな結果を生成しているか否かを判定し、
    前記動的再帰実行部は、前記新たな結果が生成されていない場合、前記複数の静的再帰実行部の最後の静的再帰実行部の最後の結果からの動的再帰実行を、前記動的再帰の値と同じ再帰回数行うことによって、前記クエリの実行を続行する、ストリームデータ処理コンピュータ。
  4. 請求項1に記載のストリームデータ処理コンピュータであって、
    クエリ解析部をさらに含み、
    前記クエリ解析部は、実行ツリーにおいて、
    前記クエリの静的再帰実行の前記再帰数と合致する数の静的再帰実行部を生成する、前記メモリにおける静的再帰クエリ生成部と、
    前記判定演算部を生成する、前記メモリにおける判定演算部生成部と、
    前記動的再帰実行部を生成する、前記メモリにおける動的再帰クエリ生成部と、を呼び出すストリームデータ処理コンピュータ。
  5. 請求項4に記載のストリームデータ処理コンピュータであって、
    前記クエリ解析部は、前記入力ストリームに基づいて、かつ前記クエリを解析することによって、複数のストリームの入力タプルの集合を含む前記実行ツリーを作成し、
    前記演算部は、複数のデータ列を切り出す時間間隔を指定して前記複数のストリームからそれぞれ複数のデータ列を切り出す複数のスライディングウィンドウ演算部を含み、
    前記複数の静的再帰実行部は、前記複数のストリームのための前記複数のスライディングウィンドウ演算部の後ろに配置され、
    前記判定演算部は、前記最後の静的再帰実行部の後ろに配置され、
    前記動的再帰実行部は、前記判定演算部の後ろに配置される、ストリームデータ処理コンピュータ。
  6. 請求項1に記載のストリームデータ処理コンピュータであって、
    前記動的再帰実行部は、前記最後の静的再帰実行部の前記最後の結果からの前記クエリの動的再帰実行を再帰数の回数行うか否かを、前記動的再帰の値と動的再帰実行の再帰した回数とに基づいて判定する再帰回数判定部を含む、ストリームデータ処理コンピュータ。
  7. 請求項1に記載のストリームデータ処理コンピュータであって、
    前記予め設定された条件は、パス重みとパス数の少なくとも一方に関する条件である、ストリームデータ処理コンピュータ。
  8. 請求項1に記載のストリームデータ処理コンピュータであって、
    前記クエリの静的再帰実行の前記再帰数と、前記動的再帰の値とは、予め定められている、ストリームデータ処理コンピュータ。
  9. 請求項1に記載のストリームデータ処理コンピュータであって、
    当該ストリームデータ処理コンピュータの資源使用量を監視する資源使用量監視部と、
    前記測定された資源使用量に基づいて、前記クエリの静的再帰実行の前記再帰数及び前記動的再帰の値の少なくとも一方を調節する、再帰数調節部と、をさらに含む、ストリームデータ処理コンピュータ。
  10. 請求項9に記載のストリームデータ処理コンピュータであって、
    再帰数調節設定コマンドに基づいて再帰数調節定義テーブルを更新する、再帰数調節設定部をさらに含み、
    前記資源使用量監視部は、前記再帰数調節定義テーブルに基づいて当該ストリームデータ処理コンピュータの資源使用量を監視し、
    前記再帰数調節設定部は、前記監視されている資源使用量と前記再帰数調節定義テーブルとに基づいて、前記クエリの静的再帰実行の前記再帰数及び前記動的再帰の値の少なくとも一方を変更する、ストリームデータ処理コンピュータ。
  11. データプロセッサを制御してストリームデータ処理を行う複数の指示を格納しているコンピュータ読み取り可能非一時的記憶媒体であって、
    前記ストリームデータ処理は、一時格納部を有するメモリを含むストリームデータ処理コンピュータにおいて、一次情報としてストリームデータ入力情報を受信し、前記受信した一次情報から予め定められた期間内の一次情報を取得することによって二次情報を生成し、
    前記複数の指示は、
    前記データプロセッサに、ストリームデータである入力ストリームを受信し、複数の静的再帰実行部と判定演算部と動的再帰実行部とを含む演算部の実行順序をクエリの実行のために管理し、ストリームデータである出力ストリームを出力させる指示と、
    前記データプロセッサに、前記クエリを実行する際に生成されるデータを前記一時格納部に格納させる指示と、
    前記複数の静的再帰実行部に、前記クエリの静的再帰実行を再帰数の回数行わせる指示と、
    前記判定演算部に、前記クエリの静的再帰実行が前記再帰数の回数行われた後に、予め設定された条件が満たされているか否かを判定させる指示と、
    前記動的再帰実行部に、前記予め設定された条件が満たされていない場合、動的再帰の値に基づいて、前記複数の静的再帰実行部の最後の静的再帰実行部の最後の結果からの動的再帰実行によって、前記クエリの実行を続行させる指示と、を含む、コンピュータ読み取り可能非一時的記憶媒体。
  12. 請求項11に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記予め設定された条件は、前記複数の静的再帰実行部が前記クエリの静的再帰実行を前記再帰数の回数行った後に、新たな結果を生成している場合に満たされる、コンピュータ読み取り可能非一時的記憶媒体。
  13. 請求項12に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記判定演算部に前記予め設定された条件が満たされているか否かを判定させる指示は、前記判定演算部に、前記複数の静的再帰実行部が前記クエリの静的再帰実行を前記再帰数の回数行った後に、新たな結果を生成しているか否かを判定させる指示を含み、
    前記動的再帰実行部に前記クエリの実行を続行させる指示は、前記動的再帰実行部に、前記新たな結果が生成されていない場合、前記複数の静的再帰実行部の最後の静的再帰実行部の最後の結果からの動的再帰実行を、前記動的再帰の値と同じ再帰回数行うことによって、前記クエリの実行を続行させる、指示を含む、コンピュータ読み取り可能非一時的記憶媒体。
  14. 請求項11に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記複数の指示は、
    前記データプロセッサに、実行ツリー内に、前記クエリの静的再帰実行の前記再帰数と合致する数の静的再帰実行部を生成させる指示と、
    前記データプロセッサに、前記実行ツリー内に前記判定演算部を生成させる指示と、
    前記データプロセッサに、前記実行ツリー内に前記動的再帰実行部を生成させる指示と、をさらに含む、コンピュータ読み取り可能非一時的記憶媒体。
  15. 請求項14に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記演算部は、複数のデータ列を切り出す時間間隔を指定して前記複数のストリームからそれぞれ複数のデータ列を切り出す複数のスライディングウィンドウ演算部を含み、
    前記複数の指示は、
    前記データプロセッサに、前記入力ストリームに基づいて、かつ前記クエリを解析することによって、複数のストリームの入力タプルの集合を含む前記実行ツリーを作成させる指示と、
    前記データプロセッサに、前記複数の静的再帰実行部を、前記複数のストリームのための前記複数のスライディングウィンドウ演算部の後ろに配置させる指示と、
    前記データプロセッサに、前記判定演算部を、前記最後の静的再帰実行部の後ろに配置させる指示と、
    前記データプロセッサに、前記動的再帰実行部を、前記判定演算部の後ろに配置させる指示と、をさらに含む、コンピュータ読み取り可能非一時的記憶媒体。
  16. 請求項11に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記動的再帰実行部に、前記所定条件が満たされていない場合に動的再帰実行によって前記クエリの実行を続行させる指示は、前記動的再帰実行部に、前記最後の静的再帰実行部の前記最後の結果からの前記クエリの動的再帰実行を再帰数の回数行うか否かを、前記動的再帰の値と動的再帰実行の再帰した回数とに基づいて判定させる指示を含む、コンピュータ読み取り可能非一時的記憶媒体。
  17. 請求項11に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記予め設定されている条件は、パス重みとパス数の少なくとも一方に関する条件である、コンピュータ読み取り可能非一時的記憶媒体。
  18. 請求項11に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記クエリの静的再帰実行の前記再帰数及び前記動的再帰の値は、予め定められている、コンピュータ読み取り可能非一時的記憶媒体。
  19. 請求項11に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記複数の指示は、
    前記データプロセッサに、前記ストリームデータ処理コンピュータの資源使用量を監視させる指示と、
    前記データプロセッサに、前記監視されている資源使用量に基づいて、前記クエリの静的再帰実行の前記再帰数及び前記動的再帰の値の少なくとも一方を調節させる指示と、をさらに含む、コンピュータ読み取り可能非一時的記憶媒体。
  20. 請求項19に記載のコンピュータ読み取り可能非一時的記憶媒体であって、
    前記複数の指示は、
    前記データプロセッサに、再帰数調節設定コマンドに基づいて再帰数調節定義テーブルを更新させる指示と、
    前記データプロセッサに、前記再帰数調節定義テーブルに基づいて前記ストリームデータ処理コンピュータの資源使用量を監視させる指示と、
    前記データプロセッサに、前記監視されている資源使用量及び前記再帰数調節定義テーブルに基づいて、前記クエリの静的再帰実行の前記再帰数及び前記動的再帰の値の少なくとも一方を変更させる指示と、をさらに含む、コンピュータ読み取り可能非一時的記憶媒体。
JP2013250965A 2012-12-20 2013-12-04 グラフデータの再帰クエリを用いたストリームデータ処理方法 Active JP6190255B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/721,373 2012-12-20
US13/721,373 US9400823B2 (en) 2012-12-20 2012-12-20 Stream data processing method on recursive query of graph data

Publications (3)

Publication Number Publication Date
JP2014123354A true JP2014123354A (ja) 2014-07-03
JP2014123354A5 JP2014123354A5 (ja) 2016-09-15
JP6190255B2 JP6190255B2 (ja) 2017-08-30

Family

ID=50975923

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013250965A Active JP6190255B2 (ja) 2012-12-20 2013-12-04 グラフデータの再帰クエリを用いたストリームデータ処理方法

Country Status (2)

Country Link
US (1) US9400823B2 (ja)
JP (1) JP6190255B2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6114473B2 (ja) * 2013-06-21 2017-04-12 株式会社日立製作所 時間調整を使用したストリームデータ処理方法
US10042891B2 (en) 2015-05-08 2018-08-07 International Business Machines Corporation Windowing across operators in a streaming environment
US9853878B2 (en) * 2015-06-09 2017-12-26 International Business Machines Corporation Limiting data output from windowing operations
US10037356B2 (en) * 2015-09-01 2018-07-31 International Business Machines Corporation Placement of services in stream computing applications
US10642831B2 (en) 2015-10-23 2020-05-05 Oracle International Corporation Static data caching for queries with a clause that requires multiple iterations to execute
US10452655B2 (en) 2015-10-23 2019-10-22 Oracle International Corporation In-memory cursor duration temp tables
US10678792B2 (en) * 2015-10-23 2020-06-09 Oracle International Corporation Parallel execution of queries with a recursive clause
US10783142B2 (en) * 2015-10-23 2020-09-22 Oracle International Corporation Efficient data retrieval in staged use of in-memory cursor duration temporary tables
US9633078B1 (en) 2016-09-30 2017-04-25 Semmle Limited Generating identifiers for tuples of recursively defined relations
US9720961B1 (en) 2016-09-30 2017-08-01 Semmle Limited Algebraic data types for database query languages
US9661052B1 (en) 2016-10-14 2017-05-23 International Business Machines Corporation Reconfiguring a streaming application to reduce latency mismatches
JP7334260B2 (ja) * 2019-03-21 2023-08-28 グラブタクシー ホールディングス プライベート リミテッド 複数のデータ構造を管理するための通信装置、通信方法、コンピュータプログラム、非一時的な記憶媒体および通信システム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009266007A (ja) * 2008-04-25 2009-11-12 Hitachi Ltd ストリームデータ処理方法及び計算機システム
JP2010108152A (ja) * 2008-10-29 2010-05-13 Hitachi Ltd ストリームデータ処理方法、及びそのシステム
JP2010204880A (ja) * 2009-03-03 2010-09-16 Hitachi Ltd ストリームデータ処理方法、ストリームデータ処理プログラム、および、ストリームデータ処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5495600A (en) 1992-06-03 1996-02-27 Xerox Corporation Conversion of queries to monotonically increasing incremental form to continuously query a append only database
US7481368B2 (en) * 2004-12-14 2009-01-27 Siemens Corporate Research, Inc. Systems, devices, and methods for managing RFID data
US8666928B2 (en) * 2005-08-01 2014-03-04 Evi Technologies Limited Knowledge repository
US8843481B1 (en) * 2005-09-30 2014-09-23 Yongyong Xu System and method of forming action based virtual communities and related search mechanisms
US8005818B2 (en) * 2008-03-31 2011-08-23 Business Objects, S.A. Apparatus and method for maintaining metadata version awareness during set evaluation for OLAP hierarchies
JP5154366B2 (ja) * 2008-10-28 2013-02-27 株式会社日立製作所 ストリームデータ処理プログラム及び計算機システム
JP5337447B2 (ja) * 2008-10-28 2013-11-06 株式会社日立製作所 ストリームデータ処理方法、及びシステム
JP4727715B2 (ja) * 2008-12-12 2011-07-20 株式会社日立製作所 ストリームデータ処理方法、及びシステム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009266007A (ja) * 2008-04-25 2009-11-12 Hitachi Ltd ストリームデータ処理方法及び計算機システム
JP2010108152A (ja) * 2008-10-29 2010-05-13 Hitachi Ltd ストリームデータ処理方法、及びそのシステム
JP2010204880A (ja) * 2009-03-03 2010-09-16 Hitachi Ltd ストリームデータ処理方法、ストリームデータ処理プログラム、および、ストリームデータ処理装置

Also Published As

Publication number Publication date
US9400823B2 (en) 2016-07-26
US20140181144A1 (en) 2014-06-26
JP6190255B2 (ja) 2017-08-30

Similar Documents

Publication Publication Date Title
JP6190255B2 (ja) グラフデータの再帰クエリを用いたストリームデータ処理方法
JP5906161B2 (ja) シングルストリームの複数ウィンドウでのストリームデータ処理方法
JP6793901B2 (ja) 計測手段が組み込まれたソフトウェアから受信されるデータストリームのリアルタイム処理
Jayalath et al. From the cloud to the atmosphere: Running MapReduce across data centers
KR101719399B1 (ko) 하둡에서의 개선된 sql-형 질의를 위한 백그라운드 포맷 최적화
JP6250061B2 (ja) イベント処理とマップリデュースとの統合
US8396852B2 (en) Evaluating execution plan changes after a wakeup threshold time
US8290939B2 (en) Visualizing query results in stream processing systems
JP6114473B2 (ja) 時間調整を使用したストリームデータ処理方法
US20090037370A1 (en) Distributed event processing
US11475006B2 (en) Query and change propagation scheduling for heterogeneous database systems
US8417690B2 (en) Automatically avoiding unconstrained cartesian product joins
US8135666B2 (en) Systems and methods for policy based execution of time critical data warehouse triggers
JP2009134689A (ja) ストリームデータのランキングクエリ処理方法およびランキングクエリ処理機構を有するストリームデータ処理システム
WO2017185576A1 (zh) 一种多流流式数据的处理方法、系统、存储介质及设备
US10466936B2 (en) Scalable, multi-dimensional search for optimal configuration
US11514090B2 (en) Comments-ordering method, apparatus, device and computer storage medium
WO2019120093A1 (en) Cardinality estimation in databases
EP3172682B1 (en) Distributing and processing streams over one or more networks for on-the-fly schema evolution
US20190213188A1 (en) Distributed computing framework and distributed computing method
JP5472885B2 (ja) プログラム、ストリームデータ処理方法及びストリームデータ処理計算機
JP2014229110A (ja) 検索装置、検索方法および検索プログラム
JP2018081603A (ja) Kvデータ構造変換装置、kvデータ構造変換方法、および、kvデータ構造変換プログラム
Koevski Advanced Sampling in Stream Processing Systems
JP6143938B2 (ja) データ更新方法、及び、計算機システム

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160728

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170406

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170613

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170804

R150 Certificate of patent or registration of utility model

Ref document number: 6190255

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150