Development

Drizzle ORM คืออะไร? คู่มือใช้ Drizzle ORM กับ Next.js และ PostgreSQL สำหรับนักพัฒนา SME ปี 2026

เรียนรู้ Drizzle ORM ตั้งแต่พื้นฐานจนใช้งานจริงกับ Next.js และ PostgreSQL พร้อม Type-Safety เต็มรูปแบบ เปรียบเทียบกับ Prisma และวิธี Setup สำหรับนักพัฒนา SME ไทยปี 2026

AF
ADS FIT Team
·8 นาที
Share:
Drizzle ORM คืออะไร? คู่มือใช้ Drizzle ORM กับ Next.js และ PostgreSQL สำหรับนักพัฒนา SME ปี 2026

# 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 คือ:

  • **Type-Safe ตั้งแต่ Schema**: Schema ถูกเขียนใน TypeScript โดยตรง ทำให้ IDE รู้ Type ทุกอย่างโดยอัตโนมัติ
  • **Bundle Size เล็กมาก**: ขนาดเพียง ~30KB เทียบกับ Prisma ที่มักมี Client ขนาดใหญ่กว่า
  • **รองรับ Edge Runtime**: ทำงานได้ใน Vercel Edge Functions, Cloudflare Workers ได้โดยตรง
  • **SQL-Like Syntax**: เขียน Query ได้ใกล้เคียง SQL จริง ทำให้เข้าใจง่ายและ Debug ได้ง่าย
  • **Zero Dependencies**: ไม่มี Dependency เสริม ทำให้ Deploy ได้รวดเร็วกว่า
  • ทำไม 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

    ```

  • `drizzle-orm` — Core library
  • `postgres` — PostgreSQL driver (หรือใช้ `@neondatabase/serverless` สำหรับ Neon DB)
  • `drizzle-kit` — CLI สำหรับ Migration และ Studio
  • ขั้นตอนที่ 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 ที่ต้องการ:

  • ORM ที่ทำงานได้ดีกับ Edge Runtime และ Serverless
  • Type Safety แบบเต็มรูปแบบโดยไม่ต้อง Code Generation
  • Bundle Size เล็กและ Performance ดีกว่า Prisma อย่างชัดเจน
  • Syntax ใกล้เคียง SQL ทำให้เข้าใจและ Debug ง่าย
  • สำหรับ SME ที่กำลัง Build ระบบด้วย Next.js + PostgreSQL แนะนำให้ลองใช้ Drizzle ORM ในโปรเจกต์ใหม่ โดยเฉพาะถ้าต้องการ Deploy บน Vercel หรือ Edge Environment

    ต้องการให้ทีม ADS FIT ช่วยพัฒนาระบบด้วย Next.js + Drizzle ORM? ติดต่อเราได้เลยเพื่อรับคำปรึกษาฟรี หรืออ่านบทความอื่นๆ เกี่ยวกับ Development บนเว็บของเรา

    Tags

    #drizzle orm#next.js#postgresql#typescript#database#orm

    สนใจโซลูชันนี้?

    ปรึกษาทีม ADS FIT ฟรี เราพร้อมออกแบบระบบที่ฟิตกับธุรกิจของคุณ

    ติดต่อเรา →

    บทความที่เกี่ยวข้อง