MongoDB là gì? Giới thiệu, Kiến trúc, Tính năng & Thí dụ

Mục lục:

Anonim

MongoDB là gì?

MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu được sử dụng để lưu trữ dữ liệu khối lượng lớn. Thay vì sử dụng các bảng và hàng như trong cơ sở dữ liệu quan hệ truyền thống, MongoDB sử dụng các bộ sưu tập và tài liệu. Tài liệu bao gồm các cặp khóa-giá trị là đơn vị dữ liệu cơ bản trong MongoDB. Bộ sưu tập chứa các tập hợp tài liệu và chức năng tương đương với các bảng cơ sở dữ liệu quan hệ. MongoDB là một cơ sở dữ liệu xuất hiện vào khoảng giữa những năm 2000.

Trong hướng dẫn này, bạn sẽ học-

  • Các tính năng của MongoDB
  • Ví dụ về MongoDB
  • Các thành phần chính của kiến ​​trúc MongoDB
  • Tại sao sử dụng MongoDB
  • Mô hình hóa dữ liệu trong MongoDB
  • Sự khác biệt giữa MongoDB và RDBMS

Các tính năng của MongoDB

    1. Mỗi cơ sở dữ liệu chứa các bộ sưu tập lần lượt chứa các tài liệu. Mỗi tài liệu có thể khác nhau với một số trường khác nhau. Kích thước và nội dung của mỗi tài liệu có thể khác nhau.
    2. Cấu trúc tài liệu phù hợp hơn với cách các nhà phát triển xây dựng các lớp và đối tượng của họ bằng ngôn ngữ lập trình tương ứng. Các nhà phát triển thường sẽ nói rằng các lớp của họ không phải là hàng và cột mà có cấu trúc rõ ràng với các cặp khóa-giá trị.
    3. Các hàng (hoặc tài liệu như được gọi trong MongoDB) không cần phải có một lược đồ được xác định trước. Thay vào đó, các trường có thể được tạo nhanh chóng.
    4. Mô hình dữ liệu có sẵn trong MongoDB cho phép bạn biểu diễn các mối quan hệ phân cấp, lưu trữ mảng và các cấu trúc phức tạp khác dễ dàng hơn.
  1. Khả năng mở rộng - Môi trường MongoDB rất có thể mở rộng. Các công ty trên toàn thế giới đã xác định các cụm với một số trong số họ chạy hơn 100 nút với khoảng hàng triệu tài liệu trong cơ sở dữ liệu

Ví dụ về MongoDB

Ví dụ dưới đây cho thấy cách một tài liệu có thể được mô hình hóa trong MongoDB.

  1. Trường _id được MongoDB thêm vào để xác định duy nhất tài liệu trong bộ sưu tập.
  2. Những gì bạn có thể lưu ý là Dữ liệu đơn hàng (OrderID, Sản phẩm và Số lượng) trong RDBMS thường sẽ được lưu trữ trong một bảng riêng biệt, trong khi trong MongoDB, nó thực sự được lưu trữ dưới dạng tài liệu nhúng trong chính bộ sưu tập. Đây là một trong những điểm khác biệt chính về cách dữ liệu được mô hình hóa trong MongoDB.

Các thành phần chính của kiến ​​trúc MongoDB

Dưới đây là một số thuật ngữ phổ biến được sử dụng trong MongoDB

  1. _id - Đây là trường bắt buộc trong mọi tài liệu MongoDB. Trường _id đại diện cho một giá trị duy nhất trong tài liệu MongoDB. Trường _id giống như khóa chính của tài liệu. Nếu bạn tạo một tài liệu mới mà không có trường _id, MongoDB sẽ tự động tạo trường. Vì vậy, ví dụ: nếu chúng ta thấy ví dụ về bảng khách hàng ở trên, Mongo DB sẽ thêm số nhận dạng duy nhất gồm 24 chữ số vào mỗi tài liệu trong bộ sưu tập.
