Я полагаю, что есть несколько способов сделать это независимо от того, существует ли наилучший способ, зависит от того, как часто вы хотите, чтобы ваши рейтинги обновлялись, хотите ли вы, чтобы сервер подвергался стрессу, и т. Д.
1) У вас может быть два столбца в вашей видео сущности: CompleteRating, LastRatingUpdateTime.В вашем хранилище может быть функция GetRating, при каждом вызове она проверяет время последнего обновления, если, скажем, на час позже по сравнению с последним обновлением рейтинга, запускает запрос к базе данных, который обновляет рейтинг и выводит новый рейтинг.Это, конечно, означает, что пользователям нужно подождать, чтобы увидеть количество своих голосов, но это означает, что нагрузка на сервер будет ниже.
2) Возможно, вы могли бы ненавидеть два отдельных рейтинга, 1 для внешних рейтингов (IMDB и т. Д.)это обновляется только каждую ночь через cronjob, а затем отдельные рейтинги, которые рассчитываются, когда пользователь добавляет рейтинг, или даже просто на лету, базы данных очень быстры при таких вещах.
Мой голос будет2, это действительно зависит от того, насколько интенсивен код, который вы используете для очистки рейтингов IMDB.