アプリケーションをM/SデータストアからHRDに移行する際、避けるべき落とし穴があります。私は、「同じ種類のエンティティIDは必ずしも一意ではない」というような特定の分野について質問をしました。アプリケーションをGAE M/SデータストアからHRDに移動することの影響
これをさらに説明すると、例があります。
- 使用 com.google.appengine.api.datastore.Key
- 住所実体参照の顧客として顧客キーを使用して、私は3つのエンティティ顧客を持っている連絡先、
- 下記の連絡先エンティティ参照顧客のアドレスを言うことができます限り、顧客キー
3クラスは次のとおりです。
public class Customer {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private String name;
}
public class Contact {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private String name;
@Persistent
private Key customerId;
}
public class Address {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key id;
@Persistent
private String address;
@Persistent
private Long customerId;
}
すべてのエンティティがルートエンティティです。
連絡先と住所のエンティティでのcustomerIdに移行すると、彼らはまだ動作しますか、または移行する前に特別なことをする必要がありますか?
ありがとうございます!
感謝のルートバージョンに基づいて可能性があり詳細な説明は、すべてのエンティティがルートエンティティであるため、重複したキーを心配することなく、pm.newQuery(、 "where customerId = ")をHRDと引き続き使用できます。その裏返しは最終的な一貫性になります。 HRD全体にデータが表示されるには2〜5秒かかりますか? –
Paul
id(したがってキー)でエンティティを直接取得することは常に強固に行われ、最終的な一貫性は複数のエンティティグループにわたってクエリを実行しているときにのみ表示されます。 –