13:13 Вариант структуры рейтинга для сайта |
хранить рейтинг можно в два этапа. Допустим голосовать можно один раз в день за любое количество постов. Тогда вам нужно две таблички: 1. Табличка с дневными данными, и соответствующая ей модель(DayVote). .---------------------------------------------------------------------------------------- | ID_ПОЛЬЗОВАТЕЛЯ | ID_ПОСТА | ОЦЕНКА | ПОСМОТРЕЛ_РЕЗУЛЬТАТ | -----------------------------------------------------------------------------------------. 2. Табличка с агрегированными данными и соответствующая ей модель(PostVote): .---------------------------- | ID_ПОСТА | ОЦЕНКА | -----------------------------. Эта табличка должна заполняться по крону автоматом 1 раз в сутки, собирая и агрегируя данные из DayVote, после чего DayVote нужно очистить. Приимущества такого подхода: 1. Максимальное количество записей в таблицах будет равно количеству постов+ количеству проголосовавших за сегодня. А это гораздо меньше чем общее количество голосов. 2. Простота схемы данных. 3. Можно расширить DayVote служебными данными (как-то IP, USER_AGENT и т.п.), и в скрипте, обновляющем PostVote и проводить автоматический анализ и фильтрацию голосов, не боясь за то, что база разрастется. Недостатки: 1. Усложняется процесс выбора количества голосов для поста (его теперь нужно выбирать из двух таблиц). 2. Нужно логировать запуски крон скрипта, и следить за логами, чтобы агрегирование выполнялось «гладко». |
|
Всего комментариев: 0 | |