我需要在MongoDB中建模一个类似于stackoverflow的问答网站,以下是我的主要问题:
我有两个主要对象-问题和用户(忘记其他的如答案等...)。
用户提出问题。我需要始终显示提出问题的用户。可以搜索问题并浏览所有问题。用户会提出少于1000个问题。
用户有一个经常更新的声望,并且当前声望应始终与问题一起显示。
解决方案1:将用户嵌入问题中 - 无需执行连接,但当用户声望更改时,应更新所有相关问题。而且难以显示单个用户。
解决方案2:将用户和问题作为单独的集合进行建模(就像在关系型数据库中一样)-现在更新声望不是问题,但每次检索问题时都需要在用户和问题之间进行连接。就像在关系型数据库中一样。此外,MongoDB没有连接,连接实际上是2个调用-1个用于获取问题,另一个用于获取用户,因此如果要检索100个问题,则需要100个调用以获取100个单独的用户-不好。
解决方案3:将用户嵌入问题中,并为用户拥有单独的集合
在更新时,更新用户集合和嵌入式用户,在仅显示用户时-使用用户
那么我应该使用哪种?还是最好使用像MySQL这样的关系型数据库解决?MongoDB中的字段更新速度有多快?
我很想使用Mongo,因为它的速度和易于将读请求路由到副本和分片(如果我的网站从单个服务器扩展出来,这是不太可能的;()
我有两个主要对象-问题和用户(忘记其他的如答案等...)。
用户提出问题。我需要始终显示提出问题的用户。可以搜索问题并浏览所有问题。用户会提出少于1000个问题。
用户有一个经常更新的声望,并且当前声望应始终与问题一起显示。
解决方案1:将用户嵌入问题中 - 无需执行连接,但当用户声望更改时,应更新所有相关问题。而且难以显示单个用户。
解决方案2:将用户和问题作为单独的集合进行建模(就像在关系型数据库中一样)-现在更新声望不是问题,但每次检索问题时都需要在用户和问题之间进行连接。就像在关系型数据库中一样。此外,MongoDB没有连接,连接实际上是2个调用-1个用于获取问题,另一个用于获取用户,因此如果要检索100个问题,则需要100个调用以获取100个单独的用户-不好。
解决方案3:将用户嵌入问题中,并为用户拥有单独的集合
在更新时,更新用户集合和嵌入式用户,在仅显示用户时-使用用户
那么我应该使用哪种?还是最好使用像MySQL这样的关系型数据库解决?MongoDB中的字段更新速度有多快?
我很想使用Mongo,因为它的速度和易于将读请求路由到副本和分片(如果我的网站从单个服务器扩展出来,这是不太可能的;()