Google App Engine JDO и строгая согласованность

Я экспериментировал с GAE (1.7.0) уже пару недель, и у меня возникли некоторые проблемы с СИЛЬНОЙ консистенцией.

Я изучал этот вопрос, но мне все еще неясно.

Могут ли некоторые определенно сказать, что при использовании JDO в GAE согласованность будет СЛУЧАЙНОЙ.

Единственный способ добиться СИЛЬНОЙ согласованности — не использовать JDO и использовать классы сущностей GAE с Ancestry.

На данном этапе я не знаю, виноват ли мой код или он просто не поддерживается в среде. В любом случае я теряю свой хрупкий разум :-)

Мой файл 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>

Thanks


person mmckenzie    schedule 24.07.2012    source источник


Ответы (1)


Я не думаю, что вы можете быть уверены в согласованности, указав для параметра datastoreReadConsistency значение STRONG в файле jdoconfig.xml.

Хранилище данных высокой репликации Google App Engine (HRD) теперь является хранилищем данных по умолчанию для приложений App Engine. Эта модель гарантированно работает только для окончательной согласованности.

То, что вы упомянули, правильно, а также согласно документации, в которой говорится, что «Чтобы получить строго согласованные результаты запроса, вам необходимо использовать запрос предка, ограничивающий результаты одной группой объектов».

См. примечание : https://developers.google.com/appengine/docs/java/datastore/structuring_for_strong_consistency

person Romin    schedule 24.07.2012
comment
И действительно, плагин Google JDO/JPA (конечно, текущая версия, а не та, которую использует пользователь) при некоторых обстоятельствах выполняет запросы предков. - person DataNucleus; 24.07.2012
comment
Похоже, тогда мне нужно будет пойти и исследовать это дальше. Я знаю об объективизации, есть ли у кого-нибудь другие рекомендации? - person mmckenzie; 24.07.2012