Digital Transformation
Drizzle (ORM TypeScript)
TL;DR: Drizzle adalah ORM (Object Relational Mapper) untuk TypeScript yang membiarkan developer menulis query dengan sintaks sangat mirip SQL, sambil tetap mendapat pengecekan tipe otomatis. Ukurannya kecil dan tidak memerlukan proses generate biner terpisah, sehingga populer untuk aplikasi Next.js yang berjalan di lingkungan serverless dan edge.
Apa itu Drizzle?
ORM adalah lapisan penerjemah antara kode aplikasi dan basis data. Alih-alih menulis string SQL mentah, developer memanggil fungsi dalam bahasa pemrogramannya, lalu ORM menyusun query yang sebenarnya. Drizzle mengambil posisi yang agak berbeda dari ORM konvensional: alih-alih menyembunyikan SQL, Drizzle sengaja meniru bentuknya. Query db.select().from(users).where(eq(users.id, 1)) terbaca hampir seperti SELECT * FROM users WHERE id = 1.
Skema tabel dideklarasikan langsung dalam file TypeScript. Dari deklarasi itu, tipe data hasil query tersedia otomatis tanpa langkah kompilasi tambahan. Pendekatan ini berbeda dari Prisma, yang memakai file skema tersendiri dan menghasilkan client melalui proses generate.
Bagi tim yang sudah menetapkan TypeScript dalam tech stack-nya, biaya belajar Drizzle relatif rendah karena tidak ada bahasa skema baru yang harus dikuasai.
Drizzle dibanding ORM Lain
| Aspek | Drizzle | ORM berbasis skema terpisah |
|---|---|---|
| Definisi skema | File TypeScript biasa | File skema khusus (DSL) |
| Langkah build | Tidak perlu generate client | Perlu generate sebelum dipakai |
| Ukuran bundle | Ringan, ramah edge runtime | Umumnya lebih besar |
| Gaya query | Menyerupai SQL | Abstraksi berlapis |
| Kurva belajar | Ringan jika sudah paham SQL | Ringan jika belum paham SQL |
Drizzle juga menyediakan Drizzle Kit untuk mengelola migrasi skema, serta Drizzle Studio sebagai antarmuka visual untuk melihat isi tabel.
Kenapa Penting?
Untuk aplikasi web Indonesia yang di-deploy di platform serverless, ukuran dan waktu cold start bukan detail sepele. Fungsi serverless yang membawa dependensi besar butuh waktu lebih lama untuk bangun dari kondisi idle, dan penundaan itu langsung terasa pada halaman yang mengambil data di sisi server.
Yang perlu dipertimbangkan: menyerupai SQL berarti developer tetap harus memahami dasar basis data, termasuk kapan sebuah database index diperlukan dan bagaimana connection pooling memengaruhi jumlah koneksi terbuka. Drizzle tidak menghilangkan kebutuhan itu, hanya membuat query lebih transparan. Dokumentasi resminya tersedia di orm.drizzle.team.
Pertanyaan Umum
Apakah Drizzle bisa dipakai dengan Supabase?
Bisa. Supabase menggunakan PostgreSQL, salah satu basis data yang didukung Drizzle. Koneksi dilakukan lewat connection string PostgreSQL seperti aplikasi Postgres lainnya.
Apakah harus mengganti ORM lama ke Drizzle?
Tidak otomatis. Migrasi ORM adalah pekerjaan besar yang menyentuh hampir seluruh lapisan data. Pertimbangkan hanya jika ada masalah nyata, misalnya ukuran bundle yang mengganggu di edge runtime, bukan karena tren.
Apakah Drizzle mendukung basis data selain PostgreSQL?
Ya. Selain PostgreSQL, Drizzle mendukung MySQL dan SQLite, termasuk beberapa varian yang berjalan di lingkungan edge.