У меня есть приложение Rails, которое содержит счетчик пользователей, комментарии для многих Movie_Categories. Модели выглядят следующим образом:Большинство DRY-подходов для Rails-приложений с множеством субтитров
class User < ActiveRecord::Base
has_many :comments
end
class Movie < ActiveRecord::Base
belongs_to :movie_category
has_many :comments
end
class MovieCategory < ActiveRecord::Base
has_many :movies
end
class Comment < ActiveRecord::Base
belongs_to :movie
belongs_to :user
end
Я могу, конечно, найти Комментарии пользователя подсчитывают MovieCategory делать что-то вроде этого для каждого MovieCategory:
@user.comment.where("movie_category_id =?", movie_category_id)
Однако это ставит много нагрузки на сервер, если мне нужно сделать этот вызов слишком часто, поэтому я думал о том, чтобы делать вычисления один раз в час (в фоновом задании) для всех пользователей для всех Movie_Categories, а затем для хранения счетчиков в таблице «Пользователь», каждая категория фильмов со своим собственным столбцом , Таким образом, мне не нужно выполнять вычисления для каждого пользователя так часто, и вы можете просто получить доступ к подсчетам из таблицы User.
Что мне интересно, если есть более сухой способ сделать это, так как я не уверен, когда мой Movie_Categories перестанет расти (и каждый раз появляется новое поле таблицы). Я также думал о кэшировании представлений представления пользователей (где эти значения отображаются), но даже в этом случае, если у меня нет этих столбцов в таблице User, то кажется, что каждый раз, когда загружается новая страница пользователя (или кэшируется истек), это вам придется выполнить вычисление всего этого для подсчета комментариев пользователя снова.
Есть ли лучший подход к проблеме, с которой я столкнулся, не ставя слишком много бремени на сервер?
Накладывает ли он много нагрузки на сервер, потому что в этих таблицах много записей? У вас есть индексы, настроенные для этого запроса? Это похоже на разумный запрос. –
Прямо сейчас, это не слишком большая загрузка, потому что приложение не в сети. Я просто думаю о том, как это выглядит, если у вас есть 100 или более категорий и несколько сотен тысяч пользователей. – yellowreign