0

我已经用 GAE (1.7.0) 试验了几个星期,但我在 STRONG 一致性方面遇到了一些问题。

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

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

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

谢谢

4

1 回答 1

0

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

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

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

见注:https ://developers.google.com/appengine/docs/java/datastore/structuring_for_strong_consistency

于 2012-07-24T16:27:30.667 回答