Đang Tải...

Trang chủ
Tot Blog

Kiến thức & Tin công nghệ

Bạn cần biết gì về MongoDB?

12/12/2023

icon

MongoDB là một cơ sở dữ liệu hướng document, là database thuộc dạng NoSQL mã nguồn mở. Nó là một công cụ có thể quản lý thông tin, lưu trữ hoặc truy xuất thông tin rất nhanh do các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như cơ sở dữ liệu quan hệ.

Mục lục

Mục lục

1. Định nghĩa về MongoDB

1.1. NoSQL là gì?

NoSQL là viết tắt của “Not only SQL”, bạn đừng nhầm sang No SQL (không có SQL) nhé, đây là một loại cơ sở dữ liệu phi quan hệ được xây dựng riêng cho mô hình dữ liệu và có schema (lược đồ) linh hoạt.
Khác với cơ sở dữ liệu quan hệ (relational database), NoSQL không yêu cầu cấu trúc cố định với bảng và mối quan hệ giữa chúng mà thay vào đó, nó linh hoạt hơn trong việc lưu trữ dữ liệu không cấu trúc, bán cấu trúc hoặc có cấu trúc không rõ ràng, phù hợp cho việc xử lý lượng dữ liệu lớn và phân tán. 
Loại cơ sở dữ liệu này thích hợp cho các ứng dụng web, Big Data, IoT và các mô hình cần sự linh hoạt và khả năng mở rộng. NoSQL có thể sử dụng nhiều cấu trúc dữ liệu khác nhau như cơ sở dữ liệu tài liệu, cột, khóa – giá trị hoặc đồ thị để phù hợp với các nhu cầu cụ thể của ứng dụng.

1.2. MongoDB là gì?

MongoDB là một cơ sở dữ liệu hướng document, là database thuộc dạng NoSQL mã nguồn mở. Nó là một công cụ có thể quản lý thông tin, lưu trữ hoặc truy xuất thông tin rất nhanh do các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như cơ sở dữ liệu quan hệ. Ngoài ra, MongoDB còn hỗ trợ nhiều ngôn ngữ lập trình như C, C++, C#, Go, Java, Python, Ruby và Swift.
Thay vì sử dụng bảng và hàng như trong cơ sở dữ liệu quan hệ, trong cơ sở dữ liệu NoSQL như MongoDB, kiến trúc được tạo thành từ các bộ sưu tập (collections) và tài liệu (documents). Tài liệu được hình thành từ các cặp khoá giá trị – đơn vị dữ liệu cơ bản của MongoDB.
Website: https://www.mongodb.com/

 

Lịch sử của MongoDB

MongoDB được ra mắt lần đầu vào tháng 2 năm 2009 tiên bởi MongoDB Inc. – công ty ban đầu có tên 10gen trước khi đổi tên vào năm 2013.
Sinh ra là cơ sở dữ liệu hướng document mã nguồn mở, MongoDB đã nhanh chóng thu hút sự chú ý của cộng đồng phát triển nhờ vào thiết kế linh hoạt và khả năng mở rộng vượt trội của nó. Việc lưu trữ dưới dạng tài liệu, thay vì bằng bảng và hàng như trong cơ sở dữ liệu quan hệ đã mang lại sự linh hoạt và dễ dàng trong việc xử lý dữ liệu có cấu trúc và không có cấu trúc.

Đọc thêm: Database là gì? Cơ sở dữ liệu có quan trọng không?

 

2. Mục đích sử dụng và vai trò của MongoDB

MongoDB có thể được sử dụng để phục vụ các mục đích sau:

  • Lưu trữ: MongoDB có thể lưu trữ các khối lượng dữ liệu lớn có cấu trúc và không cấu trúc và có khả năng mở rộng theo chiều dọc và ngang. Các chỉ mục được sử dụng để cải thiện hiệu suất tìm kiếm. Tìm kiếm cũng được thực hiện bằng cách sử dụng truy vấn theo trường dữ liệu, phạm vi và biểu thức.
  • Tích hợp dữ liệu: Điều này tích hợp dữ liệu cho các ứng dụng, bao gồm cả các ứng dụng đa đám mây và kết hợp.
  • Mô tả cấu trúc dữ liệu phức tạp: Cơ sở dữ liệu tài liệu cho phép nhúng tài liệu để mô tả các cấu trúc lồng nhau (một cấu trúc bên trong một cấu trúc) và có thể chịu được sự biến đổi trong dữ liệu.
  • Cân bằng tải. MongoDB có thể được sử dụng để chạy trên nhiều server khác nhau.
Bạn cần biết gì về MongoDB?

Vai trò của MongoDB

Các tính năng của MongoDB bao gồm những điểm sau:

  • Sao chép: Một bộ sao chép (replica set) bao gồm hai hoặc nhiều phiên bản MongoDB được sử dụng để cung cấp tính sẵn có cao. Bộ sao chép gồm máy chủ chính (primary) và máy chủ phụ (secondary). Máy chủ MongoDB chính thực hiện tất cả các thao tác đọc và ghi, trong khi máy chủ sao chép phụ giữ một bản sao dữ liệu. Nếu máy chủ chính gặp sự cố, máy chủ sao chép phụ sẽ được sử dụng.
  • Khả năng mở rộng (Scalability): MongoDB hỗ trợ mở rộng theo cả chiều dọc và ngang. Mở rộng theo chiều dọc nghĩa là thêm sức mạnh vào máy chủ hiện có, trong khi mở rộng theo chiều ngang là thêm máy chủ vào tài nguyên của người dùng.
  • Cân bằng tải (Load Balancing): Nó có thể xử lý cân bằng tải mà không cần một bộ cân bằng tải riêng biệt và dành riêng, thông qua mở rộng theo chiều dọc hoặc ngang.
  • Không cần mô hình dữ liệu cố định. MongoDB là cơ sở dữ liệu không cần mô hình cố định, điều này có nghĩa là cơ sở dữ liệu có thể quản lý dữ liệu mà không cần một kế hoạch mô hình cụ thể.
  • Tài liệu: Dữ liệu trong MongoDB được lưu trữ dưới dạng tài liệu với các cặp khóa-giá trị thay vì hàng và cột, điều này làm cho dữ liệu linh hoạt hơn so với cơ sở dữ liệu SQL.

