mongodb或redis为facebook这样的网站?

时间:2012-05-01 10:16:49

标签: python django database-design mongodb redis

我正在django建立一个社交应用程序,该网站的架构将非常类似于facebook

会有帖子,帖子会有评论

帖子和评论都会包含日期,作者,标签,投票等元数据

我决定使用nosql数据库,因为我们可以轻松添加新功能。

我在mongodb上最终确定,因为我可以轻松地将帖子及其评论存储在单个文档中。我现在有了第二个想法,对于这种应用程序,REDIS会比mongo更好吗?

更新 我决定使用mongodb,如果需要,将使用redis作为用户主页和主页。

4 个答案:

答案 0 :(得分:2)

Redis和MongoDB之间有一个巨大的区别,可以满足您的特殊需求,Redis与MongoDB不同,它不会促进价值查询。

您可以使用MongoDB在帖子文档中嵌入评论,这意味着您可以在单个查询中获取帖子和评论,但您也可以根据标签,作者等查询帖子文档。

你肯定想要使用MongoDB。 Redis很棒,但它不适合我认为你需要的东西。

答案 1 :(得分:1)

这些都是主观的,可以从不同的方向看待。但是,如果你已经决定使用nosql解决方案并且试图确定mongodb和redis之间我认为最好使用mongodb,因为我猜你应该能够保存大量的帖子而且mongodb文件更好适合代表帖子。

Redis只能保存到最大内存限制,但速度非常快。因此,如果您需要索引某些内容,您可以在mongodb中保存帖子,然后将帖子的ID保存在redis中以便更快地访问。

答案 2 :(得分:1)

正如@APC所评论的那样,大型网站可能会使用SQL解决方案。所以我的建议就是:“研究其他大型网站所做的事情。”

e.g。 Disqus我认为其中一个(如果不是 )最大的django部署并专注于讨论/评论。他们使用Postgresql和David Cramer,他们在那里工作,说他们不打算放弃它。因此,请查看扩展评论herehere

我知道这不是对你的困境的直接反应,但仍然可能让你感兴趣。

答案 3 :(得分:0)

首先,松散地结合您的应用和持久性,以便您可以在非常精细的级别上交换它们。例如,您希望能够根据需求的变化将一个服务从mongo移动到redis。能够衡量您的服务并适当地单独回应。

其次,您不太可能找到一个适合您应用程序中每个工作流程的持久性解决方案。不要害怕使用多个。对于一系列问题,Mongo是一个很好的工具,就像Redis一样,不一定是同样的问题。