活动介绍

RESTful事务与隔离定理支持的并发控制

立即解锁
发布时间: 2025-08-20 00:14:02 阅读量: 2 订阅数: 6
PDF

Web Engineering与新闻文章内容提取方法综述

# RESTful事务与隔离定理支持的并发控制 ## 1. RESTful事务基础概念 在RESTful架构中,事务操作主要涉及GET和PUT两种基本操作。GET操作用于获取资源的值,不会改变资源版本;而PUT操作则用于更新资源,会使资源版本发生变化。当一个事务进行GET操作时,它依赖于该资源的当前版本;若进行PUT操作,生成的资源版本则依赖于该事务。 若事务中止并执行撤销逻辑,其所有PUT操作都必须被撤销,这会使资源获得新的版本,因为撤销操作类似于一次普通的新更新。在RESTful模型中,采用基于影子的更新方式,避免了锁撤销的复杂性。 ### 1.1 事务依赖与版本管理 事务之间的依赖关系可通过依赖图来表示,理论上依赖图可看作一个时间序列。应用ACID属性的主要结论是:无环的依赖图意味着事务的隔离执行。违反隔离性的风险通常与各种依赖循环相关。 与传统事务类似,REST循环依赖可分为三种通用形式: - 当两个或多个事务访问同一资源时,可能会产生该资源的两个或多个不同版本(丢失更新)。 - 事务可能使用资源的过期版本(脏读和不可重复读)。 ### 1.2 事务操作与生命周期 为了保证事务的一致性和隔离性,在GET和PUT资源时,需要应用SLOCK(共享锁)和XLOCK(排他锁),并在对资源的依赖过期时释放这些锁。因此,模型应支持对资源的GET、PUT、XLOCK、SLOCK、UNLOCK等主要操作,以及BEGIN、COMMIT、ROLLBACK等通用操作。 一个事务是从BEGIN操作开始,以COMMIT或ROLLBACK操作结束的一系列操作序列。为简化事务模型,BEGIN、COMMIT和ROLLBACK可通过其他操作来定义,最终仅保留GET、PUT、LOCK和UNLOCK操作。 简单事务由GET、PUT、XLOCK、SLOCK和UNLOCK操作组成。每个事务T都可转换为等效的简单事务,具体转换规则如下: 1. 丢弃BEGIN操作。 2. 若事务以COMMIT操作结束,将该操作替换为一系列UNLOCK操作:<UNLOCK A | if SLOCK A or XLOCK A appears in T for any resource A>。 3. 若事务以ROLLBACK操作结束,将该操作替换为一系列PUT操作,然后是UNLOCK操作:<PUT A | if PUT A appears in T for any resource A> ||<UNLOCK A | if SLOCK A or XLOCK A appears in T for any resource A>。 ### 1.3 事务的特性 事务具有一些重要特性: - 格式良好的事务:所有GET、PUT和UNLOCK操作都由锁覆盖,且每个锁操作最终都有对应的UNLOCK操作。 - 两阶段事务:所有LOCK操作都在UNLOCK操作之前。两阶段事务T有一个增长阶段(获取锁)和一个收缩阶段(释放锁)。 ## 2. 历史记录与锁的兼容性 ### 2.1 历史记录的定义 历史记录是一组事务操作的顺序合并序列,用$H = \langle\langle t, a, r\rangle_i | i = 1, \ldots, n\rangle$表示。每个历史步骤$\langle t, a, r\rangle$是事务t对资源r执行的操作a。历史记录列出了操作成功完成的顺序。 串行历史记录是一次只执行一个事务的历史记录,不存在并发问题,也不会出现数据不一致和脏数据查看问题。 ### 2.2 合法历史记录与锁兼容性 合法历史记录是遵守锁约束的历史记录。锁兼容性规则限制了允许的历史记录集合,具体如下表所示: | 前一个锁的模式 | 新锁的模式 | 共享锁 | 排他锁 | | --- | --- | --- | --- | | 共享锁 | 是 | 否 | | | 排他锁 | 否 | 否 | | 例如,在图4中展示了三种历史记录: - 历史记录1是串行历史记录,显然是合法的,因为每个事务按顺序执行,不会有锁冲突。 - 历史记录2是非串行合法历史记录,T1和T2之间没有不兼容的锁,因为T2仅在T1执行UNLOCK后才对资源B应用XLOCK。 - 历史记录3是非串行且不合法的历史记录,资源B已被T1加XLOCK,但T2又对同一资源应用XLOCK,这违反了锁兼容性规则,导致T1的PUT操作覆盖了T2的PUT操作,即出现“丢失更新”的情况。 ### 2.3 RESTful HTTP中的锁 为处理HTTP并发挑战,引入了锁的概念,且不影响Web的始终可用和向后兼容特性。理想情况下,任何可由HTTP服务器提供的资源都应是可锁定资源(R)。为了实现这一点,可以让资源链接到锁集合和事务集合,或者创建包含这些信息的自定义HTTP头。 锁资源(R - L)由专用媒体类型表示,包含以下元素: | 元素 | 描述 | | --- | --- | | ResourceURI | 指向该锁影响的资源的链接 | | TransactionURI | 指向控制该锁的事务的链接 | | Type | 锁的类型,“S”或“X” | | PrevLockURI | 指向锁序列中前一个锁的链接 | | Timestamp | 服务器授予锁的时间戳 | | Duration | 锁的有效时间间隔 | | ConditionalRepresentationURI | 锁提交后资源将生效的表示的链接 | | InitialRepresentationURI | 锁资源初始状态的链接 | 锁的类型分为XLOCK(排他锁)和SLOCK(共享锁)。放置新锁时,服务器需验证用户是否为锁所引用事务的所有者。锁的有效时间取决于服务器为客户端提供保证的最大时长,锁过期后将被中止。为避免违反两阶段锁协议(2PL),若一个事务的某个锁过期,该事务的所有其他锁也将过期。 在锁生效期间,直接的PUT和DELETE操作会返回“405 Method Not Allowed”HTTP响应,而GET请求仍应成功返回。这一行为保持了向后兼容性,若客户端需要对资源的未来状态有更多保证,应尝试放置锁。 ### 2.4 资源锁集合与事务相关资源 资源锁集合(R - Lc)包含按锁兼容性规则排序的锁,以Atom Feed形式表示。客户端可通过GET请求检索锁集合,判断资源是否被锁定;可通过POST方法提交新锁。 事务(T)资源由专用媒体类型表示,包含TransactionCollectionURI、OwnerURI和TransactionLockCollectionURI,用于标识执行事务所需的信息集合。事务集合(Tc)是新事务提交的资源,通过POST操作创建新事务并返回其表示的URI,该资源本身不能通过GET访问。事务锁集合(T - Lc)包含与特定事务相关的锁的链接,以Atom feed格式呈现。客户端不能直接中止单个锁,必须通过T - Lc中止事务的所有锁,这相当于中止事务。 事务锁集合(T - Lc)的可用操作如下表所示: | 操作 | 描述 | | --- | --- | | GET | 返回与事务相关的锁集合 | | DELETE | 中止相关事务的所有锁,仅由事务所有者执行 | ### 2.5 可恢复性与条件资源表示 基于回滚定理,若一个事务解锁排他锁后执行“回滚”操作,且该事务未退化,则可能导致“虫洞”问题。为实现回滚,模型不直接在实际资源上存储潜在更新,而是使用锁定数据的影子,即条件资源表示。 初始资源表示(R - L - IR)与锁定资源具有相同的媒体类型,用于存储初始状态,与锁一起存档,以便在锁提交时表示更改并支持回滚。条件资源表示(R - L - CR)也是与锁定资源相同的媒体类型,本质上是XLOCK提交后将应用于资源的状态。 条件资源表示(R - L - CR)的可用操作如下表所示: | 操作 | 描述 | | --- | --- | | GET | 返回若相关XLOCK提交将被提交的表示 | | PUT | 创建新的条件状态,在关联的XLOCK提交时替换锁定资源的当前状态 | | DELETE | 删除条件状态,若XLOCK提交,将不执行写操作 | ### 2.6 模型概述 定义了所有资源类型后,形成了一个相互连接的网络。只需拥有资源R的URI,就足以定位网络中的所有其他资源。由于安全原因,事务集合(Tc)资源没有GET能力,给定事务T的URI仅作为事务所有者在Tc上执行初始POST操作的响应返回。 相关资
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

