2011-05-26 4 views
3

J'essaie d'optimiser le code qui lit les objets du magasin de données de Google. En utilisant Java et JDO, voici mon code:Réduire datastore_v3.Next appels dans Google App Engine lors de la récupération d'objets (java), possible?

List<Article> articles = (List<Article>) query.execute(articleId); 
List<Article> detatchedArticles = (List<Article>) pm.detachCopyAll(articles); 

Quand je regarde les journaux de Appstats, il en résulte:

datastore_v3.RunQuery 11ms (195ms api) 
datastore_v3.Next 15ms (183ms api) 
datastore_v3.Next 11ms (183ms api) 
datastore_v3.Next 4ms (183ms api) 

Alors, ma question est; Puis-je modifier en quelque sorte (paramètres JDO, autres paramètres) combien d'objets sont extraits du magasin de données par datastore_v2.Next? J'essaie de gagner quelques megacycles API. Ou, beaucoup, si ce que je veux est possible.

Répondre

1

Si vous ne le faites pas déjà, je suggère d'utiliser memcache. Selon vos entités, vous pouvez simplement l'activer dans le fichier jdoconfig.xml. Voici un court guide: http://ukena.de/content/enabling-jdo-caching-google-app-engine. Notez que si vous utilisez des entités incorporées, vous devrez gérer manuellement memcache en raison d'un bug dans l'implémentation JDO de GAE.

+0

J'ai commencé à écrire une propre implémentation de memcache quand je suis arrivé au bureau aujourd'hui, ainsi mes entités ont été préparées pour la sérialisation quand j'ai lu votre réponse. L'activation de memcache comme vous l'avez décrit a eu un impact énorme et l'application fonctionne correctement. Il y a plus de RPC maintenant mais chaque memcache.Get (qui fait le travail au lieu de datastore_v3.Next) n'a besoin que de 2ms. Peut-être qu'il y a de la place pour twister lateron si j'en ai besoin. Merci beaucoup, cela économise de l'argent! – Wrench

+0

Super! Heureux d'avoir pu aider. :) – Stefan

+0

Une question cependant, savez-vous si la version 1.1.1 du cache datanucleus est la meilleure/dernière à utiliser avec GAE? Un peu incertain de leurs versions et de ce que GAE utilise. – Wrench