Documentation
กลับไปหมวดหมู่

Drizzle ORM

เวลาอ่านโดยประมาณ: ~15 นาที

Drizzle ORM

Drizzle ORM เป็น TypeScript ORM ที่ทันสมัย ช่วยให้คุณทำงานกับฐานข้อมูล PostgreSQL ด้วย type-safe queries และ performance สูง

ทำไมเราถึงเลือก Drizzle แทน Prisma

"เหตุผลหลักคือ learning curve ถ้ารู้ SQL ก็ใช้ Drizzle ได้เลย Mental model ตรง เขียนแล้วรู้ว่า query ออกมาเป็นอะไร"

การตัดสินใจ

เราเปรียบเทียบ Drizzle และ Prisma แล้วเลือก Drizzle นี่คือเหตุผล:

ทำไม Drizzle?

  • รู้ SQL = ใช้ได้เลย
  • Mental model ตรง
  • เขียนแล้วรู้ว่า query ออกมาเป็นอะไร

ทำไมไม่ใช้ Prisma?

  • เคยเจอปัญหา performance กับ Prisma
  • App แตกตอนโหลดหนักๆ
  • อาจเป็นเพราะ junior ยังไม่คล่อง แต่สุดท้ายคนแบกคือทีม

อีกจุดสำคัญ:

"ในการใช้งานจริง Drizzle เร็วกว่า Prisma"

ข้อดี-ข้อเสีย

ข้อดีข้อเสีย
SQL-like syntax (เรียนรู้ง่าย)ใหม่กว่า Prisma
Mental model ตรงCommunity เล็กกว่า
เร็วกว่า PrismaTutorials หาได้น้อยกว่า
Type-safe queriesSchema syntax ต้องทำความเข้าใจ
Lightweightบาง advanced features ยังพัฒนาอยู่
ทำงานดีกับ BunAuto-generated features น้อยกว่า

เปรียบเทียบกับ Prisma

ด้านDrizzlePrisma
Learning Curveต่ำ (รู้ SQL ช่วยได้)ปานกลาง
Performanceเร็วกว่าอาจมีปัญหาตอนโหลดหนัก
Mental ModelSQL mapping ตรงๆAbstracted
Query Outputคาดเดาได้ซ่อน complexity
Bundle Sizeเล็กกว่าใหญ่กว่า

Drizzle คืออะไร?

Drizzle เป็น ORM ที่ออกแบบมาเพื่อ:

  • Type-Safe Queries: TypeScript types ถูกสร้างอัตโนมัติจาก schema
  • High Performance: Query ที่เร็วและมีประสิทธิภาพสูง
  • SQL-like Syntax: เขียน query ที่คล้ายกับ SQL ธรรมดา
  • Schema-First: กำหนด schema ด้วย TypeScript และ generate migrations

ตัวอย่างพื้นฐาน

กำหนด Schema

Query ข้อมูล

โครงสร้างพื้นฐาน

สร้าง Migration

เมื่อแก้ไข schema ให้รันคำสั่งเพื่อสร้าง migration:

ใช้งาน Migration

แนวคิดสำคัญของ Drizzle

Schema Definition

กำหนดโครงสร้างตารางด้วย TypeScript:

Query Building

สร้าง query ที่ซับซ้อน:

Relations

กำหนดความสัมพันธ์ระหว่างตาราง:

ทำไมต้องใช้ Drizzle?

  1. Type Safety: ผิดพลาดตอน compile-time ไม่ใช่ runtime
  2. Performance: Query ที่ optimized และมีประสิทธิภาพ
  3. Developer Experience: API ที่เข้าใจง่ายและใช้งานสะดวก
  4. Schema-First: จัดการ database schema เป็นส่วนหนึ่งของ code
  5. Bun Integration: ทำงานได้ดีกับ Bun runtime

ขั้นต่อไป

เมื่อคุณเข้าใจพื้นฐาน Drizzle แล้ว สามารถเรียนรู้เพิ่มเติมเรื่อง:

  • การใช้ Drizzle กับ Elysia API routes
  • การสร้าง complex queries และ joins
  • การจัดการ transactions
  • การใช้ Drizzle Studio สำหรับ visualize database