2012-03-07 15 views
0

私は、User(id、name、groupId)とGroup(id、title)という2つのエンティティを持っています。私はグリッド内のすべてのユーザーを表示したい:| id | name | group title |。グループタイトルを持つユーザーを獲得する最善の方法は何ですか? (低レベルのAPIを使用し、非正規化を使用しないで)データストアからデータを読み取る

答えて

0

モデル定義を非正規化したり変更したりすることなく、実際にはすべてのユーザーを取得し、groupIdsのセットを作成し、クエリを使用してグループエンティティを取得します。残念ながら、このアプローチはデータストアをうまく​​活用しないため、システムの拡張はあまりうまくいかないでしょう。

パフォーマンスとスケーラビリティを向上させるためにできることの1つは、グループエンティティの実際のデータストアIDを格納してから、別のクエリとしてではなくすべてのエンティティを一度に取得することです。Group.get_by_id()これにより、get_by_id()get_by_key_name()など)がエンティティ値を照会するよりも高速で、すべてのIDを1回の呼び出しで要求することができ、AppEngineで処理する必要がある作業量を大幅に削減できます。

関連する問題