มาลองเทียบ ORM VS SQL ว่าอันไหน Performance ดีกว่ากัน ด้วย Golang กัน
ORM(Object Relational Mapping) เป็นการแปลงฐานข้อมูลที่เป็นพวก Relational Database ให้มาอยู่ในรูปแบบ Object Oriented Language ซึ่งจะแปลงไปตามภาษาที่ใช้งานและก็แปลงกลับมาหา SQL ซึ่งเราเรียกมันว่า ORM
SQL (Structured Query Language) ก็คือคำสั่งที่เอาไว้จัดการ Database ซึ่งใช้จัดการ Database ที่เป็น Relational Database เช่น MySQL,PostgreSQL,MariaDB,Oracle,Microsoft SQL Server เป็นต้น
มาดูเลยดีกว่าว่าการเขียนและ Performance ของตัวไหนจะดีกว่ากัน
Code จะเป็นของทั้ง Gorm และ SQL ซึ่งจะใช้ฐานข้อมูลเป็น PostgreSQL เป็นตัวอย่างดึงข้อมูล 270,000 rows
ผมจะอธิบายส่วนของ SQL ก่อน
****ถ้าออกแบบฐานข้อมูลเป็น camelCase ถ้า Query SQL ต้องใส่ “column” เสมอปกติเราจะ select first_name,last_name ได้เลยถ้าไม่มีตัวใหญ่อยู่ในชื่อส่วนใหญ่จะกำหนดไปเลยว่าจะออกแบบเป็น camelCase หรือ snake_case หรือแม้ PascalCase จะไม่ปนกันให้เลือกอย่างใดอย่างหนึ่งไปเลย
โดยค่าเฉลี่ยนจะอยู่ที่ 2.30559134 วินาที 270,000 กว่า rows ก็ไม่ได้แย่ปกติไม่มีใคร Query มาเยอะขนาดนี้อยู่แล้วนอกจากเอา Data ไป Process
มาดูในส่วนของ Gorm กันบ้างครับจริงๆ ORM มีหลายตัวมากๆ แต่ที่เขา Recommend ใน Golang กันมาจะเป็นส่วนของ ORM ที่ชื่อว่า Gorm
โดยค่าเฉลี่ยนจะอยู่ที่ 2.29526018 วินาที 276,124 กว่า rows พอๆกับ SQL ปกติเลย
ก็จบไปแล้วนะครับบทความเกี่ยวกับ ORM VS SQL การเขียน Code และการดูแล ORM ดีกว่าแน่นอนแต่ในส่วนของ Performance ยังตัดสินกันไม่ได้อาจจะเพราะไม่ได้มีการ Join Table กัน แต่จริงๆไม่ต้อง Join มันก็เห็นข้อแตกต่างของ ORM กับ SQL แล้วนะว่า SQL เร็วกว่าแต่พอมา Run Performance กินกันไม่ลงเฉยหรือว่าตัว Gorm พัฒนาแล้วก็เป็นได้หรือใครมีข้อเสนอแนะเม้นกันได้เลยนะครับ 5555+
บทความอื่นๆที่คิดว่าน่าจะเกี่ยวข้อง
( CR. ธำรงค์ ไชยวงค์ )