Skip to content
Latchkey

O Que É um DAG em Pipelines de Dados? Grafos Acíclicos Dirigidos Explicados

Um DAG (grafo acíclico dirigido) modela um pipeline como tasks conectadas por dependências sem ciclos, para que um orquestrador saiba em que ordem executá-las.

O DAG é o modelo mental do engenheiro de dados para qualquer pipeline não trivial. Ele captura quais etapas dependem de quais outras, com uma única regra: nada de ciclos. Essa única restrição garante que sempre existe uma ordem válida para executar as tasks e que o pipeline vai terminar.

O que é um DAG

Um DAG é um grafo de nós (tasks) conectados por arestas dirigidas (dependências), sem nenhum caminho que volte ao ponto de partida. Em um pipeline de dados, uma aresta da task A para a task B significa que B não pode começar até A terminar. A propriedade acíclica garante que existe uma ordem de execução válida.

Por que pipelines usam DAGs

Pipelines são cheios de dependências: carregar antes de transformar, transformar antes de publicar. Um DAG expressa isso de forma limpa e deixa o orquestrador decidir o que pode rodar em paralelo (ramos independentes) e o que precisa esperar. Ciclos significariam que uma task depende de si mesma, o que nunca poderia se completar.

DAGs em orquestradores

Airflow, Dagster e Prefect modelam workflows como DAGs. O orquestrador percorre o grafo, executa tasks prontas, faz retry de falhas e pula tasks downstream quando uma upstream falha. A mesma ideia está por trás de build tools e grafos de dependência do CI.

DAGs e CI

Pipelines de CI/CD são, eles próprios, DAGs de jobs. No trabalho com dados, o CI também valida que um DAG de pipeline definido realmente faz parse e não contém nenhum ciclo antes de ser entregue.

A CI pipeline expressed as a DAG
jobs:
  build:   { runs-on: small }
  test:    { needs: build }     # edge: test depends on build
  deploy:  { needs: [build, test] }

Nota Latchkey

Como um DAG expõe ramos independentes, o orquestrador e o CI podem distribuir jobs em paralelo. No Latchkey, esses ramos paralelos rodam em runners gerenciados separados, então um DAG largo termina mais rápido, com o auto-retry cuidando de eventuais falhas transitórias de tasks.

Principais conclusões

  • Um DAG modela tasks de pipeline como nós conectados por arestas de dependência sem ciclos.
  • A propriedade acíclica garante uma ordem de execução válida e permite que orquestradores paralelizem ramos independentes.
  • Orquestradores como o Airflow e pipelines de CI modelam seu trabalho como DAGs de tasks ou jobs.

Guias relacionados