Hướng dẫn tổng quan về mongodb

MongoDB là một database hướng tài liệu (document), một dạng NoSQL database. Vì thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với các tài liệu như JSON có một schema rất linh hoạt gọi là BSON. MongoDB sử 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ác kích cỡ và các document khác nhau. Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh.

Định nghĩa thêm về MongoDB

MongoDB lần đầu ra đời bởi MongoDB Inc., tại thời điểm đó là thế hệ 10, vào tháng Mười năm 2007, nó là một phần của sản phẩm PaaS (Platform as a Service) tương tự như Windows Azure và Google App Engine. Sau đó nó đã được chuyển thành nguồn mở từ năm 2009.

MongoDB đã trở thành một trong những NoSQL database nổi trội nhất bấy giờ, được dùng làm backend cho rất nhiều website như eBay, SourceForge và The New York Times.

MongoDB là phần mềm cơ sở dữ liệu mã nguồn mở NoSQL hỗ trợ đa nền tảng được thiết kế theo hướng đối tượng. Các bảng (trong MongoDB gọi là collection) có cấu trúc linh hoạt cho phép dữ liệu không cần tuân theo dạng cấu trúc nào. Vậy cấu trúc của MongoDB là gì?

Hướng dẫn tổng quan về mongodb
MongoDB là thuật ngữ không xa lạ về cơ sở dữ liệu trên máy tính

Vì thế, nó có thể dùng để lưu trữ dữ liệu có cấu trúc phức tạp và đa dạng. Dữ liệu được gọi là Big Data. Đặc biệt, chương trình này lưu trữ dữ liệu vào collection theo hướng tài liệu kiểu JSON thay vì bảng nên có hiệu suất cao và tính khả dụng cao. 

NoSQL là gì?

Hướng dẫn tổng quan về mongodb
NoSQL và MongoDB có mối quan hệ với nhau

Trong khái niệm của MongoDB có nhắc đế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 độ, tính năng,… so 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 suất 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ính,… nên được ưa chuộng và sử dụng rất phổ biến.

Tính năng của MongoDB là gì?

Hướng dẫn tổng quan về mongodb
Lệnh truy vấn dữ liệu trong MongoDB

MongoDB có các tính năng cơ bản như sau:

  • Truy vấn ad hoc
  • Nhân rộng
  • Cân bằng tải
  • Lưu trữ 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ắt Bão tì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 những tính năng tốt nhất 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. Bên cạnh đó, các trường trong MongoDB có thể được dùng để lập các chỉ mục chính và các chỉ mục phụ.

Hướng dẫn tổng quan về mongodb

Nhân rộng

Đây là tính năng mà chương trình cung cấp Replica set. Nó bao gồm hai hoặc nhiều bản sao của dữ liệu. Trong đó mỗi bản sao có thể đóng vai trò chính và phụ.

  • Trong quá trình 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ính.
  • Bản sao thứ cấp sử dụng bản sao tích hợp để duy trì bản sao dữ liệu của bản chính.

Trong trường hợp một bản sao chính thất bại, Replica set chọn ra một bản sao thứ cấp để trở thành bản sao chính tiếp theo. Replica thứ cấp có thể tùy chọn phục vụ 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 cách sử dụng Sharding, MongoDB chia tỷ lệ 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 hoạt động trong trường hợp có lỗi về phần cứng.

Lưu trữ tệp

Với tính năng lưu trữ 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 trữ tệp. Trong đó, GridFS chia một tệp ra thành các phần hoặc các đoạn và lưu trữ 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.

Bạn có thể tìm hiểu NGINX trong bài viết:

Tập hợp

Ở tính năng tập hợp, chương trình này cung cấp ba cách chính để thực hiện tập hợp là Aggregation Pipeline, chức năng Mapreduce và Single-purpose Aggregation. Trong đó, theo tài liệu của MongoDB thì Aggregation Pipeline được công nhận là cung cấp hiệu suất tốt hơn hầu hết các hoạt động tổng hợp. 

Thực thi Javascript phía máy chủ

JavaScript thường được thực thi trong các truy vấn, các hàm tổng hợp và được gửi trực tiếp đến cơ sở dữ liệu.

Bạn có thể tham khảo thêm JavaScript trong bài:

Giới hạn kích thước collection

MongoDB hỗ trợ collection có kích thước cố định được gọi là collection giới hạn. Nó có kích cỡ cố định theo sau thứ tự chèn làm tăng hiệu suất các hoạt động khác có liên quan đến dữ liệu. Khi dữ liệu vượt quá mức giới hạn thì các tài liệu cũ sẽ bị xóa mà không cần dùng bất cứ dòng lệnh nào.

Giao dịch

MongoDB còn có tính năng hỗ trợ cho các giao dịch ACID đa tài liệu, bắt đầu có hiệu dụng từ phiên bản 4.0 vào tháng 6 năm 2018.

Ưu điểm của MongoDB là gì?

Hướng dẫn tổng quan về mongodb
MongoDB cũng có nhiều ưu điểm