_Tôi ID khách hàng Tên khách hàng OrderID
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 Trevor Smith 222
563479cc9a8a4246bd57d784 33 Nicole 333
  1. Bộ sưu tập - Đây là một nhóm các tài liệu MongoDB. Tập hợp tương đương với một bảng được tạo trong bất kỳ RDMS nào khác như Oracle hoặc MS SQL. Một bộ sưu tập tồn tại trong một cơ sở dữ liệu duy nhất. Như đã thấy từ các bộ sưu tập giới thiệu không thực thi bất kỳ loại cấu trúc nào.
  2. Con trỏ - Đây là một con trỏ đến tập kết quả của một truy vấn. Khách hàng có thể lặp lại qua một con trỏ để truy xuất kết quả.
  3. Cơ sở dữ liệu - Đây là vùng chứa cho các bộ sưu tập như trong RDMS, trong đó nó là vùng chứa cho các bảng. Mỗi cơ sở dữ liệu có một bộ tệp riêng trên hệ thống tệp. Một máy chủ MongoDB có thể lưu trữ nhiều cơ sở dữ liệu.
  4. Tài liệu - Bản ghi trong bộ sưu tập MongoDB về cơ bản được gọi là tài liệu. Đến lượt mình, tài liệu sẽ bao gồm tên trường và các giá trị.
  5. Trường - Một cặp tên-giá trị trong tài liệu. Một tài liệu có không hoặc nhiều trường. Các trường tương tự như các cột trong cơ sở dữ liệu quan hệ.

    Sơ đồ sau đây cho thấy một ví dụ về Trường với các cặp giá trị Khóa. Vì vậy, trong ví dụ bên dưới, CustomerID và 11 là một trong những cặp giá trị khóa được xác định trong tài liệu.

  1. JSON - Đây được gọi là Ký hiệu đối tượng JavaScript. Đây là định dạng văn bản thuần túy, có thể đọc được con người để thể hiện dữ liệu có cấu trúc. JSON hiện được hỗ trợ trong nhiều ngôn ngữ lập trình.

Chỉ cần ghi chú nhanh về sự khác biệt chính giữa trường _id và trường thu thập thông thường. Trường _id được sử dụng để xác định duy nhất các tài liệu trong bộ sưu tập và được MongoDB tự động thêm vào khi bộ sưu tập được tạo.

Tại sao sử dụng MongoDB?

Dưới đây là một số lý do tại sao một người nên bắt đầu sử dụng MongoDB

  1. Hướng tài liệu - Vì MongoDB là cơ sở dữ liệu kiểu NoSQL, thay vì có dữ liệu ở định dạng kiểu quan hệ, nó sẽ lưu trữ dữ liệu trong tài liệu. Điều này làm cho MongoDB rất linh hoạt và thích ứng với tình hình và yêu cầu thực tế của thế giới kinh doanh.
  2. Truy vấn đặc biệt - MongoDB hỗ trợ tìm kiếm theo trường, truy vấn phạm vi và tìm kiếm biểu thức chính quy. Các truy vấn có thể được thực hiện để trả về các trường cụ thể trong tài liệu.
  3. Lập chỉ mục - Các chỉ mục có thể được tạo để cải thiện hiệu suất của các tìm kiếm trong MongoDB. Bất kỳ trường nào trong tài liệu MongoDB đều có thể được lập chỉ mục.
  4. Nhân bản - MongoDB có thể cung cấp tính khả dụng cao với các tập hợp bản sao. Một tập hợp bản sao bao gồm hai hoặc nhiều cá thể DB mongo. Mỗi thành viên tập hợp bản sao có thể hoạt động trong vai trò của bản sao chính hoặc thứ cấp bất kỳ lúc nào. Bản sao chính là máy chủ chính tương tác với máy khách và thực hiện tất cả các hoạt động đọc / ghi. Các bản sao thứ cấp duy trì một bản sao dữ liệu của bản sao chính bằng cách sử dụng bản sao được tích hợp sẵn. Khi một bản sao chính bị lỗi, tập hợp bản sao sẽ tự động chuyển sang bản sao thứ cấp và sau đó nó trở thành máy chủ chính.
  5. Cân bằng tải - MongoDB sử dụng khái niệm sharding để chia tỷ lệ theo chiều ngang bằng cách chia nhỏ dữ liệu trên nhiều phiên bản MongoDB. MongoDB có thể chạy trên nhiều máy chủ, cân bằng tải và / hoặc sao chép dữ liệu để giữ cho hệ thống hoạt động trong trường hợp lỗi phần cứng.

