2

私は Google App Engine を使用してアプリケーションを開発していますが、次のシナリオに出くわしました。これはおそらく「MVP -lite」と表現できます。

多対多の関係をモデル化する場合、使用する標準プロパティは ListPropertyです。ほとんどの場合、リストは別のモデルの外部キーで構成されています。

ただし、ほとんどの実用的なアプリケーションでは、通常、キーのリスト (オブジェクトの名前) を取得するときに、少なくとも 1 つ以上の詳細が必要になるため、そのオブジェクトへの適切なハイパーリンクを作成できます。これには、キーのリストをループし、各オブジェクトを取得してその「name」プロパティを使用する必要があります。

これは最善のアプローチですか?「読み込みは安い」ということで、今のところプロパティを 1 つしか使っていなくても、各オブジェクトを取得しても問題ないでしょうか? または、追加の取得を避けるために、 tipfy の JsonProperty のような特別なプロパティを使用して(キー、名前)「タプル」を保存する必要がありますか?

4

2 に答える 2

1

1 対多 (場合によっては多対多) の関係をモデル化する場合、使用する標準プロパティは ListProperty です。

いいえ、1 対多の関係をモデル化する場合、使用する標準プロパティは「多」側の ReferenceProperty です。次に、クエリを使用して、一致するすべてのエンティティを取得できます。

元の質問に戻ります。さらにデータが必要な場合は、非正規化してください。キーのリストと一緒にタイトルのリストを保存します。

于 2010-11-22T22:29:45.337 に答える
1

データストアの読み取りはデータストアの書き込みよりも比較的安価ですが、リクエスト ハンドラーにかなりの時間を追加する可能性があります。オブジェクトの名前とその外部キーを含めることは、非正規化の有効な使い方のように思えます (たとえば、2 つのリスト プロパティを使用してタプルをシミュレートします。一方には外部キーが含まれ、もう一方には対応する名前が含まれます)。

この非正規化に反対する場合は、外部キーが参照するエンティティを (1 つずつ取得するのではなく) バッチ フェッチして、少なくともデータストアへの往復回数を最小限に抑えることをお勧めします。

于 2010-11-22T14:09:37.817 に答える