วัน: 9 มกราคม 2020

Understandable (เข้าใจได้): Predictable (การวางตำแหน่งที่สม่ำเสมอ Consistent Navigation & Consistent Help, หน้าจอไม่เปลี่ยนบริบทเองเมื่อโฟกัส)Understandable (เข้าใจได้): Predictable (การวางตำแหน่งที่สม่ำเสมอ Consistent Navigation & Consistent Help, หน้าจอไม่เปลี่ยนบริบทเองเมื่อโฟกัส)

ในฐานะ System Architect การออกแบบระบบที่ยอดเยี่ยมไม่ได้วัดแค่ที่ฟังก์ชันการทำงานเท่านั้น แต่ยังรวมถึง ‘ความคาดเดาได้’ (Predictability) ด้วย เมื่อนำหลักการนี้มาประยุกต์ใช้กับฐานข้อมูล PostgreSQL เราจะเปลี่ยนแนวคิดของ ‘Consistent Navigation’ ใน UI ให้เป็น ‘Consistent Data State’ และ ‘Predictable Query Behavior’ ในระดับ Backend ซึ่งเป็นหัวใจสำคัญของการสร้างระบบที่เชื่อถือได้ (Reliable System).

ความคาดเดาได้ในบริบทของ PostgreSQL (Predictable Data State)

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

ใน PostgreSQL เราสามารถรับประกันความคาดเดาได้นี้ผ่านการใช้คุณสมบัติหลักทางสถาปัตยกรรม:

1. การรักษาความสม่ำเสมอของ Schema (Schema Integrity)

การกำหนด Data Type ที่เข้มงวดและการใช้ Constraints (เช่น PRIMARY KEY, FOREIGN KEY) เป็นการสร้าง ‘Consistent Navigation’ ให้กับโครงสร้างข้อมูล ฐานข้อมูลจะบังคับให้ข้อมูลต้องอยู่ในรูปแบบที่คาดเดาได้เสมอ ทำให้เรามั่นใจได้ว่าเมื่อเรียกใช้ข้อมูลจากตารางใดๆ โครงสร้างของคอลัมน์จะไม่เปลี่ยนแปลงโดยไม่ตั้งใจ

SQL

-- การกำหนดโครงสร้างที่คาดเดาได้ (Predictable Schema)</code>
CREATE TABLE products (
    product_id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price NUMERIC(10, 2) CHECK (price >= 0)
);

INSERT INTO products (name, price) VALUES ('apple', 0.99);
INSERT INTO products (name, price) VALUES ('banana', 0.50);

2. การสร้าง Query ที่มีผลลัพธ์ที่สม่ำเสมอ (Consistent Query Results)

การเขียน Query ที่มีประสิทธิภาพและคาดเดาได้คือการใช้ Common Table Expressions (CTEs) หรือ Window Functions เพื่อให้ผลลัพธ์เป็นลำดับขั้นตอนที่ชัดเจน ไม่มีการเปลี่ยนแปลงบริบทของชุดข้อมูลระหว่างการประมวลผล

ตัวอย่างการใช้ CTE เพื่อให้ผลลัพธ์การคำนวณเป็นไปอย่างคาดเดาได้:

SQL

WITH ranked_products AS (
    SELECT 
        name, 
        price,
        RANK() OVER (ORDER BY price DESC) as price_rank
    FROM products
)
SELECT 
    name, 
    price 
FROM ranked_products 
WHERE price_rank = 1;

บทสรุป: การออกแบบที่ยึดหลักความคาดเดาได้

การออกแบบฐานข้อมูลด้วย PostgreSQL ที่ยึดหลักความคาดเดาได้ (Predictability) คือการสร้างระบบที่ทุกส่วนประกอบ ตั้งแต่ Schema, Constraints, ไปจนถึง Query Logic ต้องทำงานตามกฎเกณฑ์ที่กำหนดไว้เสมอ การทำเช่นนี้ไม่เพียงแต่เพิ่มความเสถียรของข้อมูลเท่านั้น แต่ยังช่วยให้การบำรุงรักษา (Maintainability) และการขยายระบบ (Scalability) ในอนาคตเป็นไปอย่างราบรื่นและ ‘เข้าใจได้’ สำหรับนักพัฒนาทุกคน