Помещение сложного графа объектов в регион gemfire

Я немного новичок в GemFire. У меня есть запрос. Вот:

У меня есть следующие графы объектов (1 и 2), как указано ниже:

  1. ObjA имеет ObjB имеет ObjC
  2. ObjX имеет ObjY имеет ObjC

Один и тот же экземпляр ObjC связан с ObjB и ObjY. Теперь я поместил ObjA и ObjX в регион gemfire, R.

Мой вопрос: будут ли два экземпляра одного и того же ObjC в регионе R или только один? Если будет два экземпляра, то есть ли способ иметь один экземпляр в регионе R?


person Avik Dutta    schedule 20.08.2014    source источник


Ответы (1)


При начальных вызовах Region.put(ObjA) и/или Region.put(ObjX) (при условии, что ваше приложение является «одноранговым кешем», а не клиентом с регионом PROXY или CACHING_PROXY), будет только 1 экземпляр ObjC, косвенно упоминается ObjA (через ObjB) и ObjX (через ObjY).

Однако, когда GemFire ​​«реплицирует» ObjA и ObjX посредством распространения (как в случае REPLICATE или PARTITION Region, строго говоря, здесь на стороне сервера), тогда ObjC будет «дублироваться» на принимающей стороне.

В основном это связано с тем, что ObjA/ObjX должны быть "сериализованы" при отправке по сети во время репликации и распространения другим членам кластера, которые также размещают тот же регион. То же самое верно и для взаимодействия клиент/сервер (а именно, с клиентскими регионами PROXY и CACHING_PROXY).

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

Вы можете управлять механизмом «де/сериализации», обратившись к GemFire ​​UG здесь...

http://gemfire.docs.pivotal.io/latest/userguide/developing/data_serialization/chapter_overview.html

В частности, вы получите максимальную отдачу, используя собственную стратегию сериализации GemFire ​​с PDX (http://gemfire.docs.pivotal.io/latest/userguide/developing/data_serialization/gemfire_pdx_serialization.html) и, возможно, реализацию собственного PdxSerializer (http://gemfire.docs.pivotal.io/latest/userguide/developing/data_serialization/use_pdx_serializer.html) или реализации объектов домена PdxSerializable (http://gemfire.docs.pivotal.io/latest/userguide/developing/data_serialization/use_pdx_serializable.html), хотя и немного более инвазивным.

person John Blum    schedule 20.08.2014