Mô hình hóa dữ liệu trong MongoDB

Như chúng ta đã thấy từ phần Giới thiệu, dữ liệu trong MongoDB có một lược đồ linh hoạt. Không giống như trong cơ sở dữ liệu SQL, nơi bạn phải khai báo lược đồ của bảng trước khi chèn dữ liệu, các bộ sưu tập của MongoDB không thực thi cấu trúc tài liệu. Loại linh hoạt này là điều làm cho MongoDB trở nên mạnh mẽ.

Khi lập mô hình dữ liệu trong Mongo, hãy ghi nhớ những điều sau

  1. Các nhu cầu của ứng dụng là gì - Xem xét các nhu cầu kinh doanh của ứng dụng và xem dữ liệu nào và loại dữ liệu cần thiết cho ứng dụng. Dựa trên cơ sở này, hãy đảm bảo rằng cấu trúc của tài liệu được quyết định phù hợp.
  2. Các mẫu truy xuất dữ liệu là gì - Nếu bạn thấy trước việc sử dụng truy vấn nhiều thì hãy xem xét việc sử dụng các chỉ mục trong mô hình dữ liệu của mình để cải thiện hiệu quả của các truy vấn.
  3. Có thường xuyên chèn, cập nhật và xóa trong cơ sở dữ liệu không? Xem xét lại việc sử dụng các chỉ mục hoặc kết hợp sharding nếu được yêu cầu trong thiết kế mô hình dữ liệu của bạn để cải thiện hiệu quả của môi trường MongoDB tổng thể của bạn.

Sự khác biệt giữa MongoDB và RDBMS

Dưới đây là một số khác biệt về thuật ngữ chính giữa MongoDB và RDBMS

RDBMS MongoDB Sự khác biệt
Bàn Bộ sưu tập Trong RDBMS, bảng chứa các cột và hàng được sử dụng để lưu trữ dữ liệu trong khi trong MongoDB, cấu trúc tương tự này được gọi là một tập hợp. Bộ sưu tập chứa các tài liệu lần lượt chứa các Trường, lần lượt là các cặp khóa-giá trị.
Hàng Tài liệu Trong RDBMS, hàng đại diện cho một mục dữ liệu duy nhất, có cấu trúc ngầm định trong một bảng. Trong MongoDB, dữ liệu được lưu trữ trong các tài liệu.
Cột Cánh đồng Trong RDBMS, cột biểu thị một tập hợp các giá trị dữ liệu. Những thứ này trong MongoDB được gọi là Trường.
Tham gia Tài liệu được nhúng Trong RDBMS, dữ liệu đôi khi được trải rộng trên các bảng khác nhau và để hiển thị một cái nhìn đầy đủ về tất cả dữ liệu, một phép nối đôi khi được hình thành giữa các bảng để lấy dữ liệu. Trong MongoDB, dữ liệu thường được lưu trữ trong một tập hợp duy nhất, nhưng được phân tách bằng cách sử dụng tài liệu nhúng. Vì vậy, không có khái niệm tham gia trong MongoDB.

Ngoài sự khác biệt về điều khoản, một số khác biệt khác được hiển thị bên dưới

  1. Cơ sở dữ liệu quan hệ được biết đến với việc thực thi tính toàn vẹn của dữ liệu. Đây không phải là một yêu cầu rõ ràng trong MongoDB.
  2. RDBMS yêu cầu dữ liệu phải được chuẩn hóa trước để nó có thể ngăn chặn các bản ghi mồ côi và trùng lặp Việc chuẩn hóa dữ liệu sau đó yêu cầu nhiều bảng hơn, sau đó sẽ dẫn đến nhiều phép nối bảng hơn, do đó yêu cầu nhiều khóa và chỉ mục hơn.

    Khi cơ sở dữ liệu bắt đầu phát triển, hiệu suất có thể bắt đầu trở thành một vấn đề. Một lần nữa, đây không phải là một yêu cầu rõ ràng trong MongoDB. MongoDB linh hoạt và không cần dữ liệu được chuẩn hóa trước.