2011-01-17 4 views
2

HI все,Ehcache, JPA 2.0 кэш L2, Caching стратегия

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

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

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

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

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

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

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

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

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

Спасибо!

ответ

4

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

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

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