Какие стратегии ORM может использовать для кэширования данных при минимизации сложности? - PullRequest
2 голосов
/ 22 августа 2009

Если приложение запрашивает аналогичный набор результатов, который был недавно запрошен, как ORM может отслеживать, какие результаты устарели, а какие можно использовать повторно, не используя слишком много ресурсов (памяти) или создавая слишком много архитектурная сложность?

Ответы [ 2 ]

2 голосов
/ 22 августа 2009

Аннулирование кэша - очень сложный вопрос.Основной случай, который вы предлагаете, кажется чем-то, что легче всего обрабатывается кешем запросов базы данных (частые запросы сохраняют запрос в кеше).Как только стратегия кеширования становится более сложной, чем эта, большинство выигрышей будет получаться от ручного управления сроком действия кеша и кеша с помощью отдельного хранилища кеш-ключей.

Если такого рода вещи являются нормой для доступа к данным вашего приложенияи вы пробуете модные, новые вещи, представления couchdb для mapreduce могут хорошо подойти.

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

1 голос
/ 22 августа 2009

Когда мне нужно узнать, синхронизируются ли локальные данные с (удаленным) сервером, я отслеживаю транзакции.

Таким образом, перед «обновлением» локальных данных я «запрашиваю историю транзакций» и, если с соответствующими (удаленными) данными с момента последнего «обновления» не произошло транзакций, они все еще синхронизируются.

Но я не знаю, минимизирует ли это сложность.

...