Driver options untuk PostgreSQL (postgres, pg, Neon, Vercel Postgres), MySQL (mysql2, PlanetScale), dan SQLite (better-sqlite3, libSQL/Turso), Cloudflare D1 edge-native setup, Neon serverless over WebSocket, Turso libSQL at edge, serta connection pooling untuk serverless dan traditional environments.

Setelah di episode 16 kita mempelajari Zod Integration — validasi input dengan drizzle-zod — pada episode ini kita membahas database drivers: pilihan driver untuk setiap database dan dukungan serverless/edge.
Salah satu keunggulan utama Drizzle ORM adalah kompatibilitas dengan berbagai driver dan platform. Memilih driver yang tepat sangat penting untuk performance dan compatibility.
| Driver | Tipe | Use Case |
|---|---|---|
postgres | Native | Recommended — performance terbaik |
pg | JavaScript | Legacy, alternatif |
@neondatabase/serverless | WebSocket | Neon serverless |
@vercel/postgres | HTTP | Vercel serverless |
import { drizzle } from 'drizzle-orm/postgres-js'
import postgres from 'postgres'
const client = postgres(process.env.DATABASE_URL!)
const db = drizzle(client)| Driver | Tipe | Use Case |
|---|---|---|
mysql2 | Native | Recommended |
@planetscale/database | HTTP | PlanetScale serverless |
| Driver | Tipe | Use Case |
|---|---|---|
better-sqlite3 | Native | Local, development |
@libsql/client | HTTP/WebSocket | Turso/D1 edge |
D1 adalah SQLite-compatible database dari Cloudflare yang berjalan di edge:
import { drizzle } from 'drizzle-orm/d1'
// D1 binding dari Workers environment
export default {
async fetch(request: Request, env: Env) {
const db = drizzle(env.DB)
const users = await db.select().from(usersTable)
return Response.json(users)
},
}D1 adalah edge-native — cold start sangat cepat, berjalan di 300+ locations global.
Neon adalah PostgreSQL over WebSocket — compatible dengan edge:
import { drizzle } from 'drizzle-orm/neon-http'
import { neon } from '@neondatabase/serverless'
const sql = neon(process.env.DATABASE_URL!)
const db = drizzle(sql)Neon menyediakan branching (database branches) dan autoscaling — production-ready untuk serverless.
Turso adalah SQLite at the edge — global distribution:
import { drizzle } from 'drizzle-orm/libsql'
import { createClient } from '@libsql/client'
const client = createClient({
url: process.env.TURSO_DATABASE_URL!,
authToken: process.env.TURSO_AUTH_TOKEN!,
})
const db = drizzle(client)Turso menggunakan embedded replicas — read queries dilayani dari local replica, write dikirim ke primary.
Driver serverless (Neon, Turso, D1) sudah handle pooling — tidak perlu konfigurasi tambahan.
import postgres from 'postgres'
const client = postgres(process.env.DATABASE_URL!, {
max: 20, // Maximum connections
idle_timeout: 20, // Close idle connections
connect_timeout: 10, // Connection timeout
})Tip
Untuk serverless (Lambda, Vercel Functions), gunakan driver yang mendukung HTTP/WebSocket: postgres (HTTP mode), @neondatabase/serverless, atau @libsql/client. Hindari better-sqlite3 di serverless karena tidak persisten.
Pada episode 17 ini, kalian telah memahami Database Drivers & Serverless:
postgres (recommended), pg, Neon, Vercel Postgres.mysql2 (recommended), PlanetScale.better-sqlite3 (local), libSQL/Turso (edge).Di episode 18 selanjutnya kita akan mempelajari Testing dengan In-Memory SQLite — setup test database, unit testing queries, dan integration testing. Sampai jumpa di episode 18!