Платформа/journal
Drizzle ORM год в проде
Drizzle ORM год в проде: что мы поняли против Prisma
← ЖурналПлатформа7 мин чтения

Drizzle ORM год в проде: что мы поняли против Prisma

Команда nordiqdev
студия

В сентябре 2023-го мы попробовали Drizzle на одном проекте - больше из любопытства. Год спустя на нём уже четыре наших проекта. Без хайпа, по делу - что мы выиграли по сравнению с Prisma и где есть нюансы.

Что выиграли

Прозрачность SQL

В Drizzle вы пишете запросы на SQL-подобном DSL и видите ровно то, что уйдёт в БД. С Prisma часто возникали ситуации, когда отлаживали странный план запроса и обнаруживали, что под капотом сгенерировалось три раунд-трипа вместо одного. С Drizzle - что написал, то и поехало.

Edge-совместимость

Drizzle работает на Cloudflare Workers, Vercel Edge, Bun, Deno без бубна. Prisma долго был «толстым» из-за движка на Rust. На наших edge-функциях это было причиной №1 миграции.

Размер бандла

Prisma Client в bundle весил 6+ МБ из-за wasm-движка. Drizzle - десятки килобайт чистого TS. Для serverless, где cold start считается миллисекундами, это ощутимо.

Типизация

Это вкусовое, но многие в команде отметили: Drizzle типы выводятся быстрее в IDE и сообщения об ошибках понятнее. На проектах с 200+ таблицами разница в скорости работы TS-сервера заметна.

Что потеряли (или сложнее)

  • Prisma Studio - приятный UI для базы. У Drizzle есть Drizzle Studio, но он ощутимо проще.
  • Prisma generator-ы для zod/typescript-types/etc - мощная экосистема. У Drizzle проще, но беднее.
  • Сложные глубокие include с агрегациями - в Prisma писались декларативно, в Drizzle нужно явное JOIN или сабквери.
  • Документация Prisma была эталонной. У Drizzle она хорошая, но на сложных кейсах приходится читать исходники или Discord.

Миграции

drizzle-kit генерирует SQL-миграции по diff схемы. Это проще и предсказуемее, чем Prisma Migrate, но требует больше дисциплины: каждая миграция - это сырой SQL, который нужно прочитать перед применением. Это хорошо, на самом деле.

Когда Prisma всё ещё лучше

  • Команды, для которых Prisma уже стек, и нет проблем с edge или bundle size.
  • Проекты, где много нестандартной агрегационной логики, удобно описанной декларативно.
  • Команды, где не у всех сильный SQL - Prisma скрывает базу лучше.
Теги
#drizzle#prisma#orm#typescript#postgres
Студия nordiqdev

Делаем мобильные приложения, веб-сервисы и AI на заказ

Если задача из текста выглядит знакомой и нужна команда, которая соберёт продукт - расскажите подробнее. Вернёмся в течение 24 часов с разбором.