Google App Engine JDO和强大的一致性

时间:2012-07-24 12:16:24

标签: google-app-engine jdo datanucleus

我一直在尝试使用GAE(1.7.0)几周,而且我遇到了STRONG一致性问题。

我一直在研究这个问题,但我仍然不清楚。

是否有人能够肯定地说,如果在GAE中使用JDO,那么一致性将是EVENTUAL。

实现STRONG constancy的唯一方法是不使用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>

由于

1 个答案:

答案 0 :(得分:0)

我不认为通过在jdoconfig.xml文件中将datastoreReadConsistency指定为STRONG可以确保一致性。

Google App Engine的高复制数据存储(HRD)现在是App Engine应用程序的默认数据存储库。保证此模型仅适用于最终的一致性。

您提到的内容是正确的,并且根据文档说明“要获得强一致的查询结果,您需要使用祖先查询将结果限制为单个实体组。”

请参阅注释:https://developers.google.com/appengine/docs/java/datastore/structuring_for_strong_consistency