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