Datanucleus / JDO кэш 2-го уровня в Google App Engine - PullRequest
3 голосов
/ 06 января 2010

Возможно ли (и имеет ли это смысл) использовать кэш 2-го уровня JDO для хранилища данных Google App Engine?

Прежде всего, почему на страницах Google нет документации по этому поводу? Есть ли проблемы с этим? Нужно ли устанавливать ограничения для защиты квоты memcache?

Согласно DataNucleus в Stackoverflow вы можете установить следующие свойства персистентности:

 datanucleus.cache.level2.type=javax.cache
 datanucleus.cache.level2.cacheName={cache name}

Это все? Можем ли мы выбрать любое имя кэша?

Другие источники в Интернете сообщают о различных настройках.

Также, похоже, нам нужно загрузить плагин поддержки DataNucleus Cache . Какая версия подойдет? И мы просто помещаем его в WEB-INF/lib или для его активации требуется дополнительная настройка?

Ответы [ 3 ]

3 голосов
/ 27 декабря 2012

Прежде чем вы сможете понять это, вы должны ответить на один вопрос:

Какую версию DataNucleus вы используете?

Все в этом посте имеет отношение к старой версии плагина - v1. Только недавно плагин Google для Eclipse поддержал v2 плагина DataNucleus для AppEngine (который в основном является каналом между AppEngine и ядром DataNucleus).

Я бы порекомендовал перейти на v2 плагина Datanucleus для AppEngine - если вы используете Eclipse, это просто - для него есть пользовательский интерфейс, позволяющий выбрать v1 или v2. Просто зайдите в свойства вашего проекта, найдите настройки App Engine и найдите «Datanucleus JDO / JPA version».

Кроме того, вы должны внести изменения в jdo-config.xml. В частности, вы должны изменить только одно свойство:

<property name="javax.jdo.PersistenceManagerFactoryClass" value="org.datanucleus.api.jdo.JDOPersistenceManagerFactory"/>

ТАК. После обновления до версии v2 вы задаете кеширование (дополнение к jdoconfig.xml):

<property name="datanucleus.cache.level2.type" value="jcache"/>
<property name="datanucleus.cache.level2.cacheName" value="NameItWhateverYouWant"/>

На этом этапе кэширование должно происходить автоматически каждый раз, когда вы используете и используете PersistenceManager. Ура!

1 голос
/ 06 января 2010

Нет известных проблем, связанных с кэшированием L2 и GAE / J. Если у людей есть проблемы, возможно, им следует сообщить о них в Google. Установите имя кэша на то, что вы хотите. Все, что помещено в memcache, должно быть Serializable, очевидно, так как это то, что делает memcache. Да, вам нужен плагин datanucleus-cache (версия 1.x), и поместите его в то же место, что и любой другой DN-файл Однажды Google обновится, чтобы использовать DN 2.x

0 голосов
/ 08 февраля 2010

Кажется, что вместо этого есть проблемы: я попытался (с JPA), и я получил ошибку, о которой кто-то уже сообщил: http://code.google.com/p/datanucleus-appengine/issues/detail?id=163

...