Синхронизируйте записи кэша Infinispan с базой данных

Я хочу знать, могу ли я использовать Infinispan для синхронизации кэшированных данных с базой данных Oracle. Это мой сценарий. У меня есть два основных приложения. Одно приложение с высокой степенью одновременного использования, а второе используется в качестве административного модуля. Поскольку он очень параллелен, я хочу уменьшить количество подключений к базе данных (загрузить объекты в кеш (разрешить чтение и запись) и использовать его из этого места без вызова базы данных). Но тем временем я хочу обновить базу данных в соответствии с изменениями кеша, потому что модуль администратора использует базу данных напрямую. Может ли этот процесс обновления (кэшировать в базу данных) обрабатываться на уровне объекта без участия приложения? Пожалуйста, дайте мне знать, поддерживает ли Infinispan этот сценарий или нет. Если поддерживает, поделитесь идеями.


person Kalla    schedule 29.08.2012    source источник


Ответы (2)


Да, это возможно. Infinispan поддерживает этот вариант использования.

Это должна быть только "проблема" простой конфигурации. Все, что вам нужно использовать, это правильно настроить CacheStore с passivation disabled. Он будет синхронизировать ваш кеш (используемый высококонкурентным приложением) с базой данных.

Что именно вызывает?

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

Под памятью здесь подразумевается кеш. Если вы хотите узнать еще больше об этом и о других интересных вариантах, см.: https://docs.jboss.org/author/display/ISPN/Cache+Loaders+and+Stores#CacheLoadersandStores-cachepassivation

Возможно, стоит подумать о вышеупомянутом выселении. Отключить или включить его. Это зависит в основном от нагрузки, создаваемой вашим высокопараллельным приложением.

person tsykora    schedule 07.06.2013

На самом деле это работает только тогда, когда вы используете Infinispan в том же кластере для административного модуля. Если вы загрузите A в память с помощью Infinispan, измените A на что-то другое в базе данных непосредственно с помощью административного модуля, тогда Infinispan не будет знать, что A был обновлен.

person Wessel    schedule 29.05.2015