これを最適化されたパフォーマンスのためにモデル化する最良の方法は何かについては興味があります。時間データの整合性多対1の関係の集計データをモデル化する効率的な方法(例えば、stackoverflow質問の投票数)
は、私は質問が多くの票多くのクエリのために
しかし、我々は例えばに(投票の総数を有する唯一の心配してい
Question
id
title
Votes
id
user
question
stackoverflowの例を続けます質問の横に表示)。
良好なリレーショナルDB理論は、2つのエンティティ(QとV)を別々のリレーションとして作成し、結合を要求して合計または集計コールを要求します。
もう1つの可能性は、通常のフォームを破棄し、投票の集計値を質問(例:Question.votes)の属性として具体化することです。パフォーマンスは読まれますが、あなたの「投票」データを得ることができなくなった場合、その質問レコードにはもっと多くの権利が必要となり、結果としてパフォーマンスが低下します。
キャッシングなどを含む他の手法を使用できます。しかし、私はちょうど最高のソリューションは何がパフォーマンス賢明なのだろうか?サイトのトラフィックが高く、質問よりもかなり多くの票を受け取ったとします。
非リレーショナルモデルにもオープンです。
私は質問の投票数の提案を具体化することに取り組んだ。私は別の方法がある場合、これは2倍の書き込み(任意の読み取りをロックアウト)が原因であると思っていた 私は適切なインデックスで知っている。しかし、私が多くの質問を取得していて、多分多くの関係(例:投票数とコメント数)がある場合、結合は厄介になります – nategood
投稿が編集されました。早すぎる最適化をしていないことに注意してください。私が通常の結合から離れる前に、パフォーマンス問題の数に裏打ちされたハードな証拠がなければなりません。 – Andomar