首页 理论教育分布式数据库技术-事务分类与模型举例

分布式数据库技术-事务分类与模型举例

【摘要】:例如,可以按照各种方式将事务进行分类。也可以将事务分为在线处理事务和批处理事务。图8.3各种事务模型 下面看一些事务的例子。按事务结构可分为平面事务和嵌套事务。子事务的提交是父事务提交的条件。

文献中推荐了大量的事务模型,各自面向一种应用。基本思想是保持事务的“ACID”性质,由于各种算法和技术分别强调某一(些)方面,所以算法变数很多。例如,可以按照各种方式将事务进行分类。一种分类方式是按照事务的持续时间来分,可分为短事务和长事务。也可以将事务分为在线处理事务和批处理事务。在线处理事务的执行和响应时间较短(一般在秒级),访问数据库的量相对数据库本身而言较小,银行业务和航空订票就是这类事务。批处理事务的执行时间长(响应时间往往以分钟、小时甚至天计),访问数据库的量相对数据库本身而言较大,CAD/CAM数据库、统计应用、报表生成、复杂查询和图像处理等就是这类事务。

另外一种分类方式与读/写操作的组织方式有关。如果一个事务的所有读操作在任何写操作前实施,则称为两步(two-step)模型。如果事务限制为一个数据项在更新前必须先对其的读操作,这类事务称为受限(restricted)模型。同时有这两个性质的事务称为受限两步(restricted two-step)模型。还有一种称为动作模型(action model)的事务,它满足受限条件,且要求每个〈read,write〉对必须以原子方式执行,如图8.3所示。

图8.3 各种事务模型(摘自参考文献[5])

【例8.7】 下面看一些事务的例子。为了简洁,我们忽略说明。

通用模型:

T1:{r(x),r(y),w(y),w(x),w(z),r(z),w(w),C}

两步模型:

T 2:{r(y),w(y),r(z),w(x),w(z),w(w),C}

受限模型:

T 3:{r(x),r(y),w(y),r(z),w(x),w(z),r(w),w(w),C}

注意:这里对T 3来说,在写x前必须读x。

受限两步模型:

T 4:{r(x),r(y),r(z),r(w),w(x),w(z),w(y),w(w),C}(www.chuimin.cn)

Action:

T 5:{[r(x),w(x)],[r(y),w(y)],[r(z),w(z)],[r(w),w(w)],C}

这里,括号中的操作以原子方式执行。

按事务结构可分为平面事务(flat transaction)和嵌套事务(nested transaction)。

1.平面事务

平面事务只有一个启动点事务(begin-transaction)和一个终止点事务(end-transaction)。前面所有的例子都是平面事务。

2.嵌套事务

允许在一个事务内嵌套其他事务,这类事务称为嵌套事务(nested transaction)。嵌套在事务中的事务称为子事务。

【例8.8】 下面考虑旅行社为客人安排旅行的例子。给客人安排旅行需要给他(她)预订机票、预订旅馆、租车预约等,如下所示:

从例8.8可见,整个旅行安排是作为一个事务来定义的。但是,在整个旅行安排中,需要预订来回机票、预订旅馆和租车预约。后面三项活动这里也分别作为一个事务(嵌套事务)进行处理(其实这是航空公司、旅馆和出租车辆公司所强调的,否则它们的其他业务无法继续正常进行),但从属于整个旅行安排事务。

目前,嵌套事务越来越受关注,嵌套层次一般是开放的,也允许子事务是嵌套事务。

要注意的是,可以区分封闭和开放两类嵌套事务。封闭嵌套事务按自底向上直至根开始提交。因此子事务在它的父事务后启动,在它的父事务结束前结束。子事务的提交是父事务提交的条件。这些事务的语义把原子性强加在最顶上一级。开放嵌套事务允许子事务可以先于父事务提交结果,可以让外面的事务先看到。