mongodb数据库中博客内容和评论应该放在同一个文档吗
发布于 11 年前 作者 mygod 10391 次浏览 最后一次编辑是 8 年前

在mongodb数据库中博客的博文和评论应该放在同一个文档,还是把评论单独放在一个文档,哪种方式比较合理呢,谢谢

13 回复

哪位大侠给点意见啊

应该在一个文档吧,把评论作为文章对象的一个属性

不该,扩展性会降低

主要是什么方面的扩展性呢

我的做法是将评论的ID号 组合成数组 eg.post:{…,coments:[id,id,id…],…}; coments:{id:,content:,time:,uid:…} 不过也有不好的地方,我们知道mongodb在储存上使用的是预分配空间的方法,大量使用数组,会导致碎片化加重 造成性能上的牺牲 传统关系型数据库就不存在这种问题 当然我不是说mongo不好 相反,我是mongo的推崇者 但还是希望大家理智对待 对新鲜事物的盲目使用 并不是好事

为什么要在post里面去添加comments属性呢? 为何不在comments添加post_id属性,去关联式那个post的评论呢

如果总是关系数据库的思维的话 那还用mongodb干吗?!!

@quyangcode您是怎么处理呢,对于文章和评论

看情况而定,user和post也有关系,却没放在一起。post和comment关系比较简单又紧密,放在一起,读取会方便的点。

起初我考虑这个问题觉得mongodb就应该放一起,认为这本就是mongo相对于关系数据库的优势! 不过发现cnode club的源码是放不同文档的!

你好,单就你得需求而言,博文内容和评论还是比较适合放在一起的,毕竟一篇博客就是一份文件,评论可以作为该文件的一部分,这也是mongodb设计的初衷。当然分开放也可以,但这不是mongodb的设计原则。

另外说点题外话,希望能和大家分享讨论一下:

什么时候应该选择mongodb或类似产品。

mongodb和其他关系行数据库相比,各有优势。 在关系行数据库中,表格字段的维护和扩展不是很方便,另外多表查询时候会需要一定的时间成本。 而mongodb在这两点上很有优势。

但如果我们依旧像关系型数据库一样设计mongodb 中 collection的时候,问题就来了:

  1. mongodb没有join方法,需要你手动实现
  2. 解决问题1的时候,我们实际上牺牲了一部分mongodb文件读取速度的优势
  3. 如果不同collection之间的关系有价值甚至非常重要,那么mongodb需要你花费巨大的成本维护“表关系”的价值,因为这正式关系行数据库的理念。
  4. 当多个collection之间关联紧密的时候,可能出现无法恢复的数据不一致问题。

详情请参考原文: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/

一点小建议

选择mongodb前一定要确定项目需求并不依赖于数据之间relation的价值。 选择了mongodb,就尽量避免设计出复杂的“表结构”,发挥它的优势同时避免一些麻烦。

简单(且不严谨的)来讲,如果你要读取的数据内容,能够用一张打印纸完全表现出来,那么就可以试着把这些信息放进同一个文件。

您好我有点问题请教您 能否留给联系方式 我在看nodejs 指南 由于书籍提到的版本过低所以我在写的时候出现了一定的问题 希望您能帮助一下!!

回到顶部