2017-03-18 11 views
1

私のGoogle App Engineアプリでは、データストアに大きなオフセット(2000以上)を使用することがよくあります。私はこれがベストプラクティスではないことを知っていますが、これを行うための最も費用効果の高い方法を知りたいと思います。App Engine Datastore価格:大オフセットで読み込み

keys_only機能を使用すると、この費用対効果を高めることはできますか?

たとえば、オフセットが2000、制限が10であるkeys_onlyクエリを作成し、そのキーで10個のアイテムをプルすると、11個のデータストアの読み込みが正しく行われるはずです。 keys_onlyを使用しなかった場合、2011年の読み込み料金が請求されます。

答えて

1

実際には、keys_onlyクエリが役に立ちます。計算が正しいようです。 Pricing and Quotaから:

Small Operations Unlimited Free 

小さな操作はCloud DatastoreのIDまたは キーのみのクエリを割り当てるためのコールがあります。

通常、コストだけでなく、オフセットの代わりにCursorsに切り替えることをお勧めします。 Offsets versus cursorsから:

クラウドデータストアは、整数オフセットをサポートしていますが、あなたはそれらを使用して を避ける必要があります。代わりに、カーソルを使用します。オフセットを使用すると、 はスキップされたエンティティをアプリケーションに戻すことはできませんが、これらのエンティティ は依然として内部的に取得されます。スキップされたエンティティはクエリの待ち時間に影響します。アプリケーションには、検索するために必要な操作 の読み取りが請求されます。 のオフセットの代わりにカーソルを使用すると、これらのコストをすべて避けることができます。

+0

私はこの文は 'keys_only = true'をするとき真であるかどうかわからないんだけど、「スキップされたエンティティは、クエリの待機時間に影響行うと、アプリケーションがそれらを取得するために必要な読み取り操作のために請求されます。」 – speedplane

+0

'keys_only = True'がコストを下げることが確認できます。私はちょうどそれに多くの私の質問を切り替え、私の法案は大幅に下がった。 – speedplane

関連する問題