PlusMagi's Blog By Pitt Phunsanit Backend,Database Provisional Truth & Adaptability (ความจริงชั่วคราวและการพร้อมปรับเปลี่ยนเมื่อพบหลักฐานใหม่)

Provisional Truth & Adaptability (ความจริงชั่วคราวและการพร้อมปรับเปลี่ยนเมื่อพบหลักฐานใหม่)

ในโลกของระบบข้อมูลที่ซับซ้อน ข้อมูลไม่ได้หยุดนิ่ง การเปลี่ยนแปลงทางธุรกิจ ความต้องการของผู้ใช้ และการอัปเดตของ API ล้วนทำให้ ‘ความจริง’ ที่เราเคยเชื่อมั่นในฐานข้อมูลชุดหนึ่ง กลายเป็นเพียงข้อสรุปชั่วคราว (Provisional Truth) เท่านั้น การยึดติดกับ Schema หรือ Query เดิม ๆ โดยไม่พร้อมปรับตัว คือจุดอ่อนทางสถาปัตยกรรมที่อันตรายที่สุด

แนวคิด ‘Provisional Truth & Adaptability’ จึงไม่ใช่แค่ปรัชญา แต่เป็นหลักการออกแบบระบบที่ต้องยอมรับว่าความรู้ (หรือข้อมูล) ของเราเป็นเพียง ‘เวอร์ชันที่ดีที่สุด ณ ขณะนี้’ เท่านั้น และต้องพร้อมที่จะถูกท้าทายด้วยหลักฐานใหม่เสมอ

การเปลี่ยนมุมมอง: จากความจริงสัมบูรณ์สู่ความจริงชั่วคราวใน PostgreSQL

ในเชิงสถาปัตยกรรมข้อมูล (Data Architecture) ‘ความจริงสัมบูรณ์’ คือการออกแบบ Schema ที่ตายตัวและ Query ที่ไม่เคยเปลี่ยนแปลง แต่เมื่อโลกธุรกิจเปลี่ยนไป การใช้แนวคิดนี้จะทำให้ระบบล้าสมัยอย่างรวดเร็ว

การยอมรับ ‘ความจริงชั่วคราว’ หมายถึงการออกแบบระบบที่ยืดหยุ่น (Flexible Schema) ซึ่งสามารถรองรับการเปลี่ยนแปลงของข้อมูลได้โดยไม่จำเป็นต้องมีการ Migrating Schema ครั้งใหญ่ทุกครั้งที่เกิดความต้องการใหม่ PostgreSQL เป็นเครื่องมือที่สนับสนุนแนวคิดนี้ได้อย่างยอดเยี่ยม โดยเฉพาะการใช้ฟีเจอร์ที่ช่วยให้เราสามารถจัดการกับข้อมูลที่มีรูปแบบไม่แน่นอน (Semi-structured Data) เช่น JSONB

การประยุกต์ใช้ Adaptability ด้วย PostgreSQL

ความสามารถในการพร้อมปรับเปลี่ยน (Adaptability) ในการเขียนโค้ด SQL คือการเขียน Query ที่ไม่ตัดสินว่าข้อมูลจะต้องมีรูปแบบใดรูปแบบหนึ่งเสมอไป แต่ต้องสามารถจัดการกับสถานการณ์ที่ข้อมูลขาดหาย (Null) หรือมีรูปแบบที่แตกต่างกันได้ นี่คือการแสดงออกถึง ‘ความถ่อมตัวทางปัญญา’ ของระบบฐานข้อมูล

ตัวอย่างเช่น หากเรามีตารางข้อมูลผู้ใช้ (users) และบางครั้งข้อมูลที่ส่งมาอาจมีฟิลด์ ‘phone’ หรือ ‘fax’ ก็ได้ เราไม่ควรเขียน Query ที่คาดหวังว่าฟิลด์ใดฟิลด์หนึ่งจะต้องมีอยู่เสมอ แต่ควรใช้ฟังก์ชันอย่าง COALESCE หรือ CASE เพื่อให้ระบบสามารถเลือกใช้ค่าที่เหมาะสมที่สุดได้ตลอดเวลา

SQL

SQL

-- สมมติว่าเรามีข้อมูลที่อาจมีทั้ง phone และ fax
SELECT
    user_id,
    COALESCE(phone, fax, 'No Contact Info') AS primary_contact
FROM
    user_profiles
WHERE
    user_id = 1;

ในตัวอย่างนี้ COALESCE คือการแสดงออกถึงความพร้อมปรับเปลี่ยน (Adaptability) เพราะระบบไม่ได้ยึดติดว่าต้องใช้แค่ฟิลด์ใดฟิลด์หนึ่ง แต่จะไล่ตรวจสอบจาก phone ไป fax และถ้าไม่มีเลยก็จะใช้ค่า ‘No Contact Info’ แทน ซึ่งทำให้ Query นี้ยังคงทำงานได้แม้ว่าโครงสร้างข้อมูลจะเปลี่ยนแปลงไป

บทสรุป: การคิดเชิงสถาปัตยกรรมที่ยืดหยุ่น

การออกแบบระบบที่ยอมรับ ‘ความจริงชั่วคราว’ ไม่ได้หมายถึงการไร้ระเบียบ แต่หมายถึงการสร้างความยืดหยุ่นเชิงโครงสร้าง (Structural Flexibility) โดยการใช้เครื่องมืออย่าง PostgreSQL ให้เต็มที่ ไม่ว่าจะเป็นการใช้ JSONB สำหรับข้อมูลที่ไม่แน่นอน หรือการใช้ฟังก์ชันเชิงตรรกะอย่าง COALESCE เพื่อให้ Query ของเราสามารถ ‘ปรับตัว’ ได้เมื่อหลักฐานข้อมูลใหม่ ๆ เข้ามา การทำเช่นนี้คือหัวใจของการเป็น Senior Architect ที่เข้าใจว่าระบบที่ดีต้องสามารถเติบโตและปรับตัวไปพร้อมกับโลกธุรกิจที่เปลี่ยนแปลงตลอดเวลา