非规范化是什么意思?

时间:2015-09-27 13:45:38

标签: mongodb embedding denormalization

在阅读文章http://blog.mongodb.org/post/88473035333/6-rules-of-thumb-for-mongodb-schema-design-part-3章节时:“经验法则:通过彩虹指南”我遇到了这样一句话:嵌入和非规范化。

  

一个:支持嵌入,除非有令人信服的理由不

     

五:考虑非规范化时的写入/读取比率。一个主要被读取但很少更新的字段是非规范化的一个很好的候选者:如果你对经常更新的字段进行非规范化,那么查找和更新所有实例的额外工作可能会超过你从非规范化中获得的节省。

我知道嵌入是嵌套文档,而不是编写单独的表/集合。

但我不知道非规范化意味着什么。

1 个答案:

答案 0 :(得分:2)

非规范化与normalization相反,这是设计像MySQL这样的关系数据库的一种很好的做法,在这种情况下,您将一个逻辑数据集拆分为单独的表以减少冗余。

因为MongoDB不支持表的连接,所以如果经常读取属性并且更少更新,则优先将属性复制到两个集合中。

E.G。:您想要保存有关某人的数据,并希望保存该人的性别:

在SQL数据库中,您将创建一个表人员和一个表性别,在人员表中存储性别ID的外键并执行连接以获取完整信息。这样"男性"和女性"只存在一次作为值。

在MongoDB中,您可以将性别保存在每个人中,因此值为"男性"和女性"可以存在多次,但查找速度更快,因为数据紧密耦合在集合的一个对象中。

相关问题