2

是否有任何软件模式可以跨 Azure 表存储中的多个表进行事务处理?

我想以原子方式从不同的表中写入(或删除)多个实体,例如...

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

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

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

4

1 回答 1

1

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

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

于 2013-09-27T13:41:23.740 回答