たごもりすメモ

コードとかその他の話とか。

Norikra v0.1.0 released!

RubyKaigiから5ヶ月くらい経ってますが、ついにというか、Norikra v0.1.0 をリリースしました。

http://norikra.github.io/
https://rubygems.org/gems/norikra
https://github.com/norikra/norikra

知らない人向けのソフトウェアの詳しい紹介はまた後日に別途やるとして……っていうかこれからすごい量のドキュメント書かないといけなくて萎えてるんだけどそれは置いておいて、これまでの情報に加えてのことを列挙するとこんな感じです。

  • daemonizeオプションやJVMのメモリ指定、マルチスレッド指定などの動作環境、性能面あたりのオプションを大量に追加
  • ターゲットやクエリなどの情報の保存機能
  • JOIN やサブクエリをフルサポート *1
  • 多段ネストした Hash や Array を含む入力イベントにも対応 *2
  • WebUI を追加してクエリの参照や追加・削除などが可能に

あとはなんだっけ。まだいっぱい機能加えました。機能的には手元のプロダクション環境の要求を満たすくらいのところまでなんとかやってきたので、区切りということで v0.1.0 にしました。

特に多段ネストした入力イベントはだいぶがんばってて、例えば以下のような入力イベントがあると

{ "name": "tagomoris",
  "age": 34,
  "jobs": [
    { "name": "LINE Corp", "workers": 800 },
    { "name": "NHN Japan", "workers": 1000 },
    { "name": "livedoor", "workers': 200}
  ]
}

これをこんなふうにクエリできます。すごい!

SELECT jobs.$0.name, count(*) AS cnt
FROM events.win:time_batch(1 hours)
WHERE age > 30
  AND (jobs.$0.workers > 500 AND  jobs.$1.workers > 200)
GROUP BY jobs.$0.name

ということで、Norikra、機能的にだいぶイケておると自負しております。どんな入力がいつ来ても、あるいはいつ入力イベントのフォーマットが変わったり増えたり減ったりしても対応できるグレートなソフトウェアになってるはずなので、いちいちRDBMSに入れて定期的にクエリ実行するのめんどくせーなーとか、いわんやHadoopをや、みたいな人は是非! 是非! 試してみてください!!!!!!!!!!!!!!!!

*1:Esperが対応している限りはそのままNorikraでもサポート

*2:これはEsperではできない