MongoDB:使用嵌入对象的好处

时间:2011-09-11 08:58:09

标签: mongodb mongoid

使用嵌入对象有什么好处?

在我的实践中,当我不在其父级之外使用嵌入式对象时,这是非常罕见的。我的意思是comments的常见示例是embedded_in post:我需要在更新列表中显示最后的注释,我需要显示current_user等的注释。所以注释不能嵌入或者它会很痛苦屁股。

因此,当我需要使用嵌入式对象时,很少有用例。

问题是:为什么我应该使用嵌入式对象,即使在那些罕见的用例中,嵌入有什么好处?

1 个答案:

答案 0 :(得分:5)

嵌入式对象是任何nosql数据库的一大利益。通常嵌入=读取性能+可伸缩性。我们以SO为例。你可以在问题中回答问题/答案评论,回答文件。这意味着当您需要显示答案/问题时,您无需加入评论。如果您不需要加入 - 您可以将集合移动到单独的计算机以加速您的应用程序。在关系数据库中,子对象通常成为一个单独的表(非规范化除外)。在我的实践中,我需要嵌入文档的情况非常多。

但是并非所有嵌入良好身体的情况,在某些情况下你真正关注'屁股'的痛苦。你不需要嵌入一切!在您的情况下,只需为评论创建单独的集合或..

在nosql世界中还有另一个众所周知的概念:非规范化

  

我需要在更新列表中显示最后的评论

好的,如果您需要最新的更新,您可以在更新集合中插入最后的评论以快速显示它。

  

我需要为current_user

显示评论

好的,将用户评论嵌入到用户对象中。

BTW,非规范化通常是异步过程,因为将一个对象写入多个集合可能会导致写入性能问题。

希望我的答案会给你一些想法。