Một số quy tắc của ngón tay cái mà tôi đã tìm thấy hữu ích là điều này:
Nếu chỉ có một bản sao logic của một mẩu thông tin, nó phải là trong một tài liệu (ví dụ, nếu bạn có ý kiến trên một bài đăng, phương pháp đơn giản nhất là nhúng chúng vào bài đăng)
Nếu bạn không chuẩn hóa dữ liệu trong SQL vào một số bảng khác để tránh tham gia và không có điều gì, hành vi tương tự được áp dụng trong lưu trữ tài liệu: không chuẩn hóa từ một " chính "vị trí thành bản sao ở các vị trí khác. Các bản sao nên được coi là bản sao và không phải là thông tin gốc, vì vậy chúng có thể được ghi đè bằng các hành động không chuẩn hóa trong tương lai.
Nếu bạn phải truy nhập một tập hợp dữ liệu chuẩn, như tài khoản người dùng, từ nhiều vị trí, lưu trữ tham chiếu dưới dạng ObjectId
s trong mongodb, sau đó thực hiện truy vấn thứ hai cho tài liệu liên quan. Bạn phải lưu ý trong ứng dụng của mình rằng truy vấn thứ hai không tham gia và sẽ không khóa cả hai tài liệu để đảm bảo tính nhất quán, do đó có thể có sự không thống nhất trong kết quả.
Về cơ bản, bạn nên nghĩ cơ sở dữ liệu là nhất quán ở cấp tài liệu. Bất kỳ truy vấn nào của các tài liệu liên quan có thể không phù hợp, vì vậy nếu bạn cần sự nhất quán, bạn có thể không chuẩn hóa dữ liệu đó thành một tài liệu.
Nếu bạn cần tài khoản người dùng được chính xác phù hợp với ý kiến của bạn, bạn sẽ phải sao chép các thông tin có liên quan bên cạnh ý kiến của bạn tại cùng một thời điểm mà bạn viết bình luận vào tài liệu. Điều này có nghĩa là bạn phải suy nghĩ về sự nhất quán ở cấp ứng dụng, mọi lúc. Nếu không, như tôi nghi ngờ là trường hợp, chỉ cần đưa ra một truy vấn khác cho người dùng.
Nếu bạn lo ngại về hiệu suất truy vấn dữ liệu trên tất cả người dùng tham gia vào trang của bạn, tôi khuyên bạn nên sao chép một số dữ liệu từ tài khoản người dùng bên cạnh nhận xét, nhưng chỉ đọc từ bản sao này - bạn nên ghi vào tài khoản người dùng ban đầu của bạn.
Đó là tất cả những gì nói đến cái tâm cho bây giờ, nhưng tôi có thể chỉnh sửa như điều xảy ra đối với tôi :)
cũng tương tự: http://stackoverflow.com/questions/5262669/nested-comments-in-mongodb và http://stackoverflow.com/questions/5144273/mongodb-document-design-for-comments-and-their-reply-comments – Thilo