Skip to content

CDC Guarantees

This page defines the public CDC contract. Use it together with CDC Overview, CDC Sources, and CDC Destinations.

Two CDC outcomes

ContractWhat you getWhen it applies
Exactly-once final stateReplays, retries, and restarts converge on the correct final row state in the destinationSource and destination both support final-state reconciliation
CDC-encodedMutation events land with CDC metadata so downstream consumers can reconcile themDestination can land CDC faithfully but cannot maintain final-state reconciliation itself

Core terms

TermMeaning
Business keyThe columns that uniquely identify a logical row for reconciliation
Event identityThe token that says two source events are the same event
Order tokenThe token used to decide which mutation is newer
TombstoneA delete record stored alongside the table so older inserts cannot resurrect deleted rows

What exactly-once final state means

  • A committed change batch can be replayed safely.
  • An older mutation cannot overwrite a newer row because order tokens are compared during apply.
  • A replayed or out-of-order insert cannot resurrect a deleted row if the tombstone is newer.
  • Restart resumes from committed ownership of source events, not from an advisory hint alone.
  • business_key_columns is required because reconciliation is defined per logical row, not per file or batch.

What it does not mean

  • It does not mean the pipeline never retries internally.
  • It does not mean every destination supports final-state reconciliation.
  • It does not choose business keys for you.
  • It does not guarantee correctness if source retention expires before the runner resumes.

Ordering model

For final-state reconciliation to work, the source must provide order tokens that are meaningfully comparable:

  • globally across the source, or
  • consistently within each business key

If a destination cannot use that ordering model, Skippr falls back to CDC-encoded instead of claiming a stronger guarantee than it can enforce.

Where to go next