วัน: 17 ธันวาคม 2020

PHP: PERPHP: PER

ในฐานะ Senior Architect ด้านระบบซอฟต์แวร์ การรักษามาตรฐานโค้ด (Coding Standards) ที่ยืดหยุ่นและทันสมัยคือหัวใจสำคัญของการสร้างระบบที่ยั่งยืน ไม่ว่าจะเป็นการพัฒนาด้วยภาษา PHP หรือการออกแบบฐานข้อมูลด้วย PostgreSQL ทั้งสองด้านต่างก็มีแนวคิดที่เรียกว่า ‘Living Standard’

สำหรับ PHP นั้น วงการได้พัฒนาจาก PSR (PHP Standard Recommendations) ไปสู่มาตรฐานที่ก้าวหน้ากว่าอย่าง PER (PHP Ecosystem Readiness) ซึ่งเป็นมาตรฐานที่ออกแบบมาเพื่อรองรับ Syntax และฟีเจอร์ใหม่ๆ ของ PHP เวอร์ชันล่าสุดอย่างต่อเนื่อง บทความนี้จะเจาะลึกแนวคิด PER และเปรียบเทียบหลักการนี้กับความสามารถในการขยายตัวของ PostgreSQL เพื่อให้เห็นภาพการยกระดับมาตรฐานทางสถาปัตยกรรมทั้งสองด้านครับ


PER: การยกระดับมาตรฐานที่เติบโตไปพร้อมภาษา

PER (PHP Ecosystem Readiness) ไม่ใช่แค่ชุดของกฎเกณฑ์ แต่เป็นกรอบแนวคิดที่เน้นการปรับตัว (Adaptability) เพื่อให้โค้ด PHP สามารถใช้ประโยชน์จากฟีเจอร์ใหม่ๆ ของภาษาได้อย่างเต็มที่ เช่น การจัดการกับ Typed Properties หรือ Attributes ใหม่ๆ ใน PHP 8.x

หลักการนี้คล้ายคลึงกับการพัฒนาฐานข้อมูลอย่าง PostgreSQL ซึ่งไม่ได้หยุดนิ่ง แต่มีการเพิ่มประเภทข้อมูล (Data Types) ใหม่ๆ, การปรับปรุงประสิทธิภาพของ Common Table Expressions (CTEs), หรือการเพิ่มความสามารถในการจัดการข้อมูล NoSQL ผ่าน JSONB อย่างต่อเนื่อง

การเปรียบเทียบสถาปัตยกรรม: PER กับ PostgreSQL

ถ้าเรามองในมุมของสถาปนิก ระบบทั้งสองต้องมีกลไกที่รองรับการเปลี่ยนแปลง (Evolution Mechanism) ดังนี้:

  • PER (PHP): กำหนดแนวทางให้ Developer ใช้ฟีเจอร์ใหม่ๆ ของ PHP อย่างเป็นระบบ เพื่อให้โค้ดไม่ล้าสมัย
  • PostgreSQL: มีความสามารถในการขยายตัวสูง (Extensibility) เช่น การใช้ JSONB หรือการสร้าง Custom Data Types ทำให้ระบบสามารถรองรับรูปแบบข้อมูลใหม่ๆ ได้โดยไม่ต้องรื้อโครงสร้างหลัก

ตัวอย่างเช่น การที่ PER ผลักดันให้ใช้ Generics ใน PHP นั้น เทียบได้กับการที่ PostgreSQL อนุญาตให้เราใช้ฟังก์ชันที่จัดการกับโครงสร้างข้อมูลที่ซับซ้อน เช่น การแยกข้อมูลจากสตริง หรือการจัดการอาเรย์อย่างมีประสิทธิภาพ

ตัวอย่างการจัดการข้อมูลที่ยืดหยุ่นใน PostgreSQL

ในการจัดการข้อมูลที่ต้องรองรับรูปแบบที่เปลี่ยนแปลงได้ (Schema Evolution) PostgreSQL มีความสามารถที่โดดเด่นอย่างการใช้ฟังก์ชัน `unnest` เพื่อแยกค่าจากอาเรย์ หรือการใช้ `JSONB` ซึ่งเป็นหลักการที่สอดคล้องกับแนวคิดของ Living Standard ที่ต้องพร้อมรับข้อมูลรูปแบบใหม่ๆ เสมอ

สมมติว่าเรามีข้อมูลรายการสินค้าที่ถูกเก็บเป็นอาเรย์ของสตริง และต้องการแยกมันออกมาเพื่อประมวลผล:

SQL

SELECT unnest(ARRAY['apple', 'banana', 'orange']) AS item_name;

คำสั่งนี้แสดงให้เห็นถึงความสามารถในการจัดการโครงสร้างข้อมูลที่ยืดหยุ่น ซึ่งเป็นหัวใจสำคัญของการออกแบบระบบที่พร้อมรับการเปลี่ยนแปลง ไม่ว่าจะเป็นในระดับภาษา (PER) หรือระดับฐานข้อมูล (PostgreSQL)

บทสรุป: การเป็นสถาปนิกที่พร้อมปรับตัว

ไม่ว่าจะเป็นการเขียนโค้ดด้วย PHP ที่ยึดตาม PER หรือการออกแบบ Schema ด้วย PostgreSQL การทำความเข้าใจหลักการของ ‘Living Standard’ คือสิ่งสำคัญที่สุดสำหรับนักพัฒนาระดับสถาปนิก มันหมายถึงการไม่ยึดติดกับเทคโนโลยี ณ ปัจจุบัน แต่ต้องพร้อมที่จะเรียนรู้และปรับใช้ฟีเจอร์ใหม่ๆ เสมอ เพื่อให้ระบบที่สร้างขึ้นมีความยืดหยุ่นและสามารถเติบโตไปพร้อมกับความต้องการทางธุรกิจที่เปลี่ยนแปลงตลอดเวลา