2017-02-21 8 views
0

私はAzure Table Storageを使用しています。複数のテーブルにアトミックな書き込みを行いたいです。つまり、エンティティを2つのテーブルに書き込むトランザクションが必要であり、書き込みが失敗した場合、トランザクションはロールバックされます。複数のテーブルに対するアトミック書き込み

私はドキュメントを見てきましたが、トランザクションがあることがわかりましたが、それらは単一のテーブル書き込み専用であるようです。

表サービスは、同じテーブル内にある実体上のバッチトランザクションをサポートし、同じパーティション・グループ

Source

に属している複数のテーブルへの書き込みのためにこれを達成する方法はありますか? partitionKeyは同じものと仮定しますか?

答えて

0

複数のテーブル書き込みでこれを実現する方法はありますか? とすれば、partitionKeyは同じですか?

この機能は使用できません。エンティティバッチトランザクションは、単一のテーブルに対してのみ適用されます。複数の表に対しては使用できません。

私たちのアプリケーションで行ったことは、私たち自身の "Eventual Consistency"パターンで実装されています。私たちのアプリケーションでは、複数のテーブルに書き込む必要のあるデータがあります。そのデータを複数のテーブルに直接書き込むのではなく、メッセージとしてキューに書き込みます。

次に、このキューを常にポーリングしてメッセージを収集するバックグラウンドプロセスがあります。次に、このバックグラウンド・プロセスは、異なる表に書き込もうとします。すべてのテーブルに書き込めるのであれば、メッセージはキューから削除されます。

テーブルに書き込むときには、idempotencyを考慮します。つまり、データがテーブルに存在する可能性があると想定します。したがって、私たちは常にInsertの代わりにInsertOrReplace(またはInsertOrMerge)を実行します。

関連する問題