Pular para conteúdo

5. Camada Bronze: Persistência e Rastreabilidade

Objetivo

Atuar como o Single Point of Truth dos dados brutos e sanitizados. A Bronze garante que o "Data Archaeology" seja preservado em um formato imutável, permitindo que qualquer análise futura possa retroceder à origem exata sem necessidade de nova conexão com o legado de 1993.

Estrutura de Diretórios e Armazenamento

Os dados são persistidos em arquivos Parquet, organizados para otimizar a leitura do DuckDB:

  • Raiz: /data/bronze/infoescola/
  • Padrão de Caminho: [dominio]/[tabela]/load_date=[YYYY-MM-DD]/data.parquet
  • Convenção de Nomes: bronze_[dominio]_[tabela].parquet
Tabela Origem Entidade Bronze Estratégia Particionamento
CONTRATO bronze_contrato_mestre Overwrite (Ciclo) load_date
PESSOA bronze_contrato_pessoa Append N/A (Snapshot)
ITEM_CONTRATO bronze_contrato_itens Overwrite load_date
UDF_STATUS bronze_contrato_status_map Full Load N/A

Definição Técnica e Auditoria

Para garantir a rastreabilidade exigida, cada tabela na Bronze herda e consolida as colunas de controle:

  • brz_load_at: Timestamp da persistência na camada Bronze.
  • brz_source_file: Nome do arquivo de origem ou ID da extração.
  • brz_integrity_flag: Status da sanitização técnica (OK/Anomaly).

Implementação DuckDB (Exemplo de Consulta)

Para inspeção rápida e validação, o DuckDB acessa a camada diretamente:

-- Exemplo de leitura da Bronze no Cockpit
SELECT 
    brz_load_at,
    count(*) as total_registros,
    count(DISTINCT id_contrato) as chaves_unicas
FROM read_parquet('/data/bronze/contrato/mestre/*/*.parquet')
GROUP BY 1;

Inventário e Validação de Carga (Evidência)

Entidade Row Count Origem Row Count Bronze Schema Match Status
Mestre Contrato 450.123 450.123 ✅ Sim 🟢 OK
Pessoa 1.200.550 1.200.550 ✅ Sim 🟢 OK
Itens 900.080 900.080 ✅ Sim 🟢 OK

Diferenciais da Camada

  1. Imutabilidade: Uma vez escrito o arquivo Parquet na pasta de uma data específica, ele não é alterado.
  2. Performance: Tipagem forte do Parquet reduz o overhead de leitura em comparação ao CSV/JSON original.
  3. Auditabilidade: O brz_source_file permite identificar exatamente qual processo gerou aquele dado.

Critérios de Aceite da Bronze

  • [ ] Arquivos Parquet gerados com compressão Snappy.
  • [ ] Colunas de auditoria (brz_) presentes em todas as tabelas.
  • [ ] Row count validado entre o log de extração e o arquivo físico.
  • [ ] Schema verificado: Tipos de dados (Timestamp, Integer, Boolean) preservados após a sanitização.

Documentação Relacionada:

  • [Link para Dicionário de Tabelas Bronze]
  • [Link para Logs de Persistência do Ciclo]