Là gì MongoDB? Giới thiệu, Archikiến trúc, tính năng và ví dụ
Là gì MongoDB?
MongoDB là cơ sở dữ liệu NoSQL hướng tài liệu được sử dụng để lưu trữ dữ liệu dung lượng lớn. Thay vì sử dụng 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 bộ 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 được đưa ra ánh sáng vào khoảng giữa những năm 2000.
MongoDB Tính năng
- 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 số lượng 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.
- 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 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ị.
- Các hàng (hoặc tài liệu như được gọi trong MongoDB) không cần phải xác định trước lược đồ. Thay vào đó, các trường có thể được tạo nhanh chóng.
- 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.
- Khả năng mở rộng – MongoDB môi trường có khả năng mở rộng rất cao. Các công ty trên khắp 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
MongoDB Ví dụ
Ví dụ dưới đây cho thấy cách một tài liệu có thể được mô hình hóa theo MongoDB.
- Trường _id được thêm bởi MongoDB để xác định duy nhất tài liệu trong bộ sưu tập.
- Điều bạn có thể lưu ý là Dữ liệu đơn hàng (ID đơn hàng, 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 ở MongoDB nó thực sự được lưu trữ dưới dạng tài liệu được 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 trong cách mô hình hóa dữ liệu MongoDB.
Thành phần chính của MongoDB Archikiến trúc
Dưới đây là một số thuật ngữ thông dụng được sử dụng trong MongoDB
- _Tôi – Đây là trường bắt buộc trong mọi MongoDB tài liệu. Trường _id đại diện cho một giá trị duy nhất trong MongoDB tài liệu. 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 không có trường _id, MongoDB sẽ tự động tạo trường. Vì vậy, ví dụ: nếu chúng ta xem ví dụ về bảng khách hàng ở trên, Mongo DB sẽ thêm mã định danh duy nhất gồm 24 chữ số cho mỗi tài liệu trong bộ sưu tập.
_Nhận dạng | ID khách hàng | Tên khách hàng | Mã đặt hàng |
---|---|---|---|
563479cc8a8a4246bd27d784 | 11 | Guru99 | 111 |
563479cc7a8a4246bd47d784 | 22 | Trevor Smith | 222 |
563479cc9a8a4246bd57d784 | 33 | Nicole | 333 |
- Bộ sưu tập - Đây là một nhóm MongoDB các tài liệu. Bộ sưu tập tương đương với một bảng được tạo trong bất kỳ RDMS nào khác, chẳng hạn 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.
- Cursor – Đây là con trỏ tới tập kết quả của truy vấn. Khách hàng có thể lặp qua một con trỏ để lấy kết quả.
- Cơ sở dữ liệu – Đây là nơi chứa các bộ sưu tập như trong RDMS, trong đó nó là nơi chứa các bảng. Mỗi cơ sở dữ liệu có tập hợp tệp riêng trên hệ thống tệp. MỘT MongoDB máy chủ có thể lưu trữ nhiều cơ sở dữ liệu.
- Tài liệu – Một bản ghi trong một MongoDB bộ sưu tập về cơ bản được gọi là một tài liệu. Ngược lại, tài liệu sẽ bao gồm tên trường và giá trị.
- Phần – Một cặp tên-giá trị trong một 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ề các trường có cặp giá trị khóa. Vì vậy, trong ví dụ bên dưới, CustomerID và 11 là một trong các cặp giá trị khóa được xác định trong tài liệu.
- JSON – Đây được gọi là JavaScript Ký hiệu đối tượng. Đây là định dạng văn bản thuần túy, dễ đọc để thể hiện dữ liệu có cấu trúc. JSON hiện được hỗ trợ ở nhiều ngôn ngữ lập trình.
Chỉ cần lưu ý nhanh về sự khác biệt chính giữa trường _id và trường bộ sưu tậ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 thêm tự động bởi MongoDB 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 người ta nên bắt đầu sử dụng MongoDB
- Định hướng tài liệu - Vì MongoDB là một NoSQL loại cơ sở dữ liệu, thay vì có dữ liệu ở định dạng kiểu quan hệ, nó lưu trữ dữ liệu trong các 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.
- 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ó thể thực hiện truy vấn để trả về các trường cụ thể trong tài liệu.
- Lập chỉ mục – Các chỉ mục có thể được tạo để cải thiện hiệu suất tìm kiếm trong MongoDB. Bất kỳ trường nào trong một MongoDB tài liệu có thể được lập chỉ mục.
- Nhân rộng - MongoDB có thể cung cấp tính sẵn sàng cao với các bộ bản sao. Một bộ bản sao bao gồm hai hoặc nhiều phiên bản DB mongo. Mỗi thành viên của bộ bản sao có thể đóng vai trò là bản sao chính hoặc phụ bất cứ 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. Bản sao thứ cấp duy trì một bản sao dữ liệu của bản chính bằng cách sử dụng bản sao tích hợp. Khi bản sao chính bị lỗi, bộ bản sao sẽ tự động chuyển sang bản sao phụ và sau đó nó trở thành máy chủ chính.
- Cân bằng tải – MongoDB sử dụng khái niệm sharding để mở rộng quy mô theo chiều ngang bằng cách phân chia dữ liệu trên nhiều MongoDB các trường hợp. 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 để duy trì hoạt động của hệ thố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 trong phần Giới thiệu, dữ liệu trong MongoDB có một lược đồ linh hoạt. Không giống như ở SQL cơ sở dữ liệu, nơi bạn phải khai báo lược đồ của bảng trước khi chèn dữ liệu, MongoDBbộ sưu tập của không thực thi cấu trúc tài liệu. Sự linh hoạt này là điều khiến MongoDB mạnh mẽ như vậy.
Khi mô hình hóa dữ liệu trong Mongo, hãy ghi nhớ những điều sau
- Nhu cầu của ứng dụng là gì – Xem xét nhu cầu kinh doanh của ứng dụng và xem dữ liệu nào cũng như loại dữ liệu cần thiết cho ứng dụng. Dựa trên điều này, đảm bảo rằng cấu trúc của tài liệu được quyết định phù hợp.
- Mẫu truy xuất dữ liệu là gì – Nếu bạn thấy trước việc sử dụng nhiều truy vấn 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 truy vấn.
- Việc chèn, cập nhật và xóa có thường xuyên xảy ra 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 phân đoạn nếu cần thiết trong thiết kế lập mô hình dữ liệu của bạn để cải thiện hiệu quả tổng thể của bạn MongoDB môi trường.
Sự khác biệt giữa MongoDB & 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 | In 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 bộ sưu tậ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ị. |
Row | Tài liệu | Trong RDBMS, hàng đại diện cho một mục dữ liệu có cấu trúc ngầm trong một bảng. TRONG MongoDB, dữ liệu được lưu trữ trong tài liệu. |
Cột | Phần | Trong RDBMS, cột biểu thị một tập hợp các giá trị dữ liệu. Những cái 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 nhiều bảng khác nhau và để hiển thị chế độ xem đầy đủ về tất cả dữ liệu, một phép nối đôi khi được hình thành trên các bảng để lấy dữ liệu. TRONG MongoDB, dữ liệu thường được lưu trữ trong một bộ sưu tậ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 về sự tham gia MongoDB. |
Ngoài những khác biệt về thuật ngữ, một vài khác biệt khác được trình bày bên dưới
- Cơ sở dữ liệu quan hệ được biết đến với việc thực thi tính toàn vẹn dữ liệu. Đây không phải là một yêu cầu rõ ràng trong MongoDB.
- RDBMS yêu cầu dữ liệu đó được bình thường hóa trước tiên để 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, điều này sẽ dẫn đến nhiều phép nối bảng hơn, do đó cần 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 chuẩn hóa dữ liệu trước.