Nó phụ thuộc.
Nó phụ thuộc vào số lượng từng loại đối tượng mà bạn mong đợi có. Bạn có thể sắp xếp tất cả chúng vào một tài liệu MongoDB duy nhất cho một Chủ đề nhất định không? Có lẽ là không.
Nó phụ thuộc vào các mối quan hệ - bạn có mối quan hệ một-nhiều hay nhiều-nhiều? Nếu nó là một-nhiều và số lượng thực thể liên quan ít, bạn có thể chọn nhúng chúng vào IList trên tài liệu. Nếu nó là nhiều-nhiều, bạn có thể chọn sử dụng mối quan hệ truyền thống hơn hoặc bạn có thể chọn nhúng cả hai bên làm ILists.
Bạn vẫn có thể lập mô hình các mối quan hệ trong MongoDB với các bộ sưu tập riêng biệt NHƯNG không có liên kết nào trong cơ sở dữ liệu nên bạn phải làm điều đó trong mã. Tải một Chủ đề và sau đó tải các Nhận xét cho chủ đề đó có thể tốt từ góc độ hiệu suất.
Các mẹo khác:
Với MongoDB, bạn có thể lập chỉ mục các mảng INTO trên tài liệu. Vì vậy, đừng nghĩ về một Chỉ mục chỉ là một chỉ mục trên một trường đơn giản trên một tài liệu (như SQL). Bạn có thể sử dụng, chẳng hạn như bộ sưu tập Thẻ trên một Chủ đề và lập chỉ mục vào các thẻ. (Xem http://www.mongodb.org/display/DOCS/Indexes # Chỉ mục-Mảng )
Khi bạn truy xuất hoặc ghi dữ liệu, bạn có thể đọc một phần và ghi một phần bất kỳ tài liệu nào. (xem http://www.mongodb.org/display / DOCS / Truy xuất + a + Tập hợp con + của + Trường )
Và, cuối cùng, khi bạn không thể biết cách đạt được những gì bạn muốn bằng cách sử dụng các bộ sưu tập và chỉ mục, bạn có thể đạt được điều đó bằng cách sử dụng thu nhỏ bản đồ. Ví dụ:để tìm tất cả các thẻ hiện đang sử dụng được sắp xếp theo tần suất sử dụng của chúng, bạn sẽ ánh xạ từng Chủ đề tạo ra các thẻ được sử dụng trong đó và sau đó bạn sẽ giảm tập hợp đó để có được kết quả bạn muốn. Sau đó, bạn có thể lưu trữ vĩnh viễn kết quả của việc giảm bản đồ đó và chỉ cập nhật nó khi bạn cần.
Đó là một sự thay đổi tư duy khá đáng kể từ tư duy quan hệ nhưng nó đáng giá nếu bạn cần khả năng mở rộng và tính linh hoạt mà cách tiếp cận NOSQL mang lại.