Загрузка и обновление кеша Gemfire из таблицы Oracle

Я новичок в Pivotal Gemfire и настраиваю Gemfire для хранения данных таблиц Oracle для приложений с низкой задержкой и высокой пропускной способностью.

Есть способы, с помощью которых мы можем загрузить данные в кеш Gemfire.

Кто-нибудь знает, как я могу обновить данные, если какое-либо обновление произойдет при загрузке кеша Oracle post Gemfire?

Любая помощь, направления, ссылки будут очень полезны.


person Nikhil Joshi    schedule 03.09.2015    source источник


Ответы (1)


Как правило, вы хотели бы спроектировать свое приложение таким образом, чтобы все обновления поступали из вашего приложения через GemFire, а затем в Oracle. Вы можете использовать GemFire ​​CacheWriter синхронно обновлять базу данных Oracle и даже заключать ее в (JTA) транзакция, чтобы база данных Oracle обновлялась только в случае успешного обновления GemFire. Подробнее см. здесь. Вы даже можете выполнить обновление асинхронно (с отложенной записью) с помощью AsyncEventQueues и прослушивателей, см. здесь и в целом здесь.

Возможно, у вас есть другие приложения, не основанные на GemFire, которые напрямую обращаются к вашей базе данных Oracle. В этом случае вам придется полагаться на внешние средства для обнаружения обновлений базы данных и загрузки их в GemFire. Конечно, есть много способов сделать это, например, через запланированную службу, которая периодически проверяет наличие обновлений базы данных и загружает их в GemFire. Сочетание основных возможностей Spring Frameworks планирования задач в сочетании с Spring Data JPA (или даже просто Spring JDBC Abstraction) значительно упростит эту задачу.

Или, если бы это был я, я бы, вероятно, выбрал Spring XD и установил "< href="http://docs.spring.io/spring-xd/docs/1.2.1.RELEASE/reference/html/#_create_a_stream" rel="nofollow">поток", имеющий базу данных Oracle ( JDBC) "источник " смешанный с некоторыми преобразованиями/фильтрами/и т. д. по мере необходимости, а затем GemFire ​​"раковина".

Надеюсь, что это помогает и удачи.

Ваше здоровье!

person John Blum    schedule 03.09.2015
comment
Может ли синхронный модуль записи/слушателя кэша выполнить процедуру обработки данных, которая обновляет записи в других таблицах, и все это должно быть выполнено в одной транзакции? - person Andy Dufresne; 04.05.2016
comment
Да, но... вы должны прочитать это... gemfire.docs.pivotal.io/docs-gemfire/latest/developing/. По сути, другие таблицы (или регионы, как они называются в GemFire, которые представляют собой хранилище ключей/значений (то есть карту), а не табличную структуру данных) должны быть размещены вместе с регионом, в котором изначально выполняется транзакция. т.е. все транзакционные данные должны находиться на хосте, на котором инициирована транзакция. - person John Blum; 14.05.2016