Zend Framework 1.10 + Doctrine 1.2

ปัญหาเริ่มต้นที่ว่า ผมใช้ Zend Framework อยู่ตอนนี้ แต่ด้วยฐานข้อมูลที่มันไม่นิ่ง และกำลังมองเรื่องปริมาณการใช้งานที่เห็นว่างานนี้ถ้าเกิด มีผู้ใช้เยอะแน่ๆ ปัญหาหนึ่งที่เห็นว่ามันยังเป็นคอขวดในโปรเจ็คก็เรื่อง transaction ของฐานข้อมูล ซึ่งตอนแรกเขียน Class Map กับตารางปวดหัวมากที่เดียว เพราะอย่างหนึ่งที่ต้องยอมรับก็เพราะไม่ได้เป็นคนออกแบบเองแล้วเอกสารประกอบให้มาน้อยมาก ได้แก่ Data Dictionary ที่หยาบเอามากๆ และ ER Diagram ที่ต้องมานั่งเล็งเอาจากภาพหน้าจอโปรแกรมออกแบบ ER Diagram อีกที อย่างสุดท้ายก็คือในการใช้งานจริง ต้องเอาไปใช้ร่วมกับ Oracle อันนี้ต้องบอกว่าเป็นที่ผมเองที่ไม่เคยลองเล่นกับ Oracle มาก่อนเลยค่อนข้างจะเป็นปัญหา

สุดท้ายเลยตัดสินใจมองหา ORM (Object-Relational Mapping) มาช่วยงานดีกว่า เพราะอย่างที่เห็นได้ชัดคือ ORM มันทำงาน On top พวกฐานข้อมูลอีกที ไอ้เรื่องการจะเปลี่ยนจาก MySQL ที่ลองอยู่ไปเป็น PostgreSQL หรือ Oracle คงไม่ใช่ปัญหาใหญ่เท่าไหร่นัก อย่างมากก็แก้ที่ตัว ORM เท่านั้น แต่ก่อนอื่นต้องบอกกว่า Zend_Db ของ Zend ก็เก่งใช้ได้นะครับ แต่ข้อเสียคือถ้าต้องมา Optimize ให้เข้ากับฐานข้อมูลก็ใช้พลังงานเยอะเหมือนกัน เรียกได้ว่าถ้าต้องจบงานด้วยระยะเวลาขนาดที่เป็นอยู่คงถึงขั้นธาตุไฟเข้าแทรกอ้วกเป็นเลือดกันแน่นอน

เท่าที่ลองหาข้อมูลดู ก็มี Doctrine นี่ล่ะครับให้ PHP Developer ได้ใช้กัน แอบดีใจเล็กๆ ที่ฝั่ง PHP ก็มี ORM ใช้แล้ว ผมเองเลือกใช้ 1.2 ครับ เพราะยังมีเอกสารให้อ่านอยู่ แต่ขณะที่เขียนนี้ Doctrine มีเวอร์ชั่น 2.0 เป็น beta release ให้ลองใช้งานกันเรียบร้อยแล้ว ทำงานบน PHP 5.3 เท่านั้น!

ในอนาคตอันใกล้ๆ มีแผนว่าจะเขียนเรื่องการใช้งาน Doctrine 1.2 กับ Zend Framework 1.10 ลง blog เหมือนกัน แต่ช่วงนี้ขอเผางานนี้ให้เสร็จก่อนนะครับ แรกๆ คงเป็นการรวบยอดจากใน ZendCasts มาก่อน จากนั้นค่อยเปลี่ยนจาก Doctrine 1.2 เป็น Docctrine 2.0 กับ Zend Framework เวอร์ชั่นขณะที่เขียน ซึ่งเท่าที่ตามอ่านในรายการพัฒนาของ Zend Framwork แล้วก็แอบใจชื้นขึ้นมาอีกนิด เพราะทาง Zend Framework เองก็มีแผนที่จะพัฒนาให้สามารถเรียกใช้ Doctrine ได้ง่ายขึ้นกว่าในปัจจุบัน แต่ถ้าใครใช้ Symfony อยู่ว่าคงคุ้นเคยกับ Dcotrine นี่แล้วเพราะเท่าที่อ่านดู Symphony สามารถใช้ command line  สร้างโปรเจ็คที่ทำงานกับ Doctrine ได้นานแล้ว

สุดท้ายถ้าใครต้องการเล่นกับ Doctrine และ Zend Framework ก็ลองนัั่งฟังได้ที่ www.zendcasts.com ครับ

Doctrine, Zend Framework, Zendcasts