Nếu bạn chưa biết MongoDB là gì và nên sử dụng MongoDB khi nào? Hãy đọc ngay bài bên dưới để có câu trả lời nhé.
MongoDB là gì?
MongoDB là một cơ sở dữ liệu document-oriented được sử dụng để lưu trữ dữ liệu có volume lớn. Thay vì sử dụng các tables và rows như trong cơ sở dữ liệu relational truyền thống, MongoDB sử dụng collections và documents. Documents bao gồm các cặp key-value là đơn vị dữ liệu cơ bản trong MongoDB. Collections chứa các bộ document và function tương đương với các table của relational database. MongoDB là một cơ sở dữ liệu xuất hiện vào khoảng giữa những năm 2000.
Các tính năng của MongoDB
– Mỗi cơ sở dữ liệu chứa các collection lần lượt chứa các document. Mỗi document 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 document có thể khác nhau.
– Cấu trúc document phù hợp hơn với cách các nhà phát triển xây dựng classes và objects của họ bằng các ngôn ngữ respective programming. Các nhà phát triển thường sẽ nói rằng các classes của họ không phải là rows và columns mà có cấu trúc rõ ràng với các cặp key-value.
– Các rows (hoặc documents như được gọi trong MongoDB) không cần phải có một schema được xác định trướ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ữ arrays và các cấu trúc phức tạp khác dễ dàng hơn.
– Scalability – Môi trường MongoDB có thể mở rộng. Các công ty trên toàn thế giới đã xác định các cluster với một số trong số họ chạy hơn 100+ nodes với khoảng hàng triệu document trong cơ sở dữ liệu
Ví dụ về MongoDB
Ví dụ dưới đây cho thấy cách một document có thể được mô hình hóa trong MongoDB.
1. _id field được MongoDB thêm vào để xác định duy nhất document trong collection.
2. Những gì bạn có thể lưu ý là Order Data (OrderID, Product và Quanity) trong RDBMS thường sẽ được lưu trữ trong một table riêng biệt, trong khi trong MongoDB, nó thực sự được lưu trữ dưới dạng document nhúng trong chính collection. Đâ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 MongoDB là gì?
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 document MongoDB. Trường _id đại diện cho một unique value trong document MongoDB. Trường _id giống như primary key của document. Nếu bạn tạo một document 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 customer ở trên, Mongo DB sẽ thêm 24 chữ số unique vào mỗi document trong collection.
2. Collection
Đây là một nhóm các document MongoDB. Collection tương đương với một table được tạo trong bất kỳ RDMS nào khác như Oracle hoặc MSSQL. Một collection tồn tại trong một cơ sở dữ liệu duy nhất.
3. Cursor
Đây là một con trỏ đến tập kết quả của một query. Client có thể lặp lại qua cursor để truy xuất kết quả.
4. Database
Đây là vùng chứa cho các collection như trong RDMS, trong đó nó là vùng chứa cho các tables. 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.
5. Document
Bản ghi trong collection MongoDB về cơ bản được gọi là document. Document sẽ bao gồm tên trường (name) và value.
6. Field
Một cặp name-value trong document. Một document có thể không hoặc có nhiều filed. Các filed tương tự như các columns trong cơ sở dữ liệu quan hệ.
7. JSON
Đây được gọi là JavaScript Object Notation. Đây là định dạng văn bản thuần túy, có thể đọc được bởi 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.
Sự khác biệt chính giữa _id field và normal collection field: _id field được sử dụng để xác định duy nhất các document trong collection và được MongoDB tự động thêm vào khi collection đượ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. Document-oriented – 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 document. Điều này làm cho MongoDB rất linh hoạt và thích ứng với các yêu cầu và tình hình kinh doanh thực tế.
2. Ad hoc queries – MongoDB hỗ trợ tìm kiếm theo field, range queries và regular expression searches. Các truy vấn có thể được thực hiện để trả về các trường cụ thể trong document.
3. Indexing – Indexes 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 document MongoDB đều có thể được index.
4. Replication – MongoDB có thể cung cấp high availability với các replica sets. Một replica set bao gồm hai hoặc nhiều instances DB mongo. Mỗi replica set member có thể hoạt động trong vai trò của primary hoặc secondary bất cứ lúc nào. Primary replica là máy chủ chính tương tác với client và thực hiện tất cả các hoạt động read/write. Secondary replica duy trì một bản sao dữ liệu của primary bằng cách sử dụng built-in replication. Khi một primary replica bị lỗi, replica set sẽ tự động chuyển sang secondary và sau đó nó trở thành primary server
5. Load balancing – MongoDB sử dụng khái niệm sharding để chia tỷ lệ theo chiều ngang (vertical scaling) bằng cách chia nhỏ dữ liệu trên nhiều instances 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.
Data Modelling trong MongoDB
Như đã nói từ trước, dữ liệu trong MongoDB có một flexible schema. Không giống như trong cơ sở dữ liệu SQL, nơi bạn phải khai báo table’s schema trước khi chèn dữ liệu, các collection của MongoDB không thực thi cấu trúc document. Loại linh hoạt này là điều làm cho MongoDB trở nên mạnh mẽ.
Khi lập modeling data 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, 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 document được quyết định phù hợp.
2. Các mẫu truy xuất dữ liệu là gì – Nếu bạn sử dụng truy vấn nhiều thì hãy xem xét việc sử dụng các indexes 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 insert, update và remove trong cơ sở dữ liệu không? Xem xét lại việc sử dụng các indexes 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ải thiện hiệu quả của môi trường MongoDB tổng thể.