ETL vs ELT
Compare ETL and ELT by transformation location, data exposure, target-platform capability, latency, cost, lineage, recovery, and operating ownership - then design the hybrid pipeline the workload actually needs.
Compare ETL and ELT by transformation location, data exposure, target-platform capability, latency, cost, lineage, recovery, and operating ownership - then design the hybrid pipeline the workload actually needs.
Compare ETL and ELT by transformation location, data exposure, target-platform capability, latency, cost, lineage, recovery, and operating ownership - then design the hybrid pipeline the workload actually needs.
By Rusaka Research · Published 2026-07-27 · Updated 2026-10-04 · 6172 words
ETL and ELT describe the order in which a data pipeline extracts data from source systems, transforms it, and loads it into an analytical destination. In extract-transform-load, transformation happens before data reaches the final analytical store. In extract-load-transform, source-shaped data is loaded first and transformed using compute in or closely coupled to the destination. The distinction is useful, but it is not a complete architecture and it is rarely a binary technology decision.
A real platform may validate file structure at ingestion, tokenize personal identifiers before landing, copy an immutable source-aligned record into controlled storage, and then build tested business models inside a warehouse or lakehouse. That is a hybrid: some transformations are required before durable landing, while most analytical logic runs after loading. Teams should decide placement transformation by transformation rather than attach a single label to the whole estate.
The decision begins with the workload. Identify the consumers, decisions, freshness target, acceptable data loss, recovery objective, source constraints, data classes, residency obligations, volumes, change pattern, transformation complexity, replay need, and operating team. Then compare approaches using representative data and an end-to-end cost model. A platform feature list or benchmark from another workload is not enough.
ETL can be appropriate when sensitive or prohibited fields must not enter the target, the destination cannot perform the required transformation efficiently, source-specific processing is substantial, or a curated interface must protect a constrained target. ELT can be appropriate when the analytical platform provides scalable compute, teams need a recoverable source-aligned layer, transformations benefit from SQL and shared warehouse semantics, and multiple downstream models need to evolve without repeated extraction.
Neither approach guarantees quality, governance, security, speed, or lower cost. Those properties come from explicit contracts, access boundaries, idempotent processing, tests, lineage, observability, resource controls, incident procedures, and accountable ownership. Loading raw data first can improve replay and flexibility, but it can also expand exposure and storage. Transforming first can minimise what lands, but it can also hide source history and make recovery dependent on upstream systems.
Use this comparison to produce a workload-specific architecture decision record. Preserve the canonical definitions, but evaluate the pipeline as a system: extraction, change capture, transport, staging, quarantine, transformation, orchestration, serving, metadata, security, quality, cost, recovery, and retirement. Review the decision when sources, consumers, regulation, platform capability, volume, latency, or economics materially change.
Teams often choose ETL or ELT as a proxy for choosing a vendor. The discussion becomes modern versus legacy, even though both patterns can be implemented well or poorly on current platforms. That framing obscures the decisions that matter: where untrusted and sensitive data may exist, which engine performs each transformation, how failures are isolated, how history is replayed, who owns the models, and what the workload costs at expected and peak demand.
Definitions also become imprecise. A pipeline may be called ELT because SQL models run in a warehouse, while identifiers are tokenized in transit and files are normalized before loading. Another may be called ETL even though it lands immutable extracts in object storage before a separate engine transforms them. Treat the terms as descriptions of transformation placement, not as claims about the quality or age of the architecture.
Security and privacy errors are particularly consequential. A team may assume that a raw zone can accept everything because access is restricted, without verifying purpose, minimisation, locality, retention, deletion, encryption, secrets, or vendor terms. Conversely, pre-load transformation can create temporary copies, logs, and dead-letter records that are less controlled than the target. Every material data state and movement needs an owner and control.
Reliability is often underspecified. Pipelines may append duplicates on retry, read a moving latest partition, partially publish outputs, miss late-arriving records, or overwrite history without a reproducible version. Downstream dashboards can remain technically available while silently serving stale or incomplete data. The architecture decision must cover idempotency, atomic publication, watermarks, backfills, schema evolution, reconciliation, and consumer-facing freshness.
Cost comparisons frequently count only a service price. ETL may use external compute, data movement, staging, and specialist operations. ELT may increase warehouse scans, storage, concurrency pressure, and duplicated transformations. Both create engineering, testing, observability, metadata, security, incident, and change costs. Compare total cost per useful, quality-assured data product under realistic load rather than cost per gigabyte in isolation.
A decision-grade comparison replaces slogans with evidence. It documents non-negotiable controls, runs a representative prototype, measures performance and cost, exercises failure and replay, and records why each transformation runs where it does. That produces an architecture that can be operated and revised rather than a diagram that only explains the happy path.
Transformation placement affects both delivery speed and risk. It determines when invalid or sensitive data is rejected, where business logic executes, which teams can inspect source history, how much compute is shared with analytical queries, and whether a failed model can be rebuilt without asking operational systems to resend data. These consequences persist long after the initial migration.
The right pattern also depends on the consumer contract. A regulatory report, customer-facing balance, operational alert, exploratory notebook, and machine-learning feature set can share sources while requiring different freshness, correctness, traceability, and change controls. One platform may therefore use ETL for prohibited-field removal, ELT for warehouse modelling, and streaming transformation for low-latency events.
Microsoft documents the defining difference as the location of transformation and advises selecting based on target capability, specialised processing, raw-data retention, and compliance needs. Apache Airflow guidance emphasises transaction-like, repeatable tasks and stable partitions. OpenLineage models jobs, runs, datasets, and facets so transformations and outputs can be traced. dbt documentation provides concrete controls for freshness, assertions, incremental processing, and schema change. Together, these sources support a workload-and-controls decision rather than a universal winner.
For a prospective buyer, the comparison should lead to an implementable next step: establish a data strategy, define governance, assess the warehouse or lakehouse, prototype the pipeline, document quality and lineage, and request scoped engineering support when the organisation needs it. The conversion path is credible only when the page makes limitations, evidence, and operating obligations visible.
ETL transforms extracted data before it is loaded into the final analytical destination. ELT loads source-shaped data into the target environment and uses that environment to perform subsequent transformations. Staging, object storage, change-data-capture logs, and pre-load security controls can blur the boundary. Record each durable data state, execution engine, and publication step instead of forcing the entire pipeline into one label.
Place a transformation where its data is lawfully allowed, its engine is capable, its failure can be isolated, its result can be reproduced, and its cost can be controlled. Tokenisation, malware scanning, decompression, schema validation, format conversion, deduplication, joins, aggregations, business rules, and semantic modelling do not all need the same location. The decision unit is the transformation and its contract.
Define which fields and records may enter each zone before pipeline design. Classify personal, confidential, regulated, licensed, operational, and public data; record purpose, locality, retention, access, deletion, masking, and audit requirements; and specify rejected or quarantined content. A raw layer is still a governed production system, not a permission to retain every source field indefinitely.
A source contract describes ownership, schema, keys, update and deletion semantics, event time, delivery expectations, quality rules, and change notice. A consumer contract describes dataset meaning, grain, freshness, quality, availability, access, lineage, and change policy. ETL and ELT both fail when upstream meaning changes silently or downstream users infer semantics that the producer never guaranteed.
Pre-load validation can enforce a target schema before data is accepted, while source-aligned landing can preserve data for later interpretation. This is a spectrum rather than a simple synonym for ETL or ELT. Even flexible landing needs envelope, identity, partition, and security rules; even curated loading may retain source snapshots. Select the enforcement point according to consequence and recovery needs.
A retry should not create a different logical result merely because the task ran twice. Use stable run identifiers, partitions or offsets, deterministic inputs, merge or overwrite semantics appropriate to the key, atomic publication, and a recorded high-water mark. Preserve enough source history and code versioning to backfill or rebuild outputs when logic changes, while respecting retention and deletion duties.
Test structural validity, uniqueness, referential integrity, allowed values, timeliness, volume, distribution, business invariants, and cross-system totals at the relevant stages. Quarantine bad input without silently publishing partial truth. Reconcile records and material amounts between source, landing, transformed, and serving layers. Tests need owners, thresholds, severity, evidence, and an action when they fail.
Record datasets, jobs, runs, code or query versions, inputs, outputs, schemas, quality results, timestamps, and owners. OpenLineage provides an extensible model for job, run, and dataset metadata; similar evidence can be captured through other standards and catalogues. Useful lineage supports impact analysis, incident investigation, access review, deletion, audit, and reproduction - not merely a decorative graph.
Define the time from source change to trustworthy consumption and distinguish ingestion latency, transformation time, queue delay, test time, and publication time. Batch ETL or ELT may be unsuitable for genuine low-latency decisions, which can require streaming or change-driven processing. Protect ingestion, transformation, and user queries from resource contention through isolation, priorities, quotas, or separate compute.
Model source reads, network transfer, staging, storage copies, transformation compute, warehouse scans, concurrency, orchestration, metadata, observability, development, operations, support, and recovery. Include full refreshes, late-data windows, peak loads, failed runs, retained history, and growth. A cheaper transformation query can still be part of a more expensive operating system.
Apply least privilege to connectors, service identities, orchestration, storage, transformation environments, metadata, and consumers. Encrypt and authenticate movement, isolate environments, manage secrets, filter logs, monitor exports, and test restoration. Limit direct access to source-aligned data and publish curated interfaces for most consumers. Access to a warehouse does not automatically justify access to every landed field.
Assign owners for sources, ingestion, platform, transformations, data products, quality, security, privacy, cost, incidents, and consumer communication. Version pipeline code, contracts, schemas, rules, reference data, and infrastructure. Define which changes require compatibility review, backfill, dual run, downstream notice, or approval. Revisit the pattern when the workload or control environment materially changes.
Name the consumers, decisions, datasets, grain, history, freshness, availability, quality, recovery, access, and change expectations. Document the current pipeline and its incidents, manual work, delays, costs, and trust gaps. State whether the decision covers one workload, a reusable pattern, or a platform standard. Record constraints such as source load windows, target capacity, locality, licensed data, security zones, and required technologies without treating preferences as facts.
Required output: workload charter, current-state flow, source and consumer list, service-level objectives, constraints, baseline measures, owner, exclusions, and decision deadline.
Trace fields and records from source through extraction buffers, queues, temporary files, logs, quarantine, landing, transformed models, caches, exports, and backups. For each state, record purpose, owner, system, region, sensitivity, rights, retention, deletion, encryption, identity, access, and audit evidence. Decide which transformations must occur before a field crosses a boundary and which can safely occur after loading. Include metadata and error payloads because they can contain the same sensitive values as the main dataset.
Required output: field-level inventory, classification, lineage draft, landing policy, prohibited-field rules, retention and deletion controls, identity map, and privacy/security review record.
Measure record and byte volumes, arrival pattern, file sizes, API limits, extraction windows, event time, late and corrected data, keys, duplicates, deletes, schema drift, nulls, distributions, and seasonal peaks. Map full and incremental extraction options, including change data capture. Profile target queries, concurrency, transformations, backfill frequency, and growth. Use representative samples and preserve the scripts and dates so the profile can be reproduced.
Required output: source profile, change-semantics record, volume and growth model, quality baseline, extraction constraints, consumer demand profile, and representative benchmark dataset.
Draw at least the viable candidates with engines, durable stores, trust boundaries, identities, orchestration, zones, quality gates, metadata, lineage, serving interfaces, and failure paths. For each material transformation, explain its placement. Include how the design handles prohibited data, source outage, target contention, partial loads, retries, late records, deletes, schema changes, full refresh, rollback, and platform exit. Reject candidates that cannot meet a non-negotiable requirement before scoring convenience.
Required output: candidate architectures, transformation-placement register, data-flow diagrams, trust boundaries, failure analysis, recovery design, dependency inventory, and explicit rejected options.
Implement the same bounded outcome through the credible candidates or through the uncertain portions of a hybrid. Use production-like volume, skew, schema variation, sensitive-field controls, late data, corrections, deletes, and failure injection. Measure source impact, end-to-end latency, transformation duration, target contention, quality, reproducibility, developer effort, operator effort, storage, transfer, and compute. Do not tune one candidate extensively while leaving another at defaults without recording the asymmetry.
Required output: versioned prototype, benchmark protocol, raw results, quality evidence, failure and replay results, cost observations, operator notes, limitations, and reproducible run instructions.
Score candidates against weighted requirements and document the evidence behind each score. Select ETL, ELT, or a hybrid at the workload level, then state the placement rule for each transformation class. Define source contracts, landing rules, model contracts, quality thresholds, freshness objectives, access tiers, retention, lineage, compatibility policy, and consumer communication. Record uncertainty and conditions that would reverse the decision.
Required output: architecture decision record, evidence matrix, chosen pattern, transformation rules, source and consumer contracts, semantic ownership, cost envelope, exceptions, reversal triggers, and approvals.
Build idempotent tasks, stable partitions or offsets, atomic publication, checkpoints, retries with bounds, quarantine, dead-letter handling, schema controls, data tests, reconciliation, lineage, freshness monitoring, resource quotas, and runbooks. Separate development, test, and production identities and data. Test least privilege, secret rotation, logging filters, backup, restore, backfill, deletion propagation, rollback, and failure alerts. Make stale or incomplete outputs visible to consumers rather than silently serving them as current.
Required output: production pipeline, test suite, access policy, observability dashboard, lineage events, reconciliation report, cost controls, runbooks, recovery evidence, incident route, and consumer status semantics.
Run the new and previous paths in parallel where consequence justifies it, reconcile outputs, and release consumers in controlled groups. Monitor freshness, completeness, accuracy, failed records, duplicates, schema changes, run duration, queue delay, query contention, cost, access anomalies, incidents, and downstream complaints. Review changes to sources, target engines, laws, contracts, consumers, volume, latency, and economics. Retire obsolete paths, identities, copies, schedules, and documentation after evidence shows the transition is complete.
Required output: rollout and rollback plan, parallel-run reconciliation, acceptance decision, service ownership, dashboards, review cadence, change register, retirement checklist, and dated renewal decision.
A hypothetical subscription business needs daily revenue, product-usage, and support metrics. Billing data arrives through an API, product events arrive as append-only files, and support records contain message text and personal identifiers. Finance requires reconciled daily totals by 08:00, product teams need source-aligned event history for evolving funnels, and most analysts should not access customer identifiers or support text.
A pure load-everything-first design fails the landing policy because unrestricted support text and direct identifiers are not permitted in the analytical environment. A pure transform-everything-first design would require the integration service to own changing product and finance semantics, repeat source extraction for new models, and make historical rebuilds dependent on upstream retention. The team therefore chooses a hybrid rather than declaring one universal winner.
At ingestion, the support connector removes message bodies that are outside the approved analytical purpose, validates required fields, tokenizes customer identifiers, and quarantines malformed records. Billing and product feeds receive envelope, schema, malware, and integrity checks. Approved source-aligned records then land in restricted, encrypted storage with retention and deletion rules. This is pre-load control for sensitive and invalid data, followed by a recoverable landing layer.
Inside the analytical platform, versioned SQL models join tokenized customer keys, apply finance classifications, deduplicate late product events, construct daily facts, and publish role-specific marts. Source freshness, uniqueness, referential integrity, allowed-value, volume, and revenue-reconciliation tests block publication on material failure. Jobs record inputs, outputs, run identifiers, code versions, and quality evidence. Analysts query curated marts; only a small operations role can inspect restricted landing data.
The pilot uses two representative months including billing corrections, late events, a schema change, an API retry, and a target-compute constraint. Acceptance requires the 08:00 finance objective, agreed reconciliation tolerance, repeatable reruns without duplicates, verified deletion propagation, bounded warehouse cost, and successful restoration. This is an illustrative architecture, not a Rusaka client result; each organisation must replace its assumptions, classifications, thresholds, and costs with current evidence.
Do not impose ETL or ELT as an organisation-wide identity. Establish reusable guardrails, then place each transformation according to data permission, engine capability, failure isolation, reproducibility, latency, cost, and ownership. Record justified exceptions so hybrid designs remain understandable.
A recoverable source-aligned layer should still enforce purpose, classification, access, locality, retention, deletion, and exclusion. Remove or tokenize prohibited fields before they cross the boundary, and apply the same policy to logs, quarantine, backups, and metadata.
Use stable inputs and run identity, deterministic transformations where possible, merge or partition overwrite semantics, and atomic publication. Test retries after partial failure. A rerun should converge on the intended state rather than append duplicates or mix versions.
Protect restricted landing zones and publish documented, tested interfaces for consumers. This preserves replay while reducing broad access to unstable or sensitive fields. Name the owner and service expectations of each published data product.
Schema checks cannot detect every business error. Add reconciliation, invariants, distribution checks, referential logic, and domain-specific assertions. Review thresholds against false alarms and missed failures, and route every material failure to an accountable response.
Measure source arrival, pipeline delay, last successful publication, missing partitions, quarantined records, and downstream availability. Display stale state to consumers. A dashboard that refreshed successfully can still be wrong if its upstream source did not arrive.
Link outputs to pipeline code, query, configuration, reference data, schema, test, and infrastructure versions. Store decision records and benchmark inputs. Rebuilding history without knowing which logic created the original result undermines audit and incident response.
Specify event time, processing time, correction windows, delete semantics, and backfill rules. Incremental speed is useful only when records that arrive late or change later are reconciled correctly. Test downstream effects of restatement.
Use workload management, quotas, schedules, priorities, warehouses, or separate compute to prevent transformations from starving user queries and vice versa. Benchmark peak contention and recovery, not only an isolated successful run.
Attribute storage, scans, compute, transfer, orchestration, tests, lineage, development, support, incidents, and backfills. Set budgets and anomaly alerts. Optimise after correctness and control are established, using measurements from the actual workload.
A recovery plan is incomplete until the team can rebuild a defined period, reconcile it, restore service, and explain the consumer impact within the objective. Verify that source retention, landing history, keys, code, and capacity are sufficient.
Define compatibility, deprecation, notice, parallel-run, and rollback rules. Use lineage to find affected consumers, but confirm critical dependencies directly. Do not silently repurpose a field or metric even when the physical schema remains valid.
Restrict connectors, service accounts, orchestration consoles, logs, staging, and export features. Rotate credentials, review access, monitor unusual reads and egress, and remove obsolete identities. Pipeline infrastructure often has broader data access than analysts.
Review after material source, volume, target, security, regulatory, contract, consumer, or cost changes. A pattern that was justified for a constrained warehouse may not remain justified after a platform migration, and a permissive landing policy may no longer be acceptable.
Transformation location does not prove scalability, quality, governance, or maintainability. Compare the workload, controls, and operating evidence instead of using the label as a maturity score.
Pre-load processing can leak through temporary files, logs, extracts, error queues, and over-privileged engines. Trace every data state and identity rather than assuming the order of letters creates security.
Raw does not mean unrestricted. Unnecessary personal, confidential, licensed, or dangerous content increases exposure and deletion burden. Apply purpose, minimisation, classification, and retention before and after landing.
If only a curated output is retained, new logic and incident investigation may require a fresh extraction that the source cannot reproduce. Decide explicitly which source-aligned history is necessary and lawful to retain.
Small clean samples hide skew, network limits, large files, small-file overhead, late arrivals, contention, and failure recovery. Use representative shape, scale, change, and edge cases, then state limitations.
ELT compute may compete with dashboards, notebooks, and other pipelines. Test concurrent peak workloads and apply isolation; do not extrapolate from a quiet development environment.
A failed task that simply reruns inserts can duplicate facts. Define stable identity, partitions, merge semantics, and atomic publication, then test interruption at each boundary.
A green transformation built from yesterday's missing source is still stale. Track source arrival and consumer-ready publication against explicit objectives, with state visible downstream.
Correct columns can contain wrong totals, units, mappings, or populations. Add business invariants, reconciliation, distribution checks, and consumer acceptance for consequential products.
Late updates, erasure requests, source deletes, and restatements can diverge across layers. Specify propagation, history, legal retention, rebuild, and consumer communication before production.
Transfer, storage, scans, duplicated models, orchestration, metadata, tests, people, incidents, and recovery can outweigh the headline engine price. Model total cost under base, peak, failure, and growth scenarios.
Broad access bypasses semantic, quality, privacy, and stability controls. Publish curated interfaces and grant restricted landing access only for defined roles and time-bounded purposes.
A pipeline can become inseparable from proprietary orchestration, SQL, metadata, or storage behaviour. Record dependencies, export paths, rebuild requirements, and retirement steps before lock-in becomes an emergency.
After launch, someone must own freshness, quality, schemas, access, cost, incidents, consumers, and renewal. A delivery team that disbands is not an operating model.
List every material transformation: decrypt, validate, quarantine, tokenize, filter, standardize, deduplicate, join, aggregate, classify, calculate, and publish. For each, record its input, output, engine, trust boundary, owner, evidence, retry behaviour, cost driver, and reason for placement. This exposes a real hybrid without losing the useful ETL and ELT distinction.
Review the register with security, privacy, data, platform, domain, and operations owners. A transformation may be technically efficient in the warehouse but prohibited after landing; another may be allowed before load but difficult to reproduce there. Preserve those trade-offs in the decision record.
Interrupt extraction, transformation, and publication separately. Introduce duplicates, missing partitions, schema changes, late records, target contention, expired credentials, and malformed input. Observe whether the system retries safely, isolates the error, preserves evidence, alerts the right owner, and prevents partial data from appearing complete.
Then perform a backfill and restoration with the same controls used in production. Record elapsed time, capacity, cost, reconciliation, and downstream impact. A fast happy-path benchmark cannot prove the pipeline will meet its recovery objective during an incident.
Track the latest relevant source event, latest received partition or offset, latest quality-approved transformation, and latest published product. A successful job can still use stale input; a fresh landing can still have a failed model. Preserve these states separately and calculate the consumer-facing freshness against the agreed objective.
Expose stale, partial, or quarantined status through catalogue metadata, dashboards, APIs, or reports as appropriate. Define whether consumers should keep the previous valid version, see an explicit unavailable state, or switch to a fallback. Silent staleness turns an operational incident into a decision-quality incident.
Incremental processing needs a stable key or partition rule, a source change signal, a late-arrival window, update and delete behaviour, schema policy, and a full-refresh plan. Test the same record arriving twice, arriving late, changing after publication, and being deleted. Verify the result in every downstream layer.
When transformation logic changes, decide whether history must be rebuilt and whether old and new definitions may coexist. Version semantic changes and communicate them. Efficient daily runs do not compensate for a historical dataset whose rows were produced by incompatible logic without traceability.
During migration, map which consumers still read the old output, run both paths where risk warrants it, reconcile key totals and edge cases, and obtain named acceptance. Retain rollback only for the defined period; an indefinite dual system doubles attack surface, cost, and ambiguity.
After acceptance, stop obsolete schedules, revoke identities, remove secrets, archive required evidence, delete copies according to policy, update lineage and catalogues, close monitors, and notify consumers. Confirm that the source is no longer being extracted by a forgotten job. Retirement is part of the architecture decision, not housekeeping.
ETL transforms before the final analytical load; ELT loads source-shaped data and transforms using the target environment. That definition is the starting point, not the decision. Select placement by workload, data boundary, target capability, latency, recovery, lineage, total cost, and operating ownership.
Most organisations should expect a governed hybrid. Validate and protect data before it crosses a boundary, preserve an authorised source-aligned layer when replay is valuable, and build tested consumer models in the environment best suited to them. Make every state, transformation, identity, quality gate, and failure path explicit.
Prove the architecture with representative data and adverse conditions. Then operate it with contracts, idempotency, freshness, reconciliation, lineage, least privilege, resource control, recovery, change management, and a dated renewal decision. The correct pattern is the one whose evidence and controls remain fit for the actual workload.
The main difference is where transformation occurs relative to the final analytical load. ETL transforms extracted data before loading it into the destination. ELT loads source-shaped data into the target environment first and performs subsequent transformations there. Both can use staging and pre-load controls, so document the actual data states and engines.
Neither is universally better. ETL can suit pre-load minimisation, specialised engines, or constrained targets. ELT can suit scalable analytical platforms, replayable source-aligned data, and warehouse-native modelling. Many workloads need a hybrid. Decide against explicit security, quality, latency, recovery, cost, and ownership requirements.
Choose ETL for a transformation when data must be filtered, tokenized, validated, aggregated, or converted before entering the target; when a specialised external engine is required; when target compute is constrained; or when a curated interface is the permitted landing contract. Verify that temporary and error paths receive equivalent controls.
Choose ELT when approved source-aligned data can land safely, the destination offers suitable scalable compute, transformations benefit from shared SQL and governance, multiple models need the source history, and replay or schema evolution is important. Protect the landing layer and control warehouse contention and cost.
Yes. A common hybrid removes prohibited fields and validates envelopes before landing, preserves authorised source-aligned records in a restricted zone, and then transforms business models inside a warehouse or lakehouse. Hybrid design should state which transformation occurs where and why.
No. A source-aligned layer can still require authentication, integrity checks, malware scanning, schema envelopes, classification, tokenisation, access controls, retention, deletion, and quarantine. Data that is unnecessary or not permitted for the analytical purpose should not be loaded merely because storage is available.
Not automatically. ETL can reduce what reaches a target, but its engines, extracts, logs, temporary files, and error queues also create exposure. ELT can centralise controls but may retain more sensitive source data. Security depends on complete data-flow analysis, minimisation, identities, access, encryption, monitoring, retention, deletion, and incident readiness.
Both can enforce strong quality. The design question is where each gate runs and whether bad data is blocked, quarantined, or published with visible status. Combine schema, key, referential, freshness, volume, distribution, business-invariant, and reconciliation tests. Assign owners and responses to failures.
Compare total cost for the same quality-assured outcome: extraction, transfer, staging, storage, transformation compute, warehouse scans, concurrency, orchestration, metadata, tests, engineering, operations, incidents, backfills, and recovery. Model normal, peak, growth, failure, and full-refresh cases using representative measurements.
An idempotent task can be retried with the same logical input without creating a different intended result, such as duplicate rows. It usually requires stable run or partition identity, deterministic inputs, suitable merge or overwrite semantics, checkpoints, and atomic publication. Test interruption and retry rather than relying on design intent.
Define event time and processing time, retain a bounded correction window, use stable keys, reprocess affected partitions or merge changed records, and reconcile the result. The approach must also handle deletes and restatements. Communicate when historical consumer outputs change.
It can preserve authorised source meaning for replay, new models, audit, and incident investigation. It is not an unrestricted dumping ground. Define its owner, contract, classification, access, retention, deletion, schema, quality status, and relationship to curated consumer products.
Measure source impact, end-to-end freshness, transformation duration, target contention, quality, repeatability, late-data handling, schema change, failure isolation, replay, recovery, security controls, storage, transfer, compute, developer effort, and operator effort using representative data and load.
Streaming is a processing and delivery mode, not simply a replacement label. It may transform events before or after durable landing and often coexists with batch reconciliation. Use it when the consumer truly needs low latency, then design checkpoints, ordering, duplication, late events, state, recovery, and cost.
Capture stable dataset, job, and run identities plus inputs, outputs, schemas, code or query versions, timestamps, owners, and quality results. OpenLineage provides one extensible standard. Validate that lineage answers impact, incident, access, deletion, and reproduction questions rather than only rendering a graph.
Review on a scheduled architecture cadence and sooner after material changes to sources, data classification, regulation, contracts, target capability, volume, latency, consumers, incidents, or economics. Record the conditions that would trigger a redesign when the original decision is approved.
Submit an email to download the ETL vs ELT implementation workbook