cloud_db

บทความนี้จะแนะนำข้อดีข้อเสีย และวิธีการเปลี่ยนมาใช้ MySQL Cloud Database ของ HostPacific.com

สำหรับผู้สนใจรายละเอียดทั่วไปและเทคโนโลยีของ Cloud Database สามารถอ่านได้จาก รายละเอียด Cloud Database

โดยปกติ Web Application ของเรา ไม่ว่าจะพัฒนาด้วย PHP, Python ฯลฯ มักจะใช้ MySQL เป็นตัวเลือกลำดับต้นๆ ในส่วนฐานข้อมูล ซึ่ง MySQL ที่ใช้กันทั่วไปก็จะทำงานคู่ขนานกับ Web Application ใน Hosting หรือ VPS หรือ Cloud server เดียวกัน

สิ่งที่ควรพิจารณาในรูปแบบฐานข้อมูลเดี่ยวๆ นี้คือ

  • ข้อดี MySQL ทำงานเดี่ยวส่วนใหญ่อยู่บนเครื่องเดียวกับ Application สามารถ connect ถึงกันตรงๆ ผ่าน unix socket ให้ผลลัพธ์ที่รวดเร็ว ในกรณีที่เครื่องทำงานปกติ cpu เร็วพอ และการใช้งานไม่หนาแน่นจนเกินไป
  • ส่วนข้อเสียของการใช้ฐานข้อมูลเดี่ยว คือ
    • มีความเสี่ยงต่อการสูญหายของข้อมูลล่าสุดในกรณีระบบมีปัญหา การ backup ปกติ ไม่สามารถเก็บข้อมูล ณ ปัจจุบันได้ตลอดเวลา การกู้คืนข้อมูลจะเป็นข้อมูลย้อนหลังไป backup สุดท้าย ซึ่งอาจเป็นข้อมูลเก่าของหลายชั่วโมง หลายวัน หรือ หลายสัปดาห์ก่อน ดังนั้น ธุรกิจที่ต้องระมัดระวังเรื่องข้อมูล เช่นการทำ transaction ซื้อขาย หรือรายการเกี่ยวกับตัวเลข เงินๆ ทองๆ ควรพิจารณาจุดนี้มากที่สุด ข้อมูลใน Cloud Database จะกระจายไปกลายเครื่องอย่างน้อย 3 copy ทำให้ปัญหาข้อนี้หมดไป
    • การ scale ในกรณีที่มี traffic เข้ามาที่ Application มากขึ้น ฐานข้อมูลเดี่ยวจะสะดุดที่ capacity สูงสุดของเครื่องนั้น แต่ Cloud Database ยังสามารถรับ traffic ไปต่อได้อีกหลายเท่าตัวจากการทำงานร่วมกันของ database engine ใน cluster ที่แบ่งภาระการอ่านเขียนกันไป

กล่าวโดยสรุป ข้อดีของ Cloud Database คือการทำงานได้อย่างต่อเนื่อง ปราศจากปัญหาเครื่องใดเครื่องหนึ่งหยุดทำงาน และยังรองรับ traffic เพื่อ scale ได้โดยไม่สะดุด

 

ในแง่การใช้งาน การเปลี่ยนมาใช้ Cloud Database นั้นง่ายดายมาก หลังจากการเปิดบริการเราก็จะได้รับข้อมูลการเชื่อมต่อมา เช่น

username = cluster_user;
password = cluster_password;
database ip = cluster_ip;
port = cluster_port;

 

การเชื่อมต่อ MySQL โดย code PHP ตัวอย่างเช่น

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
  die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);

 

เพียงแค่เปลี่ยนเป็น

$link = mysql_connect('cluster_ip:cluster_port', 'cluster_user', 'cluster_password');
if (!$link) {
  die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);

 

สังเกตว่า มีการเปลี่ยนแปลงเพียงบรรทัดเดียว คือเปลี่ยนจากการเชื่อมไป  localhost ไปยัง cluster_ip:port ซึ่งเป็น loadbalancer ของ Cloud Database แทน แอพของเราก็จะเปลี่ยนการใช้งานจาก MySQL เดี่ยวๆ ไปอยู่บน Cloud Database แล้ว

โค้ดในแอพนอกจากนั้นเหมือนเดิมทุกประการ

ความแตกต่างบางประการของ MySQL Cloud Database

  • เนื่องจากระบบถูกออกแบบให้รับประกัน ACID transaction จึงรองรับฐานข้อมูลชนิด InnoDB เท่านั้น หากฐานข้อมูลท่านใช้ MySQL engine อื่น เช่น MyISAM สามารถทดลองเปลี่ยนเป็น InnoDB เพื่อทดสอบได้
  • ไม่รองรับ Memory tables
  • ไม่รองรับ DELETE operation บน table ที่ไม่มี primary key
  • ไม่รองรับ LOCK/UNLOCK TABLES และ lock functions (GET_LOCK(), RELEASE_LOCK()… ) เนื่องจากระบบเป็น Multi-master

 

การย้ายข้อมุลจากระบบเดิมก็สามารถทำได้ง่ายๆ ทั้งผ่านทาง phpMyAdmin ที่จะมีให้กับลูกค้า Cloud Database ใช้งาน หรือยังสามารถให้แผนก support ช่วยดำเนินการให้โดยไม่คิดค่าใช้จ่ายในการย้าย

 

HostPacific.com | JotDomain.com | HelpDesk.in.th

ติดต่อเราได้ที่:
* ทางโทรศัพท์ 02-717-0055 (เวลาทำการ)
* ทางระบบ Live Support ที่ http://www.hostpacific.com
* ทางระบบ Ticket Support ที่ http://go.hostpacific.com/ticket