Discovering InfluxDB

Michael Hausenblas
> S C A L E
Published in
2 min readSep 8, 2014

--

A powerful time series database for a small-sized to medium-sized number of data points.

At NoSQL Matters Dublin 2014, my colleague Richard and I gave a tutorial on handling time series data with OpenTSDB. Also at this conference was Sebastian who talked about InfluxDB. And I have to admit I was intrigued by InfluxDB:

  • It is written in Go without any dependencies; just install it — for example along with Grafana as dashboard — and start ingesting data.
  • InfluxDB offers a number of client libs from JavaScript over Python to Scala as well as integration points, such as a fluentd plugin.
  • In the cluster mode, InfluxDB uses Raft for synchronisation purposes — seems like all the kool kids are doing this these days; yes I’m looking at you etcd.
  • Most importantly, InfluxDB has a very powerful query language, allowing you to aggregate data points, merge & join time series as well as conditionally splitting one time series into many, called to fan out. Last but not least, continuos queries allow you to inspect series in real-time.
InfluxDB admin interface showing how to execute a query and built-in rendering of time series.

To give you an idea how powerful the InfluxDB query language is, let’s have a look at a concrete example:

select mean(value), percentile(90, value) as percentile_90
from /^stats.*/
group by time(10m)
into 10m.:series_name

With the above query you calculate the mean and 90% percentile of all time series starting with stats (first two lines), down-sample them (through group by) and finally fan them out into a respective number of time series (such as, say, 10m.stats_a, 10m.stats_b, etc.).

I wonder what it takes to port InfluxDB’s query language to OpenTSDB. I think it would be a very useful thing to do.

--

--

Michael Hausenblas
> S C A L E

open-source observability @ AWS | opinions -: own | 塞翁失马