頻繁に読み取られ、それほど頻繁に書き込まれないデータの場合は、データストアの前にあるmemcacheを使用します。読み取るときは、最初にデータがmemcacheにあるかどうかを確認し、ない場合はデータストアから読み取ってから、将来の読み取りのためにmemcacheに保存します。キーごとにエンティティを読み取るという単純なケースでは、各エンティティをそのデータストアキーごとにmemcacheに保存できます。クエリの場合、クエリパラメータでキー設定された結果セットをmemcacheに保存する価値があるかどうかを判断する必要があります。
書き込むときに、memcache値を削除すると、次回の読み取り時に再読み込みされます。削除が失敗する可能性を持って生きる必要があります。通常、memcache値に有効期限を設定して、古い値があまり長く続かないようにします。1秒あたりの読み取り数が多い場合でも、有効期限が短い場合でもパフォーマンスが大幅に向上することに注意してください。
また、URLフェッチや計算値(複雑なテンプレートテキストなど)など、他の時間のかかるデータ操作と同じようにmemcacheを使用することもできます。これらすべての場合で、memcache値が削除されていると、プライマリソースにフォールバックするため、データへのアクセスを失うことなく読み取りパフォーマンスを向上させることができます。
その他のパフォーマンスのヒント:RPCの数を減らすために、可能な場合はバッチ呼び出しを使用してください。可能な場合は非同期呼び出しを使用して、アプリが他のことをしている可能性があるときにサービス呼び出しをブロックしないようにします。AppStatsを使用して、サービスコールを視覚化し、非同期コールが役立つ可能性のある領域を見つけます。
キーごとのフェッチに関する質問について:一般に、キーのみのクエリを実行してからすぐに結果エンティティをキーでフェッチしても、それはすべてフルエンティティクエリで行われるため、役に立ちません。ただし、クエリの結果から選択的にフェッチする必要がある場合、またはある場所でキーをクエリして別の場所でフェッチすることが理にかなっている場合は、それらが可能であり、多くを失うことはありません。キーのみのクエリの用途がよくあります。(インデックス付きの)プロパティのサブセットのみをフェッチする方法については、プロジェクションクエリも参照してください。