跨表分区的事务性插入

时间:2013-11-08 07:56:30

标签: c# azure azure-storage azure-table-storage

我将实体存储在两个Azure存储表中。两个表中的数据相同,只是RowKeyPartitionKey不同(这是出于查询目的)。

问题

当插入这些表时,我需要操作是事务性的 - 只有两个插入成功时才能提交数据。

CloudTable.ExecuteBatch(..)仅在实体属于同一分区时才有效。

没有别的办法吗?

1 个答案:

答案 0 :(得分:2)

简短回答:

不幸的是没有。实体批处理事务一次仅支持1个表和some other restrictions

答案很长:

我们也遇到了类似的问题,我们不得不在多个表中插入数据。我们做的一件事是我们试图实现某种eventual consistency。我们不是将数据直接写入表中,而是将这些数据写入队列,并具有后台工作者角色处理数据。一旦数据写入队列,我们​​就会假设数据最终会被持久化(还涉及一个缓存引擎,这里也会使用最新数据进行更新,以便应用程序可以获取最新数据)。后台工作者角色继续重试插入(使用InsertOrReplace语义而不仅仅是Insert语义),一旦写完所有数据,我们只需从队列中删除该消息。