0

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

会有帖子,帖子会有评论

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

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

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

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

4

4 回答 4

2

根据您的特定需求,Redis 和 MongoDB 之间存在巨大差异,因为 Redis 与 MongoDB 不同,它不支持值查询。

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

您肯定会想使用 MongoDB。Redis 很棒,但它不适合我相信你需要的东西。

于 2012-05-01T10:52:01.150 回答
1

正如@APC 评论的那样,大型网站使用 SQL 解决方案可能是有原因的。所以我的建议来了:“研究其他大型网站的做法”。

例如, Disqus是我认为(如果不是)最大django 部署之一,并且专注于讨论/评论。他们使用 Postgresql ,在那里工作的David Cramer说他们不打算放弃它。因此,请在此处此处查看有关缩放评论的信息。

我知道这不是对您的困境的直接回应,但您可能会感兴趣。

于 2012-05-01T19:58:18.817 回答
1

这些东西是主观的,可以从不同的方向来看。但是,如果您已经决定使用 nosql 解决方案并尝试在 mongodb 和 redis 之间进行确定,我认为使用 mongodb 会更好,因为我想您应该能够保存大量帖子,而且 mongodb 文档更好适合代表职位。

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

于 2012-05-01T10:30:42.667 回答
0

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

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

于 2012-05-01T20:20:30.840 回答