🔍 Mengenal Drizzle ORM: Alternatif Prisma dan pg yang Ringan dan Type-Safe


Dalam dunia pengembangan aplikasi Node.js, developer biasanya dihadapkan pada pilihan tools untuk berinteraksi dengan database PostgreSQL. Tiga nama populer saat ini adalah:
pg
(alias node-postgres)
Drizzle adalah pendatang baru, tapi mulai menarik perhatian karena ringan, cepat, dan type-safe tanpa banyak magic. Mari kita bahas dan bandingkan ketiganya.
🧱 1. Apa itu Drizzle?
Drizzle ORM adalah ORM modern untuk TypeScript yang memanfaatkan type inference dari definisi schema secara langsung di kode TypeScript-mu. Ia memberikan pengalaman seperti Prisma, tetapi lebih dekat ke SQL dan tidak bergantung pada runtime generator atau query engine tersendiri.
📊 Perbandingan Drizzle vs Prisma vs pg
Fitur | 🧪 Drizzle ORM | 🎯 Prisma ORM | 🧱 node-postgres (pg ) |
Bahasa | TypeScript | TypeScript | JavaScript/TypeScript |
Type Safety | ✅ Sangat bagus | ✅ Sangat bagus | ❌ Manual |
Pendekatan ORM | SQL-like builder | Abstraksi tinggi | Raw SQL |
Auto migration | 🟡 Terbatas (drizzle-kit ) | ✅ Lengkap | ❌ Manual |
Query Performance | ✅ Cepat & langsung ke DB | 🟡 Kadang lambat (pakai query engine) | ✅ Cepat |
Bundle size (client) | ✅ Kecil | ❌ Besar (banyak dep) | ✅ Ringan |
Query Runtime | ✅ SQL langsung | ❌ Query engine terpisah | ✅ SQL langsung |
Belajar dari awal | 🟢 Mudah untuk dev SQL-savvy | 🟢 Mudah secara umum | 🔴 Sulit (butuh raw SQL) |
Kompatibilitas serverless | ✅ Cocok | 🟡 Hati-hati (masalah cold start) | ✅ Aman |
💻 Contoh Kode
1. Drizzle (PostgreSQL)
// schema.ts
import { pgTable, serial, text } from 'drizzle-orm/pg-core';
export const users = pgTable('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
});
// query
const usersList = await db.select().from(users);
2. Prisma
// schema.prisma
model User {
id Int @id @default(autoincrement())
name String
}
// query
const users = await prisma.user.findMany();
3. pg (node-postgres)
const client = new Client();
await client.connect();
const res = await client.query('SELECT * FROM users');
const users = res.rows;
🚀 Kapan Pakai Masing-Masing?
Use Case | Rekomendasi |
Butuh kontrol penuh, suka SQL | ✅ Drizzle atau pg |
Pengin productivity dan auto-gen | ✅ Prisma |
Ingin bundle kecil (misal di Edge) | ✅ Drizzle |
Legacy project atau full raw SQL | ✅ pg |
Butuh relasi kompleks & dokumentasi lengkap | ✅ Prisma |
🔍 Keunggulan Drizzle
✅ Zero-runtime: Tidak ada kode aneh saat build atau generate.
✅ Sangat ringan dan cepat untuk deploy di Edge/serverless.
✅ Tipe langsung dari schema, tanpa generate tambahan.
✅ Migration cukup dari CLI
drizzle-kit
.
⚠️ Keterbatasan Drizzle
🟡 Masih baru, ekosistem belum seluas Prisma.
🟡 Belum mendukung banyak fitur advanced seperti Prisma relation resolver atau middleware bawaan.
🟡 Tidak ada “visual Studio” atau dashboard UI.
💬 Kesimpulan
Drizzle cocok untuk:
Developer yang mengutamakan kecepatan, ringan, dan kontrol SQL.
Project modern dengan kebutuhan bundle kecil, serverless, atau Edge.
Pengganti Prisma untuk proyek yang mulai “terlalu berat”.
Prisma cocok untuk:
Developer yang suka productivity tinggi dengan fitur seperti
prisma studio
, relasi otomatis, dan banyak plugin.Tim besar yang butuh dokumentasi dan kontrol data modeling visual.
pg cocok untuk:
- Developer expert SQL, atau saat ingin performa maksimal tanpa ORM sama sekali.
🛠 Rekomendasi Praktek
Kebutuhan | Tools Ideal |
Fullstack dengan Next.js | Drizzle + Neon + Vercel |
Aplikasi skala besar | Prisma + PostgreSQL |
Tool CLI / bot sederhana | pg langsung |
Subscribe to my newsletter
Read articles from Ariska Hidayat directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Ariska Hidayat
Ariska Hidayat
I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.