時系列データベース周辺を調査してみた
わりと最近時系列データベースという単語を聞くようになったが、告白すると寝耳に水状態でちょっとあせったので軽く調べてみた(きっかけはこの過去記事)。
時系列データベースとやらは国内だとサーバー監視・モニタリングの分野から広まり始めてる印象だが、元々はセンサーデータ、M2M、IoTといったキーワードと相性がいいものらしい。
(ところで IoT: Internet of Things って日本では直訳調で「モノのインターネット」と言われるが、これだと何のことだかわからん。この言い方じゃ普及しないと思うぞ…)
「時系列データベース」と書いたが、プロダクトによってはデータベースという定義ではなく「データストア」だったり、データプラットフォーム全体を指したり、SaaSだったりいろいろある。細かい定義はさておき、今回は「それっぽいもの」をまとめてを取り上げる。
参考スライドによると、時系列データベース or 類似プロダクトの使途として、以下のようなものが挙げられる。
- システムメトリックスの保存
- アクセスログの集計/解析
- RRDtoolの置き換え
- MySQLの時系列データ解析の代替
ただリンクの参考スライドはInfluxDBの紹介資料なので、広義にはさらなる用途が見込めると思われる。いわゆるフツーのログ解析だけではなく、金融、医療、その他様々なデバイスを使用する分野でも応用可能なはず。
後でwikiの説明も読んでおくとして….
http://en.wikipedia.org/wiki/Time_series_database
本題。それらしいプロダクトをピックアップして比較してみた。
License | Key words | Note |
|
---|---|---|---|
OpenTSDB | LGPLv2.1+ GPLv3+ | Distributed, Scalable, runs on Hadoop and HBase. Write with millisecond precision. | SBMサービスのStumbleUponで大量データをマネージするために開発された。 HBase/Hadoop上にデプロイ。 |
InfluxDB | MIT | Distributed scalable time series db. Horizontally scalable, On disk and in memory, Time-Centric Functions. | 外部コンポーネントに依存せず、単体で動作する。SQLライクなクエリを使用可能。実装言語はGo。 |
KairosDB | Apache License 2.0 | Fast distributed scalable time series db. | OpenTSDBのフォーク。Cassandra, HBase上にデプロイ。元はCassandra用だった。 |
SiteWhere | CPAL 1.0 | Open Source M2M Integration Platform. Manage device communication,event data. Big data ready with HBase & MongoDB. Apache Solr,Hazelcast integration(many more) | M2M, IoTにフォーカスしてるっぽい。 HBase, MongoDB上にデプロイ。 |
Druid | GPL version 2 | open source infrastructure for real-time exploratory analytics. Fault tolerant, distributed & scalable. Low latency data ingestion. | Yahoo!ではStormと組み合わせてデプロイ?アドホッククエリをサポート。 |
TempoIQ | - | Backent for sensor analytics. | センサーデータ解析に特化したクラウドプラットフォーム。 2014年7月以前はTempoDBという名前だった。 |
Geras | - | Scalable time-series database for IoT. | IoTにフォーカス。バックエンドにC & RabbitMQ。クラウドサービス?月額課金制。期限に制約のないフリーバージョンも利用可能(SLAなし)。 |
KDB+ | - | Fast time-series database for real-time and historical data. Run on clusters, grids, clouds, and other large-scale distributed architectures. | IoTにフォーカス、医療、金融辺りも視野に入れてる感じ。in-memory 分散RDBっぽい。商用製品だがフリーバージョンあり。 |
OpenTSDB, KairosDB, SiteWhereのように他のデータストアに依存するもの、InfluxDBのように単体で動作するもの、クラウドサービス、いろいろあり。KDB+はRDBとのことだが、もうリレーショナルだろうがNoSQLだろうがどうでもいい境地になってきた。
補足いくつか。
KinabaのフォークであるビジュアライゼーションツールGrafanaが、最近OpenTSDBに対応した。(GrafanaはこれまでGraphite, InfluxDBで利用可能だった)OpenTSDBがHadoop/HBase上にデプロイする前提であるということは、OpenTSDB経由でHadoopクラスタに格納したデータをGrafanaで可視化できることになる???
どこで読んだか忘れたが、OpenTSDBをHBaseに組み込むことで、行キーの扱いを上手いことやってくれるらしい。つまり、通常はタイムスタンプを普通に行キーにすると書き込みがスケールできないのでNGですが、OpenTSDBを使うとよしなにハッシュ値を付与してくれたり、するのかな。再度調べるか、自分で弄ってみないとなんとも。
KairosDBにおけるCassandraとHBaseの違いは以下。
KairosDB supports millisecond granularity if you are using Cassandra. The HBase data store only supports a granularity of seconds.
Garesの技術概要は以下参照。
Gares Overview
やばい、全部いじってみたい。あ、タダで使えるものはね。
軽く調べるどころか、それどころじゃなくなってきたので今日はもう寝る。