2011-07-27 24 views
0

好的,所以我一直在考虑像Reddit.com这样的各种网站。有成千上万的帖子,并为每个帖子数以千计的评论,最重要的是有用户跟踪所有评论和帖子的投票。大型投票模式:你会怎么做?

因此,考虑文章,评论和文章票(不真正关心的评论票)我知道如何做到这一点会是3代表的方式:

文章: ID,价值,用户名, totalvotes,其他培训相关数据

评论: ID,条款ArticleID,值,用户名,其它培训相关数据

票: ID,条款ArticleID,用户名,votevalue(+ 1,-1),其它培训相关数据

所以基本上是文章和评论/投票之间的一对多关系。以下是我对此的疑问:

  1. 这是正确的方法吗?

  2. 通过迭代整个投票表来寻找正确的文章,是否会非常缓慢地计算所有选票?

  3. 你会保持一个正在运行的总数或每次查询整个投票表(问题2)。

  4. 我的另一个想法是为每篇文章动态创建表格,但这可能是矫枉过正的。思考?

回答

2
  1. 没有 - 索引是你的朋友
  2. 没有 - 那就是非规范化,并会难以维持
  3. 哦..没有
+1

* 4。哦......不,太好了! ; d – Yoshi

0

一个答案:缓存

正如Randy所说,如果您的表的索引很好,那么拥有大量数据并不是什么大不了的事,但对于良好的用户体验而言,它可能太慢。因此,请考虑缓存所有可能的内容(如响应数),并仅在发表新评论时更新此内容。 另外,我强烈建议您在页面加载时取出所有未由ajax缓存的相关数据,而不是直接执行。

TLDR:

。是

。否

。 Cache

。地狱号