JP2013228991A - シングルストリームの複数ウィンドウでのストリームデータ処理方法 - Google Patents

シングルストリームの複数ウィンドウでのストリームデータ処理方法 Download PDF

Info

Publication number
JP2013228991A
JP2013228991A JP2012212742A JP2012212742A JP2013228991A JP 2013228991 A JP2013228991 A JP 2013228991A JP 2012212742 A JP2012212742 A JP 2012212742A JP 2012212742 A JP2012212742 A JP 2012212742A JP 2013228991 A JP2013228991 A JP 2013228991A
Authority
JP
Japan
Prior art keywords
function
query
operator
window
type
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
JP2012212742A
Other languages
English (en)
Other versions
JP5906161B2 (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 JP2013228991A publication Critical patent/JP2013228991A/ja
Application granted granted Critical
Publication of JP5906161B2 publication Critical patent/JP5906161B2/ja
Expired - Fee Related 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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2477Temporal data 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/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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2474Sequence data queries, e.g. querying versioned data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】ストリームデータをリアルタイムに効率よく分類処理する。
【解決手段】データ処理方法は、ストリームデータを処理するためのリアルタイム処理関数とバッチ時間処理関数の組み合わせに関する。クエリがターゲット関数と共に受信されると、ターゲット関数は、リアルタイム処理関数とバッチ時間処理関数の両方の使用に基づいて処理される。リアルタイム処理関数は、スライディングウィンドウによって実行され、バッチ処理関数は、ジャンピングウィンドウによって実行され得る。
【選択図】図3

Description

01 例示的実施形態は、概してコンピュータシステムに関し、特に、シングルストリームの複数ウィンドウでのストリームデータ処理方法に関する。
02 ストリームデータ処理は広く用いられている。データベース管理システム(以下、「DBMS」という)に連続して到着するデータのリアルタイム処理を実行するデータ処理システムの需要が増えている。DBMSは、ストレージシステムに格納されたデータの処理を実行する。
03 例えば、株取引システムでは、株価の変化に関する応答時間は、システムのユーザにとって決定的な要因である。株のデータがストレージシステムだけに格納されている関連技術のストレージシステムでは、格納されたデータを検索する関連技術のDBMS方法の応答時間は、株価の変化の実際のスピードに関して十分に速くないかもしれず、ビジネスの機会を失う結果となり得る。関連技術のプロセスの一例では、格納されたクエリを周期的に発行する仕組みを用いている。従って、株価のようなデータが受信された直後にクエリを実行することが必要である場合、このような関連技術の仕組みをリアルタイムデータ処理に適用することは困難である。
04 連続的に到着するデータは、関連技術では「ストリームデータ」として知られ、ストリームデータのリアルタイム処理を扱うために関連技術のストリームデータ処理システムが開発されてきた。
05 関連技術のストリームデータ処理システムでは、クエリは、最初にシステムに登録され、データが到着した際に連続的に実行されるが、これは、上述の周期的な関連技術DBMS方法とは異なる。関連技術のストリームデータ処理システムは、スライディングウィンドウを用いているが、これは、ストリームデータを部分的にカットし、ストリームデータの構文解析された各部分の寿命を分け与え、よってストリームデータを効率的に処理する。スライディングウィンドウの仕様を含む関連技術クエリ記述言語の一例は、連続的クエリ言語(CQL)である。
06 CQLは、構造化クエリ言語(SQL)のFROM文節におけるストリーム名の後にカッコを使用することによってスライディングウィンドウを特定する拡張を含み、これは、関連技術のDBMSで幅広く使用されている。スライディングウィンドウを特定するための関連技術の2つのタイプの方法がある。つまり、(1)カットするデータ行の数を特定する方法と、(2)カットするデータ行を含む時間間隔を特定する方法である。方法(1)の関連技術の例は、50行に対応するデータがカットされて処理されるプロセスを含む。方法(2)の関連技術の例は、15分間の時間間隔のデータがカットされて処理されるプロセスを含む。(1)の関連技術の例では、データの寿命は、50個のデータが到着するまで続くと定義される。(2)の関連技術の例では、データの寿命は、15分間続くと定義される。スライディングウィンドウによってカットされるストリームデータは、メモリ上に保持され、かつクエリ処理のために使用される。
07 例示的実施形態の態様は、ストリームデータ入力情報を一次情報として受信し、かつ当該受信した一次情報から所定期間内の一次情報を取得することによって二次情報を生成するストリームデータ処理方法を含み、この方法は、複数のターゲット関数の各々が、複数の第1タイプの処理関数からの第1タイプの処理関数を、複数の第2タイプの処理関数からの第2タイプの処理関数に関連付ける、前記複数のターゲット関数を管理することと、クエリに基づいて前記複数のターゲット関数からターゲット関数を選択することと、前記選択されたターゲット関数に基づいて、前記二次情報を生成するために前記取得された一次情報に対して前記第1タイプの処理関数及び前記第2タイプの処理関数を実行することとを含む。
08 例示的実施形態の追加の態様は、ストリームデータ入力情報を一次情報として受信し、当該受信した一次情報から所定期間内の一次情報を取得することによって、二次情報を生成するように構成されたサーバを含み、このサーバは、複数のターゲット関数の各々が、複数の第1タイプの処理関数からの第1タイプの処理関数を複数の第2タイプの処理関数からの第2タイプの処理関数に関連付ける、前記複数のターゲット関数を管理するように構成されたメモリと、クエリに基づいて前記複数のターゲット関数からターゲット関数を選択し、かつ前記選択されたターゲット関数に基づいて前記第1タイプの処理関数及び前記第2タイプの処理関数を実行するように構成された中央処理装置(CPU)とを備える。
09 例示的実施形態の追加の態様は、ストリームデータ入力情報を一次情報として受信し、かつ当該受信した一次情報から所定期間内の一次情報を取得することによって二次情報を生成するストリームデータ処理方法を実行するための命令を格納するための非一過性コンピュータ可読媒体を含む。前記命令は、複数のターゲット関数の各々が、複数の第1タイプの処理関数からの第1タイプの処理関数を、複数の第2タイプの処理関数からの第2タイプの処理関数に関連付ける、前記複数のターゲット関数を管理することと、クエリに基づいて前記複数のターゲット関数からターゲット関数を選択することと、選択されたターゲット関数に基づいて第1タイプの処理関数及び第2タイプの処理関数を実行することとを含む。
10 上記及びその他の態様は、添付の図面と共に以下の実施形態の説明から、より容易に認められるであろう。
11 図1は、例示的なクラスタリング方法に基づいた新入力データからのクラスタの変化を示す。 12 図2は、例示的実施形態に従った新入力データによるクラスタの変化を示す。 13 図3は、例示的実施形態が実装され得る例示的なハードウェア構成を示す。 14 図4は、例示的実施形態に従ったクエリの一例を示す。 15 図5は、例示的実施形態に従ったバッチ関数、リアルタイム関数、及びターゲット関数登録を示す。 16 図6は、例示的実施形態に従ったターゲット関数定義テーブルを示す。 17 図7は、例示的実施形態に従ったジャンピングウィンドウ間隔テーブルを示す。 18 図8は、例示的実施形態に従ったクエリ実行モジュールを示す。 19 図9は、例示的実施形態に従って、クエリがクエリパーサで構文解析される場合のクエリ実行モジュールの例を示す。 20 図10は、例示的実施形態に従って入力コマンドを処理するためのフローチャートを示す。 21 図11は、例示的実施形態に従ってクエリを処理するためのフローチャートを示す。 22 図12は、例示的実施形態に従ったハードウェア構成を示す。 23 図13は、例示的実施形態に従ったウィンドウ間隔調整定義テーブルを示す。 24 図14は、例示的実施形態に従ったCPU利用率監視テーブルを示す。 25 図15は、例示的実施形態に従ったクエリパーサのフローチャートを示す。 26 図16は、例示的実施形態に従ってウィンドウサイズを調整するためのフローチャートを示す。 27 図17は、例示的実施形態に従ったストリームデータ処理サーバのハードウェア構成を示す。 28 図18は、例示的実施形態に従ったストリームデータ処理サーバのフローチャートを示す。 29 図19は、例示的実施形態に従った、クエリトランスレータのフローチャートを示す。 30 図20は、例示的実施形態に従った、変換されたクエリ例を示す。 31 図21は、例示的実施形態に従った、生成されたクエリ実行モジュールを示す。
32 上述の関連技術のプロセスは、いくつかの問題に遭遇し得る。例えば、関連技術のいくつかの統計又はデータマイニングの方法は、再帰的方法を使用する。関連技術ストリームデータ処理エンジンがこのような再帰的方法を使用すると、新しいデータが入力される度にエンジンが再計算を行う必要があるかもしれないので、処理費用が非常に高くなり得る。
33 図1は、例示的な関連技術のクラスタリング方法に基づいた新入力データからのクラスタの変化を示す。
34 例示的なクラスタリング方法は、データ点の観測をkクラスタに区分化するクラスタリング方法であるK-meansを含む。各観測は、最も近い中央値を有するクラスタに属する。K-meansは、初期k点を設定し、データ点がkクラスタに処理されるまで割当ステップ及び更新ステップを繰り返す。
35 割当ステップでは、各データ点は、最も近い中央値を有するクラスタに割り当てられる。更新ステップでは、クラスタのデータ点の新しい中央値が計算される。
36 図1で示されるように、初期状態101では、データ102は、境界線104によって分割された3つのクラスタに区分化される。各データは、最も近い中央値103を有するクラスタに属する。新入力データ112は、初期状態101で入力されると仮定される。新データ入力状態111では、ストリームデータ処理エンジンは、結果状態121を生み出すために現在の中央値から割当ステップ及び更新ステップを繰り返す。
37 K-meansの処理費用は、データが入力される毎にエンジンが再計算するので、非常に高くなり得る。よって、ストリームデータ処理の処理費用を削減するために、多様な関連技術のプロセスが試行されてきた。
38 関連技術の例では、処理費用を減らすために、ストリームデータに対してジャンピングウィンドウが使用される。タプルベースのウィンドウ、時間ベースのウィンドウ、又はパーティションベースのウィンドウなどのスライディングウィンドウが、各データをスライドさせるために使用される。例えば、タプルベースのウィンドウは、ウィンドウにn個のタプルを保持する。新しいデータがウィンドウに入力されると、最も古いデータがそのウィンドウから取り除かれる。他方、ジャンピングウィンドウは、サブウィンドウサイズのジャンプでスライドする。例えば、n/4データがタプルベースのジャンピングウィンドウに入力されると、最も古いn/4データがウィンドウから取り除かれる(サブウィンドウサイズはn/4である)。
39 しかし、この関連技術の例は、待ち時間が増加し得る。上記の例では、新しい結果は、n/4データが入力された後で入力される。関連技術の例は、待ち時間のためにリアルタイムで処理できないかもしれない。
40 例示的実施形態は、処理費用を削減しながらリアルタイム処理を組み合わせることに関する。例示的実施形態は、リアルタイム処理(速度のために正確度を犠牲にし得る)とバッチ処理(高い正確度を有し得る)を組み合わせるプロセスに関する。例示的実施形態は、ストリームデータ入力情報を一次情報として受信し、受信した一次情報から所定期間内の一次情報を取得することによって二次情報を生成するストリームデータ処理のシステム及び方法に関する。一次情報又は取得された一次情報は、二次情報を生成するための例示的実施形態によって構築されたクエリ実行モジュールによって処理され得る。
41 例示的実施形態のリアルタイム処理は、リアルタイムで処理できるスライディングウィンドウを使用する。例示的実施形態のバッチ処理は、ジャンピングウィンドウ及びデータマイニングのアルゴリズムを使用することによって、周期的にリアルタイム処理によって起こるエラーを訂正することができる。
42 関連技術の例と対照的に、関連技術の1つの関数の代わりに、2つの関数、すなわちバッチ関数及びリアルタイム関数が定義され使用される。この2つの関数は、ユーザによって定義され得る。例示的実施形態は、複数のターゲット関数を管理する。複数のターゲット関数の各々は、グループ化されるか、又はいくつかの異なるタイプの処理関数に関連し得る。ターゲット関数は、クエリに基づいて選択され、かつ複数のターゲット関数のうちの1つ以上のターゲット関数を使用することによって実行され得る。例えば、第1タイプの処理関数は、リアルタイム関数、すなわちデータストリームをリアルタイムで処理する関数を含み得る。複数のターゲット関数のうちの1つ以上のターゲット関数は、リアルタイム関数としてグループ化され得る。第2タイプの処理関数は、バッチ処理関数、すなわちデータストリームに対してバッチ処理を行う関数を含み得る。選択されたターゲット関数は、第1タイプの処理関数及び第2タイプの処理関数から選択された処理関数の組み合わせに基づいて形成され実行され得る。これらの関数については、以下でさらに説明する。
43 クエリは1つの関数だけを含み得るが、ストリームデータ処理エンジンのクエリパーサは、例示的実施形態に従って、実行ツリーでリアルタイム関数及びバッチ関数のための2つの演算子を生成する。次に、リアルタイム処理関数は、スライディングウィンドウを使用することによって実行され、バッチ処理関数は、ジャンピングウィンドウを使用することによって実行される。
44 図2は、例示的実施形態に従った新入力データによるクラスタの変化を示す。図2で示される例では、2つのk-means 関数が使用される。第1タイプのk-means関数、すなわちバッチ関数は、クラスタの中央値を計算する。第2タイプのk-means関数、すなわちリアルタイム関数は、割当ステップを一度実行することによって各中央値への距離を計算する。図2で示されるように、t=10分の状態を示す状態201では、新しいデータ202が入力される。新しいデータ202と中央値203の間の距離は、新しい中央値に最も近い距離であると仮定される。従って、新しいデータ202は、中央値203を有するクラスタに区分化される。
45 中央値は、新しいデータ203によって変更され、中央値が変更される場合にパーティションを変更し得るが、これは、前述の区分化とは異なり得る。例示的実施形態は、リアルタイム処理のこの矛盾を無視し、バッチ時間処理における矛盾を訂正する。例えば、t=11分である状態211では、ジャンピングウィンドウは、中央値のパーティションを解決するために実行され、これは、状態221に変化する。
46 例示的実施形態については、以下でさらに詳細に説明する。
47 第一の例示的実施形態
48 第一の例示的実施形態では、ジャンピングウィンドウ間隔は、ユーザによって設定される。
49 図3は、例示的実施形態が実装され得る例示的なハードウェア構成を示す。図3は、1つ以上の中央処理装置(CPU)301、ネットワークインタフェースコントローラ(NIC)303、ホストバスアダプタ(HBA)304、ハードディスクドライブ(HDD)305、及びメモリ302を含み得るストリームデータ処理サーバ300を示す。ストリームデータ処理サーバ300はまた、関数登録モジュール311、ジャンピングウィンドウ間隔設定モジュール312、クエリパーサ313、ターゲット関数検出モジュール314、複数ウィンドウ生成モジュール315、及び複数関数生成モジュール316を含み得る。メモリはまた、ターゲット関数定義テーブル321、ジャンピングウィンドウ間隔テーブル322、及びクエリ実行モジュール317を含み得る。
50 関数登録モジュール311は、ターゲット関数、バッチ関数、及びリアルタイム関数を含むが、これらに限定されない関数を登録する。ターゲット関数、バッチ関数、及びリアルタイム関数は、ターゲット関数定義テーブル321に格納される。関数登録モジュール311及びターゲット関数定義テーブル321に関するさらなる詳細は、図6及び図10に関して説明する。
51 ジャンピングウィンドウ間隔設定モジュール312は、ジャンピングウィンドウ間隔を登録し、ジャンピングウィンドウ間隔テーブル322を更新する。ジャンピングウィンドウ間隔設定モジュール312及びジャンピングウィンドウ間隔テーブル322に関するさらなる詳細は、図7及び図10に関して説明する。
52 クエリパーサ313は、システムに入力されたクエリを構文解析し、クエリ351に基づいてクエリ実行モジュール317を作成する。クエリパーサ313は、クエリ実行モジュール317の関数を作成するために、ターゲット関数検出モジュール314、複数生成モジュール315、及び複数関数生成モジュール316を使用し得る。クエリパーサ313に関するさらなる詳細は、図10及び図11に関して説明する。
53 クエリパーサ313は、ターゲット関数検出モジュール314、複数生成モジュール315、及び複数関数生成モジュール316を呼び出す。ターゲット関数検出モジュール314は、クエリがターゲット関数定義テーブル321で定義されたターゲット関数を使用するか否かをチェックする。ターゲット関数検出モジュール314のさらなる詳細は、図11に関連して開示される。複数ウィンドウ生成モジュール315は、クエリ実行モジュール317から受信した命令に基づいて、スライディングウィンドウ331及び/又はジャンピングウィンドウ332を生成する。複数関数生成モジュール316は、クエリ実行モジュール317から受信した命令に基づいて、リアルタイム関数333及び/又はバッチ関数334を生成する。ターゲット関数検出モジュール314、複数生成モジュール315、及び複数関数生成モジュール316に関するさらなる詳細は、図11に関して説明する。
54 クエリ実行モジュール317は、クエリパーサ313によってランタイムで作られるクエリを実行し、実行ツリーを生成する。実行ツリーは、スライディングウィンドウ331、ジャンピングウィンドウ332、リアルタイム関数333、及びバッチ関数334などの操作を含み得る。これら操作は、クエリによって接続され、演算子スケジューラによって実行される。クエリ実行モジュール317に関するさらなる説明は、図8及び図9に関して説明する。
55 図3で示されるように、スライディングウィンドウ331及びジャンピングウィンドウ332は、所定時間の間、入力データ341を保持する。リアルタイム関数演算子333は、リアルタイムで関数を処理するためにスライディングウィンドウデータ342とバッチ関数出力データ344を組み合わせる。バッチ関数演算子334は、ジャンピングウィンドウデータ344を処理する。結果のデータ345が出力される。
56 図4は、例示的実施形態に従った例のクエリを示す。
57 クエリ401の例では、クエリ名は、Q1である(register query Q1)。クエリ401の例は、また、過去10分間の範囲内(FROM Stream [range 10 minute] as S)のストリームのタプル(「Stream」と呼ばれる)を保持するための変数を含む。クエリ401の例は、また、val3 > 5を満たす(WHERE S.val3 > 5)タプルをフィルタし、Kmeans(3, S.val1, S.val2)を計算するが、これは、val1及びval2に基づいた3つのクラスタに区分化し、関数出力をクラス(Kmeans 3, S.val1, S.val2)としてリネームする。クエリ401の例はまた、複数の行IDであるval1、val2、val3、及びクラス(SELECT S.id, S.val1, S.val2, S.val3, KMeans (3, S.val1, S.val2) as class)を抽出し、新しいデータ入力(ISTREAM)による新しい結果を出力する。
58 図5は、例示的実施形態に従ったバッチ関数、リアルタイム関数、及びターゲット関数登録を示す。
59 例示的実施形態は、バッチ関数501、リアルタイム関数502、及びターゲット関数登録503などの1つ以上の関数を使用し得る。バッチ関数501は、2つのリスト、すなわちval1リスト及びval2リストを使用し、これらは、ウィンドウにタプルを保持するために使用される。バッチ関数501はまた、中央値を計算するために関数(例えば、中央値計算)を使用し得る。バッチ関数501で示される例では、中央値計算関数は、各パーティションの3つの中央値を返す。リアルタイム関数502は、入力データ(val1、val2)とバッチ関数501から計算された中央値の間の距離を計算する。リアルタイム関数502は、入力データと中央値の間の最小の距離を示し得るクラスタIDを返す。
60 ターゲット関数登録503は、例示的実施形態のための関数を登録する。ターゲット関数503に示される例では、ターゲット関数名はKmeansとして登録され、バッチ関数名はBatchKmeansとして登録され、リアルタイム関数名はRealtimeKmeansとして登録される。
61 図6は、例示的実施形態に従った、図3に示されるターゲット関数定義テーブル321を示す。
62 ターゲット関数定義テーブル321は、ターゲット関数601、バッチ関数602、及びリアルタイム関数603のエントリを含み得る。ターゲット関数の欄601は、クエリ503に登録された関数を示す。バッチ関数の欄602は、バッチ関数定義501に登録された関数を示す。リアルタイム関数の欄603は、リアルタイム関数定義502に登録された関数を示す。
63 エントリ611の例では、ターゲット関数登録503は、ターゲット関数定義テーブル関数Kmeansで登録される。エントリ611の例で示されるように、ターゲット関数はKmeansとして登録され、バッチ関数はBatchKmeansとして登録され、リアルタイム関数はRealtimeKmeansとして登録される。
64 図7は、例示的実施形態に従った、図3に示されるジャンピングウィンドウ間隔テーブル322を示す。
65 図7の例では、ジャンピングウィンドウ間隔テーブル322は、クエリ名701及び間隔702の欄を含む。クエリ名701は、クエリ名を示し、一方、間隔の欄702は、対応するクエリのためのジャンピングウィンドウ間隔を示す。エントリ711の例では、ジャンピングウィンドウ間隔は、クエリ名Q1では1分である。
66 図8は、例示的実施形態に従ったクエリ実行モジュールを示す。
67 図8の例では、図3で示されるクエリ実行モジュール317は、クエリ401が構文解析される場合に構成される。クエリ実行モジュール317の構成は、クエリ登録コマンド401(図4で示される)が実行される場合にクエリパーサ313(図3で示される)によって生成される。クエリ実行モジュール317は、1つ以上の演算子を含み得るものであり、各演算子が、プロセスを実行するための実行モジュールとして作用する。キュー812は、必要に応じて演算子を相互に接続し得る。
68 図8で示される例では、ストリームされたデータ811は、クエリ実行モジュール317に入力タプルとして入力される。クエリ実行モジュール317の演算子からのクエリの処理結果は、リアルタイム出力結果813として出力される。クエリ実行モジュール317で使用される演算子は、使用されるプロセスによってタイプが異なり得る。例えば、スキャン演算子801は、入力タプル811にタイムスタンプを追加するように動作する。スライディングウィンドウ演算子802は、データ行をカットアウトするために時間間隔を特定することによって、データストリーム811からデータ行をカットアウトするように動作する。スライディングウィンドウ演算子802は、ストリームデータ811をタプルセット(FROM Stream [Range 10 minute] as S)に変換するプロセスを実行するために動作可能である。フィルタ演算子803は、所定の条件(例えば、WHERE S.vaI13 > 51)に基づいて、タプルが出力されるか否かを決定するためのプロセスを実行するために動作可能である。射影演算子804は、少なくとも一部の欄を出力するためのプロセスを実行するために動作可能であり、さらに、登録された関数(SELECT S.id, S.val1, S.vaI2, S.val3, KMeans(3, S.val1, S.val2) as class)を計算するために動作可能であり得る。ストリーミング演算子805は、タプルセットをストリームデータ201(ISTREAM)に変換するためのプロセスを実行するために動作可能である。
69 図8で示される演算子に加えて、他の演算子もまた、クエリ実行モジュール317で使用され得る。例えば、結合演算子は、所定の条件又は指定条件下で2つ以上のデータストリームを結合するプロセスを実行するために使用することができる。集合演算子は、集合プロセスを実行するために使用され得るものであり、これは、合計、平均値、最大値、最小値、カウント値、分散、標準偏差、中央値などの導出によって示され得る。
70 図9は、クエリ401が例示的実施形態に従ってクエリパーサ413で構文解析される場合のクエリ実行モジュール317の例を示す。スキャン演算子801、スライディングウィンドウ演算子802、フィルタ演算子803、及びiStream演算子805は、図8で示されるものと同じである。フィルタ演算子904は、フィルタ演算子803と同じである。
71 結合演算子901は、所定の条件下で2つ以上のストリームデータを結合するプロセスを実行する。図9の例では、結合演算子901は、フィルタ演算子803の結果と射影演算子905の結果を結合する。射影演算子902は、図8の射影演算子804と類似しているが、関数がターゲット関数からリアルタイム関数に変わっている。射影演算子905も、図8の射影演算子804に類似しているが、関数がターゲット関数からバッチ関数に変わっている。
72 図10は、例示的実施形態に従って入力コマンドを処理するためのフローチャートを示す。1002では、入力コマンドは、関数登録モジュール311(図3で示される)によって処理され、これが、入力コマンドが図5で示されるようなターゲット関数登録コマンドであるか否かを決定する。入力コマンドがターゲット関数登録コマンドである場合は、関数登録モジュール311は、1003でターゲット関数定義テーブル321を更新する。1004では、入力コマンドは、ジャンピングウィンドウ間隔設定モジュール312(図3で示されるように)によって処理され、これは、入力コマンドがジャンピングウィンドウ間隔設定コマンド(図7で示されるように)を含むか否かを決定する。入力コマンドがジャンピングウィンドウ間隔設定コマンドを含む場合は、ジャンピングウィンドウ間隔設定モジュール312は、ステップ1005でジャンピングウィンドウ間隔テーブル322を更新する。1006では、クエリパーサ313(図3で示されるように)は、入力コマンドがクエリ登録コマンド(図4で示されるように)を含むか否かを決定する。クエリパーサ313が、入力コマンドがクエリ登録コマンドを含むと決定した場合、クエリパーサ313は、1007でクエリを構文解析する(例えば図11で示されるように)。1008では、ストリームデータ処理システム300(図3で示されるように)は、入力がシステム終了コマンドを含むか否かを決定する。入力コマンドがシステム終了コマンドを含む場合は、ストリームデータ処理システム300は、1009で入力コマンドのための処理を終了する。それ以外の場合は、手順は1002に戻る。
73 図11は、例示的実施形態に従ってクエリを処理するためのフローチャートを示す。1101では、クエリパーサ313(図3で示されるように)は、構文解析のためのクエリを受信する。1102では、クエリ実行モジュール317は、クエリの構文解析に基づいて生成される。1103では、ターゲット関数検出モジュール314(図3で示されるように)は、クエリをさらに処理するためにターゲット関数定義テーブル321を参照する。1104では、ターゲット関数定義テーブル321への参照に基づいて、ターゲット関数検出モジュール314は、登録済みのクエリがターゲット関数定義テーブル321からのターゲット関数を含むか否かを決定する。
74 クエリ内にターゲット関数が見つからない場合は、手順は1111に進んで終了する。ターゲット関数が見つかった場合は、手順は1105に進む。1105では、複数ウィンドウ生成モジュール315(図3で示されるように)は、スライディングウィンドウ演算子から射影演算子に演算子をコピーし、スライディングウィンドウ演算子をスキャン演算子に接続する。1106では、複数ウィンドウ生成モジュール315は、結合演算子を生成し、元の射影演算子の前に結合演算子を設定する。複数ウィンドウ生成モジュール315は、結合演算子を、コピーされた射影演算子に接続する。1107では、複数ウィンドウ生成モジュール315は、登録済みのクエリをさらに処理するためにジャンピングウィンドウ間隔テーブル322を参照する。1108では、ジャンピングウィンドウ間隔テーブル322への参照に基づいて、複数ウィンドウ生成モジュール315は、コピーされたスライディングウィンドウをジャンピングウィンドウで置換し、ジャンピングウィンドウ間隔テーブル322の値に対応するようにジャンピングウィンドウサイズを設定する。1109では、複数関数生成モジュール316(図3に示される)は、コピーされた射影演算子のターゲット関数をバッチ関数で置き換える。1110では、複数関数生成モジュール316は、元の射影演算子のターゲット関数をリアルタイム関数で置換する。
75 例えば、図4で示されるクエリが1101で登録されると仮定する。1102では、クエリパーサ313は、図8で示されるクエリ実行モジュールを生成するために図4のクエリを構文解析する。1104では、図4のクエリがKmeans関数を含むので、処理は1105に進む。1105では、図4のクエリに基づいて、スライディングウィンドウ演算子802、フィルタ演算子803、及び射影演算子804がコピーされる。コピーされた演算子(図9で示されるように)は、ジャンピングウィンドウ演算子903(これはスライディングウィンドウ演算子として機能する)、フィルタ演算子904、及び射影演算子905(ここで、バッチ関数がまだターゲット関数として機能する)としてコピーされる。ジャンピングウィンドウ演算子903は、スキャン演算子801に接続される。1106では、結合演算子901が作成され、フィルタ演算子803、射影演算子905、及び射影演算子902に接続される。上述のコピーから、射影演算子902(リアルタイム関数)はまだ、射影演算子804(ターゲット関数)と同じである。
76 この例では、ステップ1108では、コピーされたスライディングウィンドウ演算子903は、ジャンピングウィンドウ演算子903に置換される。ジャンピングウィンドウ演算子903のジャンピングウィンドウ間隔は、図7に示されるように「1分」に設定される。1109では、コピーされた射影演算子905のターゲット関数(Kmeans)は、バッチ関数(BatchKmeans)で置換される。1110では、射影演算子804のターゲット関数(Kmeans)は、射影演算子902のリアルタイム関数(Realtimekmeans)で置換される。
77 第二の例示的実施形態
78 上記の第一の例示的実施形態では、ジャンピングウィンドウ間隔は、ユーザによって設定される。第二の例示的実施形態では、ストリームデータ処理エンジンは、情報(例えば、CPU利用率)の監視に基づいてジャンピングウィンドウ間隔を調整する。ジャンピングウィンドウ間隔が短くなるにつれて、バッチ関数が実行される頻度が高まり、よって、リアルタイム処理の正確度を改良する。しかし、ジャンピングウィンドウ間隔が短くなるにつれて、CPU利用率が上がり得る。第二の例示的実施形態では、ストリームデータ処理エンジンは、CPU利用率に基づいてジャンピングウィンドウを調整し得る。
79 図12は、例示的実施形態に従ったハードウェア構成を示す。
80 図3の第一の例示的実施形態でも使用される要素の説明は、明確にするために省略される。第二の例示的実施形態では、ジャンピングウィンドウ間隔設定モジュール312及びジャンピングウィンドウ間隔テーブル322は使用されない。
81 第二の例示的実施形態では、ジャンピングウィンドウ調整設定モジュール1201は、監視間隔、上限閾値、初期ウィンドウ間隔、調整率、及び他の情報などの情報を格納するために使用され得る。ジャンピングウィンドウ調整情報は、ユーザによって構成され得る。ジャンピングウィンドウ調整設定モジュール1201のさらなる詳細は、図13で提供される。
82 CPU利用率監視モジュール1202は、ジャンピングウィンドウ調整設定モジュール1201からのジャンピングウィンドウ調整情報に基づいて更新される。CPU利用率監視モジュール1202は、CPU利用率を監視し、かつ監視されたCPU利用率に基づいてCPU利用率監視テーブル1212を更新する。CPU利用率監視モジュール1202のさらなる詳細は、図14で提供される。
83 ジャンピングウィンドウ間隔調整モジュール1203は、ジャンピングウィンドウ間隔を調整するために、CPU利用率監視モジュール1202からの情報及びCPU利用率監視テーブル1212からの情報を参照する。ジャンピングウィンドウ間隔は、CPU利用率に基づいてジャンピングウィンドウ間隔調整モジュール1203によって調整され得る。
84 ウィンドウ間隔調整定義テーブル1211は、ウィンドウ間隔を調整するための情報を格納する。ウィンドウ間隔調整定義テーブル1211のさらなる詳細が、図13で提供される。
85 CPU利用率監視テーブル1212は、システムのCPU利用率に関する情報を含む。CPU利用率監視テーブル1212のさらなる詳細が、図14で提供される。
86 図13は、例示的実施形態に従ったウィンドウ間隔調整定義テーブルを示す。
87 ウィンドウ間隔調整定義テーブルは、いくつかの変数を含み得る。例えば、調整間隔の欄1301は、ジャンピングウィンドウ間隔が調整される頻度を示す。エントリ1311の例では、ジャンピングウィンドウ間隔は、ジャンピングウィンドウ間隔調整モジュール1203によって毎分調整される。
88 上限閾値の欄1302は、CPU利用率の上限閾値を示す。エントリ1311の例では、CPU利用率の上限閾値は、80%に設定される。CPU利用率が80%以下である場合は、ジャンピングウィンドウ間隔は短くなる。一方、CPU利用率が80%を上回る場合は、ジャンピング間隔は長くなる。上限閾値は、必要に応じて調整することができ、エントリ1311の例の80%の例に限定されない。
89 初期ジャンピングウィンドウ間隔の欄1303は、ジャンピングウィンドウ間隔の初期値を示す。エントリ1311の例では、ジャンピングウィンドウ間隔の初期値は、60秒である。
90 調整率の欄1304は、調整間隔及び上限閾値に基づいて、ジャンピングウィンドウ間隔が調整される程度を示す。エントリ1311の例では、ジャンピングウィンドウ間隔は、一回に5%短くなる/長くなる。ジャンピングウィンドウが調整される程度は、必要に応じて調整され得るものであり、エントリ1311の例の5%の例に限定されない。
91 図14は、第二の例示的実施形態に従ったCPU利用率監視テーブルを示す。
92 CPU利用率監視テーブルは、CPU利用率に関する情報を格納し得るものであり、時刻の欄1401、CPU利用率の欄1402、及びウィンドウ間隔の欄1403を含むことができる。時刻の欄1401は、情報が記録された場合を示すタイムスタンプである。CPU利用率1402は、時刻1401におけるシステムによるCPU利用率のレベルを示す。ウィンドウ間隔の欄1403は、ジャンピングウィンドウ間隔の長さを示す。例示的なエントリ1404は、図13のウィンドウ間隔調整定義テーブルからの情報に基づく。例示的なエントリ1404では、CPU利用率1402が閾値(80%)未満であると示されたので、ウィンドウ間隔は時刻10:00から10:03に5%(3秒)だけ短くなった。しかし、時刻T:03からT:04では、CPU利用率が時刻10:03で80%の閾値を超えたので、ウィンドウ間隔は5%(3秒)だけ長くなった。
93 図15は、例示的実施形態に従ったクエリサーバーのフローチャートを示す。図15では、プロセス要素1501、1502、及び1503は、図10のプロセス要素1001、1002、及び1003とそれぞれ同じである。よって説明は、明確さのために省略される。
94 1504では、ジャンピングウィンドウ調整設定モジュール1201(図12に示されるように)は、入力コマンドが図13で示されるジャンピングウィンドウ調整設定コマンドであるか否かを決定する。1505では、入力コマンドがジャンピングウィンドウ調整設定コマンドである場合は、ジャンピングウィンドウ調整設定モジュール1201は、ウィンドウ間隔調整定義テーブルを更新する。
95 プロセス要素1506及び1507は、図10で示される1006及び1007とそれぞれ同じである。初期ジャンピングウィンドウ間隔は、ウィンドウ間隔調整定義テーブル1211で構成される。1508では、ジャンピングウィンドウサイズは、タイマ間隔に基づいて調整される(プロセス要素1509で示されるように)。調整のさらなる詳細は、図16で提供される。プロセス要素1510及び1511は、図10で示されるプロセス要素1008及び1009とそれぞれ同じである。
96 図16は、例示的実施形態に従ってウィンドウサイズを調整するためのフローチャートを示す。具体的には、図16は、図15のプロセス要素1509のフローチャートを示す。1601でプロセスが開始する。1602では、CPU利用率監視モジュール1202は、CPU利用率を監視し、CPU利用率テーブル1212を更新する。1603では、ジャンピングウィンドウ間隔調整モジュール1203は、CPU利用率テーブル1212を参照する。1604では、ジャンピングウィンドウ間隔調整モジュール1203は、CPU利用率テーブル1212のCPU利用率の欄1402の値がウィンドウ間隔調整定義テーブル1211の上限閾値の欄1302の値より小さいか否かを決定する。1605では、ジャンピングウィンドウ間隔調整モジュール1203は、新しいジャンピングウィンドウを「古いジャンピングウィンドウ間隔−(初期ウィンドウ間隔調整率)」に設定する。1606では、ジャンピングウィンドウ間隔調整モジュール1203は、新しいジャンピングウィンドウを「古いジャンピングウィンドウ間隔+(初期ウィンドウ間隔調整率)」に設定する。1607では、プロセスが終了する。
97 例えば、図14で示されるように10:00のCPU利用率が60%であること仮定する。よって、1604では、ジャンピングウィンドウ間隔調整モジュール1203は、CPU利用率の値が上限閾値の欄より小さいと決定する。新しいジャンピングウィンドウ間隔=古いジャンピングウィンドウ間隔(60秒)−(初期ウィンドウ間隔(60秒)調整率(0.05))=57秒。その結果、CPU利用率が10:00で60%であるので、ウィンドウ間隔は10:01で1分から57秒に短くなる。しかし、10:03のCPU利用率は86%である。従って、1604では、ジャンピングウィンドウ間隔調整モジュール1203は、CPU利用率の値が上限閾値の欄より大きいと決定する。新しいジャンピングウィンドウ間隔=古いジャンピングウィンドウ間隔(51秒)+(初期ウィンドウ間隔(60秒)調整率(0.05))= 54秒。その結果、CPU利用率が10:03で86%であるので、ウィンドウ間隔は10:04で51秒から54秒に長くなる。
98 第三の例示的実施形態
99 説明された第一及び第二の例示的実施形態では、クエリパーサは、クエリに基づいてクエリ実行モジュールを作る。第三の例示的実施形態では、クエリトランスレータは、登録済みのクエリから新しいクエリを出力する。クエリ実行モジュールは、ストリームデータ処理エンジンが新しいクエリを構文解析する場合に生成される。
100 図17は、第三の例示的実施形態に従って、ストリームデータ処理サーバの例示的なハードウェア構成を示す。図17に示される構成では、クエリトランスレータ
1713は、登録済みのクエリから2つのクエリを作るために使用される。クエリトランスレータは、ターゲット関数検出モジュール1714、複数ウィンドウ生成モジュール1715、及び複数関数生成モジュール1716を呼び出す。ターゲット関数検出モジュール1714は、図3のターゲット関数検出モジュール314と同様に機能する。複数ウィンドウ生成モジュール1715は、ジャンピングウィンドウ及びスライディングウィンドウを含む新しいクエリを生成する。複数関数生成モジュール1716は、バッチ関数及びリアルタイム関数を含み得る新しいクエリを生成する。
101 図18は、例示的実施形態に従って、ストリームデータ処理サーバのためのフローチャートを示す。図18では、プロセス要素1801〜1806、及び1808〜1809は、図10のプロセス要素1001〜1006及び1008〜1009と同じである。1807では、クエリトランスレータは、クエリを変換する。クエリ変換のさらなる詳細は、図19で提供される。
102 図19は、例示的実施形態に従って、クエリトランスレータのためのフローチャートを示す。1901でプロセスが開始する。1902では、ターゲット関数検出モジュール1714は、ターゲット関数定義テーブル321を参照する。1903では、ターゲット関数検出モジュール1714は、登録済みのクエリが、ターゲット関数定義テーブル321からのターゲット関数を含むか否かを決定する。1904では、複数ウィンドウ生成モジュール1715は、登録済みのクエリを一時的なクエリにコピーし、元のクエリの前に一時的なクエリを設定し、クエリ名を一時的なクエリとしてリネームする。1905では、複数ウィンドウ生成モジュール1715は、ジャンピングウィンドウ間隔テーブル322を参照する。1906では、複数ウィンドウ生成モジュール1715は、一時的なクエリのスライディングウィンドウをジャンピングウィンドウに置換し、ジャンピングウィンドウ間隔をジャンピングウィンドウ間隔テーブル322の対応する値に設定する。1907では、複数ウィンドウ生成モジュール1715は、一時的なクエリ名を元のクエリの「From」センテンスに追加し、スライディング行ウィンドウを一時的なクエリ名(サイズ1)に設定する。1908では、複数関数生成モジュール1716は、一時的なクエリのターゲット関数をバッチ関数で置換し、出力を一時的な名前としてリネームする。1909では、複数関数生成モジュール1716は、元のクエリのターゲット関数をリアルタイム関数で置換し、一時的なクエリの出力をリアルタイム関数の引数として追加する。1910で、プロセスは終了する。
103 図20は、例示的実施形態に従った変換されたクエリ例を示す。図20で提供される例では、登録された元のクエリは、図4のものである。図19のフローチャートによると、プロセス要素1903から、ターゲット関数検出モジュール1714は、クエリがKmeans関数を含むので、登録済みのクエリがターゲット関数定義テーブル321からのターゲット関数を含むと決定する。1904では、元のクエリが一時的なクエリにコピーされる。クエリ2001は一時的なクエリであり、クエリ2002は元のクエリである。一時的なクエリ名は、Q1からTemp(register query Temp)に変更される。1906では、一時的なクエリの範囲スライディングウィンドウは、ジャンピングウィンドウに変更される。ジャンピングウィンドウ間隔は、1分に設定される(FROM Stream [range 10 minute] as S -> FROM Stream [range 10 minute jumped every 1 minute])。1907では、一時的なクエリ名Tempは、元のクエリの「From」ステートメントに追加される。スライディング行ウィンドウは、一時的なクエリ名(このサイズは1である)に設定される(Stream [range 10 minute] as S -> Stream [range 10 minute] as S, Temp [rows 1] as G)。1908では、一時的なクエリのKmeans 関数はBatchKmeansに変更され、出力はgravityとリネームされる(KMeans(3, S.val1, S.val2) as class -> BatchKMeans(3, S.val1, S.val2) as gravity)。1909では、元のクエリのKmeans 関数は、RealtimeKmeansに変更される。一時的なクエリの出力は、リアルタイム関数の引数として追加される(KMeans(3, S.val1, S.val2) as class -> RealtimeKMeans(3, S.val1, S.val2, G.gravity) as class)。
104 図21は、例示的実施形態に従った生成されたクエリ実行モジュールを示す。ストリームデータ処理エンジンが図20で示されるクエリを構文解析する場合に、図21で示されるクエリ実行モジュールが生成される。図21で示されるクエリ実行モジュールは、図9で示されるクエリ実行モジュールに類似している。これらの違いは、要素2101、2102、及び2103が新たに追加されることである。要素2101はスキャン演算子であり、要素2102はistream演算子であり、かつ要素2103はスライディングウィンドウ演算子である。結合演算子901は、フィルタ演算子803及びスライディングウィンドウ演算子2103の出力を組み合わせる。
105 数件の例示的実施形態が示され説明されてきたが、この分野に精通した人々に対して本明細書で説明している内容について知らせるために、これらの例示的実施形態は提供される。本明細書で説明している内容が、説明された例示的実施形態に制限されることなしに、多様な形態で具現化され得ることが、理解されるべきである。本明細書で説明している内容は、特段に定義されもしくは説明される事項なしに、又は説明されていない異なる要素もしくは事項を伴って、実行することができる。添付の請求項及びその同等物で定義される本明細書で説明される内容から逸脱することなしに、これらの例示的実施形態に変更がなされる得ることが、当該分野に精通した人々によって認められるであろう。
106 詳細な説明の一部は、コンピュータ内のオペレーションのアルゴリズム及び象徴的な態様に関して示されている。これらのアルゴリズム記述及び象徴的な態様は、データ処理分野の当業者がその新しいアイディアのエッセンスを最も効果的に他の当業者に伝えるために使用する手段である。アルゴリズムとは、望ましい最終状態又は結果へと導く一連の定義されたステップである。例示的実施形態において、実施されるステップは、具体的な結果を達成するための相当量の物理的操作を必要とする。
107 別段の記載がない限り、以下の解説から明らかなように、当然のことながら説明全体を通して、「処理」、「演算」、「計算」、「判断」、「表示」等の用語を用いた解説は、コンピュータシステムのレジスタ及びメモリ内の物理的(電子的)数量として表わされるデータを、コンピュータシステムのメモリもしくはレジスタ又はその他の情報記憶、送信もしくは表示装置の中の物理的数量として同様に表わされるその他のデータに操作しかつ変換する、コンピュータシステム又はその他の情報処理装置の動作又はプロセスを含み得る。
108 例示的実施形態は、本明細書における動作を実施する装置にも関する。この装置は、必要とされる目的のために特別に構築してもよく、又は一つ以上のコンピュータプログラムによって選択的に起動又は再構成された一つ以上の汎用コンピュータを含み得る。当該コンピュータプログラムは、光ディスク、磁気ディスク、読取専用記憶装置(ROM)、ランダムアクセスメモリ(RAM)、ソリッドステート装置及びドライブ、又は電子情報の格納に適したその他の種類の媒体等(但し、これらに限定されない)の非一過性コンピュータ読取可能媒体又はコンピュータ読取可能記憶媒体に格納され得る。本明細書において示されるアルゴリズム及び(情報)提示は、特定のコンピュータ又はその他の装置に本質的に関係しているわけではない。
109 様々な汎用システムを、本明細書における教示に従ってプログラム及びモジュールと共に使用してもよく、又は望ましい方法ステップを実施するためにより特化した装置を構築することが都合がよいということが判明するかもしれない。さらに、例示的実施形態は、特定のプログラミング言語を参照して説明されてはいない。当然のことながら、本明細書に記載されている通りに本発明の教示を実施するために、様々なプログラミング言語を使用してもよい。プログラミング言語の命令は、一つ以上の処理装置、例えば中央処理装置(CPU)、プロセッサ、又はコントローラによって実行され得る。
110 当技術分野では周知であるように、上述の動作は、ハードウェア、ソフトウェア、又はソフトウェアとハードウェアの組み合わせによって実行することができる。例示的実施形態の様々な態様は、回路や論理装置(ハードウェア)を用いて実施してよく、その一方で、その他の態様は、機械読み取り可能媒体(ソフトウェア)上に記憶された命令を用いて実施してもよく、これがプロセッサによって実行された場合には、例示的実施形態を実行する方法をプロセッサに実施させるものである。さらに、いくつかの例示的実施形態は、ハードウェアのみにおいて実施されてよく、その他の例示的実施形態は、ソフトウェアのみで実施されてよい。さらに、説明された様々な機能は、一つのユニットで実施することができ、又はあらゆる方法によって多くの構成要素に分散することができる。ソフトウェアによって実施された場合、上記の方法は、コンピュータ読取可能媒体に記憶された命令に基づいて、汎用コンピュータなどのプロセッサによって実行され得る。望ましい場合には、圧縮及び/又は暗号化形式で命令を媒体に記憶することができる。
111 さらに、例示的実施形態の他の実施は、本明細書及び本明細書に開示される発明の実行を考慮することで、当業者にとって明らかなものとなるであろう。説明された実施形態の多様な態様及び/又は構成要素は、単独で又はあらゆる組み合わせで使用してもよい。本明細書及び実施例は単に例示的なものとして考慮されることが意図されており、本発明の真の範囲及び精神は、以下の請求項によって示される。

Claims (20)

  1. ストリームデータ入力情報を一次情報として受信し、かつ当該受信した一次情報から所定期間内の一次情報を取得することによって二次情報を生成する、ストリームデータ処理方法を実行するための命令を格納するための非一過性コンピュータ可読媒体であって、
    前記命令は、
    複数のターゲット関数の各々が、複数の第1タイプの処理関数からの第1タイプの処理関数を、複数の第2タイプの処理関数からの第2タイプの処理関数に関連付ける、前記複数のターゲット関数を管理することと、
    クエリに基づいて前記複数のターゲット関数からターゲット関数を選択することと、
    前記選択されたターゲット関数に基づいて、前記二次情報を生成するために前記取得された一次情報に対して前記第1タイプの処理関数及び前記第2タイプの処理関数を実行することと
    を含む、非一過性コンピュータ可読媒体。
  2. 前記第1タイプの処理関数がリアルタイム処理関数である、請求項1に記載の非一過性コンピュータ可読媒体。
  3. 前記第2タイプの処理関数がバッチ処理関数である、請求項2に記載の非一過性コンピュータ可読媒体。
  4. 前記ターゲット関数が、スライディングウィンドウを実行するための関数と、ジャンピングウィンドウを実行するための関数と、スライディングウィンドウ及びジャンピングウィンドウを実行するための関数とから選択される、請求項3に記載の非一過性コンピュータ可読媒体。
  5. 前記命令が、前記選択されたターゲット関数に基づいて、前記第1タイプの処理関数及び前記第2タイプの処理関数を実行するための複数の演算子から成るクエリ実行モジュールを生成することをさらに含む、請求項1に記載の非一過性コンピュータ可読媒体。
  6. 前記クエリ実行モジュールを前記生成することは、
    コピーされたセットの演算子として、スライディングウィンドウ演算子から前記複数の演算子の射影演算子に演算子をコピーすることと、
    前記複数の演算子のスキャン演算子を、前記コピーされたセットの演算子のコピーされたスライディングウィンドウ演算子に接続することと、
    前記射影演算子の前に結合演算子を生成し、かつ前記結合演算子を、前記コピーされたセットの演算子のコピーされた射影演算子に接続することと、
    前記コピーされたスライディングウィンドウ演算子をジャンピングウィンドウ演算子で置換することと、
    前記コピーされた射影演算子を前記第2タイプの処理関数に関連付けることと、
    前記射影演算子を前記第1タイプの処理関数に関連付けることと
    を含む、請求項5に記載の非一過性コンピュータ可読媒体。
  7. 前記命令が、中央処理装置(CPU)利用率に基づいてジャンピングウィンドウ間隔を調整することをさらに含む、請求項1に記載された非一過性コンピュータ可読媒体。
  8. 前記命令は、
    ターゲット関数登録コマンドのための入力コマンドを構文解析し、かつ前記入力コマンドが前記ターゲット関数登録コマンドを含む場合に、前記入力コマンドに基づいたターゲット関数を前記複数のターゲット関数に追加することと、
    ジャンピングウィンドウ間隔登録コマンドのための前記入力コマンドを構文解析し、かつ前記入力コマンドが前記ジャンピングウィンドウ間隔登録コマンドを含む場合に、前記入力コマンドに基づいてジャンピングウィンドウ間隔を調整することと、
    クエリ登録コマンドのための前記入力コマンドを構文解析し、かつ前記入力コマンドが前記クエリ登録コマンドを含む場合に、前記クエリのために前記入力コマンドを構文解析することと
    をさらに含む、請求項1に記載された非一過性コンピュータ可読媒体。
  9. 前記命令は、
    前記クエリを新しいクエリに変換することと、
    前記新しいクエリに基づいてクエリ実行モジュールを生成することと
    をさらに含む、請求項1に記載された非一過性コンピュータ可読媒体。
  10. 前記クエリを前記新しいクエリに前記変換することは、スライディングウィンドウのための関数をジャンピングウィンドウのための関数に変換することを含む、請求項9に記載の非一過性コンピュータ可読媒体。
  11. ストリームデータ入力情報を一次情報として受信し、当該受信した一次情報から所定期間内の一次情報を取得することによって、二次情報を生成するように構成されたサーバであって、
    複数のターゲット関数の各々が、複数の第1タイプの処理関数からの第1タイプの処理関数を複数の第2タイプの処理関数からの第2タイプの処理関数に関連付ける、前記複数のターゲット関数を管理するように構成されたメモリと、
    クエリに基づいて前記複数のターゲット関数からターゲット関数を選択し、かつ
    前記選択されたターゲット関数に基づいて前記二次情報を生成するために、前記取得された一次情報に対して前記第1タイプの処理関数及び前記第2タイプの処理関数を実行するように構成された中央処理装置(CPU)と
    を備える、サーバ。
  12. 前記第1タイプの処理関数がリアルタイム処理関数である、請求項11に記載のサーバ。
  13. 前記第2タイプの処理関数がバッチ処理関数である、請求項12に記載のサーバ。
  14. 前記CPUは、スライディングウィンドウを実行するための関数と、ジャンピングウィンドウを実行するための関数と、スライディングウィンドウ及びジャンピングウィンドウを実行するための関数とから前記ターゲット関数を選択するように構成される、
    請求項13に記載のサーバ。
  15. 前記メモリはさらに、前記選択されたターゲット関数に基づいて、前記第1タイプの処理関数及び前記第2タイプの処理関数を実行するための複数の演算子から成るクエリ実行モジュールを管理するように構成される、請求項14に記載のサーバ。
  16. 前記CPUは、
    コピーされたセットの演算子として、スライディングウィンドウ演算子から前記複数の演算子の射影演算子に演算子をコピーすることと、
    前記複数の演算子のスキャン演算子を、前記コピーされたセットの演算子のコピーされたスライディングウィンドウ演算子に接続することと、
    前記射影演算子の前に結合演算子を生成し、かつ前記結合演算子を、前記コピーされたセットの演算子のコピーされた射影演算子に接続することと、
    前記コピーされたスライディングウィンドウ演算子をジャンピングウィンドウ演算子で置換することと、
    前記コピーされた射影演算子を前記第2タイプの処理関数に関連付けることと、
    前記射影演算子を前記第1タイプの処理関数に関連付けることと
    によって前記クエリ実行モジュールを構成するように構成される、請求項15に記載のサーバ。
  17. 前記CPUがさらに、CPU利用率に基づいてジャンピングウィンドウサイズを調整するために構成される、請求項11に記載のサーバ。
  18. 前記CPUはさらに、
    ターゲット関数登録コマンドのための入力コマンドを構文解析し、かつ前記入力コマンドが前記ターゲット関数登録コマンドを含む場合に、前記入力コマンドに基づいたターゲット関数を前記複数のターゲット関数に追加することと、
    ジャンピングウィンドウ間隔登録コマンドのための前記入力コマンドを構文解析し、かつ前記入力コマンドが前記ジャンピングウィンドウ間隔登録コマンドを含む場合に、前記入力コマンドに基づいてジャンピングウィンドウ間隔を調整することと、
    クエリ登録コマンドのための前記入力コマンドを構文解析し、かつ前記入力コマンドが前記クエリ登録コマンドを含む場合に、前記クエリのために前記入力コマンドを構文解析することと
    を行うように構成される、請求項11に記載のサーバ。
  19. 前記メモリは、前記クエリを新しいクエリに変換するように構成されるクエリトランスレータをさらに備え、前記CPUは、前記新しいクエリに基づいてクエリ実行モジュールを生成するようにさらに構成される、請求項11に記載のサーバ。
  20. 前記クエリトランスレータは、スライディングウィンドウ演算子のための関数をジャンピングウィンドウのための関数に変換することによって、前記クエリを前記新しいクエリに変換するように構成される、請求項19に記載のサーバ。
JP2012212742A 2012-04-25 2012-09-26 シングルストリームの複数ウィンドウでのストリームデータ処理方法 Expired - Fee Related JP5906161B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/456,064 US8768956B2 (en) 2012-04-25 2012-04-25 Stream data processing method with multiple windows on single stream
US13/456,064 2012-04-25

Publications (2)

Publication Number Publication Date
JP2013228991A true JP2013228991A (ja) 2013-11-07
JP5906161B2 JP5906161B2 (ja) 2016-04-20

Family

ID=49478276

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012212742A Expired - Fee Related JP5906161B2 (ja) 2012-04-25 2012-09-26 シングルストリームの複数ウィンドウでのストリームデータ処理方法

Country Status (2)

Country Link
US (1) US8768956B2 (ja)
JP (1) JP5906161B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104462353A (zh) * 2014-12-04 2015-03-25 北京国双科技有限公司 数据库批量同步处理方法及装置

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10412121B2 (en) * 2012-11-20 2019-09-10 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on growing interval
US9477464B2 (en) 2012-11-20 2016-10-25 Genesys Telecommunications Laboratories, Inc. Distributed aggregation for contact center agent-groups on sliding interval
US9607067B2 (en) * 2013-01-25 2017-03-28 International Business Machines Corporation Synchronization of time between different simulation models
US9805143B2 (en) 2013-01-25 2017-10-31 International Business Machines Corporation Composite simulation modeling and analysis
US9201989B2 (en) 2013-01-25 2015-12-01 Globalfoundries Inc. Interpolation techniques used for time alignment of multiple simulation models
US9251205B2 (en) * 2013-02-21 2016-02-02 International Business Machines Corporation Streaming delay patterns in a streaming environment
US9305031B2 (en) * 2013-04-17 2016-04-05 International Business Machines Corporation Exiting windowing early for stream computing
JP6114473B2 (ja) * 2013-06-21 2017-04-12 株式会社日立製作所 時間調整を使用したストリームデータ処理方法
US10037389B2 (en) 2015-07-21 2018-07-31 International Business Machines Corporation Dynamic window adjustments in a streaming environment
US10198298B2 (en) 2015-09-16 2019-02-05 Salesforce.Com, Inc. Handling multiple task sequences in a stream processing framework
US10191768B2 (en) 2015-09-16 2019-01-29 Salesforce.Com, Inc. Providing strong ordering in multi-stage streaming processing
US10146592B2 (en) 2015-09-18 2018-12-04 Salesforce.Com, Inc. Managing resource allocation in a stream processing framework
US9965330B2 (en) * 2015-09-18 2018-05-08 Salesforce.Com, Inc. Maintaining throughput of a stream processing framework while increasing processing load
US10437635B2 (en) 2016-02-10 2019-10-08 Salesforce.Com, Inc. Throttling events in entity lifecycle management

Citations (2)

* 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 ストリームデータ処理方法及び計算機システム
JP2010108044A (ja) * 2008-10-28 2010-05-13 Hitachi Ltd ストリームデータ処理プログラム及び計算機システム

Family Cites Families (2)

* 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
JP2009163370A (ja) * 2007-12-28 2009-07-23 Noritsu Koki Co Ltd キャプチャーソフトウエアプログラム及びキャプチャー装置

Patent Citations (2)

* 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 ストリームデータ処理方法及び計算機システム
JP2010108044A (ja) * 2008-10-28 2010-05-13 Hitachi Ltd ストリームデータ処理プログラム及び計算機システム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104462353A (zh) * 2014-12-04 2015-03-25 北京国双科技有限公司 数据库批量同步处理方法及装置
CN104462353B (zh) * 2014-12-04 2017-12-22 北京国双科技有限公司 数据库批量同步处理方法及装置

Also Published As

Publication number Publication date
JP5906161B2 (ja) 2016-04-20
US20130290367A1 (en) 2013-10-31
US8768956B2 (en) 2014-07-01

Similar Documents

Publication Publication Date Title
JP5906161B2 (ja) シングルストリームの複数ウィンドウでのストリームデータ処理方法
US11556543B1 (en) Streaming joins with synchronization via stream time estimations
US8326821B2 (en) Transforming relational queries into stream processing
JP6190255B2 (ja) グラフデータの再帰クエリを用いたストリームデータ処理方法
CN108431804B (zh) 将多个容器数据库分组为单个容器数据库集群的能力
EP3098730B1 (en) Aggregating database entries by hashing
US9460154B2 (en) Dynamic parallel aggregation with hybrid batch flushing
AU2013371448B2 (en) System and method for distributed database query engines
US8396852B2 (en) Evaluating execution plan changes after a wakeup threshold time
US20120324453A1 (en) Efficient logical merging over physically divergent streams
JP6114473B2 (ja) 時間調整を使用したストリームデータ処理方法
US20120331010A1 (en) Systems And Methods For Performing A Query On A Distributed Database
EP3172682B1 (en) Distributing and processing streams over one or more networks for on-the-fly schema evolution
WO2018196729A1 (zh) 一种查询处理方法、数据源注册方法及查询引擎
Jacques-Silva et al. Providing streaming joins as a service at facebook
US9489652B1 (en) Obtaining and running a local query on a computing device
WO2018108010A1 (en) System, device and method for data update notification
US9256634B2 (en) Resuming big data transformations
US11868352B2 (en) Systems and methods for spilling data for hash joins
KR101757251B1 (ko) 집계질의를 처리하기 위한 장치 및 그 방법
CN111159218A (zh) 数据处理方法、装置及可读存储介质

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151208

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160204

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160318

R150 Certificate of patent or registration of utility model

Ref document number: 5906161

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees