我必须在MongoDB数据库中建模数据。 我的数据是文章和评论,所以我已经想好了技术途径有两个:MongoDB:嵌入式文档与多个集合
1嵌入在每个状态的状态
1集1个集的评论
评论的状态采集
想象一下,从用户体验的角度来看,用户看到的是状态列表,他有时会要求查看给定状态的评论。 也考虑到用户可能会要求查看给定用户的评论:如果评论被嵌入到状态中,那么检索这些信息可能会更加昂贵。
你建议哪种解决方案?
谢谢!
我必须在MongoDB数据库中建模数据。 我的数据是文章和评论,所以我已经想好了技术途径有两个:MongoDB:嵌入式文档与多个集合
1嵌入在每个状态的状态
1集1个集的评论
评论的状态采集想象一下,从用户体验的角度来看,用户看到的是状态列表,他有时会要求查看给定状态的评论。 也考虑到用户可能会要求查看给定用户的评论:如果评论被嵌入到状态中,那么检索这些信息可能会更加昂贵。
你建议哪种解决方案?
谢谢!
这取决于评论数量和请求的真正频率。因为如果你会有一些评论,你不应该考虑它。另外,如果您使用两个集合,查询将会更加复杂,并且大量的评论集合将会比一个集合中的一个选择慢。实际上,非规范化是将数据存储在MongoDB中的好方法。
通过查看解决方案和相关查询,我认为,您必须考虑查询类型发生的频率。有一点是适用的,一个设计不能解决所有问题而不会引起某些问题。例如,如果实时查看与地位相关的评论的人员比较多,则可以查看来自用户的所有评论。我认为将评论嵌入到状态中将会有更好的用户体验。由于MongoDB的允许子文档的索引,如果你能有这种模式
Status : " I am good",
Comments : [{ Comment : "great" , by : "UserOne" } , [{ Comment : "great" , by : "UserOne" }]
你可以索引的Comments.by因此用户搜索的所有评论也将是不错的。在获取状态的同时,您可以添加评论并从缓存中获取评论,以使用户体验更好。
可能的重复[一个简单的mongodb问题:嵌入?或参考?](http://stackoverflow.com/questions/5373198/a-simple-mongodb-question-embed-or-reference) – WiredPrairie