Giới thiệu CSDL MongoDB

Tổng quan về MongoDB

MongoDB là một cơ sở dữ liệu tài liệu đa nền tảng. Được phân loại là cơ sở dữ liệu NoSQL, MongoDB sử dụng lược đồ giống tài liệu JSON. MongoDB được phát triển bởi MongoDB Inc. và được cấp phép theo Giấy phép Công cộng phía Máy chủ (SSPL).

MongoDB lưu trữ dữ liệu trong các tài liệu linh hoạt, giống như JSON, có nghĩa là các trường có thể thay đổi từ tài liệu này sang tài liệu khác và cấu trúc dữ liệu có thể được thay đổi theo thời gian

Mô hình tài liệu ánh xạ tới các đối tượng trong mã ứng dụng của bạn, giúp dữ liệu dễ dàng làm việc với

  • Truy vấn đặc biệt, lập chỉ mục và tổng hợp thời gian thực cung cấp các cách mạnh mẽ để truy cập và phân tích dữ liệu của bạn
  • MongoDB là một cơ sở dữ liệu phân tán ở cốt lõi của nó, vì vậy tính sẵn sàng cao, tỷ lệ ngang và phân phối địa lý được xây dựng và dễ sử dụng

MongoDB là miễn phí và nguồn mở. Các phiên bản được phát hành trước ngày 16 tháng 10 năm 2018 được xuất bản theo AGPL. Tất cả các phiên bản được phát hành sau ngày 16 tháng 10 năm 2018

Kiến trúc MongoDB

Cách tốt nhất làm việc với dữ liệu:

  • Dễ dàng: Làm việc với dữ liệu theo cách tự nhiên, trực quan

  • Nhanh: Có được hiệu suất tuyệt vời mà không cần nhiều công việc

  • Linh hoạt: Thích ứng và thay đổi nhanh chóng

  • Đa năng: Hỗ trợ nhiều loại dữ liệu và truy vấn

Đặt dữ liệu nơi bạn cần:

  • Tính khả dụng: Cung cấp các ứng dụng có khả năng phục hồi toàn cầu thông qua sao chép tinh vi và tự phục hồi

  • Khả năng mở rộng: Phát triển theo chiều ngang thông qua phân bổ theo bản địa

  • Cách ly khối lượng công việc: Chạy khối lượng công việc vận hành và phân tích trong cùng một cụm

  • Địa phương hoá: Đặt dữ liệu trên các thiết bị cụ thể và trong các khu vực địa lý cụ thể để quản trị, lớp dịch vụ và truy cập độ trễ thấp

Tự do chạy mọi nơi:

  • Tính di động: Cơ sở dữ liệu chạy giống nhau ở mọi nơi

  • Điện toán đám mây: Tận dụng lợi ích của chiến lược nhiều đám mây mà không cần khóa

  • Phạm vi toàn cầu: Có sẵn dưới dạng dịch vụ ở hơn 50 khu vực trên các nhà cung cấp đám mây công cộng lớn

Sự phát triển của MongoDB

MongoDB lần đầu tiên được xuất xưởng vào tháng 8 năm 2009. Các phiên bản đầu tiên của sản phẩm đã tập trung vào xác nhận một cách tiếp cận mới và phần lớn chưa được chứng minh cho thiết kế cơ sở dữ liệu - phân tán, không quan hệ và được xây dựng trên mô hình dữ liệu tài liệu. Những bản phát hành đầu tiên đã thu hút hàng loạt người áp dụng trong thế giới thực trên toàn bộ các công ty khởi nghiệp và doanh nghiệp.

Những thay đổi lớn từ phiên bản MongoDB 2.2 vào năm 2012:

  • Các giao dịch ACID đa tài liệu, giúp giải quyết một loạt các trường hợp sử dụng với MongoDB thậm chí còn dễ dàng hơn
  • Công cụ lưu trữ WiredTiger, khóa cấp độ tài liệu và nén tích hợp để có được khả năng mở rộng lớn hơn. Tích hợp bảo mật cấp doanh nghiệp
  • Ở mức độ doanh nghiệp, tích hợp đầy đủ, tìm kiếm đầy đủ theo các kết nối, duyệt qua biểu đồ và nhiều toán tử truy vấn mới để xây dựng các ứng dụng mạnh mẽ trên một nền tảng dữ liệu duy nhất
  • MongoDB Atlas, được quản lý đầy đủ cơ sở dữ liệu theo yêu cầu như một dịch vụ cho MongoDB. Công cụ quản lý cho các hoạt động tự động hóa, bất cứ nơi nào bạn chạy cơ sở dữ liệu.

