Resumo da comparação entre Drizzle ORM e Kysely
Vantagens do Drizzle ORM
- Intuitividade na definição de schema: permite definir schemas de forma declarativa, e a partir disso gerar automaticamente SQL
CREATE TABLE.
- Migrações automatizadas: é possível detectar automaticamente mudanças no schema e gerar arquivos de migração SQL.
- Definição intuitiva de relacionamentos: fornece uma API para definir relações entre tabelas de forma clara e intuitiva.
- Escrita de consultas baseada em objetos: garante segurança de tipos ao referenciar tabelas e colunas como objetos.
- Excelente tratamento de colunas com o mesmo nome: ao fazer join entre várias tabelas, distingue naturalmente colunas com nomes iguais por meio de uma estrutura hierárquica de objetos.
Vantagens do Kysely
- Estrutura modular leve: uma arquitetura flexível que permite incluir apenas os recursos necessários.
- API fiel ao SQL: uma API desenhada para ficar muito próxima da sintaxe SQL, familiar para quem domina SQL.
- Migrações baseadas em TypeScript: permite integrar a lógica da aplicação aos scripts de migração.
- Suporte a migrações bidirecionais: com a definição das funções
up/down, suporta tanto upgrade quanto downgrade.
- Flexibilidade para consultas complexas: permite uma abordagem mais flexível na escrita de certas consultas complexas.
Comparação com SQLAlchemy
- Conjunto de recursos rico: o SQLAlchemy continua sendo o ORM mais completo e poderoso.
- Migrações não lineares: o suporte a branch points do Alembic o torna mais adequado para ambientes de desenvolvimento complexos.
- Documentação vasta: oferece não apenas referência de API, mas também explicações aprofundadas e detalhes da implementação interna.
- Estabilidade comprovada: tem estabilidade validada ao longo do tempo em projetos de grande porte.
Conclusão
- Superioridade do Drizzle ORM: se destaca em definição intuitiva de schema, abordagem baseada em objetos e tratamento de colunas com o mesmo nome.
- É preciso considerar os requisitos do projeto: a escolha do ORM pode variar de acordo com funcionalidades específicas e o estilo de desenvolvimento.
- Expectativa de evolução até o nível do SQLAlchemy: espera-se que o ecossistema JavaScript/TypeScript também tenha um ORM no nível do SQLAlchemy.
3 comentários
DrizzleORM para NestJS
https://trilon.io/blog/nestjs-drizzleorm-a-great-match
Eu já usei prisma, drizzle, sequelize e typeorm, mas até agora o typeorm foi o melhor para mim.
Se você prefere o TypeORM, também recomendo o MikroORM.
Como ele é parecido com o TypeORM, a migração também é tranquila, e dá para usar o Knex junto.
Como a manutenção do TypeORM está lenta, quando você procura outra opção, o MikroORM é o mais parecido.