具有大量类似sql的连接的查询的数据库设计

时间:2015-06-15 10:12:25

标签: mongodb join database-design database

我有一个名为posts的集合,其中包含多篇文章帖子和一个名为users的集合,其中包含大量用户信息。每个post都有一个名为author的字段,该字段引用users集合中的帖子作者。

在我的主页上,我将查询posts集合并将一个帖子列表返回给客户端。由于我还想显示帖子的作者,我需要做类似sql的连接命令,以便所有帖子都有作者姓名,ID,等等。

如果我返回40个帖子的列表,我必须做40个sqllike-joins。这意味着每次我将进行41次查询以获取包含作者信息的帖子列表。这看起来真的很贵。

我正在考虑在存储帖子信息时存储作者信息。这样我只需要进行1次查询即可检索所有帖子和作者信息。但是,当用户信息发生更改(例如名称更改)时,列表将过时,管理此类列表似乎并不容易。

对此有更好或更标准的方法吗?

p.s:我正在使用mongodb

1 个答案:

答案 0 :(得分:3)

Mongo是NoSQL DB。根据定义,NoSQL解决方案意味着非规范化(所有必需的数据应位于同一位置)

在您的示例中,作者和帖子之间的关系是一对多,但作者与帖子的比例非常小。简单来说,没有。作者与没有作者相比。的帖子会很小。

基于此,您可以安全地将作者信息存储在posts集合中。

如果您需要查询帖子集合,即如果您知道您的大多数查询将在帖子集合上执行,那么将作者存储在帖子中是有意义的。它不会占用很大的空间来存储一个属性,但它会在查询性能和编码/检索数据的容易性方面产生巨大的差异。

相关问题