2011-11-13 152 views
0

我正在研究我的第一个mongodb项目,并且试图在Mongodb和关系数据库中围绕模式设计进行思考。Mongodb模式设计建议

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

1)我得到2蔬菜的营养信息

2)3日益增长的饲料蔬菜/养殖信息

3)4博客文章

只有500种不同的蔬菜,饲料原料I获取信息。

会在这种情况下最好的模式是:

A)有一个收集每个蔬菜,有子集营养,生长和博客文章? B)或者有一个用于营养信息的集合,一个用于农业信息,一个用于博客文章?

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

+0

素食者的某种静态信息(例如“莴苣每千克20kcal”)的营养信息,还是来自多个来源(例如,来自该来源的不同来源的12组营养信息)?增加信息的同样的问题。如果它是静态的,我会同意卡尔文。如果没有,我会去选项B. – mnemosyn

+0

嗨它汇总了几个来源。 – CodeMonkeyB

回答

0

MongoDB是无模式的 - 所以您不必像关系数据库那样思考这个问题。起初我知道它很混乱。此外,MongoDB不支持“子集合” - 您拥有集合中的文档(单个实体)。

我实际上会选择这个:

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

这就是NoSQL的美丽 - 只要您编制索引 - 您可以让每个实体(在Mongo中称为文档)非常复杂。希望这可以帮助。

+1

注意MongoDB索引:它可以在每个查询中只使用一个索引**:如果仅仅稍微减少结果集,那么单独使用每个字段的索引不会有太大的帮助。 – mnemosyn