MySQL, PostgreSQL ou SQLite: nos meus projetos quase nada dependia do banco, e o teste no banco errado é o risco real
[!NOTE] Resumo Executivo (DEV-2026-125): A escolha do banco parecia uma decisão de desempenho, sem nenhuma medição por trás. A busca no código mostrou quase nenhum recurso exclusivo, então passou a valer o padrão MySQL com InnoDB, PostgreSQL só com motivo e SQLite fora da produção.
🚨 O Desafio Técnico / Contexto
Os projetos usam MySQL, PostgreSQL e SQLite. Busquei recursos exclusivos de cada banco e encontrei quase nada: dialeto de MySQL entre zero e duas ocorrências por projeto, nenhuma busca textual do PostgreSQL e nenhum vetor. A exceção é um sistema com PostGIS e JSONB. Vários projetos usam MySQL no ambiente e SQLite em memória nos testes.
💡 Principais Lições Aprendidas & Descobertas
- 💡 MySQL 8 com InnoDB: bom padrão para sistema transacional multiempresa em banco compartilhado. Importou 147 mil pagamentos em 39 segundos dentro de uma transação. A armadilha é o padrão MyISAM de ambientes locais, que ignora o rollback sem avisar.
- 💡 PostgreSQL: vale quando o domínio pede o recurso. Consulta geográfica com PostGIS e JSONB são motivos concretos. Preferência sem recurso não é motivo.
- 💡 SQLite em memória: bom para protótipo e para rodar testes sem instalar nada. O risco é aprovar em um motor o que vai rodar em outro. Quando o esquema usa enum e DEFAULT com expressão, a suíte precisa rodar no banco de produção.
- 💡 Não concluí qual é mais rápido. A mesma suíte levou 146 segundos em uma rodada e 44 na seguinte, então a carga da máquina pesou mais que o banco.
- 💡 Suíte vermelha com SQLite não prova culpa do banco. As 11 falhas que investiguei vinham de um erro no layout, que transformava respostas 403 em 500.
🛠️ Especificação Técnica & Código-Chave
<!-- phpunit.xml: o mesmo motor da produção, em um banco só de teste -->
<env name="DB_CONNECTION" value="mysql"/>
<env name="DB_DATABASE" value="app_test"/>
📈 Impacto no Ecossistema & Valor Prático
A decisão de banco passou a ter uma pergunta só: qual recurso deste domínio o padrão não atende.
- Projetos Relacionados:
monitor-laravel,05-orcamento,lorentz-cidadao,omnichannel-system - Registro de Origem:
_data/daily.dev-20.yml
Publicado originalmente como parte do Diário de Desenvolvimento 2026 do ecossistema Artes do Sul & Araguaci.