我正在使用Azure Table Storage
,我希望对多个表进行原子写入。这意味着我想要一个将实体写入两个表的事务,如果一个写入失败,则回滚该事务。
我一直在查看文档,我发现有事务,但它们似乎只适用于单表写入。
Table服务支持同一个表中属于同一个分区组的实体的批处理事务
有多种方法可以实现多表写入吗?假设partitionKey
是相同的?
答案 0 :(得分:0)
有多种方法可以实现多表写入吗?假设 partitionKey是一样的吗?
开箱即用,此功能无法使用。实体批处理事务仅适用于单个表。您无法将其用于多个表格。
我们在我们的应用程序中所做的是实现了我们自己的" Eventual Consistency
"图案。在我们的应用程序中,我们有一些需要写入多个表的数据。我们在那里做的不是将数据直接写入多个表,而是将其作为消息写入队列中。
然后我们有一个后台进程,它不断轮询这个队列并获取消息。然后,此后台进程尝试写入不同的表。如果我们能够写入所有表格,则只会从队列中删除该消息。
当写入表格时,我们考虑idempotency
,即我们假设数据可能存在于表格中。因此,我们始终InsertOrReplace
(或InsertOrMerge
)代替Insert
。