Я пишу, что будет интранет-приложением, и одна из его функций примерно аналогична голосованию контента - мало чем отличается от того, что делают SO, Amazon и многие другие сайты.
Если предположить, что каждый голосующий фрагмент контента имеет уникальный идентификатор, а каждый пользователь (они аутентифицированы) имеет уникальный идентификатор, проще всего было бы создать таблицу "голосов" ...
ContentID int
UserID int
VoteValue int
Но это создает одну строку за голос - с миллионами фрагментов контента и десятками тысяч пользователей эта таблица станет огромной огромной. Это лучший способ сделать это? Я имею в виду, если int занимает 4 байта, каждая строка занимает 12 байтов. Если миллион единиц контента получит сто голосов, это 400 МБ + в хранилище, да? Кажется ... как много :). Даже если VoteValue является крошечным (что, вероятно, хорошо) и только 1 байт, это все еще пара сотен мегабайт в таблице. Я имею в виду Sheesh.
Есть ли умнее? Должен ли я хранить эту таблицу «голосов» в отдельной базе данных (игнорируя потенциальные проблемы целостности данных), чтобы отделить ее от «основных» данных с точки зрения хранения и производительности?
(я понимаю, что в современном мире 400 МБ - это не тонна, но похоже, что МНОГО просто для хранения голосов, да?)