2016-05-22 15 views
3

Microsoft Azureストレージの並行性、特にテーブルストレージについては、このオンライン記事を読んでいます。 https://azure.microsoft.com/en-us/blog/managing-concurrency-in-microsoft-azure-storage-2/Azureテーブルストレージ - 並行性の管理

テーブルストレージはオプティミスティック並行性戦略にデフォルト設定されていると説明しています。戦略を実施するためには、Eタグの使用が重要です。たとえば、Replace操作では、E-TagのIf-Matchが必要であり、常にサービス応答でE-Tagが返されます。だから私は置換操作を使用する場合、私はエンティティがEタグ値を持っていることを確認する必要があります。これは設計に影響します。たとえば、アプリケーション・ドメイン・エンティティをデータ・レコード・エンティティから抽象化するときは、E-Tagのコンセプトをアプリケーション・ワイドな相関IDとして導入しない限り、レイヤー間のマッピングがEタグ・コンテキストを失うため注意が必要です私のドメインエンティティに一般的です。それは問題ではありません。問題は私のInsertOrReplace操作の混乱です。 If-Matchは必要ありません。操作でReplaceを実行した場合、これはどのように可能ですか?また、これは並行性管理にどのように影響しますか?これは、InsertOrReplace操作に固有のことを意味しますか?TableServiceは、最後のライターが戦略を勝ち取るようにデフォルト設定しますか?

答えて

1

はい、Azure Storage Table Serviceは、InsertOrReplaceオペレーションの最後のライターの勝利戦略に従ってリクエストを受け付けます。

エンティティの挿入または置換操作では、If-Matchヘッダーは使用されず、2011-08-18以降のバージョンを使用して呼び出す必要があります。これらの属性は、この操作とUpdate Entity操作を区別します。 エンティティの置換にエンティティの挿入または置換操作を使用すると、新しいエンティティでエンティティを定義しない場合、そのエンティティのプロパティが削除されます。ヌル値のプロパティも削除されます。

Replaceの作者の作者の作戦を最後にしたい場合は、ETagを "*"に設定します。

無条件の更新操作を強制するには、If-Matchヘッダーの値を要求のワイルドカード文字(*)に設定します。この値を操作に渡すと、デフォルトのオプティミスティック同時実行がオーバーライドされ、ETag値の不一致は無視されます。

関連する問題