[ Dúvida ] Além do Drizzle ORM, existe algum outro ORM totalmente compatível com TypeScript e Bun?
Dúvida:
Escolher um bom ORM é uma decisão de peso, pois uma vez que implemenar é muito díficl migra-lo para outro ORM, devido a problemas que vocês já devem saber.
O único ORM que eu tive contato foi o Sequelize que é bem fácil de mexer e implementar até certo ponto... Sequelize não tem um suporte legal para TypeScript, apenas uma "ponte" para facilitar, mas nem se compara a algo totalmente escrito em TypeScript
. Além disso, não tem suporte a novidade: Bun.
Eu estou iniciando o Back-end de um projeto full-stack para colocar no portfolio, e pensei no Sequelize
pois tinha um conhecimento nele, mas eu decidi criar algo mais seguro, limpo e robusto, e obviamente eu pensei logo em procurar algo que tenha suporte a TypeScript
e seja mantido.
O projeto utilizá SQLite para armazenamento local. Para armazenamento na Nuvem, eu estou considerando
MongoDB
no futuro, por causa de costos.
Eu irei escrever tudo em TypeScript, tanto o Front-end, quanto o Back-end. Eu sei que Golang ou Java é um back-end mais robosto, mas foge do meu escopo atual.
Nessas pesquisas eu encontrei o Drizzle, que parece ser tudo o que eu procurei, porém eu estou ainda a procura de alternativas, pois gosto de considerar mais de uma tecnologia antes de tomar a decisão de implementar de fato.
Vocês conhecem alguma alternativa ao Drizzle
ou só ele tem suporte a TypeScript
e Bun
ao mesmo tempo? Eu sei que Bun
tem um suporte nativo ao SQLite
, porém o meu objetivo nesse projeto é aprender ao menos um ORM completamente, para expandir meu repertório.
Não é a resposta que vc pediu, mas é A resposta se vc quer expandir seu repertório de verdade
Use a api em C nativa do sqlite. Nada de bun::sqlite muito menos ORMs... Use bun::ffi, que inclusive, carregar o sqlite é exemplo da documentação oficial, por que será?!?
Escreva seus próprios "data access objects" DAOs em TS como wrappers ao redor da API do sqlite!!!
Atualmente estou usando o prisma. achei muito facil. ele está sendo usado em projeto grande onde recebo cerca de 50000 mensagens de WhatsApp por mês.
A maior questao ao decidir em relação ao drizzle vs a outros orms, como o lider de mercado hoje que é o prisma, seria a latencia para o cold start do sistema, ou seja, em serviços de banco de dados que usam estratégias de CDN e serverless. Existem outros pros e contras, mas essa seria a maior decisão. Sua arquitetura vai usar algum sistema serverless ou CDN em qualquer ponta? Vai dar deploy em vercel, amplify, etc? Vai usar qual serviço para banco de dados? Isso que tem que ser pesado. Se sim, drizzle é a melhor opcao de longe, ganhando em performance até mesmo uma conexão direta com sqlite que um amigo indicou acima. Se nao, em termos de organização e facilidade de informação e clareza de código, o prisma costuma ser melhor, por isso domina o mercado.
Pelo que pesquisei aqui o Prisma tem. Inclusive na doc do Bun eles falam do prisma: https://bun.sh/guides/ecosystem/prisma
Usa o prisma que não tem erro, integração completa com typescript, sem preocupação de abrir ou fechar conexão com db, suporte a Postgres, SQLite, mongo, mysql.
Ainda consegue buscar toda tipagem do PrismaClient.
Se quiser tirar alguma dúvida manda um email honorio.dev@gmail.com
O que sempre me pergunto é, porque ainda seguir a estratégia de usar ORM. SQL é uma linguagem tão poderosa e o ORM simplifica o que já é simples, como CRUD, por exemplo, mas torna complexo, feio e muitas vezes lento e pesado as consultas que envolvem joins e subqueries complexos.