Ir para o conteúdo

Visão Geral da Arquitetura

Diagrama do Pipeline

┌─────────────────────────────────────────────────────────────────────────┐
│                         PIPELINE DE DADOS                               │
│                                                                         │
│  ┌──────────────┐    ┌──────────────────────┐    ┌────────────────────┐ │
│  │  SQL Server  │    │    MinIO (S3)        │    │    MinIO (S3)      │ │
│  │  2022 Dev    │───▶│    landing-zone/     │───▶│    bronze/         │ │
│  │              │    │                      │    │                    │ │
│  │  SeguroDB    │    │  regiao.csv          │    │  regiao/           │ │
│  │  11 tabelas  │    │  estado.csv          │    │  estado/           │ │
│  │              │    │  municipio.csv       │    │  municipio/        │ │
│  │  ~180 linhas │    │  marca.csv           │    │  marca/            │ │
│  │              │    │  modelo.csv          │    │  modelo/           │ │
│  └──────────────┘    │  cliente.csv         │    │  cliente/          │ │
│                      │  endereco.csv        │    │  endereco/         │ │
│   Notebook 00        │  telefone.csv        │    │  telefone/         │ │
│   (Setup)            │  carro.csv           │    │  carro/            │ │
│                      │  apolice.csv         │    │  apolice/          │ │
│   Notebook 01        │  sinistro.csv        │    │  sinistro/         │ │
│   (Extração)         └──────────────────────┘    └────────────────────┘ │
│                                                                         │
│                           Notebook 02              Notebook 03          │
│                           (CSV→Delta)              (DML+History)        │
└─────────────────────────────────────────────────────────────────────────┘

Componentes

Fonte de Dados — SQL Server 2022

O banco SeguroDB simula o sistema de uma seguradora de veículos com 11 tabelas relacionais. Roda em container Docker com a edição Developer (gratuita para desenvolvimento).

Landing Zone — MinIO (CSV)

Primeira camada de armazenamento. Os dados extraídos do SQL Server são salvos como arquivos CSV no bucket landing-zone. Esta camada representa os dados brutos — exatamente como saem da fonte, sem transformações.

Por que CSV? Para banco de dados relacional, CSV é o formato padrão de intercâmbio. É legível por humanos, compatível com qualquer ferramenta e preserva a estrutura tabular original.

Bronze — MinIO (Delta Lake)

Segunda camada. Os CSVs são lidos pelo Apache Spark e gravados em formato Delta Lake no bucket bronze. Esta camada garante:

  • ACID — transações atômicas e consistentes
  • Schema enforcement — validação de tipos de dados
  • Versionamento — histórico completo de cada alteração
  • Time Travel — capacidade de consultar versões anteriores

Fluxo de Dados Detalhado

sequenceDiagram
    participant NB00 as Notebook 00
    participant SQL as SQL Server
    participant NB01 as Notebook 01
    participant LZ as MinIO landing-zone
    participant NB02 as Notebook 02
    participant BR as MinIO bronze
    participant NB03 as Notebook 03

    NB00->>SQL: CREATE DATABASE SeguroDB
    NB00->>SQL: CREATE TABLE (11x)
    NB00->>SQL: INSERT dados CSV

    NB01->>SQL: SELECT * FROM tabela (11x)
    NB01->>LZ: PUT tabela.csv (11x)

    NB02->>LZ: spark.read.csv()
    NB02->>BR: df.write.format('delta').save()

    NB03->>BR: INSERT / UPDATE / DELETE
    NB03->>BR: dt.history()
    NB03->>BR: read.option('versionAsOf', 0)