翻译:寒蝉退士
介绍
事务管理是对企业应用最紧要的要求之一。在贸易、金融和电子商业领域中,多数大的企业应用依赖于递送它们的商务的事务处理功能。 鉴于当今商务对灵活性的要求,在建造、部署和维护企业级别的分布式应用中,事务处理占据的是其中最复杂的部分之一。
本文把以下内容介绍给读者:
* 什么是事务? 什么是 ACID?
* 建造一个事务应用的要点是什么? 事务管理中间件为什么很重要?
* 事务处理应用的典型的体系是怎样的? 体系中的各种构件的职责是什么?
* 事务处理系统涉及哪些概念?
* 事务管理领域中有哪些标准和技术?
本文不特定于任何产品,力图在描述各种要点和概念时保持普遍性。本文不打算比较各种事务处理的技术/标准,只是提供对此的一个讨论。
什么是事务?
为了完成对数据的操作,企业应用经常要求并发访问在多个构件之间共享的数据。这些应用在下列条件下应该维护数据的完整性(由应用的商务规则来定义):
* 分布式访问一个单独的数据资源,以及
* 从一个单独的应用构件访问分布式资源。
在这种情况,可能要求在(分布式)资源上的一组操作被当作一个工作单元(unit)。在一个工作单元中, 操作的所有部分一起成功或失败并恢复。在下面的情况下这个问题更加复杂:
* 通过一组分布式的、访问多个资源的数据的构件实现一个工作单元,和/或
* 部分操作是被顺序执行的或在要求协调和/或同步的并行线程中。
在所有情况下, 都要求应用维护一个工作单元的成功或失败。在失败的情况下,所有资源要把数据状态返回到以前的状态 (比如说,工作单元开始前的状态)。
事务的概念和和事务管理器(或者一个事务处理服务)在一个工作单元中的维护数据完整性,这就简化了这样的企业级别分布式应用的构造。
一个事务是有下列属性的一个工作单元:
* 原子性(ATOMICITY): 一个事务要被完全的无二义性的做完或撤消。在任何操作出现一个错误的情况下,构成事务的所有操作的效果必须被撤消,数据应被回滚到以前的状态。
* 一致性(CONSISTENCY): 一个事务应该保护所有定义在数据上的不变的属性(例如完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致状态转换到另一个一致状态。举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束。
* 隔离性(ISOLATION): 在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行。串行的执行一系列事务的效果应该同于并发的执行它们。这要求两件事:
o 在一个事务执行过程中,数据的中间的(可能不一致)状态不应该被暴露给所有的其他事务。
o 两个并发的事务应该不能操作同一项数据。数据库管理系统通常使用锁来实现这个特征。
* 持久性(DURABILITY): 一个被完成的事务的效果应该是持久的。
这些属性叫做 ACID 属性,担保一个事务是永远不会不完整,数据永远不会不一致,并发事务是独立的,一个事务的效果是持久的。关于在分布式系统什么能出错的简要的一个描述,请参见 在事务处理系统中的容错和恢复。
建造事务性应用的要点
为了引出在建造事务性应用中涉及的要点,考虑一个定单获得和定单处理应用,它的体系在 图 1 中展示:
这个应用由两个客户构件组成,分别实现定单获得和定单处理操作。这两个操作构成了一个工作或事务单元。分别基于产品,定单,库存清单和货运信息。在这个图中,点断尖头指示的只读的数据访问,而连续尖头指示指示的是修改数据的事务性操作。下面是在这个应用中的事务性操作:
* 生成定单,
* 更新库存,
* 生成货运记录,并
* 更新定单状态。
当作为一个事务来实现这些操作时,应致力于下述要点:
1. 应用应当与事务性操作和被操作的数据库保持联系。所以应用应该为所有事务定义一个上下文来包含上述四个操作。
2. 因为定单获得和定单处理事务分布于两个构件之上,事务上下文应该是全局的,并通过协议的转换、被从第一个构件传播到第二个。
3. 当事务发生期间,应用应当监控事务的状态。
4. 为了维护事务的原子性,应用构件和/或数据库服务器、应当实现一种机制,在这种机制下对数据库的更改可以被撤消,而又不失去数据的一致性。
5. 为了隔离在共享数据上的并发的事务,数据库服务器应该跟踪被操作的数据,并在一个事务操作期间锁住数据。
6. 应用还应该维护数据库连接和事务之间的关联。
7. 为了实现可靠的锁定,应用构件应向数据库通知事务的终止
- 大小: 6.3 KB
分享到:
相关推荐
- `wx.EvtHandler`:处理事件的基础类。 - `wx.Window`:窗口的基础类。 - `wx.Frame`:顶级窗口。 - `wx.Panel`:面板,通常作为容器使用。 - `wx.ScrolledWindow`:可以滚动的窗口。 - `wx.Dialog`:对话框。 ...
Nuts是一款专为化学、化工和高分子科学等领域设计的核磁处理软件,它提供了强大的数据分析和处理功能,帮助科研人员高效地解析核磁共振(Nuclear Magnetic Resonance,简称NMR)谱图。NMR是一种重要的实验技术,通过...
通过运行各种网络应用和服务,这些设备能够实现数据的交换和共享。 在这个基础结构中,几个关键要素包括: - **计算设备**:涵盖了广泛种类的硬件平台,从高性能的工作站到日常使用的智能手机。 - **通信链路**:...
Swift Programming Nuts and Bolts provides a clear and concise overview of the programming language, describes its key features and APIs, and presents recommendations for developing programs using ...
今天我们要介绍的“核磁图谱处理软件NUTs”,正是这样一个专业的工具,它以其强大的功能和用户友好的界面,成为了化学和高分子领域研究者的得力助手。 NUTs软件专为化学和高分子行业设计,它不仅能够处理NMR数据,...
Nuts2013是核磁共振数据处理的重要软件之一,具备数据采集、处理、解析和报告生成等功能。它支持多种格式的核磁共振数据,能够进行复杂的傅立叶变换、谱峰归属、自旋系统分析等操作,帮助用户快速准确地理解样品的...
NUts2008是一款专业且功能齐全的核磁数据处理软件,它为科研工作者提供了强大的数据处理和解析工具,帮助他们从NMR谱图中获取宝贵的信息。 NUts2008的核心功能包括但不限于以下几点: 1. 数据采集与导入:该软件...
本文将深入探讨NUTS软件在处理显示核磁报告文件名的三种策略,帮助用户更高效地操作和管理这些文件。 策略一主要针对文件名为"CP-0003428-021-H1-DMSO-20090708"这类格式的核磁报告。首先,需要进入相应的文件夹,...
除了基本的1D处理外,NUTs还提供了许多高级功能,如自动化处理、宏命令、双视图显示等,这些功能极大地提高了数据处理的效率和灵活性。 - **自动化**:通过创建宏命令或链接命令,用户可以将一系列复杂的数据处理...
总的来说,NUTs提供了全面的NMR谱图处理工具,用户可以根据具体需求灵活运用各种命令和技巧,优化处理过程,提升分析的精确度和效率。此外,NUTs还支持与其他软件如MestRe-C(适用于一维数据)和Gifa(适用于一至三...
核磁数据处理软件有:Nuts、MestRe-C、MestreNova,Gifa, NMRNoteBook, Sparky, NMRpipe等。 中国核磁共振论坛:http://www.nmrbbs.cn NUTS可以处理一维及二维核磁数据,其功能包括付立叶变换、相位校正、差谱、...
nuts_bolts.c nuts_bolts.h pin_map.h planner.c planner.h print.c print.h protocol.c protocol.h README.md report.c report.h script serial.c serial.h settings.c settings.h spindle_...
NUTS软件是一款专门用于处理和分析核磁共振(NMR)数据的专业工具。在核磁共振实验中,数据通常以一系列的文件形式存储,这些文件的命名方式可能较为复杂,例如"CP-0003428-021-H1-DMSO-20090708"这样的格式,其中...
文档内容提到了表面处理和螺栓螺钉端部的设计,例如圆头和滚花螺纹端部。这些设计元素会影响产品的外观、抗腐蚀性以及安装时的便捷性。 6. 标记和识别 标准要求在产品上进行适当的标记和标识,以便区分不同的规格、...
一般使用Arduino IDE进行编程,代码主要包括初始化电机驱动器、设置电机步距角、定义运动函数以及处理输入指令等部分。你可以找到开源的写字机器人代码库作为参考,并根据实际硬件配置进行修改。 例如,以下是一段...
(安卓版本)nuts.apk(安卓版本)nuts.apk(安卓版本)nuts.apk(安卓版本)nuts.apk(安卓版本)nuts.apk(安卓版本)nuts.apk(安卓版本)nuts.apk(安卓版本)nuts.apk(安卓版本)nuts.apk(安卓版本)nuts.apk...
在现代化学分析领域,数据处理与解析是至关重要的环节,而Nuts化学解谱软件就是一款专为科学家和研究人员设计的强大工具,旨在帮助他们高效、准确地分析和解释复杂的化学谱图数据。这款软件以其独特的功能和友好的...
在这个"车牌识别.zip_inchi79_matlab 图像处理_matlab车牌识别_nuts6k4_车牌"项目中,我们关注的核心是使用MATLAB进行车牌字符的提取和识别。MATLAB是一种强大的编程环境,尤其适合于数值计算、符号计算以及图像处理...