ADR-0004: Banco de Dados — PostgreSQL + OLAP
Status
Accepted
Context and Problem Statement
O sistema precisa de persistência transacional para dados de negócio e análise de métricas com queries analíticas complexas.
Decision Drivers
- Dados transacionais com integridade relacional (ERP)
- Métricas e relatórios com agregações em grandes volumes
- Separação de workloads OLTP e OLAP
Considered Options
- PostgreSQL puro
- PostgreSQL + TimescaleDB
- PostgreSQL + ClickHouse
Decision Outcome
Chosen option: PostgreSQL para OLTP e OLAP, usando materialized views e particionamento de tabelas para workloads analíticos sem infraestrutura adicional.
Positive Consequences
- Stack único — sem sincronização entre bancos
- Materialized views para queries analíticas pré-computadas
- Particionamento por data para tabelas de métricas
- Menos operacional
Negative Consequences
- Performance analítica limitada vs ClickHouse/DuckDB em volumes muito grandes
- Refresh de materialized views impacta I/O
More Information
- Projeto:
atenvi-bff - OLTP: tabelas transacionais normalizadas
- OLAP: materialized views + tabelas particionadas por data