какие объекты кешировать? - PullRequest
0 голосов
/ 22 мая 2011

Лучше ли (1) кэшировать записи из таблицы, (2) полный граф объектов или (3) несколько частичных графов объектов в зависимости от варианта использования?

Позвольте мне уточнить: Допустим, у меня есть система заказов с рабочим процессом. Он содержит объекты, такие как: Заказ, Линия заказа, Элементы, Клиент, Рабочий план, Фаза, Веха, Действия и т. Д.

(1) Я могу поместить все записи из таблицы Order в кеш, а все записи из таблицы OrderLines в кеш, а все записи из таблицы Items - в кеш и т. Д. Вероятно, это ужасная идея, потому что вы не можете запросить кеш очень хорошо.

(2) Я могу помещать объекты кэша, включая его OrderLines, OrderItems, Customer, Workplan, Phases, Milestones и т. Д., В кэш. Мне это не нравится, потому что я должен обновить кэшированный объект Order, если что-то изменится в его Orderlines, Orderitems, Item, Customer, PHases, Milestones и т. Д. Другое дело, что я не знаю, насколько большим будет кэшированный объект ордер имеет отношения с 10 или 15 другими объектами, и все они загружаются в кэшированный ордер.

(3) Я могу «разделить» объект на части для Orderdetails и часть для wokrflow. Таким образом, у меня есть кешированный объект Order со всеми соответствующими деталями Order. И у меня есть еще один объект Cached Order со всеми соответствующими деталями Workflow.

Ребята, есть ли у вас какие-либо предложения о том, как вы кешируете эти вещи?

(надеюсь, это понятно, в противном случае, пожалуйста, дайте мне знать)

1 Ответ

0 голосов
/ 22 мая 2011

Вам необходимо найти баланс между информацией, которая просматривается чаще всего, и информацией, которая больше всего меняется.

Например, заголовок заказа, вероятно, доступен на каждой странице, например, в виде корзины? В этом случае кешируйте это, поскольку это будет поражено. Но вехи с другой стороны, как часто это рассматривается? Если вы собираетесь просматривать его, возможно, только один раз за сеанс, то вероятность его кэширования будет меньше, поскольку вы не получите никакой реальной выгоды.

Если бы вы кешировали всю объектную модель, то вы бы постоянно обновляли кеш данными, которые я представляю, без реальной выгоды и затрат на хранение для сессии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...