PlusMagi's Blog By Pitt Phunsanit Backend,Database ทบทวน (Remind) – Moderndog

ทบทวน (Remind) – Moderndog

ในฐานะ System Specialist และ Senior Architect การจัดการข้อมูลที่ต้องมีการทบทวน (Review) หรือการแจ้งเตือน (Reminder) ตามช่วงเวลาที่กำหนดถือเป็นหัวใจสำคัญของระบบธุรกิจที่ซับซ้อน การพึ่งพาการดำเนินการด้วยมือ (Manual Process) ไม่เพียงพอและเสี่ยงต่อข้อผิดพลาด

บทความนี้จะเจาะลึกถึงแนวทางการสร้างระบบแจ้งเตือนและทบทวนข้อมูลอัตโนมัติ (Scheduled Reminder System) โดยใช้พลังของ PostgreSQL ซึ่งเป็นฐานข้อมูลที่ทรงประสิทธิภาพ ด้วยการใช้ฟังก์ชัน Stored Procedure และระบบ Job Scheduling เพื่อให้มั่นใจว่าข้อมูลที่สำคัญจะถูกตรวจสอบและอัปเดตอย่างแม่นยำและสม่ำเสมอ

หลักการทำงานของระบบแจ้งเตือนใน PostgreSQL

การสร้างระบบแจ้งเตือนใน PostgreSQL ไม่ได้จำกัดอยู่แค่การใช้ Trigger แต่ยังรวมถึงการใช้ฟังก์ชันที่ทำงานตามตารางเวลา (Scheduled Functions) ซึ่งโดยทั่วไปมักใช้ส่วนขยาย (Extension) เช่น pg_cron หรือการใช้ Job Scheduler ภายนอก (เช่น Kubernetes CronJob หรือ Airflow) เพื่อเรียกใช้ฟังก์ชัน SQL ที่เราสร้างขึ้น

หลักการทำงานคือการสร้างฟังก์ชัน (Function) ที่รับผิดชอบในการตรวจสอบสถานะข้อมูลที่ถึงกำหนดเวลา (Due Date) จากนั้นให้ฟังก์ชันนี้ดำเนินการอัปเดตสถานะ หรือส่งการแจ้งเตือนไปยังระบบอื่น ๆ

ตัวอย่างการสร้างฟังก์ชันทบทวนข้อมูล (Review Function)

สมมติว่าเรามีตาราง tasks ที่เก็บรายการงานที่ต้องทบทวน และเราต้องการให้ระบบตรวจสอบงานที่เลยกำหนดมาแล้ว 7 วัน เพื่อเปลี่ยนสถานะเป็น ‘Overdue’ โดยอัตโนมัติ

SQL

-- 1. สร้างฟังก์ชันที่ทำการอัปเดตสถานะงานที่เลยกำหนด<br>CREATE OR REPLACE FUNCTION update_overdue_tasks()<br>RETURNS void AS $$<br>BEGIN<br>    UPDATE tasks<br>    SET status = 'Overdue', reminder_date = NOW()<br>    WHERE due_date < NOW() - INTERVAL '7 days' AND status != 'Overdue';<br>END;$$ LANGUAGE plpgsql;<br><br>-- 2. ตัวอย่างการเรียกใช้ฟังก์ชัน (จำลองการทำงานของ Cron Job)<br>SELECT update_overdue_tasks();

โค้ดข้างต้นแสดงให้เห็นถึงการใช้ภาษา PL/pgSQL ในการสร้างฟังก์ชันที่ทำงานเชิงตรรกะ (Business Logic) ซึ่งฟังก์ชันนี้สามารถถูกตั้งเวลาให้รันทุกคืนผ่าน pg_cron ได้อย่างมีประสิทธิภาพ

การเพิ่มประสิทธิภาพและการจัดการข้อผิดพลาด

ในฐานะ Senior Architect เราต้องคำนึงถึงความเสถียร (Reliability) เสมอ เมื่อระบบแจ้งเตือนทำงานอัตโนมัติ ควรมีการจัดการ Transaction และการบันทึก Log อย่างรอบคอบ เพื่อให้ทราบว่าการดำเนินการใดสำเร็จและล้มเหลว

การใช้ BEGIN...END และการจัดการ Exception ภายในฟังก์ชันจึงเป็นสิ่งจำเป็น เพื่อให้ระบบสามารถทำงานต่อไปได้แม้ว่าจะมีข้อมูลที่ผิดปกติ (Malformed Data) เข้ามาแทรกแซง

บทสรุป

การใช้ PostgreSQL ในการสร้างระบบแจ้งเตือนและทบทวนข้อมูลอัตโนมัติด้วยฟังก์ชันและ Job Scheduling ไม่เพียงแต่ช่วยลดภาระงานของมนุษย์เท่านั้น แต่ยังเพิ่มความแม่นยำและความทันเวลาในการตัดสินใจทางธุรกิจได้อย่างมหาศาล การเข้าใจการทำงานของ PL/pgSQL และการผสานรวมกับเครื่องมือ Job Scheduler ที่เหมาะสม คือกุญแจสำคัญในการยกระดับระบบฐานข้อมูลให้เป็นระบบที่ทำงานได้ด้วยตนเองอย่างสมบูรณ์