EhCache, JPA 2.0 L2 кеш, стратегия кеширования - PullRequest
2 голосов
/ 17 января 2011

Привет всем,

Я новичок в мире кэширования L2, поэтому, пожалуйста, будьте осторожны со мной :).У меня есть несколько вопросов:

1) В чем разница между EhCache и JPA 2.0 L2 Cache?

Насколько я понимаю, EhCache распространяется (также может бытьавтономный), в то время как JPA 2.0 L2 Cache нет (на JVM).

2) Стратегия кэширования

Пожалуйста, поделитесь своей стратегией кэширования 101.Как кэшировать коллекцию (вопросы и советы)?Как искать объект в вашем пуле кеша (если вы знаете, что кешируете его).

3) Кэширование и хранимые процедуры

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

Я слышал истории о том, что некоторые большие сайты кэшируют все.Означает ли это, что они пишут свой собственный слой доступа к данным поверх своей библиотеки кеша и JPA / ORM?

PS: Я понимаю, что золотое правило заключается в том, чтобы избегать кэширования на ранних этапах или, что еще лучше, увеличить возможности оборудования.Я задаю этот вопрос в учебных целях.Я также не прошу конкретный сценарий, но больше общего правила, общего сценария, наименьшего общего знаменателя, это не должно решать проблему всех.

Спасибо!

1 Ответ

4 голосов
/ 17 января 2011

1) EHCache является реализацией кэширования. JPA2 L2 - интерфейс кеширования. Вы можете использовать EHCache в качестве поставщика кеша JPA L2. Поставщик кэша L2, который вы выбираете, должен полностью зависеть от ваших требований. Если вы считаете, что EHCache лучше всего подходит, используйте его.

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

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

...