Sự khác biệt giữa Document, Collection và Database trong MongoDB?
Mình sẽ giải thích chi tiết và đầy đủ hơn về sự khác biệt giữa Document, Collection và Database trong MongoDB, giúp bạn hiểu rõ từng thành phần và vai trò của chúng.
1. Document (Tài liệu)#
Document là đơn vị dữ liệu cơ bản và quan trọng nhất trong MongoDB. Mỗi document được lưu trữ dưới dạng một đối tượng JSON (chính xác hơn là BSON – Binary JSON, một dạng nhị phân của JSON), bao gồm các cặp key - value.
Mỗi key là tên trường dữ liệu, còn value có thể là dữ liệu đơn giản như số, chuỗi, boolean, hoặc dữ liệu phức tạp như mảng, object lồng nhau (nested document), thậm chí là dữ liệu nhị phân hoặc ngày tháng. Điều này giúp document có thể mô tả rất đa dạng và phức tạp, phù hợp với nhiều kiểu dữ liệu thực tế.
Ví dụ, một document trong MongoDB có thể trông như thế này:
{ "_id": ObjectId("60d5f483f8d2f22b2c1c9e91"), "name": "Laptop Dell", "price": 1500, "specifications": { "cpu": "Intel i7", "ram": "16GB", "storage": "512GB SSD" }, "tags": ["electronics", "laptop", "dell"] }
_id là trường bắt buộc, được MongoDB tự động tạo nếu bạn không cung cấp, dùng làm khóa chính để định danh duy nhất cho từng document.
Document có tính linh hoạt, không bắt buộc phải có cấu trúc cố định. Hai document trong cùng một collection có thể có những trường khác nhau hoàn toàn.
Trong cơ sở dữ liệu quan hệ (RDBMS), document tương ứng với một bản ghi (row) trong bảng, nhưng linh hoạt hơn nhiều vì không cần schema cứng nhắc.
2. Collection (Bộ sưu tập)#
Collection là tập hợp các document có liên quan với nhau, nó tương tự như bảng (table) trong hệ quản trị cơ sở dữ liệu quan hệ. Một collection lưu trữ nhiều document, nhưng khác với bảng, MongoDB không yêu cầu tất cả các document trong một collection phải tuân theo cùng một cấu trúc hay schema.
Điều này có nghĩa là bạn có thể có nhiều document với các trường khác nhau trong cùng một collection, giúp bạn dễ dàng mở rộng hoặc thay đổi cấu trúc dữ liệu mà không cần thay đổi cấu trúc của toàn bộ hệ thống.
Ví dụ, trong collection products có thể có document về laptop, điện thoại, hay phụ kiện, mỗi loại có thể có các trường dữ liệu khác nhau tùy theo đặc điểm sản phẩm.
Bạn cũng có thể hình dung collection như một thư mục lưu trữ các file (document), mỗi file có nội dung và định dạng riêng nhưng đều nằm trong cùng một thư mục chung.
3. Database (Cơ sở dữ liệu)#
Database trong MongoDB là một tập hợp các collection, đóng vai trò như một không gian tên (namespace) chứa các dữ liệu liên quan. Một server MongoDB có thể quản lý nhiều database độc lập nhau, mỗi database có thể có nhiều collection khác nhau.
Trong hệ quản trị cơ sở dữ liệu quan hệ, database cũng là khái niệm tương tự — là một không gian lưu trữ gồm nhiều bảng.
Ví dụ, bạn có thể có một database tên là shopDB để quản lý các dữ liệu liên quan đến cửa hàng, bên trong đó có các collection như products, customers, orders,... và mỗi collection lại chứa rất nhiều document.
Tổng kết#
Document là đơn vị lưu trữ dữ liệu nhỏ nhất trong MongoDB, tương tự như một bản ghi trong bảng, nhưng linh hoạt về cấu trúc và kiểu dữ liệu.
Collection là tập hợp các document liên quan với nhau, tương đương với bảng trong hệ cơ sở dữ liệu quan hệ, nhưng không bắt buộc document phải có cấu trúc giống nhau.
Database là nơi chứa nhiều collection, đại diện cho một không gian lưu trữ dữ liệu, tương tự như một database trong RDBMS.
MongoDB sử dụng mô hình này giúp tăng tính linh hoạt, dễ mở rộng, và phù hợp với dữ liệu phi cấu trúc hoặc bán cấu trúc, đặc biệt trong các ứng dụng hiện đại cần xử lý dữ liệu đa dạng và nhanh chóng thay đổi.