Transaction Log Stream
Change events derived from a database's write-ahead log — faithful to the table's mutations and to its internal model rather than to the business's.
Reading the transaction log yields every committed row change in order, which is an excellent replication mechanism and a poor event contract.
The distinction matters and is routinely elided. A domain event says
OrderCancelled and carries what the business means by that. A change event says
orders row 4711 status column changed from 3 to 7, which is a fact about a
table. Consumers of the second must reconstruct intent from column diffs, which
couples every one of them to the producer's internal schema — a private
implementation detail now depended on by systems the database team has never met.
The consequence is that a routine refactor becomes a breaking change for consumers nobody knew existed, and the database team discovers this after the deployment.
CDC is the right tool for replication into an analytical store, and for the strangler pattern where a legacy database has no other way to emit events. Where it is used as the integration mechanism between services, the mitigation is a translation layer owned by the producing team that turns change events into domain events with a published contract — so the internal schema stays internal.