Executando verificação de segurança...
2

Mudei de Prisma para Drizzle em produção. Aqui está o que ninguém avisa antes

Prisma é o ORM padrão para Node.js com banco relacional. Drizzle é o challenger que cresceu rápido. Migrei um projeto real e quero documentar o que aprendi.

Por que saí do Prisma

O Prisma gera um cliente opaco a partir do schema. Para queries simples é ótimo. Para joins complexos com filtros dinâmicos, você fica lutando contra a abstração.

O overhead de cold start em funções serverless também foi real. O Prisma carrega mais do que o necessário para ambientes Vercel/Lambda.

O que o Drizzle entrega diferente

SQL com tipos. Você escreve queries que parecem SQL, com autocomplete e validação em tempo de compilação. O resultado é previsível porque você sabe o que está mandando para o banco.

Bundle menor. Para serverless, isso importa.

Flexibilidade. Joins com condições dinâmicas, queries com CTEs, subqueries: tudo é natural porque é SQL com açúcar sintático.

O que ninguém avisa

Migração é mais manual. Você define o schema, gera o SQL e decide quando rodar. Quem está acostumado com prisma migrate dev vai estranhar.

A comunidade é menor. Quando você bate em um caso de uso não documentado, tem menos Stack Overflow e mais leitura de código-fonte.

Se você já sabe SQL, a curva é quase zero. Se você aprendeu banco via Prisma e pouco SQL, vai ser mais íngreme.

Vocês usam ORM por convicção ou por convenção do projeto?

Carregando publicação patrocinada...
3

Respondendo sua pergunta: uso ORM por produtividade, mas sem forçar a barra. Se a melhor abordagem não cabe na abstração, então faço a query na mão.

Prisma é muito produtivo. Fazer tudo no sql seria bem mais trabalhoso.

Para mim o mundo é muito mais cinza do que preto e branco: não há certo ou errado. São ferramentas e vc escolhe a melhor para cada caso de uso.

1

Concordo com o cinza. O que mudou pra mim no Drizzle é que quando o ORM não comporta a query, você desce para SQL puro sem sair do contexto: mesmo arquivo, mesma conexão, mesma tipagem retornando. No Prisma isso exige $queryRaw com template string e você perde o type safety. Então para casos onde você mistura ORM e SQL bruto com frequência, o Drizzle elimina uma fricção real. Você usa query builder nos casos mais complexos ou vai direto para driver nativo quando o ORM não alcança?

3

Não uso ORM e sempre vi isso como muleta para quem não quer aprender SQL de verdade.

Até Drizzle eu acho perfumaria desnecessária. Uso o driver nativo do banco e pronto.

1

Para quem domina SQL, driver nativo faz sentido e não tem overhead desnecessário. Mas o ORM entrega uma coisa que SQL puro não entrega grátis: refactoring com garantia de tipo. Quando eu renomeio uma coluna no schema do Drizzle, o TypeScript me mostra exatamente onde quebrou antes de rodar qualquer query. Com SQL em string, esse erro aparece em produção. O argumento de muleta faz mais sentido contra Prisma, que esconde o SQL atrás de uma abstração opaca. Drizzle é basicamente SQL com tipo. Você tem alguma estratégia pra lidar com refactoring de schema sem ORM?

1

Como o colega falou, eu tambem uso por produtividade, mas drizzle é brm mais versátil. Eu uso ele em react native com sqlite, e não tem me deixado na mão.