zip
资源下载链接为: https://pan.quark.cn/s/d37d4dbee12c A:计算机视觉,作为人工智能领域的关键分支,致力于赋予计算机系统 “看懂” 世界的能力,从图像、视频等视觉数据中提取有用信息并据此决策。 其发展历程颇为漫长。早期图像处理技术为其奠基,后续逐步探索三维信息提取,与人工智能结合,又经历数学理论深化、机器学习兴起,直至当下深度学习引领浪潮。如今,图像生成和合成技术不断发展,让计算机视觉更深入人们的日常生活。 计算机视觉综合了图像处理、机器学习、模式识别和深度学习等技术。深度学习兴起后,卷积神经网络成为核心工具,能自动提炼复杂图像特征。它的工作流程,首先是图像获取,用相机等设备捕获视觉信息并数字化;接着进行预处理,通过滤波、去噪等操作提升图像质量;然后进入关键的特征提取和描述环节,提炼图像关键信息;之后利用这些信息训练模型,学习视觉模式和规律;最终用于模式识别、分类、对象检测等实际应用。 在实际应用中,计算机视觉用途极为广泛。在安防领域,能进行人脸识别、目标跟踪,保障公共安全;在自动驾驶领域,帮助车辆识别道路、行人、交通标志,实现安全行驶;在医疗领域,辅助医生分析医学影像,进行疾病诊断;在工业领域,用于产品质量检测、机器人操作引导等。 不过,计算机视觉发展也面临挑战。比如图像生成技术带来深度伪造风险,虚假图像和视频可能误导大众、扰乱秩序。为此,各界积极研究检测技术,以应对这一问题。随着技术持续进步,计算机视觉有望在更多领域发挥更大作用,进一步改变人们的生活和工作方式 。

