ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド

[目次][索引][前へ][次へ]

2.1 CQLの体系

Stream Data Platform - AFでは,ストリームデータ処理エンジンに入力されたストリームデータに対して,あらかじめ登録されたシナリオに沿った分析を実行し,目的に応じた分析結果を出力します。

シナリオは,CQLというクエリ言語を使用して定義します。

Stream Data Platform - AFで使用するCQLの体系を次の表に示します。

表2-1 Stream Data Platform - AFで使用するCQLの体系

項番 CQLの分類 用途 該当するCQLの例
1 定義系CQL ストリームやクエリを定義して,ストリームデータ処理エンジンに登録します。 REGISTER STREAM
REGISTER QUERY など
2 操作系CQL クエリで実行するストリームデータの処理内容について定義します。REGISTER QUERY句に続けて記述します。
操作系CQLでは,次の4種類の演算実行をクエリに定義できます。
  • ウィンドウ演算
  • 関係演算
  • ストリーム化演算
  • ストリーム間演算
SELECT
FROM
WHERE
GROUP BY
HAVING
UNION など

CQLの詳細については,「4. CQLリファレンス」で説明します。

CQLによるクエリの指定例を次の図に示します。

図2-1 CQLによるクエリの指定例

[図データ]

定義系CQLでは,ストリームデータ処理エンジンに,次の情報を登録します。

操作系CQLでは,入力ストリームキューから入力されたデータに対してシナリオに沿った分析処理を実行するための,演算処理を定義します。

クエリで定義するウィンドウ演算,関係演算,ストリーム化演算,およびストリーム間演算の関係を次の図に示します。

図2-2 演算の関係

[図データ]

各演算での実施内容について説明します。

ウィンドウ演算
ウィンドウ演算によって,演算対象を特定します。時系列集合である入力ストリームデータまたは出力ストリームデータは,そのままの状態では演算の対象にできません。ウィンドウ演算によって,生存期間を持つ,n項組のタプルの集合(リレーション)として切り取ることで,演算の対象にできます。演算の対象として特定したリレーションを入力リレーションといいます。
ウィンドウ演算では,タプルの個数や時間などによって演算対象を特定するために,ROWSウィンドウ,RANGEウィンドウ,PARTITION BYウィンドウなどを使用します。
関係演算
関係演算によって,分析の目的に沿った処理を実行します。
関係演算では,選択,結合,集合関数といった演算を実行して,結果データをリレーションとして抽出します。このリレーションを出力リレーションといいます。
ストリーム化演算
ストリーム化演算によって,関係演算の結果データをストリームデータに変換します。出力リレーションの変化内容に応じて,追加分,削除分,集合などのデータをストリームデータとして出力できます。
ストリーム間演算
ストリーム間演算によって,ストリームデータに対して演算を実行し,別のストリームデータに変換します。
ストリーム間演算では,リレーションを生成しません。入力ストリームデータに対して演算を実行し,演算の結果を出力ストリームデータとして出力します。
また,入力されたストリームデータに対して実行する処理は任意です。ストリーム間演算関数の処理ロジックを,ユーザーがJavaで記述して作成するクラスファイルにメソッドとして実装することで,任意の処理を実行できます。
ストリーム間演算を使用する場合は,CQLでストリーム間演算関数を定義するほかに,外部定義関数の作成が必要です。外部定義関数の作成については,「10. 外部定義関数の作成」を参照してください。