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