2

Azure Table Storage の複数のテーブルにまたがるトランザクションを可能にするソフトウェア パターンはありますか?

アトミックな方法で異なるテーブルから複数のエンティティを書き込み (または削除) したい...

try {
  write entity to table A
  write entity to table B
} catch {
  delete entity from table A
  delete entity from table B
}

上記のトランザクション中に、誰かが同じエンティティ (同じテーブル、パーティション キー、および行キー) を書き込んだり削除したりできないようにしたいと考えています。

Azure Storage がこれを直接サポートしていないことはわかっているので、追加のテーブルを使用して、トランザクション内のエンティティが完了するまで「ロック」するパターンを探しています。すべてのライターは、エンティティのロックを取得する必要があります。

4

1 に答える 1

1

作業中にテーブル内の行を他のユーザーが変更しないようにする唯一の方法は、BLOB リースのオーバーヘッドを追加することです。1 つのインスタンス/スレッドで BLOB リースを取得し、必要なことは何でも実行できます。次に、完了したら、ブロブを解放します。リースの取得に失敗した場合は、待機するか、後で再試行する必要があります。

ペシミスティック コンカレンシーなどの他のテーブル ベースの操作では、実際には誰かがレコードを変更するのを防ぐことはできません。

于 2013-09-27T13:41:23.740 に答える