2010-01-06 4 views
3

Возможно ли использовать (и имеет смысл) использовать JDO Level 2 Cache для хранилища данных Google App Engine?Datanucleus/JDO Уровень 2 Кэш в Google App Engine

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

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

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

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

Othersources в Интернете с использованием различных настроек.

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

+0

У вас есть что-то с этим? Я пытаюсь решить между использованием кеша уровня 2 JDO и реализацией JCache, о которых упоминаются в документах google, и, похоже, недостаток документов или обсуждение по этой теме. – tempy

+1

Нет. Я никуда не денусь. Я думаю об использовании низкоуровневого API хранилища данных (или альтернативной библиотеки поверх этого). JDO получает слишком много черного ящика для меня. – Thilo

+1

Мы, кажется, принадлежим к большому, несчастному клубу =/ – tempy

ответ

1

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

+0

Почему класс Entity должны быть Serializable? DataNucleus уже может превратить его в низкоуровневый datastore.Entity, который уже является Serializable. – Thilo

3

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

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

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

Я бы рекомендовал обновить до 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"/> 

SO - После того, как вы перешли v2, это то, как вы определяете кэширование (дополнение к jdoconfig.xml):

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

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