Como escolher o banco de dados ideal para sua aplicação e arquitetura com teorema CAP
Já pensou você construir um sistema que pode ser vendido por milhões de reais, e descobrir que o seu banco de dados não é o ideal para o cenário? Mas não é só decidir se é relacional ou não relacional?
Não, e esse é um erro muito comum ao começar a pensar na arquitetura de um sistema, ao decidir qual banco de dados sua aplicação precisa. Bancos de dados vão muito álem de relacional ou não relacional, eles consistem em uma parte muito importante do seu sistema, onde sua aplicação guarda os dados, onde ela busca dados, ele é a fonte do seu sistema! Dito isso...
Porque é tão importante escolher o banco de dados certo?
O banco de dados é uma parte vital do seu sistema, ele é onde seus dados ficarão e onde você buscará eles. O seu banco de dados precisa servir, precisa estar de acordo, com os requisitos funcionais e não funcionais do seu sistema, o que é importante e o que não é. Como por exemplo: o que é mais importante para seu sistema, todos os dados estarem corretos em todas as instâncias da sua aplicação ou ele deve ser robusto a falhas, ele deve ser consistente, ou tolerante à partições? Esse é o primeiro passo, organizar os seus requisitos e ver o que é mais importante para seu sistema entre consistência, disponibilidade e tolerância à partição.
O que é um sistema distribuído?
Um sistema distribuído é composto de vários componentes, que podem ser hardware e softwares, conhecidos como nós, que se comunicam e agem como um único sistema, apesar de poderem estar espalhados até mesmo em diferentes continentes.
Consistência - Todo mundo vê a mesma coisa
Independente da instância da aplicação, os dados exibidos devem ser o mesmo em qualquer instância. A sincronização entre os dados depende da necessidade do seu sistema, de que os dados estejam sincronizados. Alguns sistemas podem necessitar que os dados sejam sincronizados imediatamente, outros nem tanto, isso depende de cada caso de uso.
Disponibilidade - Todo mundo consegue acessar
Se por acaso, uma parte do sistema falhar, estiver indisponível, o sistema deve continuar respondendo.
Tolerância à partições - Mesmo sem um componente, tudo continua funcionando
Caso os componentes não consigam se comunicar, o sistema deve continuar funcionando.
O que é o teorema CAP?
O teorema CAP é uma sigla para Consistency, Availability, and Partition Tolerance (Consistência, Disponibilidade e Tolerância a Partições), ele afirma que não é possível que um sistema distribuído consiga aplicar essas três características. O teorema propõe que, um sistema distribuído, o banco de dados só pode entregar duas das três características. Ficando assim:

OBS: Sistemas verdadeiramente distribuídos vão ter falhas de rede inevitavelmente. Portanto, o teorema CAP em si, diz que o sistema deve escolher entre consistência e disponibilidade.
Sistemas CA - Consistência e Disponibilidade
Entrega consistência e disponibilidade, porém sem tolerância à falhas.
Bancos: MySQL e PostgreSQL
Sistemas CP - Consistência e Partições
Em caso de falha de algum dos nós o sistema desativa o nó que falhou, e só retorna quando estiver consistente, garantindo a consistência do sistema.
Bancos: MongoDB e HBase
Sistemas PA - Particionamento e Disponibilidade
Os dados sempre estão disponíveis mesmo com particionamento, mesmo que não estejam consistentes, somente após que a partição for resolvida que os dados irão ser sincronizados.
Bancos: Dynamo e Cassandra
Quando pensamos em como construir um sistema primeiro pensamos se queremos um banco não relacional ou relacional, um banco direcionado à documentos, ou direcionado à grafos, quando precisamos pensar primeiro nos requisitos do nosso sistema e o que ele precisa. Assim o teorema CAP auxília você nas suas decisões quanto ao seu banco de dados.
Tente agora, um sistema como o da Amazon, qual dos 3 serviços que o banco pode entregar, CA, CP ou PA, qual seria o melhor e porque? Escreva aqui embaixo!
Referências
MATHEUS. System Design - Teorema CAP, ACID, BASE e Bancos de Dados Distribuídos. Disponível em: <https://fidelissauro.dev/teorema-cap/>. Acesso em: 11 out.. 2026.
VICTOR, Ruan. Breve Introdução ao Teorema CAP. Disponível em: <https://medium.com/@ruan.victor/breve-introdu%C3%A7%C3%A3o-ao-teorema-cap-eb8bb0a0d7a4>. Acesso em: 11 out.. 2026.
Teorema CAP - Disponibilidade e muito mais: entendendo e melhorando a resiliência de sistemas distribuídos em AWS. Disponível em: <https://docs.aws.amazon.com/pt_br/whitepapers/latest/availability-and-beyond-improving-resilience/cap-theorem.html>. Acesso em: 11 out.. 2026.
KIDD, Chrissy. Distributed Systems Explained. Disponível em: <https://www.splunk.com/en_us/blog/learn/distributed-systems.html>. Acesso em: 11 out.. 2026.
IBM. Teorema CAP. Disponível em: <https://www.ibm.com/br-pt/think/topics/cap-theorem>. Acesso em: 11 out.. 2026.

