Drizzle vs Prisma pre nás nie je remíza, ale ani súboj s víťazom. Obe ORM máme v produkcii: Prismu na Postgres v starších klientskych aplikáciách a Drizzle na Cloudflare D1 v každej novej aplikácii, odkedy novú prácu staviame na Workers. Krátka odpoveď: Drizzle vyberte, keď nasadzujete na serverless alebo edge a chcete schému a migrácie ako čistý TypeScript a SQL. Prismu nechajte tam, kde už funguje.
Väčšinu porovnaní píše jeden z dvoch dodávateľov alebo niekto, kto postavil demo dvakrát. Toto vychádza z repozitárov, ktoré udržiavame, s konfiguráciou tak, ako je.
Drizzle vs Prisma: aký je skutočný rozdiel?
Obe vám dajú typovaného klienta databázy v TypeScripte. Rozdiel je v tom, kde žije schéma a ako ďaleko je ORM od SQL.
Prisma
Drizzle
Schéma
schema.prisma, vlastný jazyk
súbory .ts, čistý TypeScript
Klient
generuje ho prisma generate
typom je samotná schéma, pre dotazy netreba generovať
Dotazy
objektové API (findMany, include)
v tvare SQL (select().from().where()) plus relačné API
Migrácie
prisma migrate dev / deploy
drizzle-kit generate zapíše SQL súbory, spustíte ich vy
Kde ho používame
Postgres v starších Next.js aplikáciách
Cloudflare D1 (SQLite) v nových aplikáciách
Engine
od Prismy 7 klient bez Rustu
podľa dokumentácie „exactly 0 dependencies“
Dokumentácia Drizzle ho opisuje ako „dialect-specific, slim, performant and serverless-ready by design“ (Drizzle overview, overené 24. 10. 2026). Prisma je nástroj o úroveň vyššie: opíšete modely a SQL vymyslí ona.
Prečo nové aplikácie bežia na Drizzle?
Naše nové aplikácie bežia na Cloudflare Workers s D1, čo je SQLite. Rovnaké nastavenie má náš štartovací template aj naše interné nástroje. Celá konfigurácia Drizzle je toto:
Schéma je súbor v TypeScripte. Skrátene z nášho templatu:
// packages/db/src/schema/records.ts
import { sql } from 'drizzle-orm'
import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'
import { user } from './auth'
const record = sqliteTable('record', {
id: text('id').primaryKey().$defaultFn(() => crypto.randomUUID()),
name: text('name').notNull(),
status: text('status', { enum: ['active', 'inactive', 'pending'] }).default('active').notNull(),
createdById: text('created_by_id').references(() => user.id, { onDelete: 'set null' }),
createdAt: integer('created_at', { mode: 'timestamp_ms' })
.default(sql`(cast(unixepoch('subsecond') * 1000 as integer))`)
.notNull(),
})
Klient je jeden riadok nad väzbou na D1 a dotaz sa číta ako SQL:
import { drizzle } from 'drizzle-orm/d1'
import * as schema from './schema'
const createDb = () => drizzle(env.DB, { schema })
const [total] = await ctx.db.select({ count: count() }).from(record)
Pri novej práci rozhodli tri dôvody:
Prostredie. Cieľom boli D1 a Workers. Drizzle sa pripojí cez import { drizzle } from 'drizzle-orm/d1' (Drizzle a D1).
Agent číta schému priamo. AI dnes píše všetok náš kód a za produkciu ručí senior. Schéma v TypeScripte je obyčajný kód: agent ju upraví, typová kontrola hneď chytí zlý stĺpec a nie je tu vygenerovaný klient, ktorý by niekto zabudol pregenerovať.
Migrácie sú SQL v PR. Kto robí review, vidí presný ALTER TABLE, nie diff súboru s modelom.
Prihlasovanie používa tú istú databázu. Better Auth sa pripojí cez drizzleAdapter(db, { provider: 'sqlite' }), takže používatelia a sessions sú obyčajné tabuľky vedľa tabuliek aplikácie.
Ako sa zmena schémy dostane do produkcie?
Zmena ide v každej novej aplikácii rovnako. Nikto nespúšťa SQL ručne proti produkcii.
01
Zmena schémy v TypeScripte
Pridáte stĺpec alebo tabuľku v packages/db/src/schema. Typová kontrola označí každý dotaz, ktorý už nesedí.
02
Vygenerovanie migrácie
drizzle-kit generate zapíše očíslovaný SQL súbor do packages/db/src/migrations.
03
Review SQL v PR
Zmena schémy a SQL súbor idú spolu, takže reviewer číta skutočný príkaz.
04
Nasadenie ju spustí na D1
Náš kód infraštruktúry nasmeruje D1 na priečinok s migráciami a pri nasadení spustí nové súbory.
Strana nasadenia je v našom kóde infraštruktúry, v TypeScripte s Alchemy:
// packages/infra/alchemy.run.ts (skrátené)
const db = await D1Database('database', {
migrationsDir: '../../packages/db/src/migrations',
})
const web = await TanStackStart('web', {
cwd: '../../apps/web',
bindings: { DB: db },
})
Jeden priečinok SQL súborov je celá história databázy. Aj vďaka tomu je odovzdanie čitateľné pre ďalšieho inžiniera.
Kde Prisma stále vyhráva a prečo ju nechávame?
Viacero starších klientskych aplikácií beží na Prisme a Postgres, cez niekoľko hlavných verzií Prismy. Jednou z nich je systém pre špedičnú firmu, ktorý sme postavili a prevádzkujeme. Väčšina má klasické nastavenie: prisma-client-js, NextAuth s adaptérom pre Prismu a prisma migrate deploy v build skripte, takže každé nasadenie najprv dorovná databázu a až potom spustí next build.
Toto nastavenie funguje. Jazyk modelov v Prisme sa dobre číta aj človeku, ktorý nepíše SQL každý deň, a jej postup migrácií je vyzretý. Z aplikácie, ktorá dobre slúži používateľom, ju nemáme dôvod vyhadzovať.
Výmena ORM zasiahne naraz každý dotaz, každý test a každú migráciu a používateľ neuvidí nič nové. Toto riziko sa oplatí, len keď ho vynúti niečo iné, napríklad presun na Workers. Keď preberáme staršiu aplikáciu, ORM býva málokedy to prvé, čo treba opraviť. Ako vyberáme, čo ide prvé, píšeme v článku Technický dlh brzdí vývoj: ako ho zmerať a čo riešiť prvé.
Ešte jedna úprimná poznámka: online marketplace jedného klienta beží na MongoDB s Mongoose, takže tam nie je ani jedno z týchto ORM.
Čo zmenila Prisma 7?
Veľa porovnaní „Drizzle vs Prisma“ sa ešte stále háda o binárku Rust enginu. Tento argument už slabne. Prisma ORM 7 vyšla 19. 11. 2025 a v changelogu stojí „Rust-free Prisma Client as the default“ (Prisma changelog, overené 24. 10. 2026). Návod na upgrade hovorí:
Upgrade to the new prisma-client provider which uses the new Rust-free client.
Ten istý návod hovorí, že driver adapter je teraz povinný pre každú databázu. Prisma 7 teda beží aj na Workers a na D1 cez @prisma/adapter-d1. Stránka Prismy o D1 pridáva upozornenie, ktoré platí pre každé ORM: D1 nepodporuje transakcie, takže „implicit & explicit transactions will be ignored and run as individual queries“ (Prisma a Cloudflare D1, overené 24. 10. 2026).
Úprimne: Drizzle proti Prisme 7 sme nemerali a Prismu 7 na D1 sme zatiaľ nepoužili. Väčšina našich aplikácií s Prismou je ešte na prisma-client-js, nový generátor prisma-client už používa len tá najnovšia. Ak ich dnes porovnávate, porovnávajte s Prismou 7, nie s verziou zo starých blogov.
Drizzle, alebo Prisma pre vašu ďalšiu aplikáciu?
Prejdite si body. Čím viac z nich u vás platí, tým lepšie sedí Drizzle:
Chcete webovú aplikáciu s dátovou vrstvou, ktorú prečíta aj ďalší inžinier?
Webové aplikácie staviame na tomto stacku, pri novej práci Drizzle na D1, a aplikácie s Prismou preberáme bez prepisovania toho, čo funguje: vývoj webových aplikácií na mieru. AI dnes píše všetok náš kód a za výsledok ručí senior. Od roku 2023 sme dodali 15+ produkčných projektov.
Ozveme sa do dvoch pracovných dní a spolu vyberieme, čo vyriešime ako prvé.
Všeobecne nie je lepší ani jeden. Drizzle sedí serverless a edge prostrediam ako Cloudflare Workers s D1, schému drží v čistom TypeScripte a je blízko SQL. Prisma sedí tímom, ktoré chcú vyšší klient, vlastný postup migrácií a nástroje ako Prisma Studio, typicky na Postgres.
Potrebuje Prisma ešte binárku Rust enginu?
Od verzie Prisma ORM 7 z 19. 11. 2025 už nie. Nový generátor prisma-client používa klienta bez Rustu a pre každú databázu potrebuje driver adapter. Aplikácie na prisma-client-js s Prismou 5 alebo 6 používajú Rust engine predvolene.
Dá sa Prisma použiť s Cloudflare D1?
Áno, cez driver adapter @prisma/adapter-d1. Dokumentácia Prismy upozorňuje, že D1 nepodporuje transakcie, takže implicitné aj explicitné transakcie bežia ako samostatné dotazy. Tento limit D1 platí pre každé ORM.
Máme fungujúcu aplikáciu s Prismou prepísať na Drizzle?
Väčšinou nie. Prepis dátovej vrstvy vo fungujúcej aplikácii nesie skutočné riziko a používateľom nedá nič nové. Na Drizzle prechádzame pri novej aplikácii alebo keď sa mení prostredie, napríklad na Cloudflare Workers.
Ako fungujú migrácie v Drizzle?
Schému zmeníte v TypeScripte, drizzle-kit generate zapíše čistý SQL súbor s migráciou a ten sa spustí pri nasadení. U nás ide SQL súbor cez code review v tom istom PR ako zmena schémy.
Opýtajte sa AI na tento článok
AI pri odpovedi využije aj naše ďalšie články a skúsenosti z reálnych projektov.
Claude Code pricing podľa verejného cenníka Anthropicu (október 2026): Pro, Max, miesta v Team pláne, Enterprise a API tokeny. Čo sedí vývojárom, na čom beží AI agent a reviewer v CI a aké poistky zastavia agenta na pozadí, aby neminul rozpočet.
Vercel sme nenahradili, prácu sme rozdelili. Next.js weby ostávajú na Verceli, nové aplikácie bežia na Cloudflare Workers a D1, deklarované v TypeScripte cez Alchemy. Ceny so zdrojmi, naša konfigurácia a blokovaný deploy od AI agenta.
Better Auth vs Clerk sa rozhoduje podľa toho, kde žijú vaši používatelia a session. Z NextAuth sme v nových aplikáciách prešli na Better Auth a Clerk sme si nevybrali. Naša reálna konfigurácia, pluginy v produkcii, cenník Clerku a kedy je Clerk lepšia voľba.