10


5

私が理解していることから、db.Modelの親属性(通常はコンストラクタ呼び出しで定義/渡される)を使用すると、データモデルで階層を定義できます。 その結果、エンティティグループのサイズが大きくなります。 しかし、なぜそれをしたいのか、私にはよくわかりません。 これは厳密にACID準拠ですか? それぞれが最も適している、またはより適切であるシナリオを見たいと思います。

2 Answer


15


いくつかの違いがあります。

  • 同じ先祖を持つすべてのエンティティは、同じエンティティグループに属します。 トランザクションは単一のエンティティグループ内のエンティティにのみ影響を与えます。

  • 単一のエンティティグループへの書き込みはすべてシリアル化されるため、スループットが制限されます。

  • 親エンティティは作成時に設定され、固定されます。 参照はいつでも変更できます。

  • 参照プロパティでは直接関係のみを照会できますが、親プロパティでは.ancestor()フィルタを使用して特定の先祖から派生したすべての要素を検索できます。

  • 各エンティティは単一の親のみを持ちますが、複数の参照プロパティを持つことができます。


8


エンティティグループ(parent属性で定義)の唯一の目的は、異なるエンティティ間のトランザクションを可能にすることです。 トランザクションが不要な場合は、エンティティグループの関係を使用しないでください。

ドキュメントの Keys and Entity Groupsセクションをもう一度読むことをお勧めします。アイデアを把握するには何度か読む必要がありました。

また、トランザクションやエンティティグループについて説明しているものもあります。