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
Mapa Origem → Bronze (Catálogo)¶
| 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¶
- Imutabilidade: Uma vez escrito o arquivo Parquet na pasta de uma data específica, ele não é alterado.
- Performance: Tipagem forte do Parquet reduz o overhead de leitura em comparação ao CSV/JSON original.
- Auditabilidade: O
brz_source_filepermite 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]