SW_孙维

开发技术专家
知名科技公司工程师,开发技术领域拥有丰富的工作经验和专业知识。曾负责设计和开发多个复杂的软件系统,涉及到大规模数据处理、分布式系统和高性能计算等方面。
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

CListCtrl字体与颜色搭配优化:打造视觉舒适界面技巧

![CListCtrl字体与颜色搭配优化:打造视觉舒适界面技巧](https://anchorpointegraphics.com/wp-content/uploads/2019/02/ColorContrastExamples-02.png) # 摘要 本文深入探讨了CListCtrl控件在Windows应用程序开发中的应用,涵盖了基础使用、字体优化、颜色搭配、视觉舒适性提升以及高级定制与扩展。通过详细分析CListCtrl的字体选择、渲染技术和颜色搭配原则,本文提出了提高用户体验和界面可读性的实践方法。同时,探讨了视觉效果的高级应用,性能优化策略,以及如何通过定制化和第三方库扩展List

【企业级应用高性能选择】:View堆栈效果库的挑选与应用

![View堆栈效果库](https://cdn.educba.com/academy/wp-content/uploads/2020/01/jQuery-fadeOut-1.jpg) # 摘要 堆栈效果库在企业级应用中扮演着至关重要的角色,它不仅影响着应用的性能和功能,还关系到企业业务的扩展和竞争力。本文首先从理论框架入手,系统介绍了堆栈效果库的分类和原理,以及企业在选择和应用堆栈效果库时应该考虑的标准。随后通过实践案例,深入探讨了在不同业务场景中挑选和集成堆栈效果库的策略,以及在应用过程中遇到的挑战和解决方案。文章最后展望了堆栈效果库的未来发展趋势,包括在前沿技术中的应用和创新,以及企业

冷却系统设计的未来趋势:方波送风技术与数据中心效率

![fangbosongfeng1_风速udf_udf风_方波送风_](https://www.javelin-tech.com/3d/wp-content/uploads/hvac-tracer-study.jpg) # 摘要 本文综合探讨了冷却系统设计的基本原理及其在数据中心应用中的重要性,并深入分析了方波送风技术的理论基础、应用实践及优势。通过对比传统冷却技术,本文阐释了方波送风技术在提高能效比和增强系统稳定性方面的显著优势,并详细介绍了该技术在设计、部署、监测、维护及性能评估中的具体应用。进一步地,文章讨论了方波送风技术对数据中心冷却效率、运维成本以及可持续发展的影响,提出了优化方案

【wxWidgets多媒体处理】:实现跨平台音频与视频播放

![【wxWidgets多媒体处理】:实现跨平台音频与视频播放](https://media.licdn.com/dms/image/D4D12AQH6dGtXzzYAKQ/article-cover_image-shrink_600_2000/0/1708803555419?e=2147483647&v=beta&t=m_fxE5WkzNZ45RAzU2jeNFZXiv-kqqsPDlcARrwDp8Y) # 摘要 本文详细探讨了基于wxWidgets的跨平台多媒体开发,涵盖了多媒体处理的基础理论知识、在wxWidgets中的实践应用,以及相关应用的优化与调试方法。首先介绍多媒体数据类型与

MATLAB程序设计模式优化:提升pv_matlab项目可维护性的最佳实践

![MATLAB程序设计模式优化:提升pv_matlab项目可维护性的最佳实践](https://pgaleone.eu/images/unreal-coverage/cov-long.png) # 摘要 本文全面探讨了MATLAB程序设计模式的基础知识和最佳实践,包括代码的组织结构、面向对象编程、设计模式应用、性能优化、版本控制与协作以及测试与质量保证。通过对MATLAB代码结构化的深入分析,介绍了函数与脚本的差异和代码模块化的重要性。接着,本文详细讲解了面向对象编程中的类定义、继承、封装以及代码重用策略。在设计模式部分,本文探讨了创建型、结构型和行为型模式在MATLAB编程中的实现与应用

【硬件开销最小化】:LMS算法在Verilog中的资源消耗分析

![【硬件开销最小化】:LMS算法在Verilog中的资源消耗分析](https://img-blog.csdnimg.cn/img_convert/b111b02c2bac6554e8f57536c89f3c05.png) # 摘要 本文深入探讨了最小均方(LMS)算法的基本原理、理论基础、在Verilog中的实现、资源消耗以及性能实验验证。首先介绍了自适应滤波器和LMS算法的基本概念及其在不同领域的应用背景。接着,详细分析了LMS算法的理论基础,包括工作原理、性能指标、数学模型以及收敛性和稳定性。在实现方面,本文讨论了LMS算法在Verilog语言中的设计与模块化实现细节。此外,本文还对

STM8微控制器应用揭秘:实现汉字点阵屏显示的顶尖电路方案

![基于STM8的点阵屏汉字显示-电路方案](https://blog.st.com/wp-content/uploads/ST18666_HC_STM32H735G-DK_0920banner.jpg) # 摘要 本文系统地介绍了STM8微控制器的基本概念和特性,并深入探讨了汉字点阵屏显示技术的基础知识。文章详细阐述了STM8与点阵屏的接口设计,包括I/O口配置和驱动电路设计,同时对字库的选择与管理进行了分析。在编程实践部分,文章提供了STM8编程环境的搭建方法,点阵屏显示程序编写技巧以及显示效果优化策略。此外,文章还介绍了STM8汉字点阵屏的高级应用,如多任务处理、外设集成和系统稳定性的

【BT-audio音频抓取工具比较】:主流工具功能对比与选择指南

# 摘要 本文旨在全面介绍BT-audio音频抓取工具,从理论基础、功能对比、实践应用到安全性与隐私保护等多个维度进行了深入探讨。通过分析音频信号的原理与格式、抓取工具的工作机制以及相关法律和伦理问题,本文详细阐述了不同音频抓取工具的技术特点和抓取效率。实践应用章节进一步讲解了音频抓取在不同场景中的应用方法和技巧,并提供了故障排除的指导。在讨论工具安全性与隐私保护时,强调了用户数据安全的重要性和提高工具安全性的策略。最后,本文对音频抓取工具的未来发展和市场需求进行了展望,并提出了选择合适工具的建议。整体而言,本文为音频抓取工具的用户提供了一个全面的参考资料和指导手册。 # 关键字 音频抓取;

【游戏物理引擎基础】:迷宫游戏中的物理效果实现

![基于C++-EasyX编写的益智迷宫小游戏项目源码.zip](https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/7eae7ef4-7fbf-4de2-b153-48a18c117e42/d9ytliu-34edfe51-a0eb-4516-a9d0-020c77a80aff.png/v1/fill/w_1024,h_547,q_80,strp/snap_2016_04_13_at_08_40_10_by_draconianrain_d9ytliu-fullview.jpg?token=eyJ0eXAiOiJKV1QiLCJh

【评估情感分析模型】:准确解读准确率、召回率与F1分数

![Python实现新闻文本类情感分析(采用TF-IDF,余弦距离,情感依存等算法)](https://img-blog.csdnimg.cn/20210316153907487.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpbGRu,size_16,color_FFFFFF,t_70) # 摘要 情感分析是自然语言处理领域的重要研究方向,它涉及从文本数据中识别和分类用户情感。本文首先介绍了情感分析模型的基本概念和评估指标,然后