What is event sourcing?
Event sourcing is a pattern of recording each change to an aggregate into an append-only stream. To reconstruct an aggregate’s final state, we must read events sequentially and apply them to the aggregate. This contrasts with the direct updates made by a create, read, update, and delete (CRUD) system. In that system, the changed state of the record is stored in a database that overwrites the prior version of the same aggregate.
If we increase the price of a product, the following two tables show how that change might be recorded:
Figure 5.1 – A CRUD table (Products) and an event store table (Events)
When the price change has been saved to the Products table, only the price needs to change, leaving the rest of the row as is. We see in Figure 5.1 that this is the case; however, we have lost both the previous price and the intent of the change.
The new price, as well as pertinent and valuable metadata, such as the purpose...