是否有任何软件模式可以在Azure表存储中的多个表中启用事务?
我想以原子方式编写(或删除)来自不同表的几个实体,如...
try {
write entity to table A
write entity to table B
} catch {
delete entity from table A
delete entity from table B
}
在上述事务中,我还想阻止任何人编写/删除相同的实体(相同的表,分区键和行键)。
我知道Azure存储不直接支持这一点所以我正在寻找一种模式,可能使用额外的表来“锁定”事务中的实体直到完成。所有作家都必须获得对实体的锁定。
答案 0 :(得分:1)
确保在处理表时没有其他人修改表中的行的唯一方法是添加blob租用的开销。您可以让一个实例/线程获取blob租约并执行它需要的任何操作。然后,完成后,释放blob。如果未能获得租约,则必须等待或稍后再试。
其他基于表的操作,如悲观并发,实际上不会阻止某人修改记录。