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

I am an enthusiastic researcher and developer with a passion for using technology to innovate in business and education.
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 |




