ทำความรู้จัก NoSQL คืออะไร

ทำความรู้จัก NoSQL คืออะไร

    หลายคนคงพอจะเคยได้ยินกันมาบ้าง เกี่ยวกับเทคโนโลยีการจัดการข้อมูลแบบใหม่นี้ ซึ่งก็คือ NoSQL เมื่อพูดถึง NoSQL จะได้ยินชื่อเว็บไซด์ที่ใหญ่ๆ ติดพ่วงมาด้วย เช่น Facebook,Twitter, FourSquare, Digg และอื่นๆ  ทำให้เรารับรู้ว่า NoSQL เป็นระบบฐานข้อมูลสำหรับงานที่ต้องรองรับข้อมูลขนาดใหญ่ๆ รองรับการขยายระบบได้ง่าย เป็นต้น

    ซึ่งก็เป็นเช่นนั้นจริงๆ แต่งานที่เล็กๆ ล่ะจะทำอย่างไร ใช้งานได้ไหม คุ้มค่าที่จะนำ NoSQL มาใช้งานขนาดเล็กหรือเปล่า หรือใช้ Relational Database ก็เพียงพอแล้ว คำตอบคือ ขึ้นอยู่กับลักษณะในการนำมาใช้งาน ก่อนที่จะตอบคำถามว่า NoSQL เป็นคำตอบของระบบจัดเก็บข้อมูลของคุณหรือไม่ ลองพิจารณาหัวข้อต่างๆ ดังต่อไปนี้

 

1. ผู้ใช้งานมากขึ้นเรื่อยๆ (BigUsers)

    จะเห็นได้ว่าในช่วงเวลาที่ผ่านมานี้ และในปัจจุบ้น ผู้ที่ใช้งาน Internet มีแนวโน้มมากขึ้นเรื่อยๆ ไม่ว่าจะใช้งานผ่าน Desktop PC หรือ Smartphone ซึ่งเทคโนโลยีของอุปกรณ์ (Devices) มีหลายหลายมากขึ้น และใช้งานได้ง่ายขึ้น  

    การพัฒนาระบบให้สามารถรองรับปริมาณการเข้าใช้งานแต่ละอุปกรณ์ (Devices) เป็นสิ่งหนึ่งที่ต้องนำมาพิจารณา  และไม่เพียงแต่ต้องรองรับการเข้าใช้งานของผู้ใช้ได้เท่านั้น  เราต้องรองรับวิธีการป้อนข้อมูลแบบใหม่ คือ แต่ก่อนผู้จัดการเนื้อหาต่างๆ คือ Web Master, Web Editor, ผู้ดูแลระบบ เป็นต้น แต่ปัจจุบัน ผู้ที่ป้อนข้อมูลคือ ผู้ใช้บริการ (users) โดยตรง ผ่านอุปกรณ์ (Devices) ต่างๆที่มีหลากหลาย และการป้อนข้อมูลก็ง่ายกว่าแต่ก่อนมากด้วย

    และยังมีปัจจัยอื่นๆ เช่น เทศกาลสำคัญๆ ที่คนจะเข้ามาใช้งานมากเป็นพิเศษ หรือผู้ใช้งานที่ไม่ใช่แค่ประเทศเราเท่านั้น เพราะโลกอินเตอร์ถึงกัน อาจจะต้องดูว่าระบบเรามีผู้เข้าใช้งานจากต่างประเทศ หรือทั่วโลกหรือเปล่าอีกด้วย

    ดังนั้นเราต้องกลับมาทบทวนวิธีการจัดการฐานข้อมูลแล้วว่า  ไม่ใช่แค่ทำให้รองรับกับการเข้ามาใช้งานของผู้ใช้บริการเท่านั้น แต่ต้องรองรับการจัดเก็บข้อมูลที่มากขึ้นเรื่อยๆ ได้ด้วย

 

การใช้งาน CodeIgniter + MongoDB

CodeIgniter Framework เป็น PHP Framework ตัวหนึ่งที่ได้รับความนิยมจาก PHP Developer, การเขียนโปรแกรมให้ CodeIgniter ติดต่อ MongoDB เราอาจจะเขียน Library class และเรียกใช้งานได้เมื่อเราต้องการ


การเขียน Library class เพื่อติดต่อ MongoDB Server ต้องอาศัย PHP Class ที่เขียนไว้สำหรับติดต่อ MongoDB Server ซึ่งเราจำเป็นต้องติดตั้ง PHP Driver for Mongo เข้าไปใน PHP ก่อน (อ่านเพิ่มเติมจากบทความ : เริ่มต้นใช้งาน PHP + MongoDB)

เมื่อเราติดตั้ง PHP Driver ให้รองรับ MongoDB เรียบร้อยแล้ว เราก็เริ่มมาสร้าง Library class ของเราเพื่อติดต่อกับ MongoDB Server ผ่าน PHP Mongo class ได้ทันที

การเขียน Library class ของ CodeIgniter เราอาจจะไม่ต้องเริ่มจากศูนย์ เราลองค้นหา Library class สำหรับติดต่อ MongoDB Server ที่เขียนไว้อยู่แล้วก็ได้ ซึ่ง Library class สำหรับติดต่อ MongoDB Server ที่น่าใช้งานตัวหนึ่งก็คือ (https://github.com/alexbilbie/codeigniter-mongodb-library/tree/v2) ซึ่งเขียนไว้ค่อนข้างดีทีเดียว และใช้งานได้ง่าย ส่วนไหนที่ยังไม่ครอบคลุม อาจจะเขียนเพิ่มต่อก็ยังได้

 

เริ่มต้นใช้งาน PHP + MongoDB

ติดตั้งบน CentOS

วิธีที่ง่ายคือ ติดตั้งผ่าน PECL 
--------------------------------------------------------------------------------------
pecl install mongo
--------------------------------------------------------------------------------------


เมื่อติดตั้ง mongo เรียบร้อยแล้ว จะมีข้อความแจ้งว่า ติดตั้งเรียบร้อยแล้ว และจะมีข้อความแจ้งว่า mongo.so วางไว้ที่ไหน เช่น /usr/lib64/php/modules/mongo.so

* ถ้ายังไม่ติดตั้ง PECL ให้ติดตั้งผ่านคำสั่งนี้ก่อน
--------------------------------------------------------------------------------------
yum install gcc php-devel
--------------------------------------------------------------------------------------