Pular para conteúdo

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