Bài đăng này mình sẽ giúp các bạn có cái nhìn tổng quan về cơ sở dữ liệu MongoDB. Con người không lạ gì với cơ sở dữ liệu quan hệ, còn với cơ sở dữ liệu phi quan hệ thì sao? MEAN stack (MongoDB, Express, AngularJS, NodeJS) đang dần thay thế cho LAMP stack (Linux, Apache, MySQL, PHP/Python).
Cơ sở dữ liệu MongoDB là gì?

- MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người tiêu dùng.
- MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu giữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.
- Với CSDL quan hệ con người có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server…) dùng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ sử dụng định nghĩa là collection thay vì bảng
- So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ sử dụng các document thay cho row trong RDBMS.
- Các collection trong MongoDB được cấu trúc rất linh động, cho phép các dữ liệu lưu giữ không cần tuân theo một cấu trúc chắc chắn.
>>>Xem thêm: Thụât toán tìm kiếm nhị phân (Binary Search)
NoSQL là gì?
NoSQL và MongoDB có mối quan hệ với nhau
Trong định nghĩa của MongoDB có nói đến NoSQL, vậy NoSQL là gì? NoSQL (Non-Relational SQL) là dạng cơ sở dữ liệu mã nguồn mở được ra đời như một mô hình tiến bộ hơn về tốc độ, công dụng,… So sánh với hệ quản trị cơ sở dữ liệu quan hệ RDBMS. NoSQL có kiểu dữ liệu JSON. Đây là dạng dữ liệu kiểu key và value cộng với hiệu năng nhanh và khả năng mở rộng không bị ràng buộc bởi việc tạo khóa ngoại, khóa chủ đạo,… Có thể được ưa chuộng và dùng cực kì phổ biến.
Một số câu lệnh cơ bản trên MongoDB
CSDL | MySQL | MongoDB |
---|---|---|
Tạo csdl | CREATE DATABASE test; | use test; |
Tạo bảng | CREATE TABLE students (ten_cot – kieu_du_lieu); | db.createCollection(‘students’); |
Tạo bản ghi | INSERT INTO studetns (‘name’, ‘gender’) VALUES(‘thanh’, ‘male’); | db.students.insert( name:’thanh’, gender: ‘male’); |
Cập nhật | UPDATE students SET name = ‘thanh update’ WHERE id = 1; | db.students.update( _id: 1 ,$set: name: ‘thanh update’ ); |
Xóa bản ghi | DELETE FROM students Where id = 1; | db.students.remove( _id: 1); |
Tìm kiếm all | SELECT * FROM students; | db.students.find({}); |
Tìm kiếm | SELECT * FROM students WHERE name = ‘thanh’; | db.students.find( name: ‘thanh’ ); |
Ưu điểm của cơ sở dữ liệu mongoDB.
- Do MongoDB dùng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document không giống nhau, linh động trong việc lưu giữ dữ liệu, có thể bạn mong muốn gì thì cứ insert vào thoải mái.
- Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không luôn phải mất thời gian kiểm duyệt xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS.
- MongoDB rất dễ 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 ăn nói với nhau, khi mong muốn mở rộng bộ máy ta chỉ cần thêm một node với vào cluster:
- Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn nội dung đạt hiệu năng cao nhất.
- Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau xảy ra nhanh hơn mà không cần phải đọc từ ổ cứng.
Nhược điểm của cơ sở dữ liệu mongoDB.
- Một điểm tốt nhất của MongoDB cũng chủ đạo là nhược điểm của nó. MongoDB không hề có các thuộc tính ràng buộc như trong RDBMS có thể khi thực hành các bước với mongoDB thì phải hết sức cẩn thận.
- Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value thế nên key sẽ bị lặp lại. Không giúp đỡ join có thể dễ bị dữ thừa dữ liệu.
- Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là điểm không tốt vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện…
Chức năng của MongoDB là gì?

Lệnh truy vấn dữ liệu trong MongoDB
MongoDB có các tính năng căn bản như sau:
- Truy vấn ad hoc
- Nhân rộng
- Cân bằng tải
- Lưu giữ tệp
- Tập hợp
- Thực thi Javascript phía máy chủ
- Giới hạn kích thước collection
- Giao dịch
Hãy cùng mìnhtìm hiểu chi tiết về từng tính năng!
Truy vấn ad hoc
Truy vấn ad hoc là một trong các chức năng tối ưu của chương trình. Nó hỗ trợ các trường, truy vấn phạm vi và tìm kiếm các biểu thức để trả về các trường tài liệu cụ thể bao gồm các hàm JavaScript do người dùng xác định hoặc các truy vấn này được cấu hình và trả về mẫu kết quả ngẫu nhiên có kích thước nhất định. Ngoài ra, các trường trong MongoDB sẽ được sử dụng để lập các chỉ mục chính và các chỉ mục phụ.
Nhân rộng
Đây chính là công dụng mà chương trình bổ sung Replica set. Nó gồm có hai hoặc nhiều bản sao của dữ liệu. Trong đó mỗi bản sao có thể giữ nhiệm vụ chủ đạo và phụ.
- Trong lúc nhân rộng, tất cả các dữ liệu ghi và đọc thực hiện trên bản sao chủ đạo.
- Bản sao thứ cấp sử dụng bản sao tích hợp để kéo dài bản sao dữ liệu của bản chính.
Trong hoàn cảnh một bản sao chủ đạo thất bại, Replica set chọn ra một bản sao thứ cấp để trở nên bản sao chủ đạo tiếp theo. Replica thứ cấp có khả năng tùy chọn chiều lòng các hoạt động nhưng dữ liệu cuối cùng chỉ nhất quán theo mặc định.
Cân bằng tải
Bằng việc dùng Sharding, MongoDB chia phần trăm theo chiều ngang để người dùng chọn một Shard key. xác định các dữ liệu được phân phối trong collection. nhìn chung, dữ liệu được chia thành các phạm vi và được phân phối đồng đều dựa trên các Shard key. Nó chạy trên nhiều máy chủ, cân bằng tải hoặc sao chép dữ liệu để giữ hệ thống luôn công việc trong hoàn cảnh có lỗi về phần cứng.
Lưu giữ file
Với công dụng lưu giữ tệp, MongoDB được sử dụng như một hệ thống tệp (GridFS) giúp cân bằng tải và sao chép dữ liệu trên nhiều máy tính để lưu giữ file. Trong số đó, GridFS chia một file ra thành các phần hoặc các đoạn và lưu giữ thành những tài liệu riêng biệt. Bạn có thể truy cập GridFS bằng tiện ích Mongofiles hoặc plugin cho Nginx và Lighttpd.
>>>Xem thêm: Top những ngôn ngữ lập trình web phổ biến nhất hiện nay
Khi nào nên dùng MongoDB

Chẳng hạn như như các bộ máy realtime (thời gian thực) yêu cầu góp ý nhanh, Các hệ thống bigdata với yêu cầu truy vấn nhanh hay các bộ máy có lượng request lớn thì MongoDB sẽ là sự xác định ưu tiên hơn CSDL quan hệ. Tùy thuộc theo dự án và hoàn cảnh chi tiết để sử dụng CSDL quan hệ hay dùng MongoDB mang đến đạt kết quả tốt cao.
Bài viết trên, mình đã chia sẻ tổng quan về cơ sở dữ liệu mongoDB tới các bạn. Cảm ơn các bạn đã theo dõi bài viết nhé!
>>Xem thêm: Tổng hợp các loại mã nguồn làm web phổ biến nhất hiện nay
Mỹ Phượng-Tổng hợp
Tham khảo: (matbao, viblo,…)