论坛使用mongodb的数据库设计

shiftHL 2014-07-28 11:53:28
帖子 和评论是怎么设计效率比较高?
1、评论内嵌到帖子的document?
2、还是评论单独存一个 collection?

如果用方案1的话,分页可以用limit吗?即对文档内的数组分页?
...全文
592 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shining1110 2014-09-18
  • 打赏
  • 举报
回复
我觉得用嵌套 吧,就是comments 放在 帖子或者文章的json之中,这样调用起来很快啊。 不然comments另外做一个集合那有需要链接一次文章什么的。。不久不能发挥这个json的优势了吗
eshujiushiwo 2014-09-16
  • 打赏
  • 举报
回复
楼主你好。 抱歉这么晚才回复。 首先回答问题。 我个人是觉得评论独立于问题会比较好。 原因: 由于论坛形式的data model,会频繁涉及到评论与更新,当评论以数组形式存储于问题内,每当增加回复什么的时候,数组会增大,该条document会增大,当超过了之前为该document预分配的空间后,需要重新分配空间,造成io消耗。 其次,就是论坛典型的数据库问题,分页情况。 不建议直接使用limit n,m的方式来做分页,因为他还是扫描了n+m条数据。 以下有些许建议。 1.若只涉及上下页翻页,不能能输入任意页: 每次查询的时候将该页查询结果中对打的$maxpos和最小的$minpos (比如说是几楼)。然后翻页的时候,根据此来查询,若一页是20条数据,就会只需要在条件查询后(把minpos或者maxpos也作为条件之一)加个limit(20)了,效率将极大提升。 2.跳转到任意页: 一个简单的思路,已知每页a楼,从现在这页的最大楼数$maxpos +(跳转页数)*a 来做条件,再来排序与limit
dwh0722 2014-07-31
  • 打赏
  • 举报
回复
你好,我最近要做毕业设计,也在学习MongoDB,用c#的,不知道楼主和各位老师,哪位能提供一些资料,特别是源代码类的让我学习一下,谢谢了!
DrSmart 2014-07-30
  • 打赏
  • 举报
回复
看数量级,以及你内存了,如果RAM大,内联快啊
3文丰 2014-07-29
  • 打赏
  • 举报
回复
这个要看你的需求了,其实两者没有太大的效率差 了.一般来说第一种方式自关联的时候相对效率高一些吧,但是你要做limit的话如果是只显示帖子的情况下这个查找需要多一个判断,效率第二种会好一些.看你需求设计你认为最合理的设计就是有效率的设计啦
shiftHL 2014-07-29
  • 打赏
  • 举报
回复
为啥没人回答啊?求大神指教

1,747

社区成员

发帖
与我相关
我的任务
社区描述
MongoDB相关内容讨论区
社区管理员
  • MongoDB社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