Event-driven systems have typically been built around either relational databases or real-time messaging systems, or a combination of both.
While these technologies have their advantages, neither is particularly well suited for managing and analyzing events in rapidly changing environments:
Relational database servers can process large amounts of stored data and can analyze the information with relative ease but are not designed to operate in real-time environments, and do not provide an effective way to monitor rapidly changing data.
Messaging systems permit data to be monitored in real time but are not generally capable of complex computations, correlations, pattern matching or references to historical data.
For these reasons, custom applications must often be combined with these technologies to create a viable solution. The use of custom applications to compensate for the limitations of these technologies creates new complications:
Custom applications become increasingly complex very quickly as an organization's need for progressively more sophisticated analysis grows.
Custom applications are also costly to modify, and they do not scale well as organizational needs change.