Masalah ORM tradisional: Prisma dengan Rust binary engine yang berat, TypeORM decorator-heavy, Sequelize loose typing, serta evolusi ORM TypeScript dari TypeORM ke Prisma hingga Drizzle ORM yang SQL-first, ringan (~7.4KB), zero dependencies, dan edge-native untuk serverless.

Setelah di episode 0 kita menyiapkan environment — TypeScript, SQL dasar, dan perangkat development — pada episode ini kita memahami mengapa Drizzle ORM ada. Seperti halnya branching strategy di Git, memahami masalah yang diselesaikan Drizzle akan membantu kalian memilih kapan menggunakannya dan bagaimana memanfaatkannya secara optimal.
Drizzle ORM tidak lahir dari keinginan membuat "ORM yang lebih keren" — ia lahir dari kebutuhan nyata: edge computing membutuhkan ORM yang ringan, cepat, dan tidak bergantung pada binary engine yang berat.
Prisma populer dan memiliki DX (Developer Experience) yang sangat baik — Auto-complete untuk query, migration yang mudah, dan documentation lengkap. Tetapi Prisma memiliki kelemahan fundamental:
TypeORM menggunakan decorators dan runtime reflection — pendekatan yang terinspirasi dari Java ORM. Masalahnya:
Sequelize adalah ORM paling tua di ekosistem Node.js. Tetapi:
| Tahun | ORM | Pendekatan |
|---|---|---|
| 2017 | TypeORM | Reflection-based, decorator-heavy |
| 2019 | Prisma | Schema file .prisma, Rust engine |
| 2022 | Drizzle ORM | Schema TypeScript, SQL-first, zero deps |
Evolusi ini mengikuti tren industri: dari reflection-based → custom DSL → SQL-first. Edge computing (Cloudflare Workers 2019, Vercel Edge 2023) menjadi pemicu utama lahirnya Drizzle — developer membutuhkan ORM yang bisa berjalan di lingkungan yang sangat resource-constrained.
npm info drizzle-orm dist.unpackedSize
# ~7.4KB min+gzip, zero dependencies7.4KB jauh lebih kecil dibanding Prisma (~40MB binary) atau TypeORM (~2MB + dependencies).
"If you know SQL, you know Drizzle" — tidak ada custom DSL yang perlu dipelajari. Query Drizzle terlihat seperti SQL:
const users = await db.select().from(usersTable).where(eq(usersTable.age, 25))Developer yang sudah menguasai SQL langsung nyaman dengan Drizzle.
Schema adalah TypeScript, bukan file .prisma atau decorator. Type inference otomatis dari schema definition:
export const users = pgTable('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
})
// Type inference otomatis
type User = typeof users.$inferSelect // { id: number; name: string }Drizzle berjalan di mana pun JavaScript berjalan: Node.js, Bun, Deno, Cloudflare Workers, Vercel Edge. Tidak ada binary engine, tidak ada native dependencies.
# 50ms cold start di Lambda (vs 500ms+ Prisma)
# No query engine overhead
# Generated SQL langsung dieksekusiNote
Drizzle bukan pengganti Prisma untuk semua use case. Prisma masih unggul di DX (developer experience) untuk tim yang baru belajar ORM. Drizzle unggul di performance, bundle size, dan edge compatibility. Pilih berdasarkan kebutuhan, bukan hype.
Pada episode 1 ini, kalian telah memahami mengapa Drizzle ORM ada:
Di episode 2 selanjutnya kita akan mempelajari konsep dasar dan arsitektur utama Drizzle ORM — schema, query builder, Drizzle Kit, dan Drizzle Studio sebagai empat komponen inti. Sampai jumpa di episode 2!