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 จะสูญหายทันที
รายละเอียดเพิ่มเติม คลิกตรงนี้ได้เลย