私は、GAEでエンティティ "親"を使用するときを理解しようとしています。これは照会(親== someObjのすべてのFooオブジェクトを取得)するためだけに役立つのですか、または親がReferencePropertyのように親エンティティにアクセスできますか?AppEngine - 親関係を使用するタイミング
親対参照プロパティを使用する方が良いのはいつですか?
私は、GAEでエンティティ "親"を使用するときを理解しようとしています。これは照会(親== someObjのすべてのFooオブジェクトを取得)するためだけに役立つのですか、または親がReferencePropertyのように親エンティティにアクセスできますか?AppEngine - 親関係を使用するタイミング
親対参照プロパティを使用する方が良いのはいつですか?
エンティティグループ(共通の親フォームを持つすべてのエンティティ)を使用する必要があるのは、トランザクションの安全性だけです。トランザクション内の複数のレコードを更新する必要がある場合は、すべて同じレコードを持つ必要があります。すべてのエンティティを単一の親の下に置くだけではない理由は、エンティティグループへの更新が約1秒に制限されているためです。詳細は、this sectionのドキュメントを参照してください。
エンティティはthis.parent
で親にアクセスできますが、特別なことは何もありません。それはdb.get(this.key().parent())
の構文砂糖です。
私が読んだことは、一つの理由から親エンティティに対するものであり、そのツリー内の何かを変更するとすべてがロックされます。
親エンティティで作業を始めたとき、ハイブの頭やその親エントリの周囲にローカライズされたデータベースのように扱いたいと思っていましたが、明らかにそうではありません。 ReferencePropertyを使用するのは、親にアクセスできるようにしてロックを続けることができないためです。
もちろん、あなたはその種の関係のロックを望むなら、あなたはそれを望むかもしれませんが、あなたは私がそれを測定するのに十分ではありませんでした。
また、HRDとの強い一貫性を保つために、そうですか? –
@Drewはい、それはトランザクション性の拡張です。 –