クエリは,ストリームデータに対してどのような処理を実行するかを定義したものです。クエリは,クエリ定義ファイル内にCQLで記述します。クエリ定義ファイルについては,マニュアル「uCosminexus Stream Data Platform - Application Framework システム構築・運用ガイド」を参照してください。
クエリでは,次の4種類の演算処理を定義します。
これらの演算処理の関係を次の図に示します。
図2-5 クエリでの処理の関係
ウィンドウ演算は,ストリームデータからウィンドウで一定の範囲内のデータを抽出するための演算です。このとき生成されるデータ(タプルの集合)を入力リレーションといいます。
関係演算は,ウィンドウ演算で抽出されたデータを処理するための演算です。このとき生成されるタプルの集合を出力リレーションといいます。
ストリーム化演算は,関係演算で処理されたデータをストリームデータに変換して出力するための演算です。
これに対して,ストリーム間演算は,リレーションを生成しないで直接ストリームデータに対して演算を実行し,別のストリームデータに変換します。ストリーム間演算では,入出力がストリームデータであること以外は特に規定がなく,入力されたストリームデータに対して実行する処理は任意です。ストリーム間演算関数の処理ロジックを,ユーザーがJavaで記述して作成するクラスファイルにメソッドとして実装することで,任意の処理を実行できます。
このため,ウィンドウ演算,関係演算,およびストリーム化演算の組み合わせでは実現が難しかった区間集計(一定区間(時間)の発生データを定期的に集計する)などの処理が,ストリーム間演算でできるようになります。
なお,ストリーム間演算を使用する場合は,CQLでストリーム間演算関数を定義するほかに,外部定義関数の作成が必要です。外部定義関数の作成については,マニュアル「uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド」を参照してください。
それぞれの演算については,「2.2.2 操作系CQLによるストリームデータの演算処理の指定」を参照してください。
ストリームデータ処理は,ストリームデータ処理エンジンに登録したクエリ定義ファイルの内容に従って実行されます。クエリ定義ファイルの内容については「2.2 CQLを使用したストリームデータ処理の実行」を,クエリの記述例については「2.3 CQLを使用したストリームデータ処理の実行例」を参照してください。