[发明专利]一种基于局部路径锁的XML数据并发控制方法无效
申请号: | 200910228692.4 | 申请日: | 2009-11-25 |
公开(公告)号: | CN101702176A | 公开(公告)日: | 2010-05-05 |
发明(设计)人: | 康宏;袁晓洁;黄晓骋;官莹;孙博实 | 申请(专利权)人: | 南开大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 天津佳盟知识产权代理有限公司 12002 | 代理人: | 侯力 |
地址: | 300071*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 局部 路径 xml 数据 并发 控制 方法 | ||
1.一种基于局部路径锁的XML数据并发控制方法,其特征在于该方法包括相应的XML数据模型的定义、锁模型的定义、锁协议以及并发控制操作方案,具体过程如下:第1、XML数据模型定义
此数据模型将一篇XML文档D表示为一个序列(Sequence):S={s1→s2→...sn}其中,Si是一个四元组(ID,tag,type,value),表示XML中的某个节点;四元组中各个项目的定义如下:ID为此节点在关系型表中的标识;type∈{Document,Element,Attribute,Value}表示节点的类型;tag为节点的名称;value为节点的值;n为XML节点的个数,且n=|S|;根据模式映射的方法,将文档D存储到对应的关系数据库的关系表中;
第2、XML事务操作时加锁模型的制定
第2.1、锁的类型
第2.1.1、物理锁:
I锁:意向锁
X锁:节点级排他锁
T锁:子树级排他锁
第2.1.2、逻辑锁:
TA锁:表征节点的祖先有删除动作
TD锁:表征节点的后裔有删除动作
XD锁:表征节点的后裔有值更新动作
第2.2、定义T/X表结构及查询函数以判定是否持有TA、TD、XD锁
第2.2.1、一个存在于内存中的T表表示如下:
T={id1,id2,idi…idn}
其中id为事务中所操作的某节点N的智能ID;当且仅当节点N被加上T锁时,N的智能节点ID被记录到T表当中;
第2.2.2、一个存在于内存中的X表表示如下:
X={id1,id2,idi…idn}
其中id为事务中所操作的某节点N的智能ID;当且仅当节点N被加上X锁时,N的智能节点ID被记录到X表当中;
第2.2.3、定义查询函数Scan():
Scan:(IDn,m,v)→Boolean
其中,m∈{T,X};v∈{ascend,descend};此函数将节点N的智能节点ID与T表或者X表中智能节点ID进行比较,用来判断该表中是否含有N的祖先或者后裔;
如果:
·函数Scan(IDn,T,ascend)返回值为真,表明N的祖先存在删除操作,则判定N上逻辑持有锁TA;
·函数Scan(IDn,T,descend)返回值为真,表明N的后裔存在删除操作,则判定N上逻辑持有锁TD;
·函数Scan(IDn,X,descend)返回值为真,表明N的后裔存在修改值或者重命名操作,则判定N上逻辑持有锁XD;
第2.3、定义目标节点加锁条件
在进行XML数据更新时,通过XQuery表达式可以定位到其中的某一个或者多个节点作为加锁目标节点;在此基础上,定义更新操作应满足的节点加锁条件,如下所示:
·目标节点在进行更新操作时必须锁住,不允许在此节点上执行任何其他的更新操作;
·将要对目标节点N进行删除操作时,N的孩子和后裔节点中,不能有节点正在进行删除,插入,重命名或者更新操作,如果有,则需要等到孩子节点更新操作完成以后,才能对节点N进行删除;
·将要对目标节点N进行删除操作时,N的父亲以及祖先节点不能进行删除操作,如果有,则等待,直到父亲或者祖先节点完成删除操作后,才能对N进行删除;
·将要对目标节点N进行重命名操作时,N的父亲及祖先节点不能正在或即将被删除,如果有,则等待,直到父亲或祖先节点删除操作完成;
·将要对目标节点N的孩子进行插入操作时,N节点以及N的祖先节点不能正在被删除,如果有,则等待,直到删除操作完成;此外,N节点也不能正在被修改值或重命名;
·将要对目标节点N进行插入左右兄弟时,N节点及N的祖先节点不能正在被删除,如果有,则等待,直到删除操作完成;此外,N节点本身也不能正在执行任何更新操作;
·将要对目标节点N进行修改值的操作时,不能允许其父亲以及祖先节点正在被删除,如果有,则等待,直到删除操作完成;此外,N节点的父亲节点不能执行任何更新操作;
第2.4、XML不同事务之间的各种锁的冲突相容矩阵定义
根据2.1中对于锁的描述,制定了各种锁的冲突相容矩阵;其中T1和T2为2个并发事务,T1和T2均定位到相同的XML节点N;
+表示兼容-表示冲突
其中由I、T、X锁构成的冲突矩阵,是由真正加在节点上的锁构成的,这些锁通过锁管理器进行申请和释放;表中剩余的部分由TA、TD、XD逻辑锁构成,这些锁通过查询函数的返回值来表明是否被逻辑持有;
第2.5、锁协议的制定
第2.5.1、申请锁的规则:事务在执行任何一种操作的时候,必须根据操作的具体类型进行相应类型锁的申请,如下表所示:
其中,Sd为目标节点的XQuery定位语句,Ss为源节点的XQuery定位语句;
第2.5.2、冲突检测规则:当一个事务需要对不同的节点均需要加锁时,只要其中任何一个节点的锁没有被加上,就必须根据冲突相容矩阵,等待其锁的加上,之后再继续后续的更新操作;
第2.5.3、每一个事务必须满足2PL协议,即在锁增长阶段申请锁,在锁缩减阶段释放锁;
第2.6、XML数据并发控制方案的制定
第2.6.1、采用多版本化协议实现只读事务与更新事务的并发控制
其步骤如下所示:
步骤1:当一个只读事务T启动时,赋给此事务一个全局事务版本号,
步骤2:当调度器接收到只读事务T对节点N的读请求时,对该事务读取的最近已提交版本并进行判断;如果节点N被更新事务删除,说明此版本不存在,则执行步骤4;否则执行步骤3,
步骤3:选择该事务开始时的最近已提交版本,进行事务提交,
步骤4:返回固定信息码以表示节点N不存在,进行事务提交;
第2.6.2、采用局部路径锁协议实现更新事务之间的并发控制其步骤如下所示:
步骤1:一个更新事务T启动,根据冲突相容矩阵,对目标节点N加I锁,
步骤2:通过查询函数对T表、X表进行检测,事务T确定目标节点上是否持有逻辑锁TA,TD和XD,并将目标节点的ID插入到T表或X表中,
步骤3:事务T对目标节点N申请加T锁或者X锁,如果加锁成功,则进行更新操作;否则,删除T表和X表的目标节点记录,事务T进入等待。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南开大学,未经南开大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200910228692.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:变压器
- 下一篇:集装箱轮胎式场桥滑触线供电自动对接与断开装置