Data movement is where migrations get expensive and risky. Choose the simplest pattern that meets your continuity needs, then standardize it so every migration wave is repeatable.

Most teams get into trouble here by over-engineering. They jump to CDC or streaming because it sounds modern, then spend months operating pipelines that nobody asked for. Start simple. Add complexity only when the business actually needs it.

The three patterns (and when they win)

1) Batch (extract + load on a schedule)

Batch is boring. That’s why it works.

Best when:

Typical risks:

2) CDC (Change Data Capture)

CDC captures inserts/updates/deletes incrementally (often from database logs).

Best when:

Typical risks: