0

GAE Datastore の実験で奇妙なことがわかりました。GAE SDK 1.7.5 を使用しています。そして、私の発見が正しいかどうかはわかりません。

基本的に、データストアにエンティティを配置してカウントを実行しても、データストアの get が実行されるまでは正しい値が返されないことがわかりました。

さらに深く掘り下げたい場合は、以前の SO の質問の実際のコードを次に示します。

高レプリケーション環境の永続化戦略 (Google App Engine)

また、同様のライブラリでこれを試しました: https://github.com/koher/Koherent-App-Engine-Library-for-Java

そして、私は同じ発見を経験しています。私が見ているこの問題について誰かが私を明確にするのを助けることができますか?

4

2 に答える 2

0

HRD の結果整合性プロパティに遭遇しました。

Count はインデックスを使用して結果を取得します。新しいエンティティが保存された後、インデックスは非同期で構築されます。その結果、getafterputは常に結果を返しますが (強整合性)、queryafterputはすぐに結果を返すとは限りません (結果整合性)。

ドキュメントはこの件に関して少しあいまいですが、「適用」フェーズを強制したgetput、おそらくインデックスも適用される可能性があると述べています。データストアの寿命のセクション「戻り値」のポイント1.を参照してください。

したがってput、 and thenqueryは期待される結果を保証するものではありませんがput、 , getandqueryは (少なくとも私がドキュメントを読む方法です)。それはあなたの発見を説明するでしょう。

于 2013-04-10T18:53:35.093 に答える