Bài 01: Tổng quan về MongoDB

Học MongoDB 11/01/2017 07:00 790
MongoDB là một mã nguồn mở và là một tập tài liệu dùng cơ chế NoSQL để truy vấn, nó được viết bởi ngôn ngữ C++. Chính vì được viết bởi C++ nên nó có khả năng tính toán với tốc độ cao chứ không giống như các hệ quản trị CSDL hiện nay.

MongoDB là một cơ sở dữ liệu mã nguồn mở thuộc họ nhà NoSQL được phát hành sử dụng miễn phí bởi công ty MongoDB. Nếu bạn là người mới nghiên cứu về NoSQL thì đây là một cơ sở dữ liệu đầu tiên nên tiếp cận bởi nó dễ dàng cài đặt và sử dụng để tiếp cận với những ý tưởng lưu trữ mới. MongoDB hoạt động trên mọi hệ điều hành phổ biến hiện nay như: Windows, Linux, OS X và hỗ trợ đầy đủ các driver cho các ngôn ngữ lập trình để giao tiếp với chúng một cách dễ dàng nhất.

2. Khái niệm được sử dụng trong MongoDB.

Database là gì?

Database là một Ô chứa dữ liệu ở mức vật lý (physical), mỗi database sẽ có nhiều collection và được thiết lập lưu trữ ở một nơi trong máy chủ máy tính. Một máy chủ MongoDB thường có thể tạo nhiều cơ sở dữ liệu.

Collection là gì?

Collection trong MongoDB là nhóm các tài liệu (document), nó tương đương với một bảng (table) trong CSDL thông thường nên mỗi collection sẽ thuộc về một database duy nhất. Tuy nhiên nó có một sực khác biệt đó là nó không có ràng buộc Relationship như các hệ quản trị CSDL khác nên việc truy xuất rất nhanh, chính vì thế mỗi collection có thể chứa nhiều thể loại khác nhau không giống như table trong hệ quản trị mysql là các field cố định.

Document là gì?

Document trong MongoDB có cấu trúc tương tự như kiểu dữ liệu JSON, nghĩa là sẽ có các cặp (key => giá trị) nên nó có tính năng động rất lớn. Document ta có thể hiểu nó giống như các record dữ liệu trong MYSQL, tuy nhiên nó có sự khác biệt là các cặp (key => value) có thể không giống nhau ở mỗi document. 

Cách MongoDB lưu trữ một bản ghi.

{
   _id: ObjectId(7df78ad8902c7df78ad8902d)
   title: 'Tổng quan về mongodb', 
   description: 'MongoDB sử dụng khái niệm NO-SQL',
   comments: [  
      {
         name:'Exaple',
         message: 'First comment',
         dateCreated: new Date(2011,1,20,2,15),
         like: 0 
      },
      {
         user:'Example2',
         message: 'Second comment',
         dateCreated: new Date(2011,1,25,7,45),
         like: 5
      }
   ]
}

So sánh MongoDB và một hệ quản trị CSDL khác nhé.

RDBMS MongoDB
Database Database
Table Collection
Tuple/Row Document
column Field
Table Join Embedded Documents
Primary Key Primary Key (mặc định là _id)

2. Cơ chế hoạt động của MongoDB

Mô hình hoạt động của MongoDB

Mô hình hoạt động của MongoDB

  • MongoDB hoạt động dưới một tiến trình ngầm service luôn mở một cổng (Cổng mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao tác từ các ứng dụng gửi vào sau đó mới tiến hành xử lý.
  • Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên “_id” thuộc kiểu dữ liệu ObjectId mà nó quy định để xác định được tính duy nhất của bản ghi này so với bản ghi khác, cũng như phục vụ các thao tác tìm kiếm và truy vấn thông tin về sau.
  • Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất.
  • Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.
  • Khi có yêu cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng mặc định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, 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.

3. Cơ chế phân quyền và bảo mật của MongoDB

Cách mà MongoDB bảo mật dữ liệu

  • Cũng như các hệ cơ sở dữ liệu thông thường khác, MongoDB cũng có cơ chế xác thực phân quyền và bảo mật linh hoạt để quản trị viên có thể cấp phát quyền thao tác với cơ sở dữ liệu một cách đơn giản nhất.
  • MongoDB có thể truy cập mà không cần xác thực khi bạn tắt chế độ xác thực quyền sở hữu với cơ sở dữ liệu
  • Mặc định MongoDB sẽ có một tài khoản có tên truy cập là “admin” có quyền hạn cao nhất, có quyền thao tác với tất cả các cơ sở dữ liệu được tạo ra trên hệ thống.

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

a. Ưu điểm

  • Dữ liệu lưu trữ phi cấu trúc, không có tính ràng buộc, toàn vẹn nên tính sẵn sàng cao, hiệu suất lớn và dễ dàng mở rộng lưu trữ
  • Dữ liệu được caching (ghi đệm) lên RAM, hạn chế truy cập vào ổ cứng nên tốc độ đọc và ghi cao

b. Nhược điểm

  • Không ràng buộc, toàn vẹn nên không ứng dụng được cho các mô hình giao dịch yêu cầu độ chính xác cao
  • Không có cơ chế transaction (giao dịch) để phục vụ các ứng dụng ngân hàng
  • Dữ liệu được caching, lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt động yêu cầu một bộ nhớ RAM lớn
  • Như đã giới thiệu ở trên, mọi thay đổi về dữ liệu mặc định đều chưa được ghi xuống ổ cứng ngay lập tức vì vậy khả năng bị mất dữ liệu từ nguyên nhân mất điện đột xuất là rất cao.

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.