Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB

This entry is part 15 of 24 in the series MongoDB

Ưu nhược điểm của mongodb, khi nào nên dùng MongoDB

Ưu điểm của MongoDB

Open Source:

  • MongoDB là phần mềm mã nguồn mở miễn phí, có cộng đồng phát triển rất lớn

Hiệu năng cao:

  • Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).
  • Thử nghiệm cho thấy tốc độ insert, tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL (So sánh hiệu suất của MongoDB với MySQL)

Tại sao MongoDB có hiệu năng cao như thế? có các lý do sau:

  • MongoDB lưu dữ liệu dạng JSON, khi bạn insert nhiều đối tượng thì nó sẽ là insert một mảng JSON gần như với trường hợp insert 1 đối tượng
  • Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau như trong RDBMS, khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các bảng liên quan như trong RDBMS.
  • Dữ liệu trong MongoDB được đánh chỉ mục (đánh index) nên khi truy vấn nó sẽ tìm rất nhanh.
  • Khi thực hiện insert, find… MongoDB sẽ khóa các thao tác khác lại, ví dụ khi nó thực hiện find(), trong quá trình find mà có thêm thao tác insert, update thì nó sẽ dừng hết lại để chờ find() xong đã.

Dữ liệu linh hoạt:

  • MongoDB là document database, dữ liệu lưu dưới dạng JSON, không bị bó buộc về số lượng field, kiểu dữ liệu… bạn có thể insert thoải mái dữ liệu mà mình muốn.

Là Rich Query Language:

  • MongoDB là một rich query language tức là nó có sẵn các method để thực hiện create, read, update, delete dữ liệu (CRUD)

Tính sẵn có:

  • MongoDB hỗ trợ replica set nhằm đảm bảo việc sao lưu và khôi phục dữ liệu

Khả năng mở rộng Horizontal Scalability:

  • Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster:

Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB

Nhược điểm của MongoDB

  • MongoDB không có các tính chất ràng buộc như trong RDBMS –> dễ bị làm sai dữ liệu
  • Không hỗ trợ join giống như RDBMS nên khi viết function join trong code ta phải làm bằng tay khiến cho tốc độ truy vấn bị giảm.
  • Sử dụng nhiều bộ nhớ: do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên sẽ bị dữ thừa dữ liệu (trong RDBMS thì ta chỉ cần lưu 1 bản ghi rồi các bản ghi khác tham chiếu tới còn trong MongoDB thì không)
  • Bị giới hạn kích thước bản ghi: mỗi document không được có kích thước > 16Mb và không mức độ các document con trong 1 document không được > 100

MongoDB doesn’t support joins like a relational database. Yet one can use joins functionality by adding by coding it manually. But it may slow execution and affect performance.

Khi nào nên dùng MongoDB

MongoDB dùng cho các hệ thống:

Hệ thống realtime (thời gian thực) yêu cầu phản hồi nhanh

Các hệ thống bigdata với yêu cầu truy vấn nhanh.

Các hệ thống có tần suất write/insert lớn

Sử dụng làm search engine.

Ưu nhược điểm của mongodb, khi nào nên dùng MongoDB stackjava.com

Okay, Done!

References:

https://docs.mongodb.com/manual/introduction/

https://docs.mongodb.com/manual/core/sharded-cluster-components/

https://docs.mongodb.com/manual/reference/limits/

Series Navigation<< Sắp xếp trong MongoDB(orderBy, sorting() trong MongoDB)Xóa cột, field, trường của collections trong MongoDB ($unset) >>
stackjava.com