我对使用 Azure 表服务时的最佳实践有疑问。
想象一个名为“Customers”的表。想象一下其他几个表,分成大量的分区。在这些表中,有 CustomerName 字段。
如果客户更改了姓名...然后我会更新客户表中的相应记录。与关系数据库相反,另一个表中的所有其他列(显然)都没有更新。
确保所有其他表也更新的最佳方法是什么?对我来说,查询 CustomerName 上的所有表并随后更新所有这些记录似乎效率极低。
最佳答案
如果您在表中多次存储 CustomerName,则没有什么神奇之处,您将需要找到这些记录并更新其中的 CustomerName 字段。
由于这是一个相当低效的操作,因此您可以(并且应该)执行此“非事务”操作。这意味着,当您执行初始“名称更改”操作时,将一个项目推送到队列中并让工作人员执行“名称更改”。由于没有网络响应/用户焦急地等待工作人员完成,因此效率低得离谱这一事实是无关紧要的。
这是在分布式系统中实现最终一致性的主要设计模式。
关于Azure 存储 - 处理跨分区更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33201239/