我们在社交网络中拥有用户模型(mongodb)。有许多与用户相关的属性,但每次都不需要它们。所以我应该将它存储在同一个文档中,还是创建一个单独的模型。
将其存储在同一文档中会增加文档的大小。这会影响查询速度吗?什么是最佳实践。
答案 0 :(得分:0)
我说,将所有很少访问的数据提取到其他文档中。否则,您的用户文档将变得臃肿,这将影响性能。即使你足够聪明不通过线路传输它们(使用find
命令中的字段规范),它们仍然在同一个文件中,这会降低完整扫描的性能并增加工作集大小而不必要
答案 1 :(得分:0)
您没有提示每个字段的数量或大小,但是,如@Sergio所述,大型文档可以增加您的工作集和LRU所需的内存量。如果需要索引覆盖许多额外字段的复合索引,它还可以增加特定查询的索引大小,从而增加索引所需的RAM量。
然而,就速度而言,MongoDB完全被设计为以最大文档大小16兆位的所有方式工作,从而为您正确设置群集。
所以你的主要问题是你的记忆和空间,如果你考虑到这一点并以最佳速度工作,那么你应该没问题。正如@Sergio再次说的那样,主要的解决方案是反规范化,但我的主要反应问题是:你多久需要同时获得该表中的所有数据?