Là một trong những giải pháp NoSQL phổ biến nhất MongoDB có hầu hết các ưu điểm của phương pháp này. Nhưng một vấn đề mà tôi vẫn đang gặp phải là phản ánh mối quan hệ đối tượng trong kho dữ liệu NoSQL, cụ thể như thế nào - MongoDB.Mô phỏng quan hệ trong MongoDB
Ví dụ: hãy xem xét một mô hình dữ liệu đơn giản: Người dùng, Bài đăng và Nhận xét. Rõ ràng với tôi rằng các bình luận không có giá trị riêng của chúng và do đó trở thành các đối tượng nhúng cho Bài viết. Nhưng khi nói đến người dùng - điều đó trở nên phức tạp bởi vì Người dùng là một thực thể, không phải cùng với Bài đăng. Bây giờ trong trường hợp tôi cần liệt kê các bài viết với tên đầy đủ của người dùng và liên kết đến các hồ sơ trên một trang web, tôi sẽ cần phải có một danh sách các bài viết và thông tin về các tác giả bài viết (tên và id ít nhất).
tôi thấy 2 giải pháp khả thi ở đây:
- De-chuẩn hóa dữ liệu trong một cách mà mỗi mục bài chứa ID tác giả của nó và ghi rõ họ tên (và bất kỳ người sử dụng các thuộc tính khác tôi có thể cần khi liệt kê bài viết). Bằng cách này tôi sẽ làm cho truy vấn cho các dữ liệu thực sự đơn giản nhưng khi người dùng cập nhật hồ sơ của mình, tôi sẽ cần phải cập nhật tất cả các bài viết của người dùng là tốt. Nhưng sau đó tôi cũng cần lưu trữ các thuộc tính người dùng trong các đối tượng bình luận có nghĩa là cập nhật hồ sơ người dùng về cơ bản yêu cầu tôi cập nhật tất cả các bài đăng có ít nhất một nhận xét của người dùng trừ khi tôi muốn lưu trữ nhận xét trong một bộ sưu tập riêng biệt.
- Chỉ lưu trữ ID người dùng trong đối tượng bài đăng và chạy 2 truy vấn: một để nhận danh sách bài đăng và một danh sách bài đăng khác để có danh sách người dùng có id người dùng nằm trong danh sách các tác giả bài đăng. Điều này yêu cầu 2 truy vấn và xử lý thêm trong mã ứng dụng của tôi để ánh xạ người dùng tới bài đăng.
Tôi chắc chắn tôi không phải là người đầu tiên đối mặt với vấn đề này nhưng tiếc là tôi chưa tìm thấy bất kỳ phương pháp hay nhất nào về chủ đề này cho đến nay. Ý kiến?
Bạn đã đi với lược đồ phương pháp nào? giải pháp 1? hoặc giải pháp 2? – koeder
Nó được mô tả khá tốt trong câu trả lời của TTT - tùy thuộc vào những gì bạn cần từ dữ liệu của bạn, bạn cần phải chọn. Tôi có cả hai cách tiếp cận được triển khai trong ứng dụng của mình. –
chỉ tò mò, làm thế nào để bạn thích mongodb? Bạn đã sử dụng Mongo như thế nào? – koeder