0

1) データを保存し、2) データを処理する 2 つのサーバー側 HTTP エンドポイントを実装しました。メソッド 1) は、 App Engine タスクを介してメソッド 2) を呼び出します。これは、クライアントに待機させたくない時間のかかるタスクであるためです。このプロセスを以下のシーケンス図に示します。

ときどき、処理タスク (下のシーケンス図ではprocessSomethingthrow WtfException()という名前) が処理しようとしたときにデータを見つけられないことがあります (下の黄色で示されています)。これは、ここで説明されている結果整合性モデルで説明できますか?

ドキュメントには、読み取りには強力な一貫性があります、書き込みには最終的な一貫性があると書かれています。この事件に関連して、それが正確に何を意味するのかはわかりません。説明をいただければ幸いです。

ここに画像の説明を入力

編集:ここでブール値の質問をしていることに気づきましたが、最終的な整合性が一般的であり、具体的にはGoogleデータストアに関するドキュメントでバックアップされた回答を探していると思います

編集2:リクエストにより、実際の読み取り/書き込み操作の詳細は次のとおりです。

書き込み操作:

entityManager.persist(hand); 
entityManager.close() 

データの永続化に JPA を使用しています。オブジェクト「手」はクライアントから受信され、以前にデータベースに保存されていないため、新しいキーIdが割り当てられます。

読み取り操作:

SELECT p FROM Hand p WHERE p.GameId = :gid AND p.RoundNo = :rno

主キーGameIdでもありません。RoundNoGameId は「外部キー」ですが、Datastore は設計上それを認識していません。

4

1 に答える 1

2

実際のコードを示して、エンティティを保存する方法と取得する方法を示すと役立ちますが、それがid実際のデータストア ID であり、キーの一部であり、ID を使用しており、他のプロパティではないことloadを前提としています。結果整合性は問題ではありません。getquery

(これに関するドキュメントは、リンクしたページのさらに下にあります。)

于 2013-04-18T20:16:55.857 に答える