私はイントラネット アプリケーションとなるものを書いていますが、その機能の 1 つはコンテンツの投票にほぼ類似しています。SO、Amazon、および他の多くのサイトと同じです。
投票可能な各コンテンツに一意の ID があり、各ユーザー (認証されている) に一意の ID があると仮定すると、最も簡単な方法は「投票」テーブルを持つことです...
ContentID int
UserID int
VoteValue int
しかし、これは投票ごとに 1 つの行を作成します。何百万ものコンテンツと何万ものユーザーがいると、そのテーブルは非常に巨大になります。これが最善の方法ですか?つまり、int が 4 バイトの場合、各行は 12 バイトになります。100 万のコンテンツが 100 票を獲得した場合、ストレージは 400 MB 以上になりますよね? どうやら...たくさんのようです:)。VoteValue が tinyint (おそらくこれで問題ありません) で 1 バイトしかない場合でも、テーブルにはまだ数百メガバイトあります。私はおいおいを意味します。
よりスマートな方法はありますか?この「投票」テーブルを別のデータベースに保存して (潜在的なデータ整合性の問題を無視して)、ストレージとパフォーマンスの観点から「メイン」データから分割する必要がありますか?
(今日の世界では 400MB は大した量ではないことは理解していますが、投票を保存するだけでもかなりの量に思えますよね?)