我正在制作一个Web应用程序并使用mongodb作为我的数据库。但我是mongodb的新手,我只想知道我是否还需要像其他人在使用RDBMS时那样规范化我的数据库。在制作表格或数据库之前,它是规范化的。
答案 0 :(得分:8)
像使用关系数据库那样规范化数据在MongoDB中通常不是一个好主意。
关系数据库中的规范化只有在表之间的JOIN相对便宜的前提下才可行。 $lookup
聚合运算符提供了一些有限的JOIN功能,但它不适用于分片集合。因此,通常需要通过多个后续数据库查询来模拟连接,这非常缓慢(有关详细信息,请参阅问题MongoDB and JOINs)。
出于这个原因,您应该通过查询单个集合来满足最常见查询的方式设计数据库,即使这意味着您的数据库中会有一些冗余。模型1的好工具:n关系通常是子对象的数组。但是,尽量避免随着时间的推移无限增长的对象,因为在这种情况下,它们会在文件中移动很多,这会影响写入性能。