Database 使用mongodb时是否需要规范化数据库?

Database 使用mongodb时是否需要规范化数据库?,database,mongodb,database-normalization,Database,Mongodb,Database Normalization,我正在制作一个web应用程序,并使用mongodb作为我的数据库。但是我是mongodb的新手,我只想知道我是否还需要像其他人使用RDBMS那样规范化我的数据库。在创建表或数据库之前,需要进行规范化。在MongoDB中,像使用关系数据库那样规范化数据通常不是一个好主意 关系数据库中的规范化只有在表之间的连接相对便宜的前提下才可行。聚合操作符提供了一些有限的连接功能,但它不适用于分片集合。因此,应用程序通常需要通过多个后续数据库查询来模拟连接,这非常缓慢(有关更多信息,请参阅问题) 因此,在设计数

我正在制作一个web应用程序,并使用mongodb作为我的数据库。但是我是mongodb的新手,我只想知道我是否还需要像其他人使用RDBMS那样规范化我的数据库。在创建表或数据库之前,需要进行规范化。

在MongoDB中,像使用关系数据库那样规范化数据通常不是一个好主意

关系数据库中的规范化只有在表之间的连接相对便宜的前提下才可行。聚合操作符提供了一些有限的连接功能,但它不适用于分片集合。因此,应用程序通常需要通过多个后续数据库查询来模拟连接,这非常缓慢(有关更多信息,请参阅问题)


因此,在设计数据库时,应确保通过查询单个集合可以满足最常见的查询,即使这意味着数据库中会有一些冗余。建模1:n关系的好工具通常是子对象的数组。但是,请尽量避免对象随着时间的推移无限增长,因为在这种情况下,它们会在文件中大量移动,这将影响写入性能。

那么您是说在使用mongoDB时规范化a数据库不是一个好做法吗?@heathcliff通常是这样,但是在一些边缘情况下,规范化是必要的。如果somwone正在阅读这篇文章,那么连接操作可以在MongoDb@MohitAngiras2014年我写下这个答案时,$lookup操作符还不存在。谢谢你提醒我注意这个答案。我更新了它。@nsantiago2719消息的精神是“视情况而定”,尽管它与第一句有点冲突。如果你考虑分摊,那么这不是一个好的做法。否则,这取决于使用情况。如果要避免大对象四处移动,请对其进行规格化。如果你有很多连接,不要这样做。这完全取决于您使用数据的方式以及哪种昂贵的操作更频繁。