PlusMagi's Blog By Pitt Phunsanit Database python: Core Syntax & Data Structures (โครงสร้างไวยากรณ์พื้นฐาน List, Dict, Set, Tuple และ Data Types)

python: Core Syntax & Data Structures (โครงสร้างไวยากรณ์พื้นฐาน List, Dict, Set, Tuple และ Data Types)

ในฐานะ System Architect การเลือกใช้โครงสร้างข้อมูล (Data Structures) ที่เหมาะสมถือเป็นหัวใจสำคัญในการออกแบบระบบฐานข้อมูลที่มีประสิทธิภาพสูง ไม่ว่าจะเป็นการจัดการข้อมูลแบบรายการ (List) หรือข้อมูลแบบคู่คีย์-ค่า (Dictionary) การเข้าใจว่า PostgreSQL จัดเก็บและจัดการข้อมูลเหล่านี้อย่างไร จะช่วยให้เราสร้าง Query ที่รวดเร็วและขยายตัวได้ในอนาคต

แม้ว่า Python จะเป็นภาษาที่ใช้ในการประมวลผล แต่เมื่อเราพูดถึงการจัดเก็บข้อมูลเชิงโครงสร้างในระดับฐานข้อมูล (Database Layer) เราต้องพิจารณาถึงความสามารถของ PostgreSQL ในการจำลองโครงสร้างเหล่านี้ โดยเฉพาะอย่างยิ่งการใช้ **Arrays** และ **JSONB** ซึ่งเป็นเครื่องมือสำคัญในการยกระดับประสิทธิภาพการจัดเก็บข้อมูลให้เทียบเท่ากับ Data Structures ขั้นสูง

💡 การจำลอง List และ Tuple ด้วย PostgreSQL Arrays

ในโลกของ Python, List และ Tuple ใช้เก็บลำดับของข้อมูล (Ordered Collection) ใน PostgreSQL เราใช้ประเภทข้อมูล ARRAY เพื่อทำหน้าที่นี้ โดย Array มีความยืดหยุ่นสูงในการเก็บข้อมูลชนิดเดียวกันหลายค่า และยังคงรักษาลำดับของข้อมูลไว้ได้อย่างสมบูรณ์

ตัวอย่างการใช้งาน Array:

SQL

-- การสร้างตารางที่มีคอลัมน์เป็น Array ของประเภท Text (จำลอง List) 
CREATE TABLE product_tags (
    product_id INT PRIMARY KEY,
    tags TEXT[]
);

-- การแทรกข้อมูล Array (จำลองการเก็บรายการแท็ก)
INSERT INTO product_tags (product_id, tags) VALUES
(101, 'electronics', 'gadget', 'smart');

-- การเรียกใช้ข้อมูลใน Array 
SELECT product_id, tags[1] AS first_tag FROM product_tags WHERE product_id = 101;

🔑 การจำลอง Dictionary ด้วย JSONB (Key-Value Pairs)

โครงสร้างแบบ Dictionary (หรือ Map) คือการเก็บข้อมูลแบบคู่คีย์-ค่า (Key-Value Pair) ซึ่งเป็นสิ่งที่ PostgreSQL จัดการได้อย่างยอดเยี่ยมด้วยประเภทข้อมูล JSONB (JSON Binary) การใช้ JSONB ช่วยให้เราสามารถเก็บข้อมูลที่มีโครงสร้างไม่ตายตัว (Schema-less) ได้อย่างมีประสิทธิภาพ และยังสามารถ Query ข้อมูลภายในได้อย่างรวดเร็วโดยใช้ตัวดำเนินการ -> และ ->>

ตัวอย่างการใช้งาน JSONB:

SQL

-- การสร้างตารางที่เก็บข้อมูลรายละเอียดสินค้าแบบยืดหยุ่น 
CREATE TABLE product_details (
    product_id INT PRIMARY KEY,
    details JSONB
);

-- การแทรกข้อมูล JSONB (จำลอง Dictionary)
INSERT INTO product_details (product_id, details) VALUES
(202, '{"brand": "Sony", "weight_kg": 1.5, "color": "Black"}');

-- การดึงค่าเฉพาะ (Querying Key-Value Pair)
SELECT product_id, details->>'brand' AS brand_name FROM product_details WHERE product_id = 202;

✨ การจัดการความไม่ซ้ำกัน (Set Concept)

ใน Python, Set ใช้เพื่อรับประกันความไม่ซ้ำกันของข้อมูล (Unique Elements) ใน PostgreSQL หากเราต้องการจำลองแนวคิดนี้ เราสามารถใช้คำสั่ง SELECT DISTINCT หรือใช้ฟังก์ชัน Array เพื่อกรองข้อมูลที่ซ้ำกันก่อนการจัดเก็บได้

🚀 บทสรุปสำหรับสถาปนิก

การทำความเข้าใจความแตกต่างระหว่างการใช้ ARRAY (สำหรับข้อมูลที่มีลำดับและชนิดเดียวกัน) และ JSONB (สำหรับข้อมูลที่มีโครงสร้างแบบคู่คีย์-ค่า) คือกุญแจสำคัญในการออกแบบสถาปัตยกรรมฐานข้อมูลที่ยืดหยุ่นและมีประสิทธิภาพสูง การเลือกใช้โครงสร้างที่เหมาะสมจะช่วยลดความซับซ้อนในการ Query และเพิ่มความเร็วในการประมวลผลข้อมูลได้อย่างมาก