Empat komponen inti Drizzle ORM: Schema (TypeScript) sebagai source of truth, Query Builder SQL-like, Drizzle Kit CLI untuk migrations & studio, serta cara kerja di balik layar: schema TypeScript dibaca query builder, menghasilkan SQL string, dieksekusi ke database tanpa query engine.

Setelah di episode 2 kita memahami mengapa Drizzle ORM ada — masalah ORM tradisional dan keunggulan Drizzle — pada episode ini kita membedah arsitektur utama Drizzle ORM: empat komponen yang membentuk ekosistem Drizzle dan cara kerjanya di balik layar.
Memahami arsitektur penting karena setiap keputusan desain Drizzle — dari schema TypeScript hingga zero dependencies — berakar pada arsitektur ini.
Schema adalah source of truth — definisi tabel, kolom, relasi, dan index. Ditulis dalam TypeScript, bukan file .prisma atau decorator:
import { pgTable, serial, text, integer } from 'drizzle-orm/pg-core'
export const users = pgTable('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
email: text('email').notNull().unique(),
age: integer('age'),
})Schema ini berfungsi ganda: sebagai definisi database dan sebagai type definition TypeScript. Tidak ada file terpisah untuk types — schema langsung menghasilkan type.
Query builder adalah API SQL-like yang menghasilkan SQL queries. Berbeda dari ORM lain yang punya custom DSL, query builder Drizzle terasa seperti menulis SQL:
import { eq, gt } from 'drizzle-orm'
// SELECT
const allUsers = await db.select().from(users)
const user = await db.select().from(users).where(eq(users.id, 1))
// INSERT
await db.insert(users).values({ name: 'John', email: 'john@example.com' })
// UPDATE
await db.update(users).set({ name: 'Jane' }).where(eq(users.id, 1))
// DELETE
await db.delete(users).where(eq(users.id, 1))Drizzle Kit menyediakan CLI untuk:
npx drizzle-kit generate # Generate migration SQL dari schema
npx drizzle-kit push # Push schema langsung ke database
npx drizzle-kit migrate # Apply migrations ke database
npx drizzle-kit introspect # Generate schema dari database existing
npx drizzle-kit studio # Buka Drizzle Studio GUIGUI visual untuk browse, edit, dan filter data. Mirip pgAdmin atau DBeaver tetapi terintegrasi dengan schema Drizzle:
npx drizzle-kit studioTidak ada query engine, tidak ada Rust binary, tidak ada code generation step. Schema TypeScript langsung dikompilasi menjadi SQL yang dieksekusi.
| Aspek | Drizzle | Prisma | TypeORM | Knex |
|---|---|---|---|---|
| Schema | TypeScript | .prisma file | Decorator | N/A |
| Query | SQL-like | Custom DSL | Query builder | Query builder |
| Type | Inference | Generated | Reflection | Manual |
| Migration | Drizzle Kit | Prisma Migrate | TypeORM CLI | Knex CLI |
| Bundle | ~7.4KB | ~40MB binary | ~2MB | ~200KB |
| Edge | Native | Tidak | Tidak | Tidak |
Tip
Jika kalian sudah menguasai SQL, Drizzle akan terasa alami — querynya mirip SQL. Jika kalian terbiasa dengan Prisma, ada kurva belajar kecil untuk beralih ke pola SQL-like. Tetapi setelah terbiasa, banyak developer merasa Drizzle lebih intuitif.
Pada episode 2 ini, kalian telah memahami Arsitektur Drizzle ORM:
Di episode 3 selanjutnya kita akan mempelajari Setup Proyek & Konfigurasi Pertama — instalasi Drizzle ORM, konfigurasi drizzle.config.ts, inisialisasi database connection, dan menjalankan Drizzle Kit untuk pertama kali. Sampai jumpa di episode 3!