Event Driven Architecture (EDA) is a software architecture style. The wikipedia article on EDA [] states the following:
Event-driven architecture (EDA), is a software architecture pattern promoting the production, detection, consumption of, and reaction to events. An event can be defined as "a significant change in state". For example, when a consumer purchases a car, the car's state changes from "for sale" to "sold". A car dealer's system architecture may treat this state change as an event whose occurrence can be made known to other applications within the architecture. From a formal perspective, what is produced, published, propagated, detected or consumed is a (typically asynchronous) message called the event notification, and not the event itself, which is the state change that triggered the message emission. Events do not travel, they just occur. However, the term event is often used metonymically to denote the notification message itself, which may lead to some confusion. This is due to Event-Driven architectures often being designed atop message-driven architectures, where such communication pattern requires one of the inputs to be text-only, the message, to differentiate how each communication should be handled.
As at July 2019 this wikipedi article has 6 instances of the word "trigger" but none of them are in relation to a database trigger. There are 8 instances of the word "message" and the association with message-driven architectures is made explicit.
There are lots of examples of people praising EDA at the enterprise level. For example:
It's important to make the following distinction:
At the enterprise level event messaging emphasises applications or services publishing and subscribing over topics using some kind of messaging system.
An event message driven approach is great for GUI frameworks, I/O competion events, timers and so forth - i.e. for events related to transient state machines in a single running process. However, it's an anti-pattern at the enterprise level (in a distributed system) when used for events related to state changes of the databases.
It is better to manage business events in an events database, using the power of the RM, i.e. first order logic, in a fully fledged DBMS, rather than leaving it to some half baked messaging system, that raises more questions than answers (e.g. about atomic commitment, duplicates, idempotency, missing messages, late subscribers, etc).
A DBMS should provide facilities to trigger asynchronous, exactly once in order processing on state changes on views. These are called triggers and they make an event messaging system redundant.
Using messages to achieve logical independence and loose coupling between producer and consumer is cumbersome by comparison. If a DBMS doesn't allow applications to define triggers then application developers are forced to implement them manually. This is bad because it's not easy to make it robust. A typical approach is the following:
This is more complicated and less efficient than when the DBMS supports application defined triggers.
See the Sales,invoice,shipping example for a more detailed discussion of Udi Dahan's example.