วัน: 17 ตุลาคม 2019

Problem Re-framing (การมองและตั้งโจทย์ปัญหาในมุมมองใหม่)Problem Re-framing (การมองและตั้งโจทย์ปัญหาในมุมมองใหม่)

“>

ในฐานะ System Specialist และ Senior Architect เราทราบดีว่าการเผชิญหน้ากับปัญหาทางข้อมูล (Data Problem) ไม่ใช่แค่การหาคำตอบที่ถูกต้อง แต่คือการตั้งคำถามที่ถูกต้องก่อน แนวคิด Problem Re-framing หรือการมองและตั้งโจทย์ปัญหาในมุมมองใหม่ คือทักษะเชิงสถาปัตยกรรมที่ช่วยให้เราเปลี่ยนจากการมอง ‘ข้อจำกัดของข้อมูล’ ไปสู่การมอง ‘โอกาสในการปรับโครงสร้างข้อมูล’ เพื่อให้ได้ Insight ที่ลึกซึ้งกว่าเดิม

Problem Re-framing ในบริบทของ PostgreSQL

“>

ในโลกของฐานข้อมูลเชิงสัมพันธ์ (Relational Database) การ ‘ตั้งโจทย์’ คือการออกแบบ Query และการกำหนด Schema ที่เหมาะสม ขณะที่ ‘ปัญหา’ คือข้อมูลที่ดูเหมือนจะขัดแย้งหรือมีรูปแบบที่ใช้งานยาก (Non-standard format) การ Re-framing ในทางเทคนิคจึงหมายถึงการเปลี่ยนวิธีการมองความสัมพันธ์ของข้อมูล (Relationships) หรือการเปลี่ยนรูปแบบข้อมูล (Data Format) ที่เรากำลังเผชิญอยู่ เพื่อให้สามารถเข้าถึงข้อมูลระดับ Atomic ได้

จาก String สู่ Relational Data: ตัวอย่างทางเทคนิค

“>

ตัวอย่างคลาสสิกคือการที่ข้อมูลถูกเก็บในรูปแบบข้อความที่คั่นด้วยเครื่องหมาย (Comma-Separated String) ซึ่งดูเหมือนเป็น ‘ปัญหา’ เพราะมันไม่สามารถถูก Query แยกส่วนได้ง่ายๆ หากเราใช้เพียงแค่ฟังก์ชัน `LIKE` หรือ `SUBSTRING` เราจะถูกจำกัดให้มองมันเป็นสตริงเดียวเท่านั้น

“>

การ Re-framing คือการตระหนักว่าเราไม่ควรมองมันเป็นสตริงเดียว แต่ควรมองว่ามันคือ ‘ชุดของค่า’ ที่ต้องถูกแยกออกและจัดเก็บในรูปแบบแถว (Row) และคอลัมน์ (Column) ที่ถูกต้องตามหลักการ Normalization

SQL

-- สถานการณ์เริ่มต้น: ข้อมูลถูกเก็บในรูปแบบ CSV String<br>CREATE TABLE product_data (product_id INT, tags TEXT);<br>INSERT INTO product_data VALUES (1, 'apple,banana,orange');<br>
“>

แทนที่จะ Query ว่า ‘มีสินค้าตัวไหนที่มีคำว่า banana?’ ซึ่งทำได้ยากด้วย String Search เราจะ Re-frame โดยใช้ฟังก์ชันของ PostgreSQL เพื่อแยกสตริงออกเป็นแถวข้อมูล:

SQL

SELECT unnest(string_to_array(tags, ',')) AS extracted_tag<br>FROM product_data<br>WHERE unnest(string_to_array(tags, ',')) = 'banana';<br>
“>

การใช้ `string_to_array()` ร่วมกับ `unnest()` คือการเปลี่ยนมุมมองจาก ‘ปัญหาของสตริง’ ให้เป็น ‘โอกาสในการแตกข้อมูล (Data Unnesting)’ ซึ่งทำให้เราสามารถทำการ Join, Filter, และ Aggregate ได้อย่างมีประสิทธิภาพตามหลักการของ PostgreSQL

บทสรุป: มุมมองของสถาปนิกข้อมูล

“>

Problem Re-framing ไม่ใช่แค่เทคนิคการเขียน Query แต่คือการปรับ Mindset ของสถาปนิกข้อมูล เมื่อเราเผชิญกับข้อมูลที่ดูยุ่งเหยิง (Messy Data) ให้หยุดคิดว่า ‘ข้อมูลนี้ผิดตรงไหน?’ แต่ให้เปลี่ยนเป็น ‘เราจะปรับโครงสร้างข้อมูลนี้อย่างไรให้มันเป็นไปตามหลักการทางสถาปัตยกรรมที่ดีที่สุด?’ การฝึกฝนการมองปัญหาในมุมมองใหม่นี้ จะช่วยให้เราสามารถดึงศักยภาพสูงสุดของ PostgreSQL ออกมาได้อย่างเต็มที่ ทำให้ได้ Insight ที่ลึกซึ้งและแม่นยำกว่าการแก้ปัญหาแบบผิวเผิน