一种支持并发协同的离线数据版本冲突解决方法技术

技术编号:14482013 阅读:75 留言:0更新日期:2017-01-25 23:58
本发明专利技术提供了一种支持并发协同的离线数据版本冲突解决方法,该方法包括:接收来对数据库进行编辑的编辑请求;根据应用层的冲突出现概率采取相应的冲突解决方法来判断所述编辑请求是否存在冲突,并在确定没有冲突后根据所述编辑请求对所述数据库进行处理。当冲突发生频率较低时,本发明专利技术采取基于混合冲突检测的方式,这种混合式冲突检测方式可以有效缩短冲突检测的时间。当冲突发生频率较高时,本发明专利技术采取基于冲突避免的方式,写数据的用户需要首先获取相关表的编辑标签,这既避免了冲突,还支持离线应用的其他用户并发操作软件的其他模块。

【技术实现步骤摘要】

本专利技术属于计算机技术的软件开发领域,具体涉及一种支持并发协同的离线数据版本冲突解决方法
技术介绍
随着信息技术的飞速发展,多人并发操作模式已经被越来越多的软件所支持。并发是指允许多用户对同一数据进行访问和更改,而冲突是并发操作时一种常见的数据不一致现象。采用串行方式可以避免冲突,但对于冲突发生频率低的应用,串行执行程序又牺牲了太多效率。因此如何解决并发所带来的版本冲突问题、效率问题,日益成为软件开发领域研究的热点课题。处理并发问题有两个层面:数据库层和应用层。现有的商业数据库普遍支持基于事务的并发。事务是用户定义的一个数据库操作序列,这些操作要么全部都做,要么全部都不做,是一个不可分割的工作单元。当多个事务并发执行的时候,需要避免丢失修改、不可重复读、读脏数据等数据不一致和数据冲突问题。主流数据库通过设置隔离级别,可以解决事务并发中的冲突问题和效率问题。对于应用层的并发控制,主要有冲突避免和冲突检测两种方案。冲突避免,也称为悲观冲突解决方案,它是在可能存在并发冲突的情况下,通过同一时间只允许一个用户进行编辑的方式规避冲突,常见的形式是给数据库表上锁。冲突检测,也称为乐观冲突解决方案,它是在已经发生了冲突的情况下,对冲突进行检测,并通知用户冲突的发生,通常使用时间戳技术实现。
技术实现思路
然而,数据库虽然支持事务的并发,但并不能解决事务之上应用层的并发问题。而且,给数据库表上锁的冲突避免方式适合在线模式的应用,即每次需要操作数据的时候才从数据库读取数据,但对于离线模式的应用,即软件先读取数据库,加载相关的内容,再在离线状态下更改数据,最后提交到数据库应用,给数据库表直接上锁,会导致同一时间只有一个用户可以使用软件,软件失去了并发性。对于传统冲突检测模式,当数据表的记录数非常多的时候,每次判断内存时间戳和数据库时间戳是否一致,牺牲了效率。因此,本专利技术提供了一种灵活性更强,效率更高,适应离线并发应用的支持并发协同的离线数据版本冲突解决方法。为了解决上述技术问题,本申请的实施例首先提供了一种支持并发协同的离线数据版本冲突解决方法,该方法包括:接收来对数据库进行编辑的编辑请求;根据应用层的冲突出现概率采取相应的冲突解决方法来判断所述编辑请求是否存在冲突,并在确定没有冲突后根据所述编辑请求对所述数据库进行处理。优选地,在应用层的冲突出现概率低时,判断所述编辑请求是否存在集控式冲突,其中,所述集控式冲突是一种表粒度级别的冲突,若不存在所述集控式冲突,则根据所述编辑请求对所述数据库进行处理;若存在所述集控式冲突,则进一步判断所述编辑请求是否存在分散式冲突,其中,所述分散式冲突是一种记录粒度级别的冲突,若存在所述分散式冲突,则判断所述编辑请求存在冲突;若不存在所述分散式冲突,则根据所述编辑请求对所述数据库进行处理。优选地,在判断所述编辑请求是否存在集控式冲突的步骤中,根据所述编辑请求确定对应的表在数据库的时间戳和数据库操作类型,所述数据库操作类型包括插入操作、更新操作和删除操作;根据所述数据库操作类型判断是否需要判断冲突;其中,若需要判断冲突,则判断表在数据库的时间戳与该表在内存中的时间戳是否一致,若不一致则判断存在集控式冲突。优选地,在根据所述数据库操作类型判断是否需要判断冲突的步骤中,在两方编辑请求中,若其中一方编辑请求中的数据库操作类型为插入操作,则无需判断是否冲突;否则需要判断是否发生冲突。优选地,在判断所述编辑请求是否存在分散式冲突的步骤中,根据所述编辑请求确定对应的记录在数据库的时间戳和在内存的时间戳;判断该记录在数据库的时间戳和在内存的时间戳是否一致,若不一致则判断存在分散式冲突。优选地,在应用层的冲突出现概率高时,对所述编辑请求对应的数据库进行锁定,若锁定成功则根据所述编辑请求对所述数据库进行处理,否则判断所述编辑请求存在冲突。优选地,若请求为数据库查询请求时,则判断缓存中是否存储有相应的数据库查询结果,如果有则获取所述数据库查询结果,否则通过查询相应的数据库来获取数据库查询结果,其中,将数据库历史的查询语句和查询结果相关联地存储在所述缓存中。优选地,在判断缓存中是否存储有相应的数据库查询结果的步骤中,根据数据库历史的查询语句判断所述缓存中是否存在相应的数据库的表名,若存在则判断该表名是否被标记过期,若该表名未被标记过期则获取与之对应的数据库查询结果。优选地,若该表名被标记过期,则将通过查询相应的数据库来获取的数据库查询结果发送至所述缓存中用来更新过期的数据库查询结果,并取消过期标记。与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果。本专利技术提出了一套应用层数据版本冲突的解决方法,当冲突出现概率较低时,采取基于混合冲突检测的方法,SQL请求首先进行集控式冲突检测,之后进行分散式冲突检测,当数据表记录数很多时,前者的检测效率明显优于后者,因此这种混合式冲突检测方式可以有效缩短冲突检测的时间;当冲突出现概率较高时,采取基于冲突避免的方式,写数据的用户需要首先获取相关表的编辑标签,这既避免了冲突,还支持离线应用的其他用户并发操作软件的其他模块。此外,本专利技术还提供了一套缓存机制,避免不必要的数据库查询,提高查询请求处理效率。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术的技术方案而了解。本专利技术的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构和/或流程来实现和获得。附图说明附图用来提供对本申请的技术方案或现有技术的进一步理解,并且构成说明书的一部分。其中,表达本申请实施例的附图与本申请的实施例一起用于解释本申请的技术方案,但并不构成对本申请技术方案的限制。图1为本申请实施例的支持并发协同的离线数据版本冲突解决方法的流程示意图。图2为本申请实施例的支持并发协同的离线数据版本冲突解决方法的另一流程示意图。具体实施方式以下将结合附图及实施例来详细说明本专利技术的实施方式,借此对本专利技术如何应用技术手段来解决技术问题,并达成相应技术效果的实现过程能充分理解并据以实施。本申请实施例以及实施例中的各个特征,在不相冲突前提下可以相互结合,所形成的技术方案均在本专利技术的保护范围之内。另外,附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本专利技术提出了一种支持并发协同的数据版本冲突的解决方法,数据库服务器接收来自客户端的对数据库进行编辑的编辑请求,数据库服务器根据应用层的冲突出现概率采取相应的冲突解决方法来判断编辑请求是否存在冲突,并在确定没有冲突后根据编辑请求对所述数据库进行处理。具体来说,对于并发程度不高,冲突出现概率较低的应用层,比如中小企业内部使用的企业级应用使用基于冲突检测的数据版本冲突解决方法。对于并发程度高,冲突出现概率较高的应用层,比如海量用户的互联网应用使用基于冲突避免的数据版本冲突解决方法。并且,在这两个方案中都使用了缓冲服务器来提高查询效率。本领域技术人员根据需要可以设定应用层冲突出现概率的高低,进而选择相应的方案,对于冲突出现概率的高低的判断,本专利技术对此不作限定。图1为本申请实施例的支本文档来自技高网...
一种支持并发协同的离线数据版本冲突解决方法

