Skip to content

แนะนำให้ใช้ PostgreSQL ผ่าน ORM

แนะนำให้ใช้ PostgreSQL ผ่าน ORM เช่น orm.drizzle.team favicondrizzle เหตุผลเพราะว่า

  • ORM จะ map database ให้อยู่ในรูปของ object ที่พร้อมใช้สำหรับ programming
  • มี type-safe เวลาใช้มี autocomplete
  • ใช้ง่ายกว่าสำหรับมือใหม่
  • ถ้าเราไม่ใช้ platform อะไรที่มันยิ่งใหญ่ มี transaction มากมายมหาศาล ให้ Drizzle ก็เพียงพอ

เปรียบเทียบ PostgreSQL กับ ORM

ประเด็นPostgreSQL โดยตรงใช้ผ่าน ORM
การเขียนโค้ดเขียน SQL โดยตรงเขียนในรูปแบบ Object ✓
Type Safetyไม่มี type checkingมี type checking และ autocomplete ✓
Performanceประสิทธิภาพสูงสุด แต่ต้องเขียน SQL เองอาจช้ากว่าเล็กน้อย แต่สะดวกกว่า ✓
Learning Curveต้องเรียนรู้ SQL เต็มรูปแบบเรียนรู้ API ของ ORM ✓
Flexibilityควบคุมได้ทุกอย่าง ✓บางครั้งมีข้อจำกัดของ ORM
การจัดการ Schemaต้องเขียน migration เองหลาย ORM มีเครื่องมือจัดการ schema ให้ ✓
ความซับซ้อนของ Queryเขียน SQL ซับซ้อนได้เต็มที่ ✓บางครั้งต้องใช้ raw SQL สำหรับ query ซับซ้อน
การบำรุงรักษาต้องจัดการ SQL string เองโค้ดอ่านง่ายและบำรุงรักษาง่ายกว่า ✓
Database Switchingต้องเขียน SQL ใหม่ถ้าเปลี่ยน DBบาง ORM รองรับหลาย DB โดยไม่ต้องเปลี่ยนโค้ด ✓
Transactionต้องจัดการ transaction เองORM มักมี API สำหรับจัดการ transaction ✓

เขียน PostgreSQL โดยตรง

sql
-- สร้างตาราง
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  email TEXT UNIQUE
);

-- เพิ่มข้อมูล
INSERT INTO users (name, email) VALUES ('John', '[email protected]');

-- ค้นหาข้อมูล
SELECT * FROM users WHERE email = '[email protected]';

ใช้ผ่าน ORM (Drizzle)

typescript
// สร้างตาราง
const users = pgTable('users', {
  id: serial('id').primaryKey(),
  name: text('name').notNull(),
  email: text('email').unique()
});

// เพิ่มข้อมูล
await db.insert(users).values({ name: 'John', email: '[email protected]' });

// ค้นหาข้อมูล
const result = await db.select().from(users).where(eq(users.email, '[email protected]'));