处理数据任务中的数据冲突检测方法及服务器技术

技术编号:14277587 阅读:43 留言:0更新日期:2016-12-24 20:24
本申请提供了处理数据任务中的冲突检测方法及服务器,其中一种方法应用于消息中心服务器,包括:响应于数据处理服务器发送的、当前结构化查询语言SQL脚本的第一锁请求列表,生成第二锁请求列表;根据预先设置的冲突检测规则和所述第二锁请求列表,检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突。本申请实施例中,通过引入锁的第二请求列表以及建立以实例为单位的心跳机制与锁冲突的消息通知机制,有效降低了锁请求的个数,减少了锁机制带来的访问压力,提升了锁的请求响应,还能方便用户查看哪些SQL产生的实例自己的SQL产生的实例执行冲突。

【技术实现步骤摘要】

本申请涉及互联网数据处理
,特别涉及处理数据任务中的数据冲突检测方法、数据处理服务器及消息中心服务器。
技术介绍
随着移动互联网、物联网等应用的飞速发展,全球数据量正在以极快的速度膨胀式增长。大数据时代的信息爆炸,尤其是非结构化数据的爆炸性增长,正在深刻影响着整个数据存储和分析领域。在企业数据分析处理过程中,通常每天执行的数据挖掘任务都会成百上千,甚至达到上万,并且存在大量跨部门的数据分析,虽然有统一的任务调度中心,但调度任务涉及到几万个节点,各个节点关系和任务关系都错综复杂。例如,有依赖关系配置错误,大量手工误输入的SQL脚本的执行请求,大量诸如跨集群的数据复制、垃圾回收、小文件合并等等的后台服务进程。因此,在不同的数据分析处理任务中经常存在SQL脚本执行冲突的问题,例如,报文件不存在错误(FileNotFound)或者数据已经被修改(Data changed while reading)等等。
技术实现思路
为了解决脚本执行冲突导致的数据处理效率低下和计算资源浪费的问题,可以针对具体的数据表或者数据表的具体分区来设置锁类型,例如,当用户A存在SQL脚本执行过程中对数据表分区A的读操作时,则设置该数据表分区A锁定,其他用户无法对该数据表分区A进行操作,直至用户A对数据表分区A的读操作执行完毕。但是专利技术人在研究过程中发现,现有技术中设置的锁的粒度到具体的表或者表的具体分区,而通常一个数据表表如果有上万个分区,则需要上万个锁,使得锁的个数很大,锁的管理还包括了加锁、解锁以及锁
的心跳,这样就会消耗更多的系统资源;进一步的,现有技术也无法获取到其他产生冲突的SQL脚本的详细信息,例如,跟哪一个SQL脚本冲突了,以及无法确定冲突原因;另外,现有技术中只有读锁,共享写锁和排他写锁这三种类型,锁类型比较单一也使得针对同一个数据表的操作无法支持大并发的读写访问。基于此,本申请所要解决的技术问题是提供一种处理数据任务中的冲突检测方法,用以尽量避免现有技术在解决SQL脚本执行冲突过程中导致的过多消耗系统资源的技术问题,同时还能定位SQL脚本执行冲突的原因和详细信息,从而支持对于数据库的大并发的读写访问。本申请还提供了消息中心服务器和数据处理服务器,用以保证上述方法在实际中的实现及应用。为了解决上述问题,本申请公开了一种处理数据任务中的冲突检测方法,应用于数据处理服务器,包括:响应于用户触发的当前数据处理任务,获取所述当前数据处理任务中的当前结构化查询语言SQL脚本;依据所述当前SQL脚本生成第一锁请求列表,所述第一锁请求列表包括:所述当前SQL脚本产生的当前实例的标识,第一锁请求对象和第一锁请求类型;其中,所述第一锁请求对象用于表示执行所述当前实例所涉及的初始虚拟路径,所述第一锁请求类型用于表示所述当前实例所涉及的初始操作类型;将所述第一锁请求列表发送至与所述请求数据处理服务器相连的消息中心服务器,以便所述消息中心服务器根据所述第一锁请求列表生成第二锁请求列表,并根据预先设置的冲突检测规则和所述第二锁请求列表检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突。本申请还公开了另一种处理数据任务中的冲突检测方法,应用于消息中心服务器,包括:响应于数据处理服务器发送的、当前结构化查询语言SQL脚本的第一锁请求列表,生成第二锁请求列表;其中,所述锁请求列表包括:锁请求对象和与所述锁请求对象对应的锁请求类型,所述锁请求对象用于
表示执行所述当前SQL脚本产生的当前实例所涉及的虚拟路径,所述锁请求类型用于表示在每个所述虚拟路径上都涉及哪些操作类型;根据预先设置的冲突检测规则和所述第二锁请求列表,检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突。本申请公开了一种消息中心服务器,包括:生成第二锁请求列表模块,用于响应于数据处理服务器发送的、当前结构化查询语言SQL脚本的第一锁请求列表,生成第二锁请求列表;其中,所述锁请求列表包括:锁请求对象和与所述锁请求对象对应的锁请求类型,所述锁请求对象用于表示执行所述当前SQL脚本产生的当前实例所涉及的虚拟路径,所述锁请求类型用于表示在每个所述虚拟路径上都涉及哪些操作类型;检测模块,用于根据预先设置的冲突检测规则和所述第二锁请求列表,检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突。本申请还公开了一种数据处理服务器,包括:获取脚本模块,用于响应于用户触发的当前数据处理任务,获取所述当前数据处理任务中的当前结构化查询语言SQL脚本;生成第一锁请求列表模块,用于依据所述当前SQL脚本生成第一锁请求列表,所述第一锁请求列表包括:所述当前SQL脚本产生的当前实例的标识,第一锁请求对象和第一锁请求类型;其中,所述第一锁请求对象用于表示执行所述当前实例所涉及的初始虚拟路径,所述第一锁请求类型用于表示所述当前实例所涉及的初始操作类型;发送模块,用于将所述第一锁请求列表发送至与所述请求数据处理服务器相连的消息中心服务器,以便所述消息中心服务器根据所述第一锁请求列表生成第二锁请求列表,并根据预先设置的冲突检测规则和所述第二锁请求列表检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突。与现有技术相比,本申请包括以下优点:在本申请实施例中,锁请求对象采用了虚拟路径的形式,即,本实施例中的锁是针对某个路径而设置的,因此,有效减少了锁请求的个数,
同时建立以实例为单位的心跳机制,因而减少了锁机制带来的对服务器请求的访问压力;并且,本申请实施例中建立锁冲突的消息通知机制,提升冲突场景下的锁的响应速度;进一步的,还可以在存在冲突的情况下,将冲突的实例标识返回给数据处理服务器,方便用户查看哪些SQL产生的实例自己的SQL产生的实例执行冲突了,用户后续就可以自己协商解决SQL执行冲突的问题。当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有优点。附图说明为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本申请的处理数据任务中的冲突检测方法实施例1的流程图;图2是本申请的方法实施例的应用场景的结构图;图3是本申请的处理数据任务中的冲突检测方法实施例2的流程图;图4是本申请的消息中心服务器的结构示意图;图5是本申请的数据处理服务器的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。本申请可用于众多通用或专用的计算装置环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器装置、包括以上任何装置或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描
述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据本文档来自技高网
...
<a href="http://www.xjishu.com/zhuanli/55/201510163424.html" title="处理数据任务中的数据冲突检测方法及服务器原文来自X技术">处理数据任务中的数据冲突检测方法及服务器</a>

