原子写入多个表

时间:2017-02-21 05:48:59

标签: c# azure azure-table-storage

我正在使用Azure Table Storage,我希望对多个表进行原子写入。这意味着我想要一个将实体写入两个表的事务,如果一个写入失败,则回滚该事务。

我一直在查看文档,我发现有事务,但它们似乎只适用于单表写入。

  

Table服务支持同一个表中属于同一个分区组的实体的批处理事务

Source

有多种方法可以实现多表写入吗?假设partitionKey是相同的?

1 个答案:

答案 0 :(得分:0)

  

有多种方法可以实现多表写入吗?假设   partitionKey是一样的吗?

开箱即用,此功能无法使用。实体批处理事务仅适用于单个表。您无法将其用于多个表格。

我们在我们的应用程序中所做的是实现了我们自己的" Eventual Consistency"图案。在我们的应用程序中,我们有一些需要写入多个表的数据。我们在那里做的不是将数据直接写入多个表,而是将其作为消息写入队列中。

然后我们有一个后台进程,它不断轮询这个队列并获取消息。然后,此后台进程尝试写入不同的表。如果我们能够写入所有表格,则只会从队列中删除该消息。

当写入表格时,我们考虑idempotency,即我们假设数据可能存在于表格中。因此,我们始终InsertOrReplace(或InsertOrMerge)代替Insert