2012-07-24 7 views
0

J'ai expérimenté avec GAE (1.7.0) depuis quelques semaines maintenant et j'ai quelques problèmes avec la consistance forte.Google App Engine JDO et forte consistance

J'ai fait des recherches sur le problème, mais je ne suis toujours pas clair.

Est-il possible de dire que si vous utilisez JDO dans GAE alors la consistance sera EVENTUAL. La seule façon d'obtenir une consistance STRONG est d'utiliser JDO et d'utiliser les classes d'entités GAE avec Ancestry.

À ce stade, je ne sais pas si c'est mon code en faute ou tout simplement pas pris en charge dans l'environnement. En tout cas, je perds mon petit esprit fragile :-)

Mon fichier jdoconfig.xml

<?xml version="1.0" encoding="utf-8"?> 
<jdoconfig xmlns="http://java.sun.com/xml/ns/jdo/jdoconfig" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:noNamespaceSchemaLocation="http://java.sun.com/xml/ns/jdo/jdoconfig"> 

<persistence-manager-factory name="transactions-optional"> 
    <property name="javax.jdo.PersistenceManagerFactoryClass" 
    value="org.datanucleus.store.appengine.jdo.DatastoreJDOPersistenceManagerFactory"/> 
    <property name="javax.jdo.option.ConnectionURL" value="appengine"/> 
    <property name="javax.jdo.option.NontransactionalRead" value="true"/> 
    <property name="javax.jdo.option.NontransactionalWrite" value="true"/> 
    <property name="javax.jdo.option.RetainValues" value="true"/> 
    <property name="datanucleus.appengine.autoCreateDatastoreTxns" value="true"/> 
    <property name="datanucleus.appengine.datastoreReadConsistency" value="STRONG" /> 
</persistence-manager-factory> 

Merci

Répondre

0

Je ne pense pas que vous pouvez être assuré de cohérence par spécifiant le datastoreReadConsistency à STRONG dans le fichier jdoconfig.xml.

Le magasin de données à réplication élevée (HRD) de Google App Engine est désormais le référentiel de données par défaut pour les applications App Engine. Ce modèle est garanti pour fonctionner pour la cohérence finale seulement. Ce que vous avez mentionné est correct et aussi selon la documentation, qui stipule que "Pour obtenir des résultats de requête fortement cohérents, vous devez utiliser une requête ancêtre limitant les résultats à un seul groupe d'entités."

Voir note: https://developers.google.com/appengine/docs/java/datastore/structuring_for_strong_consistency

+0

Et en effet plug-in JDO/JPA de Google (certainement la version actuelle, pas ce que l'utilisateur utilise) fait les requêtes d'ancêtre dans certaines circonstances – DataNucleus

+0

On dirait alors je vais devoir aller enquêter davantage . Je sais objectiver, est-ce que quelqu'un a d'autres recommandations? – mmckenzie

Questions connexes