Events are Mostly Harmless
In summary:
- Anything that happens, happens.
- Anything that, in happening, causes something else to happen, causes something else to happen.
- Anything that, in happening, causes itself to happen again, happens again.
- It doesn’t necessarily do it in chronological order, though.
One of the features which are used to sell event processing systems are their ability to keep track of which event caused something to happen.
This might sound simple. But it’s actually something which is more or less impossible to do if you are not treating events as events. Events could just be data which is called events to make things sound more impressive. Data processing is old, but event processing is new and cool.
Events have an id. Data does not.

For example, If I write two SQL queries which both return the value 12, if I then store these both values, then I would later on have no way of knowing which value came from which query. Data is simply anonymous. Events on the other hand have distinct and unique identities. Two stored events can always be identified.
This is one of the fundamental differences between data processing and event processing. Continuous and real-time processing of data streams can be easily confused with event processing. Although a great number of problems require data-driven algorithms which are executed continuously in real-time - That’s not event processing.
This is one of the first and fundamental issue that one should sort out before starting to build event processing systems. Is it really event processing you need or is it data driven processing?
One of the best ways to try to understand your requirements is to ask yourself if your basic processing entity has an id or not. If it has an id, you might need and event processing solution. If not, go for data processing.
For example. A stream of price information for iron ore could contain values like 65.0, 73.5, 80.0, 70.2, 63.0 and so on. If you need to react immediately when the price goes below 44.5, then you would probably be doing data-driven processing. Not event-processing. Each price update is totally anonymous.
If on the other hand you are monitoring the iron ore market to see when three suppliers can offer iron ore for less than 55.0/whatever iron ore is sold as, then you might have an event stream with events like PriceOffer(55.0, SupplierX, TermZ, ValidUntil(2222-01-01)). This would be an unique offer with an id. This is event processing.
Why is this important? Currently the event processing market consists of tools which can do data processing (but sold as event processing tools), a mix of event processing and data processing and pure event processing solutions. Pick the wrong one and you get the same type of problems as you would when you try to do hard core data analytics with an OLTP database. Simply the wrong tool in a shiny box.
This is also important for the event processing community. If customers try to use event processing for the wrong kind of problems they will just be disappointed and event processing can easily be regarded as nothing more than hype. There is great value in true event processing, the vendors know it. But we need to make sure that the customers get some real business value of our systems and not just another toy.

