Tôi hiện đang cố gắng triển khai các tương tác người dùng giống như Tumblr như reblog, theo dõi, người theo dõi, nhận xét, bài đăng trên blog của những người tôi hiện đang theo dõi… Ngoài ra còn có yêu cầu hiển thị hoạt động cho mỗi bài đăng trên blog.Cách hiệu quả để tạo mối quan hệ với cơ sở dữ liệu NoSQL
Tôi bị kẹt với việc tạo giản đồ thích hợp cho cơ sở dữ liệu. Có một số cách để đạt được loại chức năng này (xác định cấu trúc dữ liệu được nhúng như bài đăng trên blog và nhận xét, tạo tài liệu hoạt động cho từng hành động, v.v.) nhưng hiện tại tôi không thể quyết định cách nào là tốt nhất về hiệu suất và khả năng mở rộng.
Ví dụ: hãy xem xét việc triển khai những người tôi theo dõi. Đây là mẫu Tài liệu người dùng.
User = { id: Integer,
username: String,
following: Array of Users,
followers: Array of Users,
}
Điều này có vẻ tầm thường. Tôi có thể quản lý trường sau cho mỗi hành động của người dùng (theo dõi/hủy theo dõi) nhưng điều gì xảy ra nếu người dùng tôi hiện đang theo dõi bị xóa. Có hiệu quả không khi cập nhật tất cả hồ sơ Người dùng theo dõi người dùng đã bị xóa.
Một vấn đề khác là tạo chế độ xem bài đăng trên blog từ những người tôi theo dõi.
Post = { id: Integer,
author: User,
body: Text,
}
Vì vậy, nó có hiệu quả truy vấn các bài đăng mới nhất như;
db.posts.find({ author: { $in : me.followers} })
Cảm ơn câu trả lời tốt bụng của bạn. Tôi thực sự sử dụng MongoDB phù hợp với Node.js rất tốt. Tôi không muốn sử dụng bất kỳ công nghệ nào khác (vì tôi phải học nó và xử lý các vấn đề khác) miễn là nó có thể được triển khai bằng cách sử dụng MongoDB một cách hiệu quả. –
Tôi chắc chắn có thể thấy sự cám dỗ để tiếp tục cố gắng sử dụng MongoDB để duy trì các mối quan hệ tài liệu lo sợ rằng một công nghệ khác sẽ tạo ra nhiều phức tạp hơn. Tuy nhiên, đây sẽ là một giải pháp không thể đánh giá theo quan điểm của tôi nói chung, ngoại trừ nơi ứng dụng được đề cập là rất nhỏ và sẽ luôn được duy trì bởi một nhà phát triển duy nhất. Vì số lượng nhà phát triển trong nhóm sẽ tăng lên, mỗi người sẽ phải hiểu những tác động của việc cập nhật và xóa tài liệu trên các mối quan hệ tài liệu. Về lâu dài nó sẽ chỉ gây ra nhiều sai lầm và phức tạp hơn. – manish