繁体   English   中英

寻找帮助了解Mongo DB数据组织

[英]Looking for Help Understanding Mongo DB Data Organization

我试图理解文档存储的概念,但看不到它如何适用于某些情况。 例如,对于CMS /博客引擎,可能存在以下形式的数据:

  • 帖子
  • 分类
  • 用户
  • 评论

在诸如MySQL之类的东西中,可能每个表都有一个表,然后每个相关数据集都有一个连接表。 posts_tablecategories_tablecategories_posts_table

在这种情况下, posts_table将包含POST数据, categories_table将包含类别的数据和categories_posts_table将包含用于一个特定的类别到特定的关联后2个外键。

这如何转换成类似mongodb的内容?

我可以看到此安装程序在mongo中构建的唯一方式是:

  • posts_collection

单个bson文档的输出可能类似于:

  {
     "title" : "title",
     "body" : "blah body",
     "categories" : [
                 "category1",
                 "category2"
               ]
  }

这是有道理的,但似乎类别将在各处重复。 如果没有某种关系,您将永远无法简单地更改类别名称并将其反映在所有博客文章(?)中。

此外,如果这些文件就像二进制文件那样占用大量空间,该怎么办? 与其一遍又一遍地复制同一张图片,不如说一段关系会更好?

我想这是一个相当开放的问题,但是我正在寻找任何人的意见,说明我应该如何在心理上分解问题以判断它是否适合像mongo这样的数据库。 同样重要的是,一种结构如何正确地数据?

我没有涉及用户,但是似乎所有的事情最终都将最终成为用户收藏夹中的嵌入式文档,因为用户开始了所有事情。

非常感谢。

文档数据库有趣的是,您确实需要考虑如何使用数据。 在文档数据库中可以将相同的信息存储在多个位置(非规范化)。 因此,当您说您可以拥有一个根User文档并嵌入了其他所有内容时,您是对的。

根据我有限的经验,没有一种对特定数据集建模的“正确”方法,更多的是关于将来如何使用该数据。

可以参考其他文件。 例如,如果您想要一个Posts集合,并让每个Post引用Users集合中的一个User文档。 看看这篇关于Embed vs. Reference的文章。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM