บทความ: “เมื่อ ORM ไม่ได้เป็นมิตรเสมอไป: ทำความเข้าใจง่ายๆจนเด็ก 8 ปีก็รู้เรื่อง”
ในโลกของการเขียนโปรแกรม เรามักจะได้ยินว่า ORM หรือ Object-Relational Mapping เป็นเครื่องมือที่ยอดเยี่ยมในการทำให้นักพัฒนาทำงานกับฐานข้อมูลได้ง่ายขึ้น เหมือนเป็นสะพานที่เชื่อมระหว่างโลกของโค้ดกับโลกของข้อมูลที่เรียกว่า ‘ฐานข้อมูล’ นั่นเองค่ะ แต่เหมือนกับสะพานที่สร้างขึ้นยังไง บางครั้งมันก็ไม่สามารถรับน้ำหนักหรือให้บริการได้ดีเสมอไป วันนี้เราจะมาคุยกันว่าทำไมบางครั้ง ORM ถึงไม่ ‘work’ หรือทำงานไม่ได้ประสิทธิภาพดังที่คาดหวังกัน
คิดภาพง่ายๆนะคะ อย่างเด็กที่อายุ 8 ปี เวลาเขาเล่นตัวต่อหรือเลโก้ ถ้ามีกฎคู่มือบอกว่าต้องเชื่อมชิ้นส่วนอย่างไร ก็ตามคู่มือ ชิ้นส่วนต่างๆก็จะต่อกันได้อย่างง่ายดาย แต่ถ้าคู่มือเขียนไม่ชัดเจน หรือชิ้นส่วนที่มีอยู่ไม่เข้ากับที่ต้องการจริงๆ หรือชิ้นส่วนที่ซับซ้อนมากเกินไป การเชื่อมชิ้นส่วนเหล่านั้นก็อาจจะไม่สำเร็จอย่างที่คิด
ORM ก็เหมือนกับคู่มือนั้นแหละค่ะ มันเป็นเครื่องมือที่บอกโปรแกรมว่าต้องจัดการกับฐานข้อมูลยังไง เช่นการเอาข้อมูลเข้าไป การแก้ไข หรือการเอาข้อมูลออกมา แต่บางครั้งโครงสร้างหรือลักษณะของข้อมูลมันซับซ้อนหรือแตกต่างไปจากที่ ORM ถนัด ทำให้มันต้องทำงานหนักกว่าปกติ แล้วมันก็อาจจะประสบปัญหาได้
อย่างเช่น คุณภาพของ ORM เองก็มีผล ถ้า ORM ที่เราใช้ไม่ได้รับการออกแบบมาอย่างดี เหมือนถ้าเรามีคู่มือตัวต่อที่เขียนมั่ว ไม่ละเอียด แน่นอนว่าเราก็จะต่อตัวต่อลำบาก ORM ที่ไม่ดีก็เหมือนคู่มือตัวต่อนั้นแหละค่ะ ทำให้โปรแกรมเมอร์ต้องใช้เวลาแก้ไขปัญหาสารพัดจนบางครั้งกลายเป็นว่าใช้เวลามากกว่าที่จะเขียนคำสั่งเองตั้งแต่ต้น
อีกทั้งประเด็นของประสิทธิภาพการทำงาน บางครั้ง ORM ก็ไม่สามารถทำงานได้เร็วเท่าที่ควร หรือต้องใช้ทรัพยากรเครื่องคอมพิวเตอร์มากเกินไป เพราะมันต้องแปลงการทำงานของโค้ดที่เราเขียนไปเป็นคำสั่งสำหรับฐานข้อมูล ซึ่งบางครั้งมันก็ไม่ได้แปลงไปในรูปแบบที่เหมาะสมที่สุด ทำให้การดึงหรือแก้ไขข้อมูลช้าลง คล้ายกับเด็กที่ตามคู่มือตัวต่อแต่ทำช้ากว่าที่ปล่อยใจให้ถึงจุดหมายแบบไม่มีขอบเขต
ตัวอย่างเช่น คุณต้องการดึงข้อมูลลูกค้าที่มีการซื้อสินค้ามากกว่า 5 ครั้งในเดือนที่แล้ว หากไม่ใช้ ORM คุณอาจเขียนคำสั่ง SQL โดยตรงเพื่อดึงข้อมูลที่ต้องการ แต่เมื่อใช้ ORM คุณอาจต้องเขียนโค้ดหรือกำหนดคุณสมบัติต่างๆ ซึ่งอาจทำให้โค้ดดูซับซ้อนและทำงานไม่เร็วเท่ากับการเขียน SQL โดยตรงเลยค่ะ
สรุปว่า ORM เป็นเครื่องมือที่ดี แต่บางครั้งมันก็อาจจะพาเราไปไม่ถึงฝั่งฝัน บางครั้งเราต้องเข้าใจว่าเมื่อไหร่ควรใช้ หรือเมื่อไหร่ไม่ควรใช้ และเมื่อพบปัญหา การเรียนรู้จากสถานที่ที่มุ่งเน้นการสอนและการฝึกฝนด้านการเขียนโค้ดแบบเข้มข้น เช่นที่ Expert-Programming-Tutor จะช่วยให้คุณมีฝีมือในการแก้ไขปัญหาเหล่านี้ได้อย่างมืออาชีพ สามารถประเมินสถานการณ์และเลือกเครื่องมือที่เหมาะสมกับงานที่คุณกำลังทำอยู่ได้ดีที่สุดค่ะ
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากเจอข้อผิดพลาด หรือต้องการพูดคุย ติดต่อได้ที่ https://m.me/expert.Programming.Tutor/
Tag ที่น่าสนใจ: orm object-relational_mapping programming database coding sql efficiency performance data_manipulation programming_tool programming_concept coding_practice error_handling best_practices
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM
Copyright (c) 2013 expert-programming-tutor.com. All rights reserved. | 085-350-7540 | 084-88-00-255 | ntprintf@gmail.com