|
|
1
14
这两个都是有效的解决方案,解决方案1的优点是,您只需从数据库中检索一个文档,就可以显示这样的页面。用户不经常更新他们的配置文件,您可以在用户配置文件更改后异步更新所有文章和嵌入的注释。您可以为用户id上的文章和嵌入的注释编制索引,这样更新应该很快。MongoDB中的更新速度非常快,因为MongoDB进行了适当的更新,并且您不能回滚或提交,所以MongoDB不必记录更改。 然而,像stackoverflow这样的网站上的用户也有声誉,这种声誉的变化比他们的个人资料要大得多。 解决方案2要求每页检索更多的文档,但是您可以将$in运算符与userid(post的userid+comments的userid)列表一起使用,因此您只需要两个“selects语句”。 |
|
|
2
1
我也遇到了类似的问题,我就是这样解决的: (当我解决这个问题时,我的驾驶动机是避免加入) 使用两个单独的集合:一个用于用户,一个用于文章。将用户对象与日志一起存储在“日志”集合中。更改用户对象时不要更新posts集合。维护用户信息是用户的集合。当然,post数据最终会包含过时的用户信息,但用户更改其配置文件的频率如何。 如果必须显示绝对最新的用户信息以及每个帖子,那么从缓存中检索用户信息。 希望这对你有用。我的解决方案仍在开发中,因此我没有要与您共享的负载测试结果。 |