-1

我正在用 Erlang 构建一个 Reddit 克隆。我正在考虑使用一些 erlang web 框架,但这不是问题。

我在选择数据库时遇到问题。

这个怎么运作;

我有多个专用的 reddit。例子,科学,有趣,企业,运动。您可以将它们视为子reddits。每个子 reddit 都有类别。

用户可以发布以下信息:

标题,类别标签,描述,类别, 未来日期

并添加图片,链接。视频

与 Reddit 一样,用户将能够对故事和评论进行投票。评论也将有投票系统。

问题如何;

我不知道要使用什么 NoSQL 数据库,该站点将存在 Mysql 的可扩展性问题(相信我,它不会建议使用 sql)如果不是更多,将有大约 10,000-20,000 个并发连接。

现在我需要什么;

1) 用户将前往体育版块,

他们将希望查看所有带有Future Date的故事,例如 NFL 类别或 Soccer World Cup 类别,他们可能希望查看所有带有未来日期的故事,这些故事 表明即将到来的比赛或事件。

但是由于人们可能会发布废话,我需要说按未来日期排序,然后按超过 5 票的帖子过滤结果,然后我需要显示最近的即将发生的事件。

因此,如果周末有一场比赛,而下一场比赛又是 3 周,那么最接近的比赛需要首先出现。

2)所以上面的问题是使用一个数据库

1) 在 subreddit: Sport中查找所有帖子。2) 查找NFL类别中的所有帖子。3)查找所有具有未来日期的帖子。按大多数投票对这些帖子进行排序,并显示与今天最接近的故事。

我认为 couchdb 看起来是个不错的候选人,但我不确定

但是 Cassandra、Hbase、Riak、neo4j 呢?

我要疯了,想弄清楚这一点。

我需要能够扩展和处理大量用户的东西。

4

1 回答 1

2

Cassandra 应该适合你;“用户对以不同方式显示的内容进行投票”听起来与 Digg 所做的非常相似(他们正在完全转向 Cassandra)。

Cassandra 中的游戏名称是非规范化。因此,对于每个类别或 subreddit,您将有一行包含帖子。如果您一次查询相对较少数量的故事,您可能无需对帖子信息(包括投票计数)本身进行非规范化处理,而只需多次获取即可。对于较大的批次,您应该将其复制到每个帖子列中,这样您就不必做那些额外的获取。

如果您使用 TimeUUID 之类的东西对您的列进行时间排序,那么“给我今天日期之后的 X 类中的所有内容”是微不足道的,然后您按投票计数客户端排序。(为什么不对服务器端进行排序?因为这无法扩展。)

于 2009-12-08T14:42:27.497 回答