Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Event Sourcing

Event sourcing is a great way to atomically update state and publish events (usually through a [message-queue]). The traditional way to persist an entity is to save its current state. Event sourcing uses a radically different, event-centric approach to persistence. A business object is persisted by storing a sequence of state changing events.

Whenever an object’s state changes, a new event is appended to the sequence of events. Since that is one operation it is inherently atomic. A entity’s current state is reconstructed by replaying (projections) its events.

Often used together with [cqrs]

Benefits of Event Sourcing

  • 100% accurate audit logging - Auditing functionality is often added as an afterthought, resulting in an inherent risk of incompleteness. With event sourcing, each state change corresponds to one or more events, providing 100% accurate audit logging.

  • Easy temporal queries - Because event sourcing maintains the complete history of each business object, implementing temporal queries and reconstructing the historical state of an entity is straightforward.