gpt4 book ai didi

azure - SQL Azure 和 Azure 表存储之间的事务,即回滚和提交

转载 作者:行者123 更新时间:2023-12-02 07:14:40 26 4
gpt4 key购买 nike

在我当前的项目中,我们正在开发一个分布式云应用程序,该应用程序将存储实体的状态和相关事件。当从队列收到消息时,我们会更新 SQL Azure 中实体的状态,并将与该更新关联的事件保存在表存储中。

它看起来像这样:

启动工作单元更新 SQL Azure 中的实体将事件保存到表存储提交交易结束工作单元我们在这里遇到的问题是我们无法在一个事务内提交 SQL Azure 和表存储中的更改。因此,当 SQL Azure 中实体的保存失败时,我们希望回滚表存储中事件的保存。帮助很大。我需要知道可用于此方法的任何其他机制。

最佳答案

Windows Azure 表存储不支持分布式事务。因此,您在表存储中执行的操作将无法自动与您在 SQL Azure 中执行的操作协调。然而,您可以自己进行这种协调。

在 SQL Azure 中回滚事务非常简单。您可以控制客户端上的事务,例如使用 TransactionContext。然后您可以根据表存储中的操作是否成功来提交或中止此事务。

如果您要进行多项更改,则回滚表存储中的事务需要更多考虑。有很多方法可以实现这一目标。如果您在事务中更改多个实体,则您可能会最后更新一个顶级实体,并且它指向所有其他实体的最新版本。这样,如果中途出现故障,顶级实体仍将指向其他实体的旧版本。然后您需要一些清理机制来删除不再使用的旧实体。

请记住,仅仅因为对表服务的调用失败,并不意味着该实体未更新。例如,服务可能会成功处理您的请求,但由于某些网络错误,响应不会返回给您。因此,如果您不确定某件事是否成功,您的代码必须对其进行验证。

-Mike,Microsoft Windows Azure 存储开发人员

关于azure - SQL Azure 和 Azure 表存储之间的事务,即回滚和提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20095494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com