ETL vs moderní ELT: dbt, Airbyte a Fivetran
Datové kanály jsou oběhovým systémem jakékoli datově řízené architektury. Bez průtoku spolehlivá, zdokumentovaná a testovaná data od zdroje po sklad, modely strojového učení vytvářet nesprávné předpovědi, obchodní zprávy ukazují nekonzistentní čísla a rozhodnutí strategie jsou založeny na nestabilních základech. Přesto ve většině italských společností datové kanály jsou stále spleť skriptů SQL naplánovaných pomocí cronu, aktualizovaných listů Excelu ručně a ETL procesy vybudované před desítkami let, na které se nikdo neodváží sáhnout.
Krajina se za posledních pět let radikálně změnila. Nástup cloud computingu má základní paradigma pohybu dat bylo převráceno: již nemá smysl data transformovat Před naložit je do skladu, jak se to dělalo u tradičního ETL, kdy cloud computing výkon je dostupný za zanedbatelné náklady a moderní sklad může fungovat složité transformace během několika sekund. Tak se zrodilo paradigma ELT (extrakce, zatížení, Transformace), který obrátí pořadí operací posunutím transformace dentro samotný sklad.
Trh s datovými kanály odráží tuto transformaci: segment ELT roste 26 % ročně, přičemž celkový trh nástrojů pro datové kanály se odhaduje na 12 miliard dolarů v roce 2024 a předpovídá se 48 miliard dolarů do roku 2030. Fivetran, přední ELT řízený herec, dosáhl 300 milionů USD v ARR s 50% meziročním růstem. Toto není výklenek: je to nový standard.
V tomto článku prozkoumáme tato dvě paradigmata do hloubky a analyzujeme nástroje, které dominují trhu (dbt, Airbyte, Fivetran), vybudujeme kompletní referenční architekturu a poskytneme praktická doporučení pro výběr správného stohu na základě vaší velikosti a týmové dovednosti.
Co se dozvíte v tomto článku
- Základní rozdíly mezi tradičním ETL a moderním ELT s klady/zápory a případy použití
- Jak dbt (Data Build Tool) funguje: SQL modely, testování, dokumentace, linie
- dbt Core vs dbt Cloud: který si vybrat a za jakou cenu
- Airbyte: Open-source konektory, architektura a nasazení pro self-hosting
- Fivetran: řízený model SaaS a nové ceny MAR (2025)
- Podrobné srovnání mezi třemi nástroji pro různé obchodní scénáře
- Referenční moderní architektura ELT: Airbyte/Fivetran + Warehouse + dbt + BI
- Osvědčené postupy pro testování, dokumentaci a orchestraci kanálu
Tradiční ETL: Jak to funguje a proč už to nestačí
Téměř třicet let,ETL (Extract, Transform, Load) bylo to paradigma dominantní pro pohyb podnikových dat. Proces je rozdělen do tří po sobě jdoucích fází:
- Výpis: Data jsou obvykle extrahována ze zdrojových systémů OLTP databáze (ERP, CRM, e-commerce), ploché soubory (CSV, XML) nebo externí API. Tato fáze čte data bez jejich úpravy.
- Transformace: Extrahovaná data jsou transformována do a mezilehlý systém, nazývaná pracovní oblast nebo ETL engine, oddělená od obou zdroj a cíl. Transformace zahrnují čištění, normalizaci, obohacování, agregace a dodržování skladových norem.
- Zatížení: Transformovaná data se načtou do datového skladu místa určení. Datová struktura je již finální, optimalizovaná pro analytické dotazy.
Tradiční ETL nástroje
| Nástroj | Prodejce | Orientační cena | Cíl |
|---|---|---|---|
| SSIS | Microsoft | Zahrnuto v SQL Server | MSP s ekosystémem Microsoft |
| Informatica PowerCenter | Informatika | 50 000 - 500 000 $/rok | Podnikové bankovnictví/pojišťovnictví |
| Oracle Data Integrator | Věštec | Baleno s Oracle DB | Ekosystém Oracle |
| Talend Open Studio | Qlik | Zdarma (jádro) / 1 170 $ měsíčně a více | SME, open source |
| Integrace dat Pentaho | Hitachi Vantara | Zdarma (CE) / Vlastní (EE) | SME, open source |
Tyto nástroje fungují. Byly (a v mnoha případech stále jsou) páteří systémů kritické faktory, které zpracovávají miliardy eur transakcí každý den. Ale mají limity strukturální, které cloudové paradigma stále více ukazuje.
Strukturální limity klasické ETL
proč tradiční ETL bojuje v moderním kontextu
- Drahé externí výpočty: Transformace probíhají na samostatném serveru (ETL server), který musí být dimenzován pro maximální zatížení. Pokud noční várka zpracovává 100 milionů řádků, server musí být dostatečně výkonný, aby to zvládl časové okno, i když zůstane téměř neaktivní 22 hodin denně.
- Tuhost a náklady na změnu: Přidejte pole do transformace SSIS vyžaduje, abyste upravili vizuální tok, otestovali jej ve stádiu, koordinovali vydání s kýmkoli, kdo spravuje sklad určení. Ve strukturovaných týmech to trvá týdny.
- Žádné nativní verzování: ETL toky nejsou testovatelným kódem a verzovatelný jako aplikační software. Vládnutí se stává obtížným: kdo se změnil tato proměna? Když? Proč?
- Komplexní ladění: Když transformace přinese neočekávané výsledky, sledování problému pomocí vizuálního ETL toku může trvat hodiny. Neexistuje žádný Standardní "datová řada" ukazující, odkud každý sloupec pochází.
- Plýtvání energií skladu: Investujete do Snowflake nebo BigQuery desítky tisíc eur ročně za jejich výpočetní výkon, ale pak to jde zpracovávat data na samostatném serveru. Paradigma ELT uznává, že samotný sklad a nejúčinnější transformační motor.
Moderní ELT: proč Cloud všechno změnil
L'ELT (Extract, Load, Transform) obrací pořadí posledních dvou fází: dat nejprve jsou vytěženy ze zdrojů a naloženy do skladu ve své surové formě a pouze následně transformovány s využitím výpočetního výkonu samotného skladu.
Tento posun paradigmatu umožnily tři konvergující faktory:
- Ekonomické cloudové úložiště: Amazon S3, Azure Blob Storage a Google Cloud Storage stojí 20-23 $ za TB za měsíc. Už nemá smysl šetřit se skladováním: lépe načíst vše a rozhodnout se, co dále transformovat.
- Výpočet elasticity: Snowflake, BigQuery, Databricks se automaticky škálují počítač. Složitý transformační dotaz je proveden během několika sekund pomocí pákového efektu shluky stovek uzlů, které platí pouze za skutečnou dobu provedení.
- SQL jako univerzální jazyk: Datoví analytici znají SQL mnohem lépe proprietárních ETL nástrojů. S ELT jsou transformace jednoduché SQL dotazy, které kdokoli v týmu může číst, upravovat a kontrolovat.
Porovnání ETL vs ELT: Rozhodovací tabulka
ETL vs ELT: Kompletní srovnání
| Velikost | Tradiční ETL | Moderní ELT |
|---|---|---|
| Kde se transformace odehrává | Dedikovaný ETL server (externí do skladu) | Uvnitř datového skladu (nativní SQL) |
| Kdy se transformovat | Před načtením | Po naložení do surové vrstvy |
| Podporovaný objem dat | Omezeno kapacitou ETL serveru | Měřítko se skladem (potenciálně neomezené) |
| Nestrukturovaná data | Obtížné nebo nemožné | Podporováno (nativní JSON, polostrukturované) |
| Jazyk | Proprietární GUI / Java / Python | Standardní SQL (+ Jinja v dbt) |
| Verzování | Obtížné, často chybí | Nativní Git (šablony jsou soubory .sql) |
| Testování | Manuální nebo omezené | Integrovaný testovací rámec (dbt test) |
| Datumová linie | Často nepřítomné nebo manuální | Automaticky (vizuální DAG v dbt) |
| Zabezpečení / dodržování předpisů | Citlivá data nikdy nejsou ve skladu přehledně | Nezpracovaná data ve skladu: je potřeba maskování a řízení |
| Transformační latence | Záleží na ETL serveru | Závisí na skladu (dávka nebo na vyžádání) |
| Křivka učení | Vysoká (proprietární GUI) | Nízká pro ty, kteří znají SQL |
| Ideální pro | Citlivá data, starší systémy, přísné dodržování | Cloud-first, SQL tým, vysoký objem dat |
Kdy zvolit ETL vs ELT
- Vyberte ETL, když: máte požadavky na shodu, které zakazují nahrávání nezpracovaná data v cloudu (např. PII bez anonymizace), práce s místními staršími systémy kde je sklad příliš daleko od zdroje nebo máte výpočetní transformace intenzivní, které netěží ze skladu SQL.
- Vyberte ELT, když: váš sklad a cloud (Snowflake, BigQuery, Databricks, Redshift), tým má solidní znalosti SQL, chcete verzovat transformace pomocí Git, pracujete s rostoucími objemy dat a chcete využít pružnosti cloudu.
- Hybridní přístup: Mnoho společností používá smíšený přístup: ETL pro anonymizace citlivých dat před načtením, ELT pro všechny transformace následné analýzy.
dbt: The Modern Stack Transformation Layer
dbt (nástroj pro vytváření dat) a nástroj, který definoval moderní paradigma ELT. Vytvořeno dbt Labs v roce 2016, dbt transformuje způsob, jakým datoví analytici zapisují transformace: místo řídkých, nestrukturovaných SQL procedur, dbt zavádí inspirovaný vývojový rámec až po softwarové inženýrství, s verzemi modelů, automatickými testy a generovanou dokumentací automaticky.
Základní a jednoduchý koncept: každý dbt šablonu a soubor .sql která obsahuje a SELECT. dbt se stará o vytvoření tabulky nebo pohledu ve skladu, správu závislostí mezi modely a vytvořit DAG (Directed Acyclic Graph) transformací.
Dbt Architecture: Jak to funguje
dbt nemá vlastní výpočetní prostředí: používá výpočetní prostředí cílového skladu. Funguje to jako a SQL kompilátor + orchestrátor: bere soubory .sql s Jinja makra, zkompiluje je do čistého SQL a spustí je ve skladu ve správném pořadí na deklarovaných závislostech. Výsledkem je sestavená řada tabulek a pohledů ve skladu reprodukovatelně.
-- models/staging/stg_orders.sql
-- Modello di staging: pulizia e standardizzazione degli ordini
-- dbt crea una view (o tabella) chiamata 'stg_orders' nel warehouse
WITH source AS (
-- Riferimento alla tabella sorgente raw (caricata da Airbyte/Fivetran)
SELECT * FROM {{ source('erp', 'raw_orders') }}
),
cleaned AS (
SELECT
order_id::BIGINT AS order_id,
customer_id::INT AS customer_id,
product_id::INT AS product_id,
quantity::INT AS quantity,
unit_price::DECIMAL(10, 2) AS unit_price,
COALESCE(discount, 0.0)::DECIMAL(5, 2) AS discount,
CAST(order_date AS TIMESTAMP) AS order_date,
LOWER(TRIM(status)) AS status,
-- Importo netto calcolato
quantity * unit_price * (1 - COALESCE(discount, 0))
AS net_amount,
-- Metadati di audit
_loaded_at AS ingested_at
FROM source
WHERE order_id IS NOT NULL
AND customer_id IS NOT NULL
AND quantity > 0
AND unit_price > 0
)
SELECT * FROM cleaned
-- models/marts/finance/fct_orders_monthly.sql
-- Modello fatto: aggregazione mensile per il team finance
-- Dipende da stg_orders e dim_customers (risoluzione automatica dipendenze)
{{ config(
materialized='table',
schema='finance',
tags=['finance', 'monthly']
) }}
WITH orders AS (
SELECT * FROM {{ ref('stg_orders') }}
),
customers AS (
SELECT * FROM {{ ref('dim_customers') }}
),
monthly_metrics AS (
SELECT
DATE_TRUNC('month', o.order_date) AS month,
c.region,
c.segment,
COUNT(DISTINCT o.order_id) AS total_orders,
COUNT(DISTINCT o.customer_id) AS unique_customers,
SUM(o.net_amount) AS gross_revenue,
AVG(o.net_amount) AS avg_order_value,
SUM(o.quantity) AS units_sold
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.customer_id
GROUP BY 1, 2, 3
)
SELECT
*,
gross_revenue / NULLIF(unique_customers, 0) AS revenue_per_customer
FROM monthly_metrics
ORDER BY month DESC, gross_revenue DESC
Testování v dbt: Zajištění kvality dat
Jednou z nejdůležitějších předností dbt je její nativní testovací systém. Testy v dbt
jsou deklarativní: jsou definovány v souboru YAML a spouštějí se automaticky po každém
spustit s příkazem dbt test.
# models/staging/schema.yml
# Definizione dei test per il modello stg_orders
version: 2
models:
- name: stg_orders
description: >
Ordini puliti e standardizzati dal sistema ERP sorgente.
Caricati ogni ora da Airbyte, trasformati da questo modello.
columns:
- name: order_id
description: "Identificativo univoco dell'ordine (PK)"
tests:
- unique # Nessun duplicato ammesso
- not_null # Ogni riga deve avere un order_id
- name: customer_id
description: "Riferimento alla dimensione clienti"
tests:
- not_null
- relationships: # Referential integrity check
to: ref('dim_customers')
field: customer_id
- name: status
description: "Stato dell'ordine"
tests:
- accepted_values:
values: ['pending', 'confirmed', 'shipped', 'delivered', 'cancelled']
- name: net_amount
description: "Importo netto dell'ordine (quantità * prezzo * (1 - sconto))"
tests:
- not_null
- dbt_utils.expression_is_true:
expression: "net_amount >= 0"
- name: order_date
description: "Data e ora dell'ordine"
tests:
- not_null
- dbt_utils.expression_is_true:
expression: "order_date <= CURRENT_TIMESTAMP"
- name: fct_orders_monthly
description: "Aggregazioni mensili per il reporting finance"
columns:
- name: month
tests:
- not_null
- name: gross_revenue
tests:
- not_null
- dbt_utils.expression_is_true:
expression: "gross_revenue >= 0"
sources:
- name: erp
description: "Dati grezzi caricati dall'ERP tramite Airbyte"
schema: raw_erp
tables:
- name: raw_orders
loaded_at_field: _loaded_at
freshness:
warn_after: {count: 12, period: hour}
error_after: {count: 24, period: hour}
dbt Core vs dbt Cloud
dbt existuje ve dvou variantách: jádro dbt (open-source, zdarma) e dbt Cloud (SaaS spravováno, placeno). Výběr závisí na vašich potřebách týmu z hlediska infrastruktury a pokročilé funkčnosti.
dbt Core vs dbt Cloud: Kompletní srovnání
| Funkčnost | dbt Core (otevřený zdroj) | Cloudový tým dbt | dbt Cloud Enterprise |
|---|---|---|---|
| Náklady | Uvolnit | 100 $/sedadlo/měsíc + 0,01 $ pro modely nad 15 000 | Vlastní (kontaktujte prodej) |
| Provedení práce | Manuální / externí orchestrátor (Airflow, Dagster) | Nativní plánovač, integrovaný CI/CD | Pokročilý plánovač + monitorování SLA |
| Web IDE | Ne (pouze místní editor) | dbt Cloud IDE (založené na prohlížeči) | dbt Cloud IDE |
| Dokumentace | Generováno lokálně (generovat dokumenty dbt) | Automaticky hostované | Hosted + pokročilý katalog dat |
| Vizuální linie | Místní | Hostované v cloudu, možnost sdílení | Hostováno v cloudu + linie mezi projekty |
| Týmová spolupráce | Přes Git (manuál) | Víceuživatelský pracovní postup založený na PR | RBAC, SSO, protokoly auditu |
| Sémantická vrstva | No | Zahrnuto (5 000 metrik měsíčně) | Zahrnuto (20 000 metrik/měsíc) |
| dbt Mesh | No | Omezený | Dokončeno (odkazy napříč projekty) |
| Shoda SOC 2 | N/A (samo spravované) | V ceně | V ceně + PrivateLink |
| Ideální pro | Technické týmy s omezeným rozpočtem již mají Airflow | Tým 2-20 lidí bez ETL infrastruktury | Enterprise, multi-tým, přísné dodržování |
Praktické doporučení: Italské malé a střední podniky s týmem 1-3 datových inženýrů by měly začít s dbt Core + Airflow nebo Dagster, který nabízí plnou flexibilitu bez nákladů. Pokud váš tým roste nebo se chcete vyhnout správě orchestrační infrastruktury, dbt Cloud to se stává pohodlným již se 2-3 vývojářskými místy.
Airbyte: The Open-Source Ingestion Layer
Pokud se dbt zabývá T (transformace) v ELT, Airbytes řídí a E (extrakce) a L (načítání). Společnost byla založena v roce 2020 a dnes i dál Financování 180 milionů dolarů, Airbyte a nejrozšířenější platforma pro integraci dat s otevřeným zdrojovým kódem trhu, s 600+ předpřipravených konektorů a Python SDK k sestavení vlastní konektory.
Hlavní předností Airbyte oproti konkurentům je kombinace open source (nulový vendor lock-in, modifikovatelný kód) s architekturou cloud-native, který podporuje Change Data Capture (CDC) pro replikaci databáze v reálném čase.
Architektura Airbyte
Airbyte se skládá z několika komponent, které fungují v tandemu. Každá synchronizace přichází provádí a Dělníci který vytvoří instanci dvou samostatných kontejnerů Docker: the Zdrojový konektor (který čte ze zdroje) a Cíl Konektor (který zapíše do cíle). Mezi těmito dvěma kanály proudí data já Protokol Airbyte, standardní formát JSON.
# Esempio: Configurazione connettore Airbyte via API (YAML/JSON)
# Creazione di una connessione PostgreSQL -> Snowflake
# 1. Configurazione Source (PostgreSQL)
POST /api/v1/sources/create
{
"sourceDefinitionId": "decd338e-5647-4c0b-adf4-da0e75f5a750",
"connectionConfiguration": {
"host": "db.produzione.miazienda.it",
"port": 5432,
"database": "erp_production",
"username": "airbyte_reader",
"password": "{{ secrets.POSTGRES_PASSWORD }}",
"schemas": ["public", "orders"],
"replication_method": {
"method": "CDC",
"replication_slot": "airbyte_slot",
"publication": "airbyte_publication"
}
},
"name": "ERP Production PostgreSQL",
"workspaceId": "workspace-uuid"
}
# 2. Configurazione Destination (Snowflake)
POST /api/v1/destinations/create
{
"destinationDefinitionId": "424892c4-daac-4491-b35d-c6688ba547ba",
"connectionConfiguration": {
"host": "abc12345.eu-west-1.snowflakecomputing.com",
"role": "AIRBYTE_ROLE",
"warehouse": "AIRBYTE_WH",
"database": "RAW_DATA",
"schema": "erp",
"username": "airbyte_user",
"credentials": {
"auth_type": "key_pair",
"private_key": "{{ secrets.SNOWFLAKE_PRIVATE_KEY }}"
}
},
"name": "Snowflake Production",
"workspaceId": "workspace-uuid"
}
# 3. Creazione della connessione
POST /api/v1/connections/create
{
"sourceId": "source-uuid",
"destinationId": "destination-uuid",
"syncCatalog": {
"streams": [
{
"stream": {"name": "orders", "namespace": "public"},
"config": {
"syncMode": "incremental",
"destinationSyncMode": "append_dedup",
"cursorField": ["updated_at"],
"primaryKey": [["order_id"]]
}
},
{
"stream": {"name": "customers", "namespace": "public"},
"config": {
"syncMode": "full_refresh",
"destinationSyncMode": "overwrite"
}
}
]
},
"scheduleType": "cron",
"scheduleData": {"cron": {"cronExpression": "0 */1 * * *", "cronTimeZone": "Europe/Rome"}},
"namespaceDefinition": "customformat",
"namespaceFormat": "raw_{{SOURCE_NAMESPACE}}"
}
Airbyte: Možnosti nasazení
Airbyte nabízí tři režimy nasazení, z nichž každý má jiné vlastnosti náklady, ovládání a údržba:
Airbyte: Open Source vs Cloud vs Enterprise
| čekám | Otevřený zdroj (vlastně hostovaný) | Airbyte Cloud | Airbyte Enterprise |
|---|---|---|---|
| Náklady | Zdarma (infrastruktura na vaše náklady) | Platba za použití (2,50–10 USD za kredit) | Vlastní (kontaktujte prodej) |
| Údržba | Zaplaceno týmem | Běží na Airbyte | Běží na Airbyte |
| Konektory | 600+ | 600+ | 600++ prémiových certifikovaných konektorů |
| CDC | Podporováno | Podporováno | Podporováno + pokročilé CDC |
| RBAC | Základní | V ceně | Pokročilé (SSO, protokoly auditu) |
| ALS | N/A | 99,9% dostupnost | 99,99% dostupnost |
| Ideální pro | Technické týmy, omezený rozpočet, citlivá data | MSP, které chtějí rychlost bez ops | Podnik s přísným dodržováním |
# Deploy Airbyte Open Source con Docker Compose
# Prerequisiti: Docker, Docker Compose, 8GB RAM, 20GB disk
# 1. Clona il repository
git clone --depth=1 https://github.com/airbytehq/airbyte.git
cd airbyte
# 2. Avvia Airbyte (prima esecuzione: ~15 minuti per download immagini)
./run-ab-platform.sh
# Airbyte e accessibile su http://localhost:8000
# Username: airbyte / Password: password (da cambiare in produzione!)
# 3. Per deployment in produzione su Kubernetes con Helm
helm repo add airbyte https://airbytehq.github.io/helm-charts
helm install airbyte airbyte/airbyte \
--namespace airbyte \
--create-namespace \
--set global.state.storage.type=MINIO \
--set global.storage.bucket.log=airbyte-logs \
--values custom-values.yaml
# 4. Configurazione variabili di ambiente per produzione (.env)
# DATABASE_URL=postgresql://airbyte:password@postgres:5432/airbyte
# SECRET_PERSISTENCE=GOOGLE_SECRET_MANAGER
# LOG_LEVEL=INFO
# TRACKING_STRATEGY=segment
Fivetran: Jednoduchost řízeného SaaS
Zatímco Airbyte se zaměřuje na flexibilitu a ovládání open source, Fivetran zvolil opačnou cestu: maximální jednoduchost, nulová údržba, konektory podnikové úrovně kompletně spravován prodejcem. Fivetran, založený v roce 2012, je dnes lídrem v tomto segmentu ELT hospodařila s ARR 300 milionů USD, více než 6 300 zákazníky a oceněním 5,6 miliardy USD.
Hodnotová nabídka Fivetranu je jasná: konektor Fivetranu k Salesforce, Shopify nebo jakýkoli jiný systém SaaS je udržován specializovaným týmem inženýrů Fivetran, kteří spravují každou změnu ve zdrojovém API, každou zásadní změnu, každou aktualizaci schéma. Zákazník nemusí nic dělat.
Nový model cen Fivetranu 2025
V březnu 2025 Fivetran výrazně aktualizoval svůj cenový model. Plány Starter a Private Deployment byly odstraněny a nahrazeny čtyřmi úrovněmi: Zdarma, Standard, Enterprise a Business Critical. Fakturační metrika zůstává MAR (měsíční aktivní řádky), ale výpočet se změnil: nyní každý připojení je účtováno samostatně, již není agregováno na účet.
Fivetran: Plány a ceny 2025
| Patro | ÚT v ceně | Další náklady | Klíčové vlastnosti |
|---|---|---|---|
| Uvolnit | 500 000 MAR/měsíc | N/A | Všechny standardní funkce, až 5 000 běhů modelu |
| Norma | Neomezené (platba za použití) | 5 $ základ/připojení + cena MAR | 600+ konektorů, CDC, integrace dbt, plánování |
| Podnik | Dohodnutelné | Vlastní (množstevní sleva) | SSO/SAML, RBAC, VPN, prioritní podpora, SLA |
| Obchodní kritické | Dohodnutelné | Zvyk | PrivateLink, soulad s HIPAA, vyhrazená podpora, 99,99% SLA |
Jak funguje výpočet MAR v Fivetranu
MAR (Monthly Active Row) počítá řádky odlišný synchronizováno za měsíc kalendář, sledovaný přes primární klíč. Řádek upravovaný 30krát za měsíc počítá se jako 1 MAR, ne jako 30. Výhoda: Náklady neexplodují s frekvencí synchronizace, ale se změnou počtu jedinečných záznamů.
Praktický příklad: Společnost s 50 000 aktivními objednávkami měsíčně a 500 000 produktů v katalogu (zřídka aktualizované) platí většinou za 50 000 objednávky, které mění stav každý měsíc, nikoli pro celý produktový katalog.
dbt vs Airbyte vs Fivetran: Který z nich byste si měli vybrat?
Je důležité pochopit, že dbt, Airbyte a Fivetran nejsou alternativními nástroji vzájemně se vylučující: řeší různé problémy v rámci jednoho zásobníku. dbt ano se zabývá transformacemi, Airbyte a Fivetran se zabývají požíváním. Otázka správně a: Airbyte vs Fivetran pro požití?
Airbyte vs Fivetran: Srovnání podle scénářů
| Velikost | Airbyte Open Source | Airbyte Cloud | Fivetran Standard |
|---|---|---|---|
| Základní náklady | 0 $ (bez infrastruktury) | Platba za použití | 5 $/připojení/měsíc + ÚT |
| Konektory | 600+ (udržováno v komunitě) | 600+ | 650+ (podniková úroveň) |
| Údržba konektoru | Komunitní / interní tým | Tým Airbyte | Fivetran tým (garantovaná SLA) |
| CDC | Podporováno (Debezium) | Podporováno | Podporováno (na základě protokolu) |
| Vlastní konektory | Python SDK (zdarma) | Python SDK | SDK pro vlastní konektor (placené) |
| Datum pobytu | Dokončeno (samohoštěno) | Specifické pro region | Specifické pro region |
| Čas nastavení | 1-4 hodiny (infrastruktura) | 30 minut | 15 minut |
| integrace dbt | Manuální / Průtok vzduchu | Rodák | Nativní (dbt Cloud) |
| Ideální pro | Technické týmy, vlastní zdroje, místní GDPR | Technicky zdatné MSP, variabilní rozpočet | SME/Enterprise se standardními zdroji SaaS |
Praktické pravidlo pro výběr
- Použijte Fivetran pokud jsou vaše zdroje standardní SaaS (Salesforce, HubSpot, Shopify, Stripe, Google Analytics, Facebook Ads) a tým to nechce řešit údržba konektoru. Získaná produktivita stojí za to.
- Použijte Airbyte Cloud pokud máte kombinaci standardních a vlastních zdrojů, nebo pokud začínáte a chcete mít pod kontrolou náklady pomocí platby za použití.
- Použijte Airbyte Open Source pokud máte požadavky GDPR/údaje o pobytu, které zabránit přenosu dat přes infrastruktury třetích stran, nebo pokud ano vysoce vlastní zdroje, které vyžadují interně psané konektory.
Moderní referenční architektura ELT
Kombinací všech komponentů se jedná o moderní architekturu ELT, kterou přijímají přední společnosti dnes. Každá vrstva zásobníku má specifický účel a referenční nástroje.
Moderní ELT Stack: Vrstva po vrstvě
| Vrstvy | Funkce | Hlavní nástroje |
|---|---|---|
| 1. Požití | Extrahujte a načtěte nezpracovaná data do skladu | Fivetran, Airbyte, Stitch, vlastní skripty |
| 2. Skladování (surové) | Neupravená nezpracovaná data (bronzová vrstva) | Sněhová vločka, BigQuery, Databricks, Redshift |
| 3. Transformace | SQL modely, testování, dokumentace, linie | dbt Core, dbt Cloud |
| 4. Servírování (zlato) | Tabulky optimalizované pro analytiku a ML | Snowflake, BigQuery, Databricks (sklad) |
| 5. Orchestr | Plánování, závislosti, sledovací kanál | Proudění vzduchu, Dagster, Prefect, dbt Cloud |
| 6. BI a reporting | Řídicí panely, ad hoc dotazy, samoobslužné analýzy | Looker, Metabase, Power BI, Tableau |
| 7. Kvalita dat | Monitorování, varování, detekce anomálií | testy dbt, Velká očekávání, Monte Carlo |
# Esempio: Pipeline ELT completa orchestrata con Dagster
# Dagster definisce i job come grafo di asset
from dagster import asset, AssetIn, define_asset_job, ScheduleDefinition
# Asset 1: Raw data (caricato da Fivetran/Airbyte - esterno a Dagster)
# Dagster può "osservare" le tabelle caricate da Fivetran come asset esterni
@asset(
group_name="raw",
description="Ordini grezzi caricati da Fivetran (ERP)"
)
def raw_orders():
# Fivetran scrive qui automaticamente ogni ora
# Questo asset "dichiara" la tabella per il lineage visuale
pass
# Asset 2: dbt staging (trasformazione con dbt)
@asset(
group_name="staging",
deps=["raw_orders"],
description="Ordini puliti e standardizzati (modello dbt stg_orders)"
)
def stg_orders(context):
# Esegue il modello dbt stg_orders
context.log.info("Running dbt model: stg_orders")
# In pratica: dbt_cloud_run_op o subprocess dbt run --select stg_orders
return {"rows_processed": 15000}
# Asset 3: dbt marts (modello gold pronto per il business)
@asset(
group_name="marts",
ins={"staging": AssetIn("stg_orders")},
description="Fatturato mensile per il reporting finance"
)
def fct_orders_monthly(context, staging):
context.log.info(f"Building monthly metrics from {staging['rows_processed']} rows")
# dbt run --select fct_orders_monthly
return {"mart_rows": 360} # 30 giorni * 12 segmenti regionali
# Scheduling: esegue ogni ora, aggiorna tutti gli asset
elt_pipeline_job = define_asset_job(
name="elt_pipeline",
selection=["stg_orders", "fct_orders_monthly"]
)
elt_schedule = ScheduleDefinition(
job=elt_pipeline_job,
cron_schedule="0 * * * *", # Ogni ora
execution_timezone="Europe/Rome"
)
Osvědčené postupy pro důvěryhodné datové kanály
Vybudování ELT potrubí, které funguje v ukázce a je jednoduché. Vybudujte potrubí, které měřítko, monitorovatelné a udržovatelné týmem v průběhu času vyžaduje disciplínu a aplikace zavedených inženýrských postupů.
1. Stratifikace a pojmenování
Přijměte jasnou a konzistentní strukturu adresářů dbt, která odráží architekturu odstupňovaný (medailon nebo ekvivalent):
# Struttura di progetto dbt raccomandata
dbt_project/
├── models/
│ ├── staging/ # Layer Silver: pulizia sorgenti
│ │ ├── erp/
│ │ │ ├── stg_orders.sql
│ │ │ ├── stg_customers.sql
│ │ │ └── schema.yml # Test + documentazione
│ │ ├── crm/
│ │ │ ├── stg_contacts.sql
│ │ │ └── schema.yml
│ │ └── ecommerce/
│ │ ├── stg_sessions.sql
│ │ └── schema.yml
│ ├── intermediate/ # Modelli intermedi (join complesse)
│ │ ├── int_customer_orders.sql
│ │ └── schema.yml
│ └── marts/ # Layer Gold: pronti per il business
│ ├── finance/
│ │ ├── fct_orders_monthly.sql
│ │ ├── fct_revenue_by_product.sql
│ │ └── schema.yml
│ ├── marketing/
│ │ ├── fct_campaign_performance.sql
│ │ └── schema.yml
│ └── operations/
│ ├── fct_fulfillment_kpis.sql
│ └── schema.yml
├── seeds/ # Dati statici (tabelle di lookup, mapping)
│ ├── country_codes.csv
│ └── product_categories.csv
├── snapshots/ # SCD Type 2 (Slowly Changing Dimensions)
│ └── snap_customers.sql
├── tests/ # Test custom SQL
│ └── assert_revenue_positive.sql
├── macros/ # Macro Jinja riutilizzabili
│ ├── generate_schema_name.sql
│ └── audit_columns.sql
└── dbt_project.yml # Configurazione globale
2. Testování jako smlouva o kvalitě
Testy DBT nejsou volitelné: jsou smlouvou, která zaručuje, že transformace vytvářet spolehlivá data. Každý model by měl mít alespoň tyto testy:
- unique + not_null na primárním klíči: Zaručuje integritu každého modelu.
- vztahy: Kontroluje referenční integritu mezi modely.
- akceptované_hodnoty: Zkontrolujte, zda kategorická pole obsahují pouze platné hodnoty.
- čerstvost u zdroje: Upozornit, pokud se data neaktualizují podle plánu.
- dbt_utils.expression_is_true: Pro obchodní omezení (např. příjmy >= 0).
3. Verze a CI/CD pro datové kanály
# .github/workflows/dbt-ci.yml
# CI/CD per validare i modelli dbt a ogni PR
name: dbt CI Pipeline
on:
pull_request:
branches: [main]
paths:
- 'dbt_project/**'
jobs:
dbt-lint-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dbt
run: |
pip install dbt-snowflake==1.8.0
pip install sqlfluff==3.0.0
- name: dbt debug (connection test)
run: dbt debug
env:
DBT_SNOWFLAKE_ACCOUNT: {{ secrets.SNOWFLAKE_ACCOUNT }}
DBT_SNOWFLAKE_USER: {{ secrets.SNOWFLAKE_USER }}
DBT_SNOWFLAKE_PASSWORD: {{ secrets.SNOWFLAKE_PASSWORD }}
DBT_SNOWFLAKE_DATABASE: DBT_CI_DB
DBT_SNOWFLAKE_SCHEMA: CI_{{ github.event.pull_request.number }}
- name: sqlfluff lint (SQL style check)
run: sqlfluff lint models/ --dialect snowflake
- name: dbt compile (syntax check)
run: dbt compile
- name: dbt run (solo modelli modificati)
run: dbt run --select state:modified+
env:
DBT_DEFER_TO_PROD: true
- name: dbt test (test sui modelli modificati)
run: dbt test --select state:modified+
- name: dbt docs generate
run: dbt docs generate
- name: Cleanup CI schema
if: always()
run: dbt run-operation drop_schema --args '{"schema": "CI_{{ github.event.pull_request.number }}"}'
4. Monitorování aktuálnosti dat
Rozbité potrubí ELT, o kterém nikdo neví, že je rozbité, je horší než nemít potrubí. Proaktivní sledování aktuálnosti dat musí být nedílnou součástí zásobníku:
Anti-vzory, kterým je třeba se vyhnout v potrubích ELT
- Modely bez testování: Model dbt bez alespoň jednoho jedinečného + not_null testu a časovaná bomba. Dříve nebo později vytvoří duplicitní nebo nulová data, která zneplatní zprávy.
- Absence schema.yml: bez dokumentace se modely stávají nepochopitelné pro každého, kdo je nenapsal, včetně jejich autora po 6 měsících.
- Vždy úplné obnovení: Vždy místo toho znovu načtěte celou tabulku provádění přírůstkového připojení/upsert je drahé a křehké pro velké soubory dat.
- Obchodní logika ve vrstvě fáze: Staging potřebuje pouze vyčistit a standardizovat. Agregace a obchodní logika jdou do háje. Smíchejte vrstvy vytváří závislosti, které je obtížné spravovat.
- Ignorování datové linie: Když zpráva zobrazuje nesprávné číslo, bez zdokumentovaného sledování linie trvá problém hodiny. S dbt docs se tam dostanete ke zdroji pouhými několika kliknutími.
- Žádná upozornění na čerstvost: Pokud se Fivetran přestane synchronizovat v noci a nikdo to nesleduje, ranní zprávy ukážou data ze včerejška bez podnikovým uživatelům není viditelné žádné varování.
Doporučení pro italské malé a střední podniky
Prostředí datového kanálu se může zdát pro italský MSP ohromující omezené zdroje a malé týmy. Dobrou zprávou je, že nemusíte přijmout celý zásobník najednou. Zde je progresivní cesta ve třech fázích:
Cesta přijetí pro malé a střední podniky (3 fáze)
| Fáze | Časová osa | Doporučený zásobník | Orientační měsíční náklady |
|---|---|---|---|
| Fáze 1: Nadace | Měsíc 1-3 | Fivetran Free + BigQuery sandbox + dbt Core | 0 – 200 EUR |
| Fáze 2: Výroba | Měsíc 4-9 | Fivetran Standard + Snowflake/BigQuery + dbt Core + Airflow řízené | 800 – 3 000 EUR |
| Fáze 3: Schody | Měsíc 10+ | Fivetran Enterprise + Snowflake + dbt Cloud + Dagster Cloud | 3 000 – 15 000 EUR |
Fáze 1 – Základ: Začněte s bezplatným plánem Fivetranu (500 000 MAR/měsíc) pro připojení 2-3 kritických zdrojů (ERP, CRM, e-commerce). Použijte BigQuery ve verzi sandbox (zdarma až 10 GB úložiště + 1 TB dotaz/měsíc). Nainstalujte dbt Core lokálně a napište prvních 10-15 vzorů. Cílem je naučit se vzory a ukázat hodnotu do podniku bez počáteční investice.
Fáze 2 – Výroba: Když PoC prokáže hodnotu, upravte na Fivetran Standard pro správu více konektorů, přesun do cloudového skladu se SLA (Produkce Snowflake nebo BigQuery) a přidejte orchestraci se správou Airflow (Cloud Composer na GCP nebo MWAA na AWS). Měsíční náklady jsou nízké a dopad na podnikání a měřitelné.
Fáze 3 - Schody: Když se datový tým rozroste na 3–5 lidí, vyplatí se to přidejte dbt Cloud pro kolaborativní IDE a automatické CI/CD a Dagster Cloud pro sofistikovanější orchestraci s pozorovatelností. V tomto bodě se potrubí stává strategické podnikové aktivum spravované profesionálními inženýrskými standardy.
Závěry a další kroky
Vývoj od ETL k ELT není jen změnou v pořadí písmen: je to jedna zásadní transformace ve způsobu, jakým navrhujeme, vyvíjíme a udržujeme potrubí firemní údaje. Díky cloudu je výpočetní technika elastická a pohodlná, takže je zastaralá model transformace před načítáním na dedikovaných serverech.
Moderní cloudový sklad dbt + Airbyte/Fivetran + představuje nejmodernější z roku 2025 a je adoptován tisíci společností, od startupů až po Fortune 500. Konkrétní přínosy jsou měřitelné: kanály lze verzovat jako kód, automatické testy které zaručují kvalitu automaticky generovaných dat, dokumentace a rodokmenu, a škálovatelné náklady, které rostou s podnikáním spíše než vyžadují počáteční investice.
Klíčové body k zapamatování
- ETL není mrtvý: stále má smysl pro citlivá data, která nemusí nešifrovaný přenos do cloudu nebo do místních zdrojů s nízkou latencí.
- ELT a nový standard pro cloud-first architektury: načtěte vše raw, transformovat tam, kde máte největší sílu (sklad).
- dbt a transformační vrstva: přináší osvědčené postupy softwarového inženýrství (verzování, testování, dokumentace) do světa SQL.
- Airbytes a volba open source pro technické týmy s vlastními zdroji nebo požadavky GDPR na bydliště.
- Fivetran a spravovaná volba pro ty, kteří chtějí na svých zařízeních nulovou údržbu konektory na standardní zdroje SaaS (Salesforce, HubSpot, Shopify atd.).
- Pro italské malé a střední podniky: začněte s Fivetran Free + BigQuery + dbt Core ověřit hodnotu před investováním do kompletní infrastruktury.
Další článek v sérii se ponoří dopotrubí orchestrace: Porovnání Airflow, Dagster a Prefect. Pokud je dbt transformačním motorem a Airbyte/Fivetran jsou to přijímací systém, orchestrátor a mozek, který vše koordinuje: kdo co dělá, kdy, v jakém pořadí a co dělat, když se něco pokazí. Kritická součást, která si to zaslouží zasvěcenou diskuzi.
Praktické cvičení: dbt Core Setup za 30 minut
Než přejdete k dalšímu článku, zkuste nastavit dbt Core ve skladu existující (také bezplatný izolovaný prostor BigQuery):
# 1. Installa dbt con il profilo per il tuo warehouse
pip install dbt-bigquery # per BigQuery
# oppure: pip install dbt-snowflake, dbt-redshift, dbt-duckdb
# 2. Crea un nuovo progetto dbt
dbt init mio_progetto_dbt
# 3. Configura il profilo (~/.dbt/profiles.yml per BigQuery)
# mio_progetto_dbt:
# target: dev
# outputs:
# dev:
# type: bigquery
# method: oauth
# project: mio-progetto-gcp
# dataset: dbt_dev
# threads: 4
# timeout_seconds: 300
# 4. Testa la connessione
cd mio_progetto_dbt
dbt debug
# 5. Crea il tuo primo modello
cat > models/staging/stg_example.sql << 'EOF'
SELECT
id,
name,
created_at,
UPPER(TRIM(email)) AS email_normalized
FROM {{ source('raw', 'users') }}
WHERE id IS NOT NULL
EOF
# 6. Esegui e testa
dbt run
dbt test
dbt docs generate
dbt docs serve # Apre il lineage visuale su http://localhost:8080







