【问题标题】:Mongodb schema design adviceMongodb 架构设计建议
【发布时间】:2011-12-28 04:20:53
【问题描述】:

我正在处理我的第一个 mongodb 项目,并试图将我的头脑围绕在 Mongodb 与关系 dbs 中的模式设计上。

我想从几个 RSS 提要创建一个蔬菜数据库。这些提要中的每一个都有一个蔬菜名称标签供我使用。

1) 我收到 2 个关于蔬菜营养信息的提要

2) 3 种蔬菜种植/种植信息饲料

3) 4 个博客文章供稿

我得到的信息只有 500 种不同的蔬菜。

在这种情况下最好的架构是:

A) 每种蔬菜都有一个集合,并有营养、生长和博客文章的子集合?

B) 还是有一个营养信息集、一个农业信息集和一个博客文章集?

我设想用户主要查询蔬菜名称,但也可以查询其他字段。

【问题讨论】:

  • 蔬菜的营养信息是某种静态信息(例如“生菜每公斤含有 20kcal”),还是从多个来源汇总而来的(例如,有来自不同来源的十二组营养信息这个蔬菜)?对于不断增长的信息,同样的问题。如果它是静态的,我会同意 Calvin 的观点。如果没有,我会选择选项 B。
  • 您好,它是从多个来源汇总的。

标签: mongodb database-schema


【解决方案1】:

MongoDB 是无模式的——因此您不必像处理关系数据库那样考虑这一点。我知道一开始很混乱。此外,MongoDB 不支持“子集合”——集合中有文档(单个实体)。

我实际上会选择这个:

C) 两个集合。蔬菜集合本质上是一个复杂的数组结构,不仅包含有关蔬菜的信息,还包含生长/营养信息。只需确保您 create an index 找到您需要搜索的每件作品。如果您不能使用已经存在的博客引擎,则可以单独收集博客文章。

这就是 NoSQL 的美妙之处——只要你索引——你可以让每个实体(在 Mongo 的案例中称为文档)变得相当复杂。希望这会有所帮助。

【讨论】:

  • 注意 MongoDB 索引:它可以每个查询只使用一个索引:如果每个字段的索引仅略微减少结果集,那么它不会有太大帮助.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 2020-08-07
  • 2012-08-25
  • 2011-05-25
  • 1970-01-01
相关资源
最近更新 更多