小编Ala*_*n B的帖子

社交网络的"架构"设计

我正在为一个拥有约500,000用户的推特式社交网络开发一个概念证明应用程序.我不确定如何最好地设计'架构'

我应该嵌入用户的订阅还是拥有单独的"订阅"集合并使用数据库引用?如果我嵌入,我仍然需要执行查询以获取所有用户的关注者.例如

鉴于以下用户:

{
 "username" : "alan",
 "photo": "123.jpg",
 "subscriptions" : [
    {"username" : "john", "status" : "accepted"},
    {"username" : "paul", "status" : "pending"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

为了找到所有阿兰的订阅者,我必须运行这样的事情:

db.users.find({'subscriptions.username' : 'alan'});
Run Code Online (Sandbox Code Playgroud)

从性能的角度来看,是否比拥有单独的订阅集合更糟或更好?

此外,当显示订阅/订阅者列表时,我目前遇到n + 1问题,因为订阅文档告诉我目标用户的用户名,但不是我可能需要的其他属性,例如个人资料照片.是否有针对此类情况的推荐做法?

谢谢艾伦

mongodb nosql

19
推荐指数
1
解决办法
8596
查看次数

标签 统计

mongodb ×1

nosql ×1