Cache

Problem

memory

Solution

  • Use Cache

Levels for cache

Levels for cache

l2 cache architecture 2

Scalability

l2 cache architecture

Second level cache

Policy

  • Включен ли кэш второго уровня

  • Стратегию параллелизма Hibernate

  • Политика истекания срока кэширования (такую, как тайм-аут, LRU, зависимую от ОП)

  • Физическое устройство КЭШа (в памяти, индексируемые файлы, кластерная репликация)

Concurrency strategies

  • read-only - данная стратегия подходит для данных, которые никогда не меняются. Используйте её только для справочных данных.

  • nonstrict-read-write - не дает никакой гарантии согласованности между КЭШем и БД. Если есть возможность одновременного доступа к одной сущности, то вам необходимо настроить достаточно короткий срок истечения тайм-аута.

Concurrency strategies

  • read-write - поддерживает изоляцию чтения подтвержденного, используя механизм временных меток. Она доступна только в некластерных средах.

  • transactional - доступна только в управляемой среде. Она гарантирует полную изоляцию транзакций до повторяемого чтения, если это требуется. Используйте эту стратегию для данных которых в большинстве считываются, в которых очень важно предотвратить появление устаревших данных в параллельных транзакциях, в редких случаях обновления.

Cache providers

Cache providers

  • EHCache

  • Infinispan

  • SwarmCache

  • JCache

Cache providers

  • EHCache предназначен для процессного и кластерного кэширования в одной JVM. Он может кэшировать в памяти или на диске и поддерживает опциональный Hibernate кэш результатов запроса.

  • Infinispan – это полностью транзакционно-репликационный кластеризованный кэш с поддержкой КЭШа запросов, предполагая, что часы в кластере синхронизированы.

Cache providers

  • SwarmCache – это кластерный кэш, основанный на JGroups. Он использует кластерное аннулирование, но не поддерживает кэш Hibernate запросов.

  • JCache – это полностью транзакционно-репликационный кластеризованный кэш, также основанных на JGroups. Кэш запросов Hibernate поддерживается, предполагая, что часы в кластере синхронизированы.