Norikra
概要
SQL でデータストリームを処理して流すための OSS
スキーマレスなイベントストリームに対して SQL クエリを適用できるのが特徴
RDBMS のように、テーブルやテーブル定義というものが存在しない
イベントストリームは Target と呼ばれる
クエリは SELECT 文のみをサポートする
クエリは逐次流れてくるストリームデータに対してインクリメンタルに実行されるので、大量のデータをストレージに保持しておく必要がない (計算後は捨てることができる)
概念
Query
全てのクエリは、名前 と グループ名 を持つ
名前: クエリ内で一意である必要がある。クエリの結果を取得するために必要
グループ名: 空でも良い。クエリ群から得られる結果をフィルタリングするのに利用できるらしい
クエリ内からはこれらの名前にアクセスはできない
命名規則は特になし
View (後述) という概念以外は標準の SQL と同様
SQL キーワードは case insensitive だが、Target, フィールド名は case sensitive なので注意
データ形として、hash や Array も扱える
各フィールド値は Java Object なので、インスタンスメソッドを呼び出すこともできる
java.lang.*, java.math.*, java.text.*, java.util.* に含まれる関数は利用できる
Target
Target は、クエリシンタックス上は、RDBMS におけるテーブル名のように扱われる
実態は、異なるフィールドを持った複数のストリームの集合に名前をつけたもの
命名規則は [a-zA-Z][_a-zA-Z0-9]*
View (Window)
Norikra は、継続して流れてくるイベントストリームに対するクエリを扱うので、時間の概念を扱う必要がある
例えば、
1 時間毎にクエリ結果を取り出す (Time batch window)
Data Window
参考