The Ingestion Pattern Matrix

Estimated read: 3 min

Four lectures of individual decisions – batch vs. streaming, push vs. pull, JDBC vs. Auto Loader, build vs. buy – collapse into one artifact that actually gets used during a migration: a matrix you fill in once per source table in the workload inventory, and refer back to for every ingestion build ticket after that.

The matrix

Source characteristic Recommended pattern Why
Small dimension table, refreshed nightly, low volume JDBC bulk pull, full overwrite Simplicity wins when the table is small enough that a full re-read costs nothing
Large fact table, append-only, files exported by upstream process Auto Loader Incremental, exactly-once, no sustained load on a source system that isn’t even queried directly
Large fact table, direct JDBC access required, no file export available JDBC bulk pull with partitionColumn, incremental watermark Accept the source-system load as a known, scheduled cost when no alternative exists
High-volume OLTP table, sub-minute latency needed, row-level updates/deletes Partner CDC tool (Fivetran/Qlik/Arcion) or Lakeflow Connect managed database connector Log-based capture is the only pattern that delivers this latency without hammering the source
SaaS application data (Salesforce, NetSuite, etc.) Lakeflow Connect SaaS connector or Fivetran Purpose-built connectors handle API rate limits and pagination that a hand-rolled pull would reimplement badly
Semi-structured or schema-drifting files (JSON logs, IoT payloads) Auto Loader with schema inference/evolution Schema-on-read in bronze absorbs drift; enforcement moves to silver

Applying it to the workload inventory

Every table in the inventory built during the autopsy phase already carries the metadata this matrix needs as columns: approximate size, change frequency, whether the source system supports direct query access, and downstream latency requirements. Walking the inventory once with this matrix produces an ingestion assignment per table before a single pipeline gets built – which avoids the common migration anti-pattern of defaulting every table to the same pattern (usually “JDBC bulk, because that’s what the first table used”) regardless of whether it fits.

# One row of a migration inventory, annotated with the matrix's recommendation
{
    "source_table": "ORDERS",
    "size_gb": 9800,
    "change_frequency": "continuous",
    "direct_query_allowed": False,
    "latency_requirement_minutes": 5,
    "recommended_pattern": "partner_cdc_tool",
}

Treat the matrix as a starting recommendation, not a rule that overrides judgment – a table that looks like a clear Auto Loader candidate on size and volume alone might still need a CDC tool if the business requirement is “reflect deletes within one minute,” something Auto Loader’s append-oriented file-watching model doesn’t handle on its own.

With every table in the inventory assigned an ingestion pattern, the section’s quiz checks that the underlying decision criteria – not just the tool names – have actually landed.


| ← Previous: Partner Tools: Fivetran, Qlik, Arcion for CDC | Next: Check Your Knowledge → | |:—|—:|


Back to top

Independent, self-authored Databricks companion notes.

This site uses Just the Docs, a documentation theme for Jekyll.