# Drizzle ORM คืออะไร? คู่มือใช้ Drizzle ORM กับ Next.js และ PostgreSQL สำหรับนักพัฒนา SME ปี 2026
ถ้าคุณเป็นนักพัฒนา Next.js ที่กำลังมองหา ORM ที่เร็ว เบา และ Type-Safe เต็มรูปแบบ Drizzle ORM คือคำตอบที่หลายทีมในปี 2026 หันมาใช้แทน Prisma กันมากขึ้น บทความนี้จะพาคุณรู้จัก Drizzle ORM ตั้งแต่พื้นฐาน ไปจนถึงการ Setup และใช้งานจริงกับ Next.js App Router และ PostgreSQL
สำหรับธุรกิจ SME ที่กำลังพัฒนาระบบ Web Application ด้วย Next.js ปัญหาหลักที่มักเจอคือ ORM ที่ทำงานช้า หรือ Generate Code ที่ขนาดใหญ่เกินไป ทำให้ Performance ของ Serverless Function ลดลง Drizzle ORM แก้ปัญหาเหล่านี้ได้อย่างตรงจุด ด้วย Bundle Size ที่เล็กมากและ Query Speed ที่ใกล้เคียง Raw SQL
ในบทความนี้ คุณจะได้เรียนรู้: Drizzle ORM คืออะไร, เปรียบเทียบกับ Prisma, วิธี Setup กับ Next.js + PostgreSQL, การทำ Schema, Migration และ Query ขั้นพื้นฐานจนถึงขั้นสูง
Drizzle ORM คืออะไร?
Drizzle ORM คือ TypeScript ORM (Object-Relational Mapping) สำหรับ Node.js และ Edge Runtime ที่ออกแบบมาให้มี Type-Safety 100% โดยไม่ต้องพึ่ง Code Generation ข้อดีหลักของ Drizzle คือ:
ทำไม Drizzle ORM ถึงได้รับความนิยมในปี 2026?
จากสถิติ npm downloads ในปี 2025-2026 Drizzle ORM มีอัตราการเติบโตสูงกว่า 200% ต่อปี เนื่องจากนักพัฒนาต้องการ ORM ที่รองรับ Next.js App Router และ Server Components ได้ดีกว่า Prisma ซึ่งมีข้อจำกัดใน Edge Runtime
เปรียบเทียบ Drizzle ORM vs Prisma vs TypeORM
| คุณสมบัติ | Drizzle ORM | Prisma | TypeORM |
|-----------|-------------|--------|---------|
| Type Safety | ✅ Excellent | ✅ Good | ⚠️ Partial |
| Bundle Size | ✅ ~30KB | ❌ ~2MB+ | ⚠️ ~500KB |
| Edge Runtime | ✅ รองรับ | ⚠️ จำกัด | ❌ ไม่รองรับ |
| Schema Definition | TypeScript | Prisma Schema | Decorator |
| Migration | Built-in | Built-in | Built-in |
| Query Builder | SQL-Like | Prisma Client | Query Builder |
| เหมาะกับ | Next.js / Edge | Full-Stack Apps | Express / NestJS |
| Learning Curve | ปานกลาง | ง่าย | ยาก |
จากตารางด้านบน Drizzle ORM เหมาะที่สุดสำหรับโปรเจกต์ Next.js ที่ต้องการ Performance สูงและรองรับ Edge Deployment
การติดตั้ง Drizzle ORM กับ Next.js + PostgreSQL
ขั้นตอนที่ 1: ติดตั้ง Dependencies
เริ่มต้นด้วยการติดตั้ง Package ที่จำเป็น:
```bash
npm install drizzle-orm postgres
npm install -D drizzle-kit
```
ขั้นตอนที่ 2: สร้าง Database Connection
สร้างไฟล์ `src/lib/db.ts`:
```typescript
import { drizzle } from 'drizzle-orm/postgres-js';
import postgres from 'postgres';
const connectionString = process.env.DATABASE_URL!;
const client = postgres(connectionString);
export const db = drizzle(client);
```
ขั้นตอนที่ 3: กำหนด Schema
สร้างไฟล์ `src/db/schema.ts`:
```typescript
import { pgTable, serial, text, timestamp, boolean, integer } from 'drizzle-orm/pg-core';
export const users = pgTable('users', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
email: text('email').notNull().unique(),
createdAt: timestamp('created_at').defaultNow(),
isActive: boolean('is_active').default(true),
});
export const products = pgTable('products', {
id: serial('id').primaryKey(),
name: text('name').notNull(),
price: integer('price').notNull(),
userId: integer('user_id').references(() => users.id),
createdAt: timestamp('created_at').defaultNow(),
});
```
ขั้นตอนที่ 4: ตั้งค่า drizzle.config.ts
```typescript
import { defineConfig } from 'drizzle-kit';
export default defineConfig({
schema: './src/db/schema.ts',
out: './drizzle',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL!,
},
});
```
ขั้นตอนที่ 5: รัน Migration
```bash
npx drizzle-kit generate
npx drizzle-kit migrate
```
การใช้งาน Drizzle ORM ใน Next.js Server Actions
การ Query ข้อมูล (SELECT)
```typescript
// ดึงข้อมูล users ทั้งหมด
const allUsers = await db.select().from(users);
// ดึงข้อมูลแบบมีเงื่อนไข
import { eq, and, gt } from 'drizzle-orm';
const activeUsers = await db
.select()
.from(users)
.where(and(eq(users.isActive, true), gt(users.id, 10)))
.limit(20)
.offset(0);
```
การเพิ่มข้อมูล (INSERT)
```typescript
const newUser = await db
.insert(users)
.values({
name: 'สมชาย ใจดี',
email: 'somchai@example.com',
isActive: true,
})
.returning();
```
การอัปเดตข้อมูล (UPDATE)
```typescript
await db
.update(users)
.set({ isActive: false })
.where(eq(users.id, 1));
```
การลบข้อมูล (DELETE)
```typescript
await db.delete(users).where(eq(users.id, 1));
```
Drizzle Studio: เครื่องมือจัดการ Database แบบ GUI
หนึ่งในฟีเจอร์เด่นของ Drizzle คือ Drizzle Studio ซึ่งเป็น GUI สำหรับดูและแก้ไขข้อมูลใน Database โดยรันด้วยคำสั่ง:
```bash
npx drizzle-kit studio
```
แล้วเปิดเบราว์เซอร์ไปที่ `https://local.drizzle.studio` คุณจะเห็น Interface ที่ใช้งานง่าย คล้ายกับ Prisma Studio แต่เร็วกว่าและเบากว่า
ตัวอย่างการใช้งานจริงใน Next.js App Router
Server Action สำหรับสร้าง User
```typescript
// app/actions/user.ts
'use server';
import { db } from '@/lib/db';
import { users } from '@/db/schema';
import { revalidatePath } from 'next/cache';
export async function createUser(formData: FormData) {
const name = formData.get('name') as string;
const email = formData.get('email') as string;
await db.insert(users).values({ name, email });
revalidatePath('/users');
}
```
API Route สำหรับดึงข้อมูล
```typescript
// app/api/users/route.ts
import { NextResponse } from 'next/server';
import { db } from '@/lib/db';
import { users } from '@/db/schema';
export async function GET() {
const allUsers = await db.select().from(users);
return NextResponse.json(allUsers);
}
```
เปรียบเทียบ Performance: Drizzle vs Prisma
| Benchmark | Drizzle ORM | Prisma |
|-----------|-------------|--------|
| Cold Start (Edge) | ~5ms | ~200ms+ |
| Bundle Size | ~30KB | ~2MB+ |
| Simple SELECT | ~0.3ms | ~0.8ms |
| Complex JOIN | ~1.2ms | ~2.5ms |
| Memory Usage | ต่ำมาก | สูงกว่า |
ตัวเลข Benchmark เหล่านี้แสดงให้เห็นว่า Drizzle ORM เหมาะกับ Serverless และ Edge Environment เป็นอย่างยิ่ง
สรุปและแนะนำการเริ่มต้น
Drizzle ORM เป็นตัวเลือกที่ยอดเยี่ยมสำหรับนักพัฒนา Next.js ที่ต้องการ:
สำหรับ SME ที่กำลัง Build ระบบด้วย Next.js + PostgreSQL แนะนำให้ลองใช้ Drizzle ORM ในโปรเจกต์ใหม่ โดยเฉพาะถ้าต้องการ Deploy บน Vercel หรือ Edge Environment
ต้องการให้ทีม ADS FIT ช่วยพัฒนาระบบด้วย Next.js + Drizzle ORM? ติดต่อเราได้เลยเพื่อรับคำปรึกษาฟรี หรืออ่านบทความอื่นๆ เกี่ยวกับ Development บนเว็บของเรา