3. Ưu và nhược điểm của MongoDB

Ưu điểm

  • Không cần mô hình cố định (schema): Giống như các cơ sở dữ liệu NoSQL khác, MongoDB không đòi hỏi các mô hình cố định trước. 
  • Lưu trữ bất kỳ loại dữ liệu nào: Điều này mang lại linh hoạt cho người dùng để tạo ra bất kỳ số lượng trường nào trong một tài liệu, làm cho việc mở rộng cơ sở dữ liệu Mongo dễ dàng hơn so với cơ sở dữ liệu quan hệ.
  • Hướng document: Ưu thế của việc sử dụng document là các đối tượng ánh xạ với các loại dữ liệu native trong nhiều ngôn ngữ lập trình. 
  • Khả năng mở rộng: Chức năng cốt lõi của MongoDB là khả năng mở rộng theo chiều ngang, làm cho nó trở thành cơ sở dữ liệu hữu ích cho các công ty chạy các ứng dụng dữ liệu lớn. Ngoài ra, phân vùng (sharding) cho phép cơ sở dữ liệu phân phối dữ liệu trên một cụm máy chủ, hỗ trợ việc tạo ra các vùng dữ liệu dựa trên một khóa phân vùng.
  • Hỗ trợ bên thứ ba: MongoDB hỗ trợ nhiều engine lưu trữ và cung cấp các API engine lưu trữ có thể gắn kết, cho phép bên thứ ba phát triển engine lưu trữ riêng.
  • Tích hợp: Cho phép người dùng chạy mã MapReduce trực tiếp trên cơ sở dữ liệu thay vì chạy trên Hadoop. MongoDB cũng bao gồm hệ thống tệp riêng gọi là GridFS, tương tự Hadoop Distributed File System. Việc sử dụng hệ thống tệp chủ yếu để lưu trữ các tệp lớn hơn giới hạn kích thước của BSON là 16 MB mỗi tài liệu. Những điểm tương đồng này cho phép MongoDB được sử dụng thay vì Hadoop, mặc dù phần mềm cơ sở dữ liệu này tích hợp với Hadoop, Spark và các framework xử lý dữ liệu khác.

Nhược điểm

  • Tất nhiên, bên cạnh những ưu điểm thì MongoDB cũng sẽ có một số hạn chế đi kèm: Tính liên tục: Với chiến lược chuyển đổi tự động khi gặp sự cố, người dùng chỉ cần thiết lập master node trong một cụm MongoDB. Nếu nó gặp sự cố, một node khác sẽ tự động chuyển đổi thành master node mới. Sự chuyển đổi này đảm bảo tính liên tục, nhưng không ngay lập tức – có thể mất đến một phút. Để so sánh, cơ sở dữ liệu NoSQL Cassandra hỗ trợ nhiều master node. Nếu một node gặp sự cố, node khác sẽ sẵn sàng, tạo ra một cơ sở dữ liệu có sẵn và hoạt động cao.
  • Giới hạn ghi:  Node master của MongoDB cũng hạn chế tốc độ ghi dữ liệu vào cơ sở dữ liệu. Việc ghi dữ liệu phải được ghi nhận trên node, và việc ghi thông tin mới vào cơ sở dữ liệu bị giới hạn bởi khả năng của node master đó.
  • Tính nhất quán dữ liệu: MongoDB không cung cấp đầy đủ tính toàn vẹn tham chiếu thông qua việc sử dụng ràng buộc foreign-key (khóa ngoại), điều này có thể ảnh hưởng đến tính nhất quán của dữ liệu.
  • Bảo mật: Tính xác thực người dùng không được kích hoạt mặc định trong MongoDB. Tuy nhiên, những kẻ tấn công độc hại đã nhắm đến một số lượng lớn các hệ thống MongoDB không được bảo vệ trong các cuộc tấn công, điều này đã dẫn đến việc thêm cài đặt mặc định chặn kết nối mạng đến cơ sở dữ liệu nếu chúng chưa được cấu hình bởi quản trị cơ sở dữ liệu.

Kết luận

Như vậy, qua bài viết Tothost đã giúp bạn tiếp cận với cơ sở dữ liệu MongoDB – một loại cơ sở dữ liệu noSQL phổ biến. Nếu công việc của bạn yêu cầu sự phản hồi nhanh hoặc các bigdata với yêu cầu truy vấn nhanh với lượng request lớn thì MongoDB sẽ là lựa chọn đáng cân nhắc hàng đầu. Hãy cân nhắc thật kỹ tuỳ theo dự án và trường hợp cụ thể để xem MongoDB có phải sợ thủ đắc lực của bạn hay không nhé!

TelegramCommunity
scroll top
Thông báo
Đóng