Skip to main content

สถาปัตยกรรมของ PostgreSQL

PostgreSQL เป็นระบบฐานข้อมูลที่มีสถาปัตยกรรมที่มีความซับซ้อนและมีการออกแบบเพื่อให้สามารถทำงานได้อย่างมีประสิทธิภาพและสามารถขยายขีดความสามารถได้ตามต้องการ ในบทนี้เราจะมาทำความรู้จักกับสถาปัตยกรรมหลักของ PostgreSQL

โครงสร้างหลักของ PostgreSQL

PostgreSQL ใช้สถาปัตยกรรมแบบ Client-Server ซึ่งมีส่วนประกอบหลักดังนี้:

1. Client (ผู้ใช้หรือแอปพลิเคชัน)

  • ผู้ใช้งานหรือแอปพลิเคชันที่ต้องการเชื่อมต่อกับฐานข้อมูล PostgreSQL ผ่านทางไคลเอนต์ (client) โดยสามารถใช้เครื่องมือที่เหมาะสม เช่น pgAdmin, psql หรือแอปพลิเคชันต่างๆ ที่พัฒนาโดยใช้ PostgreSQL เป็นฐานข้อมูล
  • Client ส่งคำสั่ง SQL ไปยังเซิร์ฟเวอร์ PostgreSQL และรับผลลัพธ์กลับมา

2. PostgreSQL Server (เซิร์ฟเวอร์ฐานข้อมูล)

เซิร์ฟเวอร์ PostgreSQL เป็นส่วนที่จัดการกับคำสั่ง SQL และข้อมูลต่างๆ ที่ส่งมาจาก client รวมถึงการทำงานในหลายๆ ฟังก์ชัน เช่น การเชื่อมต่อฐานข้อมูล การจัดการข้อมูล การควบคุมความปลอดภัย และการจัดการทรัพยากร

3. Backend Processes (กระบวนการในฝั่งเซิร์ฟเวอร์)

PostgreSQL ใช้กระบวนการหลายตัวในการจัดการกับการทำงานของเซิร์ฟเวอร์ โดยแต่ละกระบวนการจะมีบทบาทที่แตกต่างกันในการประมวลผลคำสั่งและดูแลฐานข้อมูล

  • Postmaster: เป็นกระบวนการหลักของ PostgreSQL ซึ่งรับคำขอการเชื่อมต่อจาก client และทำการจัดสรรการเชื่อมต่อไปยัง backend process ต่างๆ
  • Backend Process: แต่ละ client ที่เชื่อมต่อกับ PostgreSQL จะมี backend process ที่จัดการการประมวลผลคำสั่ง SQL ที่ส่งมาจาก client
  • WAL Writer: กระบวนการที่ใช้ในการเขียนข้อมูลการบันทึกการเปลี่ยนแปลง (Write-Ahead Logging) ซึ่งช่วยในการกู้คืนข้อมูลหากเกิดความล้มเหลว
  • Autovacuum: กระบวนการที่ทำหน้าที่ในการลบข้อมูลที่ไม่จำเป็นหรือข้อมูลที่ไม่ถูกใช้งานออกจากฐานข้อมูล เพื่อเพิ่มประสิทธิภาพ

4. Shared Buffers (บัฟเฟอร์ที่ใช้ร่วมกัน)

PostgreSQL ใช้หน่วยความจำเพื่อเก็บข้อมูลที่ถูกใช้บ่อย เช่น ตารางหรือดัชนี โดยข้อมูลที่เก็บไว้ใน Shared Buffers จะช่วยให้การเข้าถึงข้อมูลทำได้รวดเร็วขึ้น

5. Disk Storage (การจัดเก็บข้อมูลบนดิสก์)

  • Data Files: ข้อมูลทั้งหมดที่ถูกจัดเก็บใน PostgreSQL จะถูกบันทึกลงใน data files โดยฐานข้อมูลจะเก็บข้อมูลในรูปแบบที่มีการจัดระเบียบเพื่อเพิ่มประสิทธิภาพในการอ่านและเขียน
  • Write-Ahead Logs (WAL): เป็นกลไกที่ PostgreSQL ใช้ในการบันทึกการเปลี่ยนแปลงข้อมูลทั้งหมดก่อนที่จะทำการเขียนข้อมูลลงใน data files เพื่อให้สามารถกู้คืนข้อมูลได้หากเกิดความผิดพลาด

6. Query Planner and Optimizer (ตัววางแผนและปรับแต่งคำสั่ง SQL)

เมื่อ PostgreSQL รับคำสั่ง SQL จาก client มันจะผ่านกระบวนการวางแผนการดำเนินการ (Query Planning) และปรับแต่ง (Query Optimization) เพื่อให้คำสั่ง SQL ถูกประมวลผลในลำดับที่มีประสิทธิภาพที่สุด

  • Planner: ทำหน้าที่ในการกำหนดแผนการทำงานของคำสั่ง SQL
  • Optimizer: ปรับแต่งแผนการเพื่อเลือกวิธีการประมวลผลที่เร็วที่สุด

7. Transaction Management (การจัดการธุรกรรม)

PostgreSQL ใช้ระบบการจัดการธุรกรรมแบบ ACID (Atomicity, Consistency, Isolation, Durability) เพื่อให้มั่นใจว่าการดำเนินการฐานข้อมูลจะมีความถูกต้องและสมบูรณ์

  • Transaction Log: PostgreSQL จะบันทึกทุกการเปลี่ยนแปลงที่เกิดขึ้นในฐานข้อมูลใน Transaction Log
  • Locking Mechanism: ระบบการล็อกที่ช่วยในการควบคุมการเข้าถึงข้อมูลในช่วงเวลาที่ธุรกรรมกำลังดำเนินการ

สรุป

PostgreSQL เป็นระบบฐานข้อมูลที่มีโครงสร้างการทำงานที่ซับซ้อนและมีการออกแบบเพื่อให้สามารถจัดการข้อมูลได้อย่างมีประสิทธิภาพและปลอดภัย สถาปัตยกรรมที่ใช้ Client-Server ช่วยให้การเชื่อมต่อกับฐานข้อมูลสะดวกและสามารถจัดการการทำงานได้ในหลายๆ กระบวนการพร้อมกัน รวมถึงการใช้งาน Transaction, Optimizer และการทำงานร่วมกับ Disk Storage ช่วยให้ PostgreSQL เป็นระบบที่มีประสิทธิภาพสูงและเหมาะสมกับการใช้งานในองค์กรต่างๆ