Data ingestion

On this page 7

Data ingestion is the process of moving data from its source systems into a target platform, such as a data lake, data warehouse or lakehouse, where it can be stored, processed and analyzed. In data engineering, ingestion is the first stage of every data pipeline: it extracts records from databases, applications, files, APIs and event streams and lands them reliably in a place that the rest of the platform controls.

Ingestion deals with connectivity, format, volume, timing and reliability, while deeper reshaping of data usually belongs to later transformation stages. A well-designed ingestion layer makes data arrive complete, on time and traceable, so that every downstream report or model can trust its inputs.

How data ingestion works

Every ingestion process follows the same basic sequence: connect, extract, serialize, transfer and write new or changed data to the target, while recording what was loaded. The details differ by source type, but the reliability concerns are constant.

StageWhat happensKey concern
ConnectionAuthenticate to a database, API, file store or brokerCredentials, network access, rate limits
ExtractionRead full data or only changesLoad on the source system
SerializationEncode records as Avro, Parquet, JSON or CSVSchema and type preservation
TransferMove data over the network in batches or streamsThroughput and retries
LandingWrite to raw storage or staging tablesAtomic writes and partitioning
BookkeepingStore offsets, watermarks and load metadataRestartability and lineage
Stages of an ingestion process

Ingested data is usually landed as close to its original form as possible, for example in a raw or bronze layer of a medallion architecture. Keeping the raw copy allows later transformations to be rerun when business logic changes, without extracting from the source again.

Batch, micro-batch and streaming ingestion

The main design choice in data ingestion is timing: how soon after an event the data must be available. The choice sets cost, complexity and the freshness that consumers can expect.

ModeTypical latencyStrengthsWeaknesses
BatchHours to a daySimple, cheap, easy to rerunStale data between runs
Micro-batchAbout one to fifteen minutesNear-real-time with batch toolingMany small files to manage
StreamingMilliseconds to secondsFresh data for live use casesComplex state and operations
Ingestion modes compared

Extraction strategy matters as much as timing. A full load copies the entire source each time and is acceptable only for small tables. Incremental loads use a watermark, such as an updated timestamp or increasing identifier, to read only new or changed rows. Change data capture reads the database transaction log and captures inserts, updates and deletes with minimal load on the source, which makes it the preferred method for large operational databases.

Data ingestion is often used interchangeably with ETL or pipelines, but it covers a narrower part of the flow. Clear boundaries help teams assign responsibility and choose tools.

ConceptScopeRelation to ingestion
ETLExtract, transform, then loadIngestion plus transformation before loading
ELTExtract, load, then transform in the targetIngestion is the extract and load part
Data pipelineAny chain of data processing stepsIngestion is the entry step
Change data captureCapturing row changes from logsA technique for incremental ingestion
Reverse ETLSending warehouse data back to applicationsIngestion in the opposite direction
Data orchestrationScheduling and dependency managementTriggers and monitors ingestion jobs
Data ingestion and neighboring concepts

The modern preference for ELT has shifted transformation work out of the ingestion layer. Because cloud warehouses and lakehouses provide cheap storage and elastic compute, teams now ingest data with minimal changes and transform it later with SQL-based tools such as dbt. Ingestion still performs light technical steps, such as type mapping, adding load timestamps and masking sensitive fields that must never reach raw storage.

Designing reliable ingestion

Reliable ingestion is built around idempotency and observability. An idempotent load can be repeated after a failure without creating duplicates, for example by writing to a partition that is replaced as a whole or by merging on a primary key.

  • Track delivery guarantees: most systems provide at-least-once delivery, so deduplication must happen downstream.
  • Handle schema evolution explicitly, with a data contract or a schema registry that rejects incompatible changes.
  • Protect source systems by reading from replicas or logs instead of running heavy queries on primaries.
  • Record load metadata such as source, extraction time, row counts and file names for lineage.
  • Monitor freshness and volume, alerting when a load is late or row counts deviate sharply from normal.

The choice between managed connectors and custom code depends on the source. Common SaaS applications and databases are well served by prebuilt connectors, while proprietary systems and unusual APIs often need custom extraction with careful handling of pagination, rate limits and retries.

Common ingestion problems

Most ingestion incidents are silent rather than loud: the job succeeds, but the data is incomplete or wrong. Monitoring that checks the data itself catches these cases.

SymptomLikely causeRemedy
Duplicate rows after a retryNon-idempotent append loadsOverwrite partitions or merge on keys
Missing late recordsWatermark set too aggressivelyAdd a lookback window
Deleted rows still presentIncremental loads ignore deletesUse change data capture or soft-delete flags
Broken downstream jobsUnannounced source schema changeSchema checks and data contracts
Thousands of tiny filesVery frequent micro-batchesScheduled compaction
Typical ingestion failures

The short version

Data ingestion is how information gets from where it is created to where it is analyzed. Sales happen in a shop system, clicks happen on a website and payments happen in a bank system. To study them together, copies must be collected in one place.

Ingestion is like a delivery service for data. It picks up packages from many senders, on a schedule or continuously, and drops them at one warehouse with a note of what arrived and when. If a delivery fails, it tries again without delivering the same package twice.

Where it makes a difference

A mid-sized retailer wants daily sales dashboards that combine its PostgreSQL order database, an online advertising platform and CSV files from warehouse partners. At first an analyst exports files manually each morning, and reports are often a day late or missing a source.

The data team sets up change data capture from a PostgreSQL replica into the lakehouse, a managed connector that pulls advertising data every hour, and an automatic loader that picks up partner files from object storage. Each load writes source, row counts and extraction time to a metadata table, and alerts fire when a source is more than two hours late. Dashboards are now refreshed every hour without manual work, and the team can prove which data each report contains.