发明名称 一种基于局部路径锁的XML数据并发控制方法
摘要 本发明属于数据库技术领域,具体提出了一种新型的基于局部路径加锁模型的XML数据并发控制方案。具体内容包括:XML数据模型的定义、锁模型的定义、锁协议制定、并发控制的实现方案制定。通过本发明提出的并发控制方案,可以实现在对XML进行事务操作时,只对根据XQuery定位到的节点或者其父节点进行加锁,避免了传统的从根节点到目标节点的路径加锁方式,减少了对锁的频繁请求,提高了事务的并发度和执行效率。
申请公布号 CN101702176A 申请公布日期 2010.05.05
申请号 CN200910228692.4 申请日期 2009.11.25
申请人 南开大学 发明人 康宏;袁晓洁;黄晓骋;官莹;孙博实
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 天津佳盟知识产权代理有限公司 12002 代理人 侯力
主权项 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锁:意向锁IX锁:节点级排他锁T锁:子树级排他锁第2.1.2、逻辑锁:TA锁:表征节点的祖先有删除动作TD锁:表征节点的后裔有删除动作XD锁:表征节点的后裔有值更新动作第2.2、定义T/X表结构及查询函数以判定是否持有TA、TD、XD锁第2.2.1、一个存在于内存中的T表(X表)表示如下:T/X={id<sub>1</sub>,id<sub>2</sub>,id<sub>i</sub>…id<sub>n</sub>}其中id为事务中所操作的某节点N的智能ID;当且仅当节点N被加上T/X锁时,N的智能节点ID被记录到T表(X表)当中;第2.2.2、定义查询函数Scan():Scan:(ID<sub>n</sub>,m,v)→Boolean其中,m∈{T,X};v∈{ascend,descend};此函数将节点N的智能节点ID与T表(X表)中的智能节点ID进行比较,用来判断T表(X表)中是否含有N的祖先或者后裔;如果:·函数Scan(ID<sub>n</sub>,T,ascend)返回值为真,表明N的祖先存在删除操作,则判定N上逻辑持有锁TA·函数Scan(ID<sub>n</sub>,T,descend)返回值为真,表明N的后裔存在删除操作,则判定N上逻辑持有锁TD·函数Scan(ID<sub>n</sub>,X,descend)返回值为真,表明N的后裔存在修改值或者重命名操作,则判定N上逻辑持有锁XD第2.3、XML不同事务之间的各种锁的冲突相容矩阵定义根据2.1中对于锁的描述,制定了各种锁的冲突相容表<img file="F2009102286924C0000021.GIF" wi="800" he="646" />其中由I、T、X锁构成的冲突矩阵,是由真正加在节点上的锁构成的;这些锁通过锁管理器进行申请和释放;表中剩余的部分由TA、TD、XD逻辑锁构成,这些锁通过查询函数的返回值来表明是否被逻辑持有;第2.4、锁协议的制定第2.4.1、申请锁的规则:事务在执行任何一种操作的时候,必须根据操作的具体类型进行相应类型锁的申请;第2.4.2、冲突检测规则:当一个事务需要对不同的节点均需要加锁时,只要其中任何一个节点的锁没有被加上,就必须根据冲突矩阵,等待其锁的加上,之后再继续后续的更新操作;第2.4.3、每一个事务必须满足2PL协议,即在锁增长阶段申请锁,在锁缩减阶段释放锁;第2.5、XML数据并发控制方案的制定第2.5.1、采用多版本化协议实现只读事务与更新事务的并发控制第2.5.2、采用局部路径锁协议实现更新事务之间的并发控制。
地址 300071 天津市南开区卫津路94号