Djangoで質問投稿サイトを作っています。
teratailのように、質問投稿や回答投稿やそれらに対する評価に応じて、スコアやランキングが出るようにしたいと思っています。
しかし、そのスコアやランキングを表示する際に、その都度毎回計算すべきか、スコアやランキングを保存するデータベースを作るべきかと悩んでいます。
例えば、teratailでも、ユーザー毎にスコアやランキングが付いていますが、このスコアやランキングは、これまでの質問や回答の投稿数やその評価などによって算定されていると思います。
しかし、このスコアは、ユーザーがページにアクセスする都度、そのユーザーの投稿した質問数や回答数やそれらの評価をデータベースから検索して、スコアを集計しているのでしょうか。だとすると、サーバーの負荷が非常に高くなってしまうと思います。
そのため、例えば、質問を投稿した時、回答を投稿した時、評価された時に、スコアが集計されていく感じにしているのかなと想像しました。とすると、下記のようなテーブルがあって、上記のアクションがあった時にこのスコアが集計されるのかと思ったのですが、どうでしょうか。
ユーザーが2人しかいなくて、タグが2つしかないという想定です。
ユーザーID | タグID | スコア |
---|---|---|
1 | 1 | 30 |
1 | 2 | 24 |
2 | 1 | 40 |
2 | 2 | 10 |
質問する度、回答する度に、当該ユーザーの当該タグのためのフィールドがテーブルに追加されていく感じかなと思っております。
一般的にどのようにこのような仕組みを作り上げるのかを知りたく、質問させて頂きました。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/05/13 23:54