6 comments

[ 3.5 ms ] story [ 27.4 ms ] thread
This looks like an interesting, simpler alternative to stream-processing solutions like Spark or Storm, which require quite a lot of upfront investment in terms of infrastructure and learning.

I'd be interested to know how this works behind the scenes. Does it recalculate answers every time you run a query, or does it update the query answers as the events flow in?

Also, the examples all seem to be using a time window, like this one from the documentation:

     SELECT COUNT(DISTINCT cookie.id) AS uu,
            COUNT(*) AS imps
     FROM impressions.win:time_batch(1 hours)
     WHERE cookie.valid
So does this only answer questions of the type "how many unique users did we have in the last hour"? Or can you also calculate a total count: "how many users have visited this page in total?".
Norikra's queries are once registered, and then, outputs answers automatically (until it is removed).

The query above puts "how many unique users in an hour" per an hour. Of course, we can write queries like: * how many unique users in the last hour per every input event * how many unique users in the last 1000 inputs * and many more way to calculate metrics

This uses Esper, right?

Esper is awesome all by itself.

Yes, Norikra uses Esper. That is great software.

Norikra provides:

1. schema-less processing: Esper requires schema for all events and queries, but Norikra query does not requires any schema

2. nested hash/array access by extended SQL(EPL)

3. standalone server software: applications in any languages can use stream processing over RPC

4. lightening deployment: only 3 minutes by jruby+gem install

And UDF over rubygems, connecting query output into other query inputs, and much more.