sonots:io

Norikra vs. InfluxDB

Today, I give a comparison between Norikra and InfluxDB in terms of query features.

Introduction – What is Norikra, and What is InfluxDB

Norikra is a Schema-less Stream Processor based on Esper, which is a kind of CEP (Complex Event Processing) engine. With Norikra, we can use highly-functional SQL-like query for processing time series streaming data.

InfluxDB is a distributed time series database, which has a SQL-like query language designed for working with time series and analytics. It has a feature called “Continuous Query” which applies queries charged in advance, and stores the resulted data into a Series (which is like a “table” of RDBMS) progressively.

It looks both can do similar things.

So, I compared Norikra and InfluxDB in terms of query features. I felt that it would be nice to use InfluxDB if it has sufficent query features because it can also be used for data persistence.

TL; DR

Norikra won

Feature Catalog

I just write catalog tables here.

SQL Fuctions

Function Norikra InfluxDB NOTE
COUNT YES YES
MIN YES YES
MAX YES YES
AVG YES YES
MEAN YES YES
MODE NO YES
MEDIAN NO YES
DISTINCT YES YES
PERCENTILE YES YES Norikra implemented as a UDF
HISTOGRAM NO YES
DERIVATIVE NO YES
SUM YES YES
STDDEV NO YES
FIRST YES YES
LAST YES YES
MAXBY YES NO
MINBY YES NO

NOTE: Norikra supports UDF, so users can create functions by themselves if they want

SQL Features

Feature Norikra InfluxDB NOTE
Time batch window YES YES Of course, both support the feature to process periodically
Externally timed batch window YES NO A feature to process data based on the time field of messages
Sub query YES NO
JOIN YES YES
MERGE NO YES A feature of InfluxDB to merge results from multiple tables. One can use regular expressions to specify tables
Query group YES NO Make a group for queries
Program codes YES NO One can write Java codes on Norikra queries
Nested JSON YES NO One can specify fields like parrent.child when JSON is nested
GROUP BY YES YES
HAVING YES NO
ORDER BY YES NO InfluxDB has order, but it is only for the time field
UDF YES NO

Conclusion

Norikra won overwhelmingly. That said, because InfluxDB is a storage, but Norikra is an on-memory engine, the value of InfluxDB shall not be impaired in any way.