Pular para conteúdo

Arquitetura

O projeto segue a Arquitetura Medalhao, uma abordagem comum em Lakehouse para organizar dados por nivel de refinamento.

Visao Geral

%%{init: {"theme": "base", "themeVariables": {"primaryTextColor": "#ffffff", "tertiaryTextColor": "#ffffff", "nodeTextColor": "#ffffff", "fontFamily": "Arial"}}}%%
flowchart LR
    db[(MongoDB Atlas<br/>AI Job Market Insights)]
    json[(JSON<br/>Landing dados)]
    landing[(Landing<br/>Volume dados<br/>Arquivos brutos)]
    bronze[(Bronze<br/>Delta Lake<br/>Estrutura da origem)]
    silver[(Silver<br/>Delta Lake<br/>Dados qualificados)]
    gold[(Gold<br/>Modelo dimensional<br/>Analise de negocio)]
    job[Databricks Job<br/>Orquestracao dos notebooks]

    db -->|Notebook 002<br/>Extracao| json
    json -->|Ingestao| landing
    landing -->|Notebook 003| bronze
    bronze -->|Notebook 004<br/>Data Quality| silver
    silver -->|Notebook 005<br/>Dimensoes e fatos| gold

    job -.-> landing
    job -.-> bronze
    job -.-> silver
    job -.-> gold

    classDef source fill:#1f2937,stroke:#9ca3af,color:#ffffff
    classDef layer fill:#0f766e,stroke:#99f6e4,color:#ffffff
    classDef process fill:#f97316,stroke:#fed7aa,color:#ffffff
    linkStyle default stroke:#475569,color:#111827

    class db,json source
    class landing,bronze,silver,gold layer
    class job process

    style json color:#ffffff
    style db color:#ffffff
    style landing color:#ffffff
    style bronze color:#ffffff
    style silver color:#ffffff
    style gold color:#ffffff
    style job color:#ffffff

Landing

A Landing e a camada de entrada. Nela ficam os arquivos JSON exatamente como recebidos do MongoDB Atlas.

No Databricks, essa camada foi representada pelo schema workspace.landing e pelo volume workspace.landing.dados.

Responsabilidades:

  • armazenar os arquivos brutos;
  • preservar a origem dos dados;
  • servir como ponto inicial de reprocessamento.

Bronze

A Bronze transforma os arquivos JSON em tabelas Delta.

Responsabilidades:

  • ler os arquivos da Landing;
  • criar tabelas Delta;
  • manter a granularidade original;
  • adicionar metadados de processamento quando necessario.

Essa camada ainda esta proxima da fonte, com pouca regra de negocio aplicada.

Silver

A Silver e a camada de dados tratados.

Responsabilidades:

  • padronizar nomes e formatos;
  • corrigir tipos de dados;
  • remover ou tratar inconsistencias;
  • aplicar regras de qualidade;
  • preparar dados para modelagem dimensional.

Gold

A Gold e a camada de consumo analitico.

Responsabilidades:

  • disponibilizar dimensoes;
  • disponibilizar tabela fato;
  • reduzir complexidade para consultas;
  • apoiar analises de cargos, setores, salarios, habilidades, localizacao, trabalho remoto, risco de automacao e crescimento do mercado.

O desenho segue a abordagem dimensional de Ralph Kimball, separando entidades descritivas em dimensoes e eventos/medidas em fatos.