Pular para conteúdo

Camada bronze

A Camada Bronze (Bronze Layer) é a fundação da arquitetura Medalhão no projeto InfoEscola, representando o ponto de entrada de dados brutos e não processados no Data Lakehouse.

I. O Começo: Propósito e Imutabilidade

A Camada Bronze é o primeiro estágio do pipeline de dados, atuando como uma área de staging (landing) ou raw. Seu objetivo principal é servir como um espelho fiel e imutável dos sistemas de origem (o MySQL 5.1 legado e o Cloud SQL 8.0 atual).

  1. Fidelidade Inegociável: O princípio fundamental é a imutabilidade. A camada Bronze deve reter o "negativo fotográfico" original dos dados, capturando o estado completo da fonte. Isso significa que ela não deve realizar transformações lógicas nem filtrar registros (como aplicar um cutoff-date), sendo esta a responsabilidade da Camada Silver.
  2. Fonte Única da Verdade (SSOT): Uma vez que o backfill (carga histórica) é concluído e validado, a Camada Bronze se torna a Fonte Única da Verdade (SSOT) para todos os dados históricos, permitindo o desacoplamento do pipeline de análise da instância de banco de dados transacional.
  3. Auditabilidade: Ela garante que, se um erro for descoberto nas camadas superiores (Silver/Gold), há sempre um ponto de restauração (o dado bruto original) para reprocessamento.

II. O Meio: Implementação, Formato e Estrutura

A implementação da Camada Bronze foca na eficiência de armazenamento e na organização para acesso analítico.

  1. Formato de Armazenamento: O formato escolhido é Parquet. O Parquet é um formato de arquivo colunar que oferece alta compressão e eficiência analítica. Ele é o formato ideal para dados brutos de landing (dump), sendo simples, barato e amplamente compatível com ferramentas como BigQuery, Polars e Spark.
  2. Localização (Storage): Os arquivos Parquet são armazenados no Google Cloud Storage (GCS) ou, para fins de portabilidade e desenvolvimento local, em um sistema de arquivos local. O padrão de caminho sugerido segue o formato de Particionamento Hive: gs://<bucket>/bronze/<fonte>/<tabela>/ano=YYYY/mes=MM/.
  3. Catalogação (Acesso): Os dados brutos são tornados consultáveis sem serem movidos:
    • No GCP: São registrados no BigQuery como Tabelas Externas (External Tables). O BigQuery lê o esquema (colunas e tipos) diretamente dos metadados do Parquet.
    • Localmente (Portfólio): No ambiente de desenvolvimento (DuckDB), o catálogo é replicado criando VIEWs que apontam para os arquivos Parquet locais, simulando o comportamento de uma Tabela Externa (schema-on-read).
  4. Particionamento: A estratégia correta para o backfill histórico (one-shot) é particionar por uma coluna de evento com valor semântico (ex: ConDataCadastramento para Contatos). As heurísticas de escolha de coluna por pontuação ou completude são aposentadas em favor de uma definição declarada (via arquivo YAML) e validada manualmente, garantindo um contrato semântico estável para as camadas superiores.
  5. Tratamento de Dados Sujos: A camada Bronze deve preservar datas incorretas, nulos e artefatos de tipo de dados legados (como colunas bit(1) lidas como BYTES ou large_binary pelo Parquet). A correção de tipos (adequação de armazenamento) é feita pontualmente (via patch de engenharia, se necessário, para evitar erros de leitura), mas a limpeza e sanitização lógicas (ex: tratamento de nulos ou datas inválidas) é reservada estritamente para a Camada Silver.

III. O Fim: Desacoplamento e Transição

O "fim" da camada Bronze não é sua exclusão, mas sim sua consolidação como a origem confiável para as transformações subsequentes.

  1. Matéria-Prima para a Silver: O Bronze é a entrada para a Camada Silver, onde a limpeza, a padronização e a modelagem dimensional são realizadas. O Silver lê o Bronze (usando o catálogo do BigQuery/DuckDB) e começa a aplicar a lógica de negócio (como padronizar strings, desduplicar e corrigir tipos de dados).
  2. Validação e Descomissionamento: Após a ingestão, é realizada uma validação de contagem de linhas (reconciliação) para garantir que 100% dos registros foram migrados com sucesso. Com a validação concluída e um backup final exportado, a instância original do Cloud SQL (que serviu como fonte para o Bronze) pode ser parada (stop), encerrando o risco de custos recorrentes e provando que o projeto está desacoplado da origem.
  3. Consumo Indireto: A camada Bronze não é consumida diretamente pelo Power BI ou por relatórios finais. Seu papel é garantir a integridade da origem para o Silver, que por sua vez alimenta a Camada Gold (Data Marts prontos para análise).

A Camada Bronze atua como o arquivo morto digital e organizado do projeto InfoEscola. Ela não é feita para ser lida todos os dias por analistas, mas é o local de garantia que permite que todo o Data Warehouse (Silver e Gold) seja reconstruído a qualquer momento com total confiança nos dados brutos originais.