Problema
Escolha de banco por moda ou por “Mongo é mais rápido” sem workload definido. Depois vem joins em application code, relatórios impossíveis ou esquema relacional forçado em documento.
Solução
Começar do acesso a dados: transações ACID multi-linha? relatórios SQL? schema em evolução com migrações fortes? Postgres brilha em integridade + joins + ecossistema. Mongo faz sentido com documento natural, leitura por chave/partição, flexibilidade de esquema com disciplina (indexes, schema validation).
Arquitetura
Híbrido é válido: Postgres como sistema de registro; document store para telemetria ou conteúdo altamente aninhado — desde que o ownership dos dados seja claro.
Código
Exemplo de invariante que empurra para Postgres:
BEGIN;
UPDATE accounts SET balance = balance - 100 WHERE id = 1 AND balance >= 100;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;Em documento, o mesmo exige locks/cuidados adicionais ou padrões específicos.
Performance
Postgres: indexes certos, EXPLAIN, particionamento. Mongo: índices compostos alinhados a queries reais; evitar documentos monolíticos gigantes.
Melhorias futuras
Read replicas; CQRS se leitura e escrita divergirem; Timescale/ClickHouse para séries temporais massivas.
Conclusão
A decisão correta é função do modelo de consistência e das queries, não do logo. Articular isso é prova de senioridade em backend.