
MongoDB – เป็นฐานข้อมูล NoSQL แบบหนึ่ง ไม่มี relation เก็บข้อมูลในรูปแบบ JSON ซึ่งเรียกว่า Document โดยจะเก็บค่า key และ value และการเก็บข้อมูล document จะถูกเก็บไว้ใน Collection จะเปรียบเทียบง่ายๆก็คือ Document คือ Row ของ MySQL ส่วน Collection ก็คือ Table นั่นเอง
- ลักษณะการเก็บข้อมูลแบบ Document (คล้ายๆ Array หลายมิติ)
 - รองรับการทำ Full Index ซึ่งสามารถทำให้หาข้อมูลได้เร็ว
 - รองรับการขยายขนาด
 - ทำระบบสำรองได้ง่าย
 - แก้ไขข้อมูลได้เร็ว
 - เขียนชุดการสั่งทำงานได้
 - เก็บข้อมูลแบบ GridFS
 
เปรียบเทียบ MongoDB และ MySQL คร่าวๆ ดังนี้
| MySQL | MongoDB | 
|---|---|
| Table | Collection | 
| Row | Document | 
| Column | Field | 
| Joins | Embedded documents, linking | 
ข้อดีของ MongoDB
- MongoDB เป็น database แบบ Document-Oriented โดยลักษณะการเก็บข้อมูลจะใช้รูปแบบ format เป็น Json Style โดย Row แต่ละ Row ไม่จำเป็นต้องมีโครงสร้างข้อมูลเหมือนกัน เช่น
 - MongoDB ใช้ระบบการจัดการ memory แบบเดียวกับ cached memory ใน linux ซึ่งจะปล่อยให้ OS เป็นคนจัดการ Memory
 - ใช้ภาษา javascript เป็นคำสั่งในการจัดการข้อมูล
 - MongoDB เป็น Full Index กล่าวคือรองรับข้อมูลมหาศาลมากๆ สามารถค้นหาจากส่วนไหนของข้อมูลเลยก็ได้
 - MongoDB รองรับการ เพิ่ม หรือ หด field แบบรวดเร็ว ไม่ต้องใช้คำสั่ง Alter Table
 - read-write ข้อมูลรวดเร็ว
 - write ข้อมูล แบบ asynchronous (คล้าย INSERT DELAYED ของ MyISAM ใน MySQL) คือไม่ต้องรอ Insert เสร็จจริงก็ทำงานต่อได้
 - MongoDB มี Capped Collection ซึ่งจะทยอยลบข้อมูลเก่าที่เก็บไว้นานเกินไปแล้วเอาข้อมูลใหม่มาใส่แทนได้ จะ clear ข้อมูลที่เก็บมานานเกินไปไว้ให้อัตโนมัติ ข้อมูลไม่โตกว่าที่เรากำหนด
 - ค้นหาข้อมูลได้รวดเร็ว
 - สามารถใช้เครื่อง server ที่ไม่ต้องคุณภาพสูงมากแต่แบ่งกันทำงานหลายๆเครื่อง ซึ่งประหยัดงบได้มากกว่าใช้เครื่องคุณภาพสูงเพียงเครื่องเดียว
 - สามารถเขียนเป็นชุดคำสั่งได้ คล้ายๆกับการเขียน PL/SQL
 
ข้อเสีย ของ MongoDB
- ถ้า project เก่ามีการ JOIN กันซับซ้อนก็จะเปลี่ยนมาใช้ MongoDB ได้ยาก
 - กินพื้นที่การเก็บข้อมูลมากกว่า MySQL พอสมควร เพราะไม่มี Schema ดังนั้น Schema จริงๆจะอยู่ในทุก row ของฐานข้อมูล ทำให้ข้อมูลใหญ่กว่า MySQL
 - หากใช้งานจน disk เต็ม จะ clear พื้นที่ disk ให้ใช้งานต่อยาก เพราะการสั่ง delete row ไม่ทำให้ฐานข้อมูลเล็กลง ต้องสั่ง compact เองซึ่งต้องมีที่ว่างที่ disk อีกลูกมากพอๆ กับพื้นที่ข้อมูลที่ใช้อยู่ปัจจุบันเป็น buffer ในการลดขนาด
 - หากต้องการใช้งานเป็นฐานข้อมูลหลักแทน MySQL ควรมีเครื่องอย่างน้อย 3 เครื่องที่เป็น physical แยกกันทำ replication กัน เพื่อเพิ่ม durability ของข้อมูล เนื่องจากข้อมูลส่วนใหญ่ของ MongoDB จะเก็บใน Memory เป็นระยะเวลาหนึ่ง หากเครื่องดับไปเครื่อง ข้อมูลที่ยังค้างใน Memory แต่ยังไม่ write ลง disk จะสูญหายทันที
 
รายละเอียดเพิ่มเติม คลิกตรงนี้ได้เลย

