Tôi đang cố gắng tìm ra các khóa và chỉ mục ngoại tương đương trong cơ sở dữ liệu NoSQL KVP hoặc Document. Vì không có bảng tổng hợp (để thêm các khóa đánh dấu mối quan hệ giữa hai đối tượng) nên tôi thực sự bối rối về cách bạn có thể truy xuất dữ liệu theo cách hữu ích cho các trang web bình thường.
Giả sử tôi có một người dùng, và người dùng này để lại nhiều bình luận trên khắp trang web. Cách duy nhất tôi có thể nghĩ ra để theo dõi nhận xét của người dùng đó là
- Nhúng chúng vào đối tượng người dùng (có vẻ khá vô dụng)
- Tạo và duy trì một
user_id:comments
giá trị chứa danh sách khóa của mỗi nhận xét [nhận xét: 34, nhận xét: 197, v.v.] để tôi có thể tìm nạp chúng khi cần.
Tuy nhiên, lấy ví dụ thứ hai, bạn sẽ sớm gặp phải một bức tường gạch khi bạn sử dụng nó để theo dõi những thứ khác, chẳng hạn như khóa có tên "active_comments" có thể chứa 30 triệu id trong đó, khiến cho việc truy vấn mỗi trang phải tốn một TON chỉ để biết một số gần đây bình luận tích cực. Nó cũng sẽ rất dễ xảy ra các điều kiện đua vì nhiều trang có thể cố gắng cập nhật nó cùng một lúc.
Làm cách nào để theo dõi các quan hệ như sau trong cơ sở dữ liệu NoSQL?
- Tất cả nhận xét của người dùng
- Tất cả các bình luận hoạt động
- Tất cả các bài đăng được gắn thẻ [từ khóa]
- Tất cả học sinh trong một câu lạc bộ - hoặc tất cả các câu lạc bộ mà một học sinh tham gia
Hay tôi đang nghĩ về điều này không đúng?