PipelineDBとContinuous Queryについて調べたこと
TechCrunchの記事で、PipelineDBがオープンソースでリリースされたことを知ったので調べてみた。
記事には、
このオープンソースのデータベースはSQLのクェリを連続的にストリーミングで流し、結果のテーブルを次々と保存する。協同ファウンダのDerek Nelsonはこう説明する: “連続的な処理とリレーショナルのストレージを一体化しているので、ストリーム処理をしながら、別途、外付けのストレージシステムを管理しなくてもよい”。
とあるが、何のことかさっぱりわからないので、マニュアルを読んでみる。
Introduction — PipelineDB 0.8.0 documentation
Continuous query
読み始めたはいいが、マニュアルに頻出する単語、continuous queries
がさっぱりわからないので、検索してみる。
この資料 http://www.ieice.org/iss/de/DEWS/proc/2004/paper/doc/ms-1.pdf によると、
データストリームからの到着データへ繰り返し問合せを適用する処理方式。 到着データをタイムスタンプが付加された無限のタプル列とみなす。
なるほど。このデータストリームにSQLで問い合わせできるのが特徴なわけね。
PipelineDBとは
特徴を整理する。
- PostgleSQLベースで開発されているオープンソースなDB
- まだDBに保存していないデータストリームを扱うことができる
- データストリームにSQLで繰り返し問い合わせでき、テーブルやビューのように扱うことができる
使い方のイメージ
実際にどんなシーンで使えるか。データストリームへの問い合わせとはどういうことかは、PipelineDBのトップページをみるとJavaScriptのアニメーションがあるのでわかりやすい。
公式ページのExamples
大量に流れてくるデータ、ログをモニタリングしてごにょごにょするのが使いどころか。 ポイントは、ごにょごにょの処理でSQLで書けるところ。まだDBにInsertする前なのに。 例えば、サーバーのログを監視しておいて、レイテンシがnミリ秒以上なレスポンスが1分以内に50回あったらアラートという処理がSQLで書ける。これまではDBにInsertする前のデータストリームの状態では、アプリケーションで使っているプログラミング言語、もしくはCQL(Continuous Query Language)で処理を書く必要があった。
PipelineDBを使えば、SQLで書けるね。これまでバッチ処理をしていたSQLをそのままリアルタイム処理にできるよってのがメリットかな。