跨多个表的Azure表存储的事务模式?

时间:2013-09-26 02:00:17

标签: azure transactions azure-table-storage

是否有任何软件模式可以在Azure表存储中的多个表中启用事务?

我想以原子方式编写(或删除)来自不同表的几个实体,如...

try {
  write entity to table A
  write entity to table B
} catch {
  delete entity from table A
  delete entity from table B
}

在上述事务中,我还想阻止任何人编写/删除相同的实体(相同的表,分区键和行键)。

我知道Azure存储不直接支持这一点所以我正在寻找一种模式,可能使用额外的表来“锁定”事务中的实体直到完成。所有作家都必须获得对实体的锁定。

1 个答案:

答案 0 :(得分:1)

确保在处理表时没有其他人修改表中的行的唯一方法是添加blob租用的开销。您可以让一个实例/线程获取blob租约并执行它需要的任何操作。然后,完成后,释放blob。如果未能获得租约,则必须等待或稍后再试。

其他基于表的操作,如悲观并发,实际上不会阻止某人修改记录。