Sử dụng MongoDB mang lại rất nhiều lợi ích đến người dùng. 

  • Đầu tiên có thể nhắc đến là tính linh hoạt lưu trữ dữ liệu theo các kích cỡ khác nhau, dữ liệu dưới dạng hướng tài liệu JSON nên bạn có thể chèn vào thoải mái bất cứ thông tin gì bạn muốn.
  • Khác với RDBMS, dữ liệu trong đây không có sự ràng buộc và không có yêu cầu tuân theo khuôn khổ nhất định, điều này giúp bạn tiết kiệm thời gian cho việc kiểm tra sự thỏa mãn về cấu trúc nếu muốn chèn, xóa, cập nhật hay thay đổi các dữ liệu trong bảng.
  • MongoDB dễ dàng mở rộng hệ thống bằng cách thêm node vào cluster – cụm các node chứa dữ liệu giao tiếp với nhau.
  • Ưu điểm thứ tư là tốc độ truy vấn nhanh hơn nhiều so với hệ quản trị cơ sở dữ liệu quan hệ RDBMS do dữ liệu truy vấn được cached lên bộ nhớ RAM để lượt truy vấn sau diễn ra nhanh hơn mà không cần đọc từ ổ cứng.
  • Cũng là một ưu điểm về hiệu suất truy vấn của MongoDB, trường dữ liệu “_id” luôn được tự động đánh chỉ mục để đạt hiệu suất cao nhất.

Nhược điểm của MongoDB là gì?

Hướng dẫn tổng quan về mongodb
Phải mất 60 giây thì dữ liệu từ RAM mới đến được ổ cứng

Ngoài các ưu điểm vượt trội, vẫn còn một số hạn chế khi cài đặt và sử dụng bạn cần chú ý như sau:

  • Dữ liệu trong MongoDB không bị ràng buộc như RDBMS nhưng người sử dụng lưu ý cẩn thận mọi thao tác để không xảy ra các kết quả ngoài ý muốn gây ảnh hưởng đến dữ liệu.
  • Một nhược điểm mà “dân công nghệ” hay lo ngại là bộ nhớ của thiết bị. Chương trình này thường tốn bộ nhớ do dữ liệu được lưu dưới dạng key-value, trong khi các collection chỉ khác về value nên sẽ lặp lại key dẫn đến thừa dữ liệu.
  • Thông thường, dữ liệu thay đổi từ RAM xuống ổ cứng phải qua 60 giây thì chương trình mới thực hiện hoàn tất, đây là nguy cơ bị mất dữ liệu nếu bất ngờ xảy ra tình huống mất điện trong vòng 60 giây đó.

Khi nào nên dùng MongoDB?

Hướng dẫn tổng quan về mongodb
Cần xác định rõ những trường hợp để quyết định sử dụng MongoDB

Mặc dù rất hữu dụng nhưng tùy theo tình huống khác nhau mà bạn sẽ cân nhắc có nên sử dụng chương trình này hay không, đó là trường hợp:

  • Khi trang web của bạn có tính chất Insert bởi MongoDB có thể ghi với tốc độ cao và bảo mật an toàn. 
  • Khi một số hệ thống Big Data có yêu cầu truy vấn nhanh vì chương trình này có hiệu suất truy vấn dữ liệu khá cao.
  • Khi bạn muốn tìm kiếm thông tin trong bộ nhớ “tràn ngập” những dữ liệu khác nhau, MongoDB có khả năng tìm kiếm thông tin liên quan nhanh.
  • Khi máy chủ không có hệ quản trị cơ sở dữ liệu thì đây là chương trình phù hợp nên được sử dụng.

Vì thế, trước khi dùng MongoDB, bạn cần phải cân nhắc kỹ lưỡng tính năng của nó có đáp ứng được trường hợp của bạn hay không để việc sử dụng không gặp khó khăn và đạt hiệu quả tốt nhất.

So sánh giữa SQL DB (RDBMS) schema và Mongo DB schema

Ở một số nội dung bên trên, chúng tôi có phân biệt sự khác nhau về cách lưu trữ dữ liệu giữa hệ quản trị RDBMS và chương trình MongoDB. Để bạn hiểu thêm về sự khác nhau đó, bảng sau đây sẽ là phép so sánh cụ thể hơn về những đặc điểm giữa 2 chương trình này: 

SQL DB schema

Mongo DB schema

Table

Collection

Row

Document

Column

Field

Joins

Embedded documents, linking

Primary key

Primary key (mặc định là _id)

Các câu lệnh cơ bản trên MongoDB

Hướng dẫn tổng quan về mongodb
Cách lưu trữ theo hướng tài liệu trong MongoDB

Ứng với các lệnh cơ bản của SQL thì chương trình này có các câu lệnh như sau:

CSDL

SQL

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 student (‘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’});

Trên đây là những thông tin chi tiết về chương trình cơ sở dữ liệu MongoDB. Chúng tôi hy vọng bạn có cái nhìn tổng quan về MongoDB. Đồng thời có thể ứng dụng hiệu quả vào máy tính trong những trường hợp cần thiết. Nếu muốn cài đặt MongoDB, hãy liên hệ với nhà cung cấp dịch vụ cho thuê máy chủ của bạn để được hỗ trợ tránh làm mất mát dữ liệu cá nhân/công ty.