2011-07-27 11 views
0

私はReddit.comのようなさまざまなサイトについてたくさん考えていました。何千もの投稿があり、投稿ごとに何千ものコメントがあり、すべてのコメントと投稿についてユーザーが追跡する投票があります。大規模な投票スキーマ:あなたはどのようにしますか?

だから、私はそれを行う方法を知っている方法は、3つのテーブルになります記事、コメント、記事の票を(本当にコメント票を気にしない)を考慮:

記事: ID、値、ユーザ名、 totalvotes、他のreleventデータ

コメント: ID、情報でarticleID、値、ユーザ名、その他releventデータ

投票: ID、情報でarticleID、ユーザ名、votevalue(+ 1、-1)、他のreleventデータ

基本的には、記事とコメント/投票の1対多の関係です。ここに私がこれに関して持っている質問があります:

  1. これは正しい方法ですか?

  2. 適切な記事を探している投票表全体を繰り返してすべての投票を集計するのが非常に遅いのではないでしょうか?

  3. 毎回投票総数テーブルに質問したり、質問全体を照会したりしますか?

  4. 私の他のアイデアは、各記事のためにオンザフライでテーブルを作ることでしたが、それは過度の可能性があります。思考?

答えて

2
  1. はい
  2. なし - インデックスあなたの友達です
  3. なし - それは非正規化されていないと
  4. うーんを維持するのは難しいだろう。..何
+1

* 4。うーん..いいえ*素晴らしい! ; D – Yoshi

0

一つの答え:キャッシュ

ランディー氏によると、テーブルの索引付けがうまくいけば、多くのデータを持っていることはあまりありませんが、良いユーザーエクスペリエンスのためには遅すぎる可能性があります。できるだけすべての情報をキャッシュし(新しい回答がある場合のみ)、これを更新することを検討してください。 また、キャッシュにない関連するすべてのデータをフェッチすることを強くお勧めします。

TLDR:

。はい

です。いいえ

です。キャッシュ

地獄no

関連する問題