Google AppEngine の高レプリケーション データストアに関する現在の理解は次のとおりです。
個々のエンティティのgetとputは常に強い一貫性があります。つまり、このエントリのputが完了すると、 getは完了した putより前のバージョンを返すことは。または、より正確には、いずれかのgetが新しいバージョンを返すとすぐに、それ以降getが古いバージョンを返すことはありません。
複数のエンティティのgetとputは、それらが同じ先祖グループに属し、 transaction で実行される場合、強い一貫性があります。 getを使用したトランザクションの場合、 getの時点でputトランザクションが完了している、 getは両方のエントリの古いバージョンまたは両方のエントリの新しいバージョンを返しますが、古い値を返すことはありません。 1 つのエンティティの新しい値と、もう 1 つのエンティティの新しい値。
先祖フィルターを使用したクエリは、強力または最終的に一貫性があるように選択できます。強力に一貫性のあるクエリは完了するまでに時間がかかりますが、この祖先の同じトランザクションで更新されたすべてのエンティティの「同じ」バージョン (古いまたは新しい) を常に返します。グループであり、古いバージョンと新しいバージョンではありません。
祖先にまたがるクエリは、常に結果整合性があります。つまり、ある結果エンティティの古いバージョンと別の新しいバージョンを返す場合があります。
私はこれを正しく理解しましたか?これは実際にどこかに文書化されていますか?(クエリの一貫性に関するドキュメントはここ(最初と2番目の「メモ」の間)とここでしか見つかりませんでしたが、 getsとputsについては触れていません...)