0

2 つの「Course」オブジェクトに関連付けられる 1 つのオブジェクト「Student」がある場合、最初に「Class1_Student1」のパーティション キーを使用して学生を Azure テーブルに追加し、次に「Class2_Student1」を追加する必要があると思います。

これが PartitionKey を除いて同一の Student オブジェクトであると考えると、これは Azure の重複オブジェクトですか? それとも、これはどういうわけか(おそらくRowKeyによって)同じオブジェクトとして認識されていますか?

そのため、任意のコースの Azure テーブルからその学生を引き出して更新した場合、他のコース リクエストに対してその更新されたバージョンを取得できることを願っています。

Azure はこれをどのように処理しますか? また、必要な機能を得るために何かする必要がありますか?

4

1 に答える 1

2

Windows Azure のテーブルでは、エンティティの ID はそのパーティション キーと行キーであるため、Windows Azure では、まったく関係のない 2 つの学生が存在します。

一方を更新しても、もう一方には影響しません。

あなたが望むものを得るために、私は2つの戦略を考えることができます:

  1. ノーマライズ。リレーショナル データベースの世界では、これが標準的な方法です。各「コース」では、Student1 への参照のみを使用します。「学生」テーブルでは、各学生は 1 回だけ表示されます。
  2. 非正規化スキームを自分で維持します。Windows Azure テーブルにはクロス パーティション トランザクションがないため、これを行うのは困難です。キューを使用することをお勧めします...各変更 (「Student1 のアドレスを foo に更新する」) はキューに入れる必要があり、キュー メッセージはすべての更新が (関連するすべてのコースで) 完了した後にのみ削除されます。こうすれば、生徒の更新中にプロセスが停止した場合でも、後で作業を再開して終了することができます。
于 2012-06-24T18:29:50.240 に答える