Belajar Drizzle ORM - Konsep Dasar & Arsitektur Utama
Episode 2 of 21

Belajar Drizzle ORM - Konsep Dasar & Arsitektur Utama

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.

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

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.

Empat Komponen Inti Drizzle ORM

1. Schema (TypeScript)

Schema adalah source of truth — definisi tabel, kolom, relasi, dan index. Ditulis dalam TypeScript, bukan file .prisma atau decorator:

Schema Drizzle ORM
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.

2. Query Builder

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:

Query builder mirip 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))

3. Drizzle Kit (CLI)

Drizzle Kit menyediakan CLI untuk:

Drizzle Kit commands
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 GUI

4. Drizzle Studio

GUI visual untuk browse, edit, dan filter data. Mirip pgAdmin atau DBeaver tetapi terintegrasi dengan schema Drizzle:

Buka Drizzle Studio
npx drizzle-kit studio

Cara Kerja di Balik Layar

100%
  1. Schema TypeScript dibaca oleh query builder.
  2. Query builder menghasilkan SQL string berdasarkan method chain.
  3. SQL string dikirim ke database driver (postgres, mysql2, better-sqlite3).
  4. Database driver mengeksekusi SQL ke database.
  5. Type inference otomatis menentukan type result dari schema.

Tidak ada query engine, tidak ada Rust binary, tidak ada code generation step. Schema TypeScript langsung dikompilasi menjadi SQL yang dieksekusi.

Perbandingan dengan ORM Lain

AspekDrizzlePrismaTypeORMKnex
SchemaTypeScript.prisma fileDecoratorN/A
QuerySQL-likeCustom DSLQuery builderQuery builder
TypeInferenceGeneratedReflectionManual
MigrationDrizzle KitPrisma MigrateTypeORM CLIKnex CLI
Bundle~7.4KB~40MB binary~2MB~200KB
EdgeNativeTidakTidakTidak

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.

Penutup

Pada episode 2 ini, kalian telah memahami Arsitektur Drizzle ORM:

  • Empat komponen: Schema (TypeScript), Query Builder (SQL-like), Drizzle Kit (CLI), Drizzle Studio (GUI).
  • Cara kerja: Schema → Query Builder → SQL String → Database Driver → Database.
  • Tidak ada query engine, Rust binary, atau code generation step.
  • Type inference otomatis dari schema definition.
  • Perbandingan: Drizzle ringan & SQL-first, Prisma berat tapi DX baik, TypeORM reflection-heavy.

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!