Blog
Para quem já sabe o básico e quer ir fundo. Aqui o assunto é como os modelos funcionam em produção: memória, roteamento, ferramentas, agentes. O lado técnico que pouca gente explica direito.
Batch: rodadas periódicas, throughput alto, latency em minutos/horas (ETL noturno). Stream: eventos contínuos, latency ms-segundos (Kafka + Flink). Lambda e Kappa architectures. Quando batch é bom suficiente (a maioria dos casos), quando stream é mandatório (real-time fraud, personalization).
dbt (data build tool) é SQL + Git + tests. Models (SELECT que vira table/view), sources (raw), seeds (static data), tests (not_null, unique, relationships, custom), macros (DRY SQL), docs auto-geradas, lineage graph. Core (CLI open) vs Cloud (manager pago).
Airflow: dominante, maduro, verbose (DAGs em Python, ops pesada). Dagster: software-defined assets, DX moderna, melhor pra analytics engineering. Prefect: simples, dynamic flows, ótimo pra Python-first. Como escolher baseado em legacy + time size.
DuckDB: SQLite pra analytics — embedded, colunar, 0-copy integra Pandas/Parquet. Polars: DataFrame em Rust 10-100x mais rápido que pandas. Matam cluster Spark pra dataset < 1TB. "Big data is dead" (Jordan Tigani, 2023) — maioria dos times não precisa cluster.
Warehouse (Snowflake/BigQuery/Redshift): estruturado, performance, caro. Lake (S3 + Parquet): flexível, barato, compute separado, menos performático sem optimization. Lakehouse (Databricks, Iceberg+spark): converge com ACID. Qual escolher por escala + pricing model.
Change Data Capture: capturar INSERT/UPDATE/DELETE do DB e publicar como event stream. Debezium usa logical replication (Postgres) ou binlog (MySQL). Kafka Connect integra. Uso: replicar OLTP → OLAP sem batch ETL, outbox pattern, invalidação de cache.
Kafka como commit log distribuído. Topic dividido em partitions (ordem garantida dentro de partition, não entre). Consumer groups dividem carga. Exactly-once via idempotent producer + transactional writes. Retention configurável (pode ser infinito). Event sourcing natural.
Parquet é formato de arquivo; table formats adicionam ACID + time-travel + schema evolution em cima. Iceberg (Apple/Netflix, open): leader em 2026. Delta (Databricks): maduro, proprietário-ish. Hudi (Uber): focado em upserts. Open Table Format é o futuro — fim do vendor lock-in.
Data quality não é opcional. Testes em pipeline: volume (count esperado), shape (schema), distribution (stats), freshness (SLA), referential (FK-like em lake). Great Expectations, Soda Core, dbt tests nativos. Alerting, circuit breaker (bloqueia pipeline downstream se upstream falha).
Projeto: ingestão (Kafka → S3/Iceberg), transformação (dbt + DuckDB), orchestration (Dagster), CDC de Postgres OLTP, data quality (GE tests), dashboard (Metabase/Superset). Mostra cada camada funcionando juntas; mede SLA de freshness.