Azure 存储 - 处理跨分区更新

Azure Storage - Handle cross partition updates

我对使用 Azure Table 服务时的最佳实践有疑问。

想象一个叫做 Customers 的 table。想象一下其他几个 table,分成大量的分区。在这些 table 中,有 CustomerName 字段。

如果客户更改了他的名字...那么我更新客户中的相应记录table。与关系数据库相比,其他 table 中的所有其他列(显然)未更新。

确保所有其他 table 也得到更新的最佳方法是什么?查询 CustomerName 上的所有 table 并随后更新所有这些记录对我来说似乎非常低效。

如果您在多个表中多次存储 CustomerName,这没什么神奇的,您将需要找到这些记录并更新它们的 CustomerName 字段。

由于这是一个非常低效的操作,您可以(并且应该)这样做 "off-transaction"。意思是,当您执行初始 "Name Change" 操作时,将一个项目推入队列并让工作人员执行 "Name Change"。由于没有网络响应/用户焦急地等待工作人员完成,因此效率低得离谱是无关紧要的。

这是在分布式系统中实现最终一致性的主要设计模式。