【技术保护点】
一种支持并发协同的离线数据版本冲突解决方法,该方法包括:接收来对数据库进行编辑的编辑请求;根据应用层的冲突出现概率采取相应的冲突解决方法来判断所述编辑请求是否存在冲突,并在确定没有冲突后根据所述编辑请求对所述数据库进行处理。

【技术特征摘要】
1.一种支持并发协同的离线数据版本冲突解决方法,该方法包括:接收来对数据库进行编辑的编辑请求;根据应用层的冲突出现概率采取相应的冲突解决方法来判断所述编辑请求是否存在冲突,并在确定没有冲突后根据所述编辑请求对所述数据库进行处理。2.根据权利要求1所述的方法,其特征在于,在应用层的冲突出现概率低时,判断所述编辑请求是否存在集控式冲突,其中,所述集控式冲突是一种表粒度级别的冲突,若不存在所述集控式冲突,则根据所述编辑请求对所述数据库进行处理;若存在所述集控式冲突,则进一步判断所述编辑请求是否存在分散式冲突,其中,所述分散式冲突是一种记录粒度级别的冲突,若存在所述分散式冲突,则判断所述编辑请求存在冲突;若不存在所述分散式冲突,则根据所述编辑请求对所述数据库进行处理。3.根据权利要求2所述的方法,其特征在于,在判断所述编辑请求是否存在集控式冲突的步骤中,根据所述编辑请求确定对应的表在数据库的时间戳和数据库操作类型,所述数据库操作类型包括插入操作、更新操作和删除操作;根据所述数据库操作类型判断是否需要判断冲突;其中,若需要判断冲突,则判断表在数据库的时间戳与该表在内存中的时间戳是否一致,若不一致则判断存在集控式冲突。4.根据权利要求3所述的方法,其特征在于,在根据所述数据库操作类型判断是否需要判断冲突的步骤中,在两方编辑请求中,若其中一方编辑请求中的数据库操作类型...

【专利技术属性】
技术研发人员:张桓盛秀杰曹晋彭成
申请(专利权)人:中国石油化工股份有限公司中国石油化工股份有限公司石油勘探开发研究院
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1