【技术保护点】
一种处理数据任务中的冲突检测方法,其特征在于,应用于消息中心服务器,包括:响应于数据处理服务器发送的、当前结构化查询语言SQL脚本的第一锁请求列表,生成第二锁请求列表;其中,所述锁请求列表包括:锁请求对象和与所述锁请求对象对应的锁请求类型,所述锁请求对象用于表示执行所述当前SQL脚本产生的当前实例所涉及的虚拟路径,所述锁请求类型用于表示在每个所述虚拟路径上都涉及哪些操作类型;根据预先设置的冲突检测规则和所述第二锁请求列表,检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突。

【技术特征摘要】
1.一种处理数据任务中的冲突检测方法,其特征在于,应用于消息中心服务器,包括:响应于数据处理服务器发送的、当前结构化查询语言SQL脚本的第一锁请求列表,生成第二锁请求列表;其中,所述锁请求列表包括:锁请求对象和与所述锁请求对象对应的锁请求类型,所述锁请求对象用于表示执行所述当前SQL脚本产生的当前实例所涉及的虚拟路径,所述锁请求类型用于表示在每个所述虚拟路径上都涉及哪些操作类型;根据预先设置的冲突检测规则和所述第二锁请求列表,检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突。2.根据权利要求1所述的方法,其特征在于,所述第一锁请求列表中的第一锁请求类型包括:读类型、共享写类型和排他写类型;相应的,所述响应于数据处理服务器发送的、当前SQL脚本的第一锁请求列表,生成第二锁请求列表,包括:从所述第一锁请求列表中获取第一锁请求对象,以及每个第一锁请求对象涉及的读类型、共享写类型和/或排他写类型;其中,所述第一锁请求对象用于表示执行所述当前SQL脚本产生的当前实例所涉及的初始虚拟路径;依据所述初始虚拟路径生成所述第二锁请求对象,以及,将所述第一锁请求类型转化为与第二锁请求对象对应的第二锁请求类型;其中,所述第二锁请求类型包括:共享读锁类型、共享写锁类型、读脏类型、写脏类型和排它锁类型;所述第二锁请求对象用于表示执行所述当前SQL脚本产生的当前实例所涉及的最终虚拟路径,且所述最终虚拟路径为所述初始虚拟路径的全部子集。3.根据权利要求2所述的方法,其特征在于,所述根据预先设置的冲突检测规则,依据所述第二锁请求列表检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突,包括:获取预先设置好的所述共享读锁、共享写锁、读脏、写脏和排它锁之间的互斥关系;依据所述互斥关系,针对同一个第二锁请求对象,判断执行所述当前实例涉及的第二锁访问类型和执行其他实例涉及的第二锁访问类型是否冲突。4.根据权利要求3所述的方法,其特征在于,还包括:在判断结果为冲突的情况下,获取产生冲突的第二锁访问类型对应的冲突锁请求对象,将所述冲突锁请求对象对应的其他实例的标识添加至所述当前实例的锁依赖列表中,所述锁依赖列表用于表示所述当前实例的执行时间在所述其他实例执行完毕之后;以及,将所述当前实例的标识添加至所述其他实例的锁通知列表中,所述锁通知列表用于表示所述其他实例执行之后需要通知所述当前实例执行;在判断结果为不冲突的情况下,将所述不冲突的结果返回至所述数据处理服务器,以便数据处理服务器立即执行所述当前实例。5.根据权利要求1所述的方法,其特征在于,还包括:响应于所述数据处理服务器发送的、与所述当前实例对应的心跳消息,判断所述心跳消息的发送间隔时间是否超过预设的心跳超时阈值,如果是,则从所述第二锁请求列表中删除所述当前实例对应的所有锁请求对象和所有锁请求类型。6.根据权利要求1所述的方法,其特征在于,还包括:响应于所述数据处理服务器发送的、所述当前实例的注销锁请求,从所述第二锁请求列表中删除所述当前实例对应的所有锁请求对象和所有锁请求类型。7.一种处理数据任务中的冲突检测方法,其特征在于,应用于数据处理服务器,该方法包括:响应于用户触发的当前数据处理任务,获取所述当前数据处理任务中的当前结构化查询语言SQL脚本;依据所述当前SQL脚本生成第一锁请求列表,所述第一锁请求列表包括:所述当前SQL脚本产生的当前实例的标识,第一锁请求对象和第一锁请求类型;其中,所述第一锁请求对象用于表示执行所述当前实例
\t所涉及的初始虚拟路径,所述第一锁请求类型用于表示所述当前实例所涉及的初始操作类型;将所述第一锁请求列表发送至与所述请求数据处理服务器相连的消息中心服务器,以便所述消息中心服务器根据所述第一锁请求列表生成第二锁请求列表,并根据预先设置的冲突检测规则和所述第二锁请求列表检测所述当前实例是否与其他SQL脚本产生的其他实例执行冲突。8.根据权利要求7所述的方法,其特征在于,在所述当前实例的执行过程中,还包括:向所述消息中心服务器发送与所述当前实例对应的心跳消息,所述信心跳消息用于表示所述当前实例正在执行。9.根据权利要求7所述的方法,其特征在于,所述消息中心服务器中保存有依据所述第一锁请求列表生成的第二锁请求列表,所述第二锁请求列表包括第二锁请求对象和第二锁请求类型;则所述方法还包括:向所述消息中心服务器发送注销锁请求,所述注销锁请求用于请求所述消息中心服务器在所述第二锁请求列表中删除所述当前实例对应的第二锁请求对象和第二锁请求类型。10.一种消息中心服务器,其特征在于,包括:生成第二锁请求列表模块,用于响应于数据处理服务器发送...

【专利技术属性】
技术研发人员:乔平吴鸣刚
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

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

1