We are considering different alternatives for handling some business rules for our educational platform and I am not sure Oracle CEP would be a viable option (I have read a few things on the internet about it), let me elaborate:
We have users being trained on different devices/clients (Mobile, Websites, Offline training), all these clients are sending data to our LRS system (TinCan API). We have about 20 million new events every month (we call them Statements, according to TinCan API terminology).
We are looking for a solution where we could:
- Handle up to 2.000 events per second (peak usage);
- Be able to restore from disasters (is replaying all events the ONLY option? It would take ages to reply the last, say, 2 years of events);
- The Derives we want to get come from different Detections, examples:
- Has this particular user achieved a set of pre-defined goals (ordering does not matter )? --> So issue him BADGE A;
- Has this particular user finished training 1 in the last 180 days and training 2 in the last 30 (now)? --> So issue him BADGE B;
- Does that user already have BADGE A and BADGE B and have finished training 1? --> So issue him BADGE C;
- Analyze only events which are now facts, in other words, events which are already in the DB, or that we can ensure will go to the DB, otherwise we can have fake BADGES;
- Allow the business user (the one responsible for the educational platform) to create (with little to no IT assistance) new rules and publish them into production easily. Because we add new training every week and so, we need this to be reflect in the CEP platform. Also, we could change the rules for issuing BADGES for 2015, for example.
The architecture from 1 mile high is something like this:
Where should we “plug” Oracle CEP? Of course, the more decoupled, the better.
Any help would be really appreciated.