2010-01-06 10 views
3

Est-il possible (et cela a-t-il un sens) d'utiliser le cache JDO niveau 2 pour le magasin de données Google App Engine? Tout d'abord, pourquoi n'y a-t-il pas de documentation à ce sujet sur les pages de Google? Y a-t-il des problèmes avec ça? Avons-nous besoin d'établir des limites pour protéger notre quota memcache?Cache Datanucleus/JDO niveau 2 sur Google App Engine

Selon DataNucleus on Stackoverflow, vous pouvez définir les propriétés de persistance suivantes:

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

Est-ce tout? Pouvons-nous choisir un nom de cache?

Othersources sur le rapport Internet en utilisant différents paramètres. En outre, il semble que nous devons télécharger le DataNucleus Cache support plugin. Quelle version serait appropriée? Et le plaçons-nous simplement dans WEB-INF/lib ou faut-il plus de configuration pour l'activer?

+0

Avez-vous eu n'importe où avec cela? J'essaie de décider entre utiliser le cache de niveau 2 de JDO et l'implémentation JCache que les docs de google mentionnent, et il semble y avoir une pénurie de docs/discussion sur ce sujet. – tempy

+1

Non, je ne suis arrivé nulle part. Je pense à utiliser l'API de bas niveau de données (ou une autre bibliothèque en plus). JDO devient trop une boîte noire pour moi. – Thilo

+1

Nous semblons appartenir à un grand club mécontent =/ – tempy

Répondre

1

Aucun problème connu lié à la mise en cache L2 et au GAE/J. Si les gens ont des problèmes alors peut-être qu'ils devraient les signaler à Google. Définissez le nom du cache à ce que vous souhaitez. Tout ce qui est mis dans memcache doit être sérialisable, évidemment, puisque c'est ce que fait memcache. Oui, vous avez besoin du plugin datanucleus-cache (ver 1.x), et mettez-le au même endroit que tous les autres jarres DN. Un jour Google mettra à jour à utiliser DN 2.x

+0

Pourquoi la classe Entity doivent être sérialisables? DataNucleus peut déjà le transformer en un datastore.Entity de bas niveau, qui est déjà Serializable. – Thilo

3

Avant de pouvoir comprendre cela, vous devez répondre à une question:

Quelle version de DataNucleus utilisez-vous?

Tout sur ce post a à voir avec l'ancienne version du plugin - v1. Récemment, Google Plugin for Eclipse a pris en charge la version 2 du plug-in DataNucleus pour AppEngine (qui est essentiellement le canal entre AppEngine et DataNucleus Core).

Je vous recommande de mettre à jour v2 du plugin Datanucleus pour AppEngine - si vous utilisez Eclipse, c'est facile - il y a une interface utilisateur qui vous permet de sélectionner v1 ou v2. Allez simplement dans les propriétés de votre projet et trouvez les paramètres d'App Engine et cherchez "Datanucleus JDO/JPA version". De plus, vous devez apporter une modification à votre jdo-config.xml. Plus précisément, vous devez juste changer une propriété:

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

SO - Une fois que vous avez mis à jour à v2, voici comment la mise en cache de spécifier (un ajout à jdoconfig.xml):

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

À ce stade, la mise en cache devrait se faire automatiquement chaque fois que vous mettez et utilisez un PersistenceManager. Hourra!