Data Ingestion

Getting data out of systems you often do not control. Batch extracts, incremental windows, streaming producers, and the failure recovery that decides whether a missed hour is recoverable or gone.

Data Ingestion

Moving data out of systems you do not control and into storage you do — and the difference between what arrived and what happened.

Q · What has to be true for the records that land in my storage to be exactly the records that occurred in the source — no fewer, and no more?
Ingestion Sources

Databases, APIs, logs, files, event streams, SaaS systems and object storage — seven extraction models, seven failure behaviours, and seven different meanings of "everything since last time".

Q · For this particular source, what can I actually ask it, what will it refuse to tell me, and how would I know if a record never arrived?
Batch Ingestion

Every hour, select what is new, write files, load the warehouse. The simplest thing that works — and the specific ways it stops working.

Q · When is a scheduled extract the right answer, and what exactly does a batch boundary do to the data that sits on either side of it?
Incremental Extraction

Asking a source for "everything since last time" — and the specific, silent, permanent ways `WHERE updated_at > :last_run` gets that wrong.

Q · My extract selects rows changed since the last run and every run succeeds. Which rows is it structurally incapable of returning, and how would I ever find out?
Streaming Ingestion

Event happens, producer publishes, broker durably holds, consumer reads, storage lands it. Continuous rather than windowed — and continuously running.

Q · What does moving ingestion from a schedule to a continuous consumer actually change about what can be lost, duplicated, reordered or delayed?
Batch vs Streaming Ingestion

Not old versus new. Two designs with different freshness shapes, different failure surfaces, different recovery stories and very different operational burdens.

Q · Which of these two should this particular source use, and what is the criterion that decides it rather than the preference that usually does?
Ingestion Failure & Recovery

What to do when an extract fails, a connector stalls or a consumer falls behind — and how to tell, quickly, whether the data is late or gone.

Q · Ingestion has been broken for some hours. Which of the missing data is recoverable, from what, and what will re-running it break that currently works?
The Raw Landing Zone

Land what arrived, exactly as it arrived, including the fields you do not use. Never clean in place. Partition by arrival so a re-run is bounded.

Q · When a transformation turns out to have been wrong for six months, what do I re-run it against — and does that thing still exist unmodified?