Skip to main content

Command Palette

Search for a command to run...

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

Updated
β€’3 min read
πŸ” Mengenal Drizzle ORM: Alternatif Prisma dan pg yang Ringan dan Type-Safe
A

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:

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)
BahasaTypeScriptTypeScriptJavaScript/TypeScript
Type Safetyβœ… Sangat bagusβœ… Sangat bagus❌ Manual
Pendekatan ORMSQL-like builderAbstraksi tinggiRaw 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 CaseRekomendasi
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

KebutuhanTools Ideal
Fullstack dengan Next.jsDrizzle + Neon + Vercel
Aplikasi skala besarPrisma + PostgreSQL
Tool CLI / bot sederhanapg langsung

More from this blog

F

Finlup ID | Sharing dunia teknologi dan coding

215 posts

Membedah Tren dan Teknologi yang Mengubah Dunia.