gpt4 book ai didi

javascript - 如何在Azure移动服务中实现乐观锁?

转载 作者:行者123 更新时间:2023-11-28 08:50:22 27 4
gpt4 key购买 nike

我的应用程序有一个 Azure 移动服务后端。我以一种非常开箱即用的方式使用 MSSQL。但是,理论上我有多个客户端可以同时访问相同的对象。对我来说,充分的解决方案是使用乐观锁定来避免任何进一步的并发问题。

所以我的问题是这样的。我有一个由后端填写的时间戳。我的问题是是否有一种巧妙的方法来处理在过程中获取项目的“旧版本”,或者我是否被迫从数据库中手动查询对象 - 或者是否可以轻松地将日期约束合并到查询中,类似于

function update(item, user, request) {
query.where...
request.execute();
}

但是update中没有查询?性能对于我的应用程序来说很重要,因为我预计会有很多查询。

最佳答案

乐观锁定对于网络来说确实没有意义。您的读取和更新操作是无状态的,并且是独立请求的一部分(刷新 HTTP 可能是一个好主意)。

这并不是说每个请求都不能使用事务(请参阅 mssql 对象 http://msdn.microsoft.com/en-us/library/windowsazure/jj554212.aspx )。但从根本上分布式 Web 应用程序来看,跨多个请求引入事务通常是一个糟糕的架构决策。 (参见 CAP 定理)。

您可以使用 Azure 队列以及命令和事件等消息来模拟事务或“传奇”,以更改数据库中的新状态,从而按用户管理锁定记录。或者您可以简单地使用另一个表来管理现有表的记录锁。无论哪种方式,您都必须在应用程序逻辑中明确记录锁定,因为读取和更新是不同的请求以及无状态 Web 和分布式计算的固有本质。

关于javascript - 如何在Azure移动服务中实现乐观锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19226308/

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