Shoken Startup Blog

KitchHike Founder/CTO

PipelineDBとContinuous Queryについて調べたこと

jp.techcrunch.com

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のアニメーションがあるのでわかりやすい。

www.pipelinedb.com

公式ページのExamples

www.pipelinedb.com

大量に流れてくるデータ、ログをモニタリングしてごにょごにょするのが使いどころか。 ポイントは、ごにょごにょの処理でSQLで書けるところ。まだDBにInsertする前なのに。 例えば、サーバーのログを監視しておいて、レイテンシがnミリ秒以上なレスポンスが1分以内に50回あったらアラートという処理がSQLで書ける。これまではDBにInsertする前のデータストリームの状態では、アプリケーションで使っているプログラミング言語、もしくはCQL(Continuous Query Language)で処理を書く必要があった。

PipelineDBを使えば、SQLで書けるね。これまでバッチ処理をしていたSQLをそのままリアルタイム処理にできるよってのがメリットかな。

ソースコード

Github

pipelinedb/pipelinedb · GitHub