concept

Changelog Stream

A stream whose records are keyed updates, so replaying it from the beginning reconstructs a table — the same information in the other of its two forms.

A table is the current state of a set of keys. A changelog stream is the ordered sequence of updates that produced it. Either can be derived from the other: fold the stream and you get the table; observe the table's mutations and you get the stream.

Practically, this means one artifact can serve both a subscriber wanting to react to each change and a consumer wanting the current picture — and it removes the common but wrong instinct to maintain a stream and a separate synchronised table.

Two operational consequences follow. Compaction becomes meaningful: since only the latest value per key is needed to reconstruct the table, older values for the same key can be discarded, bounding retention by key cardinality rather than by time. And tombstones — a record with a key and a null value — are how deletion is expressed, which every consumer must handle explicitly. A consumer that ignores nulls will hold rows the source deleted, indefinitely, and nothing will report an error.