PlusMagi's Blog By Pitt Phunsanit Database Non-Attachment (การไม่ยึดติดในสิ่งที่ไม่สามารถควบคุมได้)

Non-Attachment (การไม่ยึดติดในสิ่งที่ไม่สามารถควบคุมได้)

ในฐานะสถาปนิกระบบและผู้เชี่ยวชาญด้านข้อมูล เรามักเผชิญกับความท้าทายที่คล้ายคลึงกับหลักการทางจิตวิทยา นั่นคือ ‘ความยึดติด’ (Attachment) ในโลกของข้อมูล การที่เราคาดหวังว่าข้อมูลจะต้องอยู่ในรูปแบบเดิมเสมอ, โครงสร้าง (Schema) ต้องไม่เปลี่ยนแปลง, หรือผลลัพธ์ (Outcome) ต้องเป็นไปตามที่กำหนดไว้ล่วงหน้า คือการยึดติดที่อาจนำไปสู่ความผิดพลาดร้ายแรง (System Failure) เมื่อสภาพแวดล้อมหรือข้อมูลจริงเกิดการเปลี่ยนแปลง

ในทางเทคนิค การฝึกฝน ‘การไม่ยึดติด’ (Non-Attachment) ในการออกแบบระบบด้วย PostgreSQL ไม่ได้หมายถึงการเขียนโค้ดที่ไร้ทิศทาง แต่คือการสร้างสถาปัตยกรรมที่ยืดหยุ่น (Resilient) และสามารถรับมือกับการเปลี่ยนแปลงของข้อมูล (Impermanence) ได้อย่างสง่างาม โดยเน้นการควบคุม ‘กระบวนการ’ (Process) มากกว่าการควบคุม ‘ผลลัพธ์’ (Outcome) ที่ตายตัว

หลักการ Non-Attachment ในสถาปัตยกรรมข้อมูล

การยึดติดในข้อมูลมักปรากฏในรูปแบบของการเขียนโค้ดที่แข็งตัว (Hardcoding) หรือการพึ่งพาโครงสร้างข้อมูลที่สมบูรณ์แบบเกินจริง (Over-reliance on Perfect Schema) การไม่ยึดติดในบริบทของ PostgreSQL คือการยอมรับว่าข้อมูลจะเปลี่ยนแปลงเสมอ และเราต้องออกแบบ Query หรือ Stored Procedure ให้สามารถทำงานได้อย่างถูกต้องแม้ว่า Input Data จะมีรูปแบบที่หลากหลายหรือมีการขาดหายไปบางส่วน

การเน้นกระบวนการเหนือผลลัพธ์ (Process over Outcome)

แทนที่จะเขียน Query ที่คาดหวังว่าต้องมีคอลัมน์ A, B, และ C เสมอ เราควรใช้ฟังก์ชันที่เน้นการประมวลผลข้อมูลที่ได้รับมาอย่างยืดหยุ่น เช่น การใช้ฟังก์ชัน `unnest()` หรือ `string_to_array()` เพื่อแยกข้อมูลที่มาในรูปแบบข้อความ (String) ให้กลายเป็นชุดข้อมูล (Set) ได้อย่างมีประสิทธิภาพ นี่คือการที่เราปล่อยวางความยึดติดในรูปแบบข้อมูล และยอมรับการเปลี่ยนแปลงของมัน

พิจารณาตัวอย่างการใช้ฟังก์ชัน `string_to_array` ซึ่งเป็นเครื่องมือที่ช่วยให้เราสามารถแยกสตริงที่คั่นด้วยเครื่องหมายคอมม่า (`,`) ออกเป็นอาร์เรย์ได้ โดยไม่สนใจว่าสตริงนั้นจะมีจำนวนค่ากี่ค่า:

SQL

SELECT unnest(string_to_array('1,2,3', ',')) AS data_element;

คำสั่งนี้แสดงให้เห็นว่าเรากำลังโฟกัสที่ ‘กระบวนการ’ (Process) ของการแยกข้อมูลให้เป็นชุดค่า (Set) ซึ่งเป็นสิ่งที่ควบคุมได้ แทนที่จะยึดติดกับจำนวนค่าที่แน่นอน ซึ่งเป็นสิ่งที่ควบคุมได้ยากในโลกแห่งความเป็นจริง

การสร้างระบบที่ยืดหยุ่น (Resilience)

การออกแบบระบบที่ใช้หลักการ Non-Attachment คือการใช้เทคนิคเช่น JSONB data types หรือการใช้ Common Table Expressions (CTEs) เพื่อให้ Query มีความสามารถในการปรับตัว (Adaptability) สูง เมื่อ Schema ต้องมีการอัปเดต การใช้ CTEs จะช่วยให้เราสามารถจำลองขั้นตอนการทำงานหลายขั้นตอนได้โดยไม่ทำให้โค้ดหลักเกิดความซับซ้อนหรือพังทลายเมื่อมีข้อมูลใหม่เข้ามา

บทสรุป: การปล่อยวางความสมบูรณ์แบบ

การไม่ยึดติดในระบบ PostgreSQL จึงไม่ใช่การยอมให้โค้ดทำงานแบบสุ่ม แต่คือการเป็นสถาปนิกที่เข้าใจความไม่แน่นอนของข้อมูล (Data Impermanence) และสร้างกลไกที่แข็งแกร่งพอที่จะรองรับความเปลี่ยนแปลงเหล่านั้นได้ การทำเช่นนี้จะทำให้ระบบของเรามีความทนทาน (Resilient) และสามารถทำงานได้อย่างต่อเนื่อง แม้ว่าข้อมูลต้นทางจะไม่ได้สมบูรณ์แบบตามที่เราคาดหวังไว้ก็ตาม

Exit mobile version