2

Google AppEngine の高レプリケーション データストアに関する現在の理解は次のとおりです。

  • 個々のエンティティのgetputは常に強い一貫性があります。つまり、このエントリのputが完了すると、 getは完了した putより前のバージョンを返すことは。または、より正確には、いずれかのgetが新しいバージョンを返すとすぐに、それ以降getが古いバージョンを返すことはありません。

  • 複数のエンティティのgetput、それらが同じ先祖グループに属し、 transaction で実行される場合、強い一貫性があります。 getを使用したトランザクションの場合、 getの時点でputトランザクションが完了している、 getは両方のエントリの古いバージョンまたは両方のエントリの新しいバージョンを返しますが、古い値を返すことはありません。 1 つのエンティティの新しい値と、もう 1 つのエンティティの新しい値。

  • 先祖フィルターを使用したクエリは、強力または最終的に一貫性があるように選択できます。強力に一貫性のあるクエリは完了するまでに時間がかかりますが、この祖先の同じトランザクションで更新されたすべてのエンティティの「同じ」バージョン (古いまたは新しい) を常に返します。グループであり、古いバージョンと新しいバージョンではありません。

  • 祖先にまたがるクエリは、常に結果整合性があります。つまり、ある結果エンティティの古いバージョンと別の新しいバージョンを返す場合があります。

私はこれを正しく理解しましたか?これは実際にどこかに文書化されていますか?(クエリの一貫性に関するドキュメントはここ(最初と2番目の「メモ」の間)とここでしか見つかりませんでしたが、 getsputsについては触れていません...)

4

1 に答える 1

1

はい、あなたは正しいです。彼らはそれを少し違う言葉で言っているだけです:

https://developers.google.com/appengine/docs/java/datastore/

最初は 5 つのポイント フォーム フィーチャがあります。最後の2つは、「取得」ではなく「読み取り」を参照していることを除いて、質問を説明しています。

これはおそらく混乱を招きますが、「読み取り」または「取得」を意味する場合、実際にはキーまたは ID によってエンティティを直接取得することを意味します。キーまたは ID 以外の属性を指定して Python の「get」関数を呼び出すと、実際にはクエリが発行されます。これは最終的に一貫性があります (先祖クエリでない限り)。

于 2013-08-17T03:19:59.990 に答える