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 เล็กกว่า |
| เร็วกว่า Prisma | Tutorials หาได้น้อยกว่า |
| Type-safe queries | Schema syntax ต้องทำความเข้าใจ |
| Lightweight | บาง advanced features ยังพัฒนาอยู่ |
| ทำงานดีกับ Bun | Auto-generated features น้อยกว่า |
เปรียบเทียบกับ Prisma
| ด้าน | Drizzle | Prisma |
|---|---|---|
| Learning Curve | ต่ำ (รู้ SQL ช่วยได้) | ปานกลาง |
| Performance | เร็วกว่า | อาจมีปัญหาตอนโหลดหนัก |
| Mental Model | SQL 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?
- Type Safety: ผิดพลาดตอน compile-time ไม่ใช่ runtime
- Performance: Query ที่ optimized และมีประสิทธิภาพ
- Developer Experience: API ที่เข้าใจง่ายและใช้งานสะดวก
- Schema-First: จัดการ database schema เป็นส่วนหนึ่งของ code
- Bun Integration: ทำงานได้ดีกับ Bun runtime
ขั้นต่อไป
เมื่อคุณเข้าใจพื้นฐาน Drizzle แล้ว สามารถเรียนรู้เพิ่มเติมเรื่อง:
- การใช้ Drizzle กับ Elysia API routes
- การสร้าง complex queries และ joins
- การจัดการ transactions
- การใช้ Drizzle Studio สำหรับ visualize database