Would like to analyze a stream of events, sharing certain characteristics (s.a. a common source), and within a given time-window, ultimately to correlate those multiple events and draw some inference from same, and finally launch some action.
My limited knowledge of Complex-Event-Processing (CEP) tells me that, it is the ideal candidate for such things. However in my research so far I found people compare that with Rule-Engines, and Bayesian Classifier, and sometimes using a combination of those.
Wanted to know if there are --
some best-practices (ideally supported by performance data, and description of nature/type of events) to be followed, especially so in Erlang ?
does Erlang have a CEP framework of it's own ?
any Bayesian Classifier library available in Erlang ?
Esper from Java world seems to be quite close to what I'd like to do, but I'd prefer to keep my environment Erlang-only (or Erlang and C/C++ only) if possible.
Pointers, advice, guidance -- all welcome.
thanks,
IC
This may be a nonsolution for you, but anyway:
One of Erlangs strengths to play is its ability to act as glue between different systems. You let the Erlang VM sit in the middle and control a number of subsystems running in other processes. The robustness comes from the ability to restart those systems should they crash.
For a classification problem, it would seem to a certain extent that the classification could happen separately from the Erlang subsystem. In other words, you use the erlang:open_port/2
call to open a port to the other program and set up communication with it. The point is that your program will know if the port crashes and can act accordingly to the problem.
My limited knowledge of Erlang libraries and tools out there has no CEP-tools on the radar. Are they hard to write yourself?
This appears to be under active development:
https://github.com/vascokk/rivus_cep
We have some few new libs for Erlang on cep.
See below:
https://github.com/danmacklin/erlang_cep
https://github.com/darach/eep-erl