Các khái niệm trong MongoDB:

  • Cơ sở dữ liệu là một bộ chứa các bộ sưu tập (collection). Mỗi cơ sở dữ liệu có tập hợp tệp riêng trên hệ thống tệp (file)
  • Một máy chủ MongoDB thường có nhiều cơ sở dữ liệu.
  • Bộ sưu tập (collection) là một nhóm các tài liệu MongoDB. Nó tương đương với bảng RDBMS. Một bộ sưu tập tồn tại trong một cơ sở dữ liệu. Bộ sưu tập không thực thi một lược đồ. Tài liệu trong một bộ sưu tập có thể có các lĩnh vực khác nhau. Thông thường, tất cả các tài liệu trong một bộ sưu tập đều có mục đích tương tự hoặc liên quan.
  • Tài liệu (document) là một tập hợp các cặp khóa-giá trị. Tài liệu có lược đồ động. Lược đồ động có nghĩa là các tài liệu trong cùng một bộ sưu tập không cần phải có cùng một tập hợp các trường hoặc cấu trúc và các trường chung trong các tài liệu của bộ sưu tập có thể chứa các loại dữ liệu khác nhau.

So sánh Khái niệm CSDL Quan hệ và MongoDB

CSDL Quan hệ MongoDB
Database (Cơ sở dữ liệu) Database (Cơ sở dữ liệu)
Table (Bảng) Collection (Bộ sưu tập / Tập hợp)
Tuple / Row (hàng) Document (Tài liệu)
Table Join (nối bảng) Embedded Documents (Tài liệu lồng nhau)
Primary Key (Khoá chính) Primary key (Khoá chính) khoá mặc định trong MongoDB là _id được cung cấp bởi chính MongoDB

Ví dụ: MongoDB Document

{
  _id: ObjectId(7df78ad8902c)
  title: 'Giới thiệu MongoDB', 
  description: 'MongoDB is no sql database',
  content: 'MongoDB is no sql database',
  by: 'SinhNX',
  url: 'http://sinhnx.dev',
  tags: ['mongodb', 'NoSQL', 'document', 'database', 'Cơ sở dữ liệu'],
  likes: 100, 
  comments: [
    {
      user:'user1',
      message: 'My first comment',
      dateCreated: new Date(2019,1,20,2,15),
      like: 0 
    },
    {
      user:'user2',
      message: 'My second comments',
      dateCreated: new Date(2019,1,25,7,45),
      like: 5
    }
  ]
}

Lợi ích của MongoDB so với Hệ quản trị CSDL quan hệ

Lược đồ ít hơn - MongoDB là một cơ sở dữ liệu tài liệu trong đó một bộ sưu tập chứa các tài liệu khác nhau. Số lượng trường, nội dung và kích thước của tài liệu có thể khác nhau từ tài liệu này sang tài liệu khác
Cấu trúc của một đối tượng là rõ ràng
Không kết nối phức tạp
Khả năng truy vấn sâu. MongoDB hỗ trợ các truy vấn động trên các tài liệu bằng ngôn ngữ truy vấn dựa trên tài liệu gần như mạnh mẽ như SQL.
Dễ dàng điều chỉnh
Dễ mở rộng quy mô - MongoDB dễ dàng mở rộng quy mô
Chuyển đổi / ánh xạ các đối tượng ứng dụng thành các đối tượng cơ sở dữ liệu không cần thiết
Sử dụng bộ nhớ trong để lưu trữ bộ làm việc (cửa sổ), cho phép truy cập dữ liệu nhanh hơn

Tại sao sử dụng MongoDB?

Lưu trữ hướng tài liệu - Dữ liệu được lưu trữ dưới dạng tài liệu kiểu JSON.
Chỉ mục trên bất kỳ thuộc tính
Khả năng nhân rộng và sẵn sàng cao
Tự động phân bổ máy chủ theo địa lý
Truy vấn phong phú
Cập nhật nhanh tại chỗ

Cài đặt môi trường MongoDB

Sử dụng lệnh trong mongo shell để kiểm tra cài đặt

Bật ứng dụng "Command Prompt" / "PowerShell" trên Windows hoặc ứng dụng Terminal trên Linux/macOS gõ lệnh thực hiện những việc sau:

  • Kiểm tra phiên bản mongo
    mongo --version
    #Kết quả:
    MongoDB shell version v4.2.0
    git version: a4b751dcf51dd249c5865812b390cfd1c0129c30
    allocator: system
    modules: none
    build environment:
    distarch: x86_64
    target_arch: x86_64
  • Kiểm tra kết nối với máy chủ MongoDB
    mongo --eval 'db.runCommand({ connectionStatus: 1 })'
    #Kết quả:
    MongoDB shell version v4.2.0
    connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
    Implicit session: session { "id" : UUID("e7898d61-b399-4083-9c68-77aa2a63d6f9") }
    MongoDB server version: 4.2.0
    {
      "authInfo" : {
        "authenticatedUsers" : [ ],
        "authenticatedUserRoles" : [ ]
      },
      "ok" : 1
    }