【问题标题】:Which is best for my needs - i am having mental breakdown [closed]哪个最适合我的需要-我精神崩溃了[关闭]
【发布时间】:2010-12-23 20:44:52
【问题描述】:

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

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

它是如何工作的;

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

用户可以发布以下信息:

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

并添加图片,链接。视频

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

问题如何;

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

现在我需要什么;

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

他们希望查看所有具有未来日期的报道,例如 NFL 类别或足球世界杯类别,他们可能希望查看所有具有未来日期的报道指示即将到来的游戏或活动。

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

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

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

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

我认为 couchdb 看起来不错,但我不确定

但是 Cassandra、Hbase、Riak、neo4j 呢?

想弄清楚这一点我快疯了。

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

【问题讨论】:

  • MySQL和Memcached在MySQL前面会不会有扩展性问题?假设您不必为每个访问者提供完全独特的数据,这可能是一种很好的方法,并且避免了进入 NoSQL 荒野的需要。
  • 我对 Couchdb 中的视图系统有点不清楚。我知道我可以构建多个视图来对相同的数据进行排序。但这种观点能有多复杂?可以查看 1) 查找 subreddit 中的所有帖子:体育。 2) 查找 NFL 类别中的所有帖子。 3) 查找所有具有未来日期的帖子。按大多数投票对这些帖子进行排序,并显示与今天最接近的故事。我是否必须为“每个 subreddit”定义一个视图?因为我将有大约 25,000 个子版块。用户将能够在 reddit 中创建自己的 reddit 和类别。
  • 您不必为每个视图定义单独的视图。 Subreddit 应该是您发出的键的第一个元素,因此您只能使用请求中的 from-to 字段选择一个。但是,对于每个不同的排序,您必须有一个单独的视图(不计算升序/降序)。

标签: erlang couchdb cassandra neo4j riak


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    相关资源
    最近更新 更多