Ingestion is the first engineering decision: how to move data from operational systems into your analytical platform without harming sources, losing change semantics, or breaking when schemas evolve.
Extract the entire table on every run. Simple but expensive at scale. Common for initial loads, reference/lookup tables, or when no reliable change tracking exists.
Extract only new or changed rows since the last extraction, typically using a watermark column (updated_at, created_at, or a sequence ID). Efficient but may miss deletes.
WHERE updated_at > last_watermarkCDC captures every insert, update, and delete as it happens in the source database, typically by reading the database transaction log (Write-Ahead Log in PostgreSQL, Binary Log in MySQL). This gives you a complete, ordered stream of all changes.
CDC is the most accurate way to replicate data because it captures deletes (which incremental loads miss), preserves the order of changes, and has minimal impact on the source database since it reads the log rather than running queries.
Data arrives as a continuous, unbounded stream of events: clickstream data, IoT sensors, application logs, transaction events. There is no "batch" boundary; events flow continuously and must be processed with awareness of time, ordering, and state.
| Pattern | Captures deletes? | Latency | Source impact | Complexity |
|---|---|---|---|---|
| Full load | Yes (implicit) | Hours | High (full scan) | Low |
| Incremental | No | Minutes to hours | Moderate | Low |
| CDC | Yes | Seconds to minutes | Low (reads log) | Moderate |
| Streaming | N/A (events) | Seconds | Low | High |
Schema drift occurs when the source system changes its schema (a column is renamed, a new column is added, a data type changes, or a column is dropped) without coordination with the data team. This is one of the most common causes of pipeline failures in production.
A data contract is a formal agreement between a data producer and consumer that specifies the schema, semantics, quality expectations, SLAs, ownership, and change management process. It is like an API contract for data.
Select a tool to see its strengths, limitations, and best use case.
Type: Open-source, self-hosted or cloud. Strengths: 300+ pre-built connectors, UI-based configuration, supports CDC for databases, community-driven. Best for: Teams that want managed connectors without vendor lock-in. Limitation: Some connectors are community-maintained with varying quality. Not designed for real-time streaming.
1. Which ingestion pattern captures deletes with minimal impact on the source database?
2. What is the main limitation of incremental loading with a watermark?
3. A source team renames a column without telling the data team. What problem did this cause?
4. What is the purpose of a data contract?
5. When is streaming ingestion the right choice over batch?