私はどこかでGoogle App Engineがメモリに非常に頻繁なクエリの結果を自動的にキャッシュして、より速く検索することを覚えているようです。アプリエンジンは頻繁なクエリを自動的にキャッシュしますか?
これは間違いありませんか?
もしそうなら、これらのクエリでデータストアの読み込みにはまだ料金がかかりますか?
私はどこかでGoogle App Engineがメモリに非常に頻繁なクエリの結果を自動的にキャッシュして、より速く検索することを覚えているようです。アプリエンジンは頻繁なクエリを自動的にキャッシュしますか?
これは間違いありませんか?
もしそうなら、これらのクエリでデータストアの読み込みにはまだ料金がかかりますか?
あなたはPythonと新しいNDB APIを使用している場合、それは実体の自動キャッシュを持っているので、あなたがキーによってエンティティを取得した場合、それがキャッシュされます:
コメントが言うように、クエリはキャッシュされません。 キャッシュされたリクエストはデータストアにヒットしないため、そこにあるデータを保存します。
データストアにアクセスするためにJavaやその他のAPIを使用している場合は、キャッシュしません。
編集済みキャッシュされたクエリに関する間違いを修正しました。
アプリエンジンは何もキャッシュしないと思います。内部的には、それは分割されたもののいくつかをキャッシュしているかもしれませんが、私はあなたがそれに頼るべきではないと思います。
すべてのクエリから読み取ったすべてのエンティティに対して、通常の読み取り操作の数が請求されると思います。
いいえ、それはありません。ただし、データストアへのアクセスに使用するフレームワークによっては、memcacheが使用されます。あなたはJavaやPythonで開発していますか? Java側では、Objectifyは自動的にGETをキャッシュしますが、Queriesはキャッシュしません。 PythonとJavaの両方で、取得とクエリの間のパフォーマンスと呼び出し可能性には大きな違いがあることに注意してください。
memcacheヒットのデータストアの読み込みには料金がかかりません。
実際にはNDBはクエリをキャッシュしませんが、クエリはキャッシュ内の値をルックアップしませんが、クエリ結果はコンテキスト内のキャッシュに書き戻されます(キャッシュポリシーではMemcacheには決して書き込まれません)。 " –
ニックは何を言っていますか? Rick Mangiの答えは正しい。 keys_onlyクエリを使用して結果をget_multi()に渡すことによって、NDBのキャッシュからいくらかの利点を得ることができます。 http://code.google.com/p/appengine-ndb-experiment/issues/detail?id=118こちらの説明を参照してください。 –