基于变更代码的数据表确定方法以及装置与流程

文档序号:19634844发布日期:2020-01-07 11:53阅读:205来源:国知局
本说明书实施例涉及数据处理
技术领域
:,特别涉及一种基于变更代码的数据表确定方法。本说明书一个或者多个实施例同时涉及一种基于变更代码的数据表确定装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
::随着互联网的发展,数据量激增,为了不影响数据的读写效率,对于数据的存储越来越多样化,也越来越具有层次性,比如,有面向业务的可进行交互的线上的数据表,也有面向存储的离线的数仓表。有时研发人员针对应用进行代码更新时,会改变线上的数据表的结构,然而其做出这种改变时,并没有意识到这些改变会导致数据对应的离线的数仓表出现数据错误,并最终导致应用上线之后发生故障,因此,针对确定研发人员提交的变更代码对数据表的影响,需要提供更快速或者更可靠的方案。技术实现要素:有鉴于此,本说明书实施例提供了一种基于变更代码的数据表确定方法。本说明书一个或者多个实施例同时涉及一种基于变更代码的数据表确定装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。根据本说明书实施例的第一方面,提供了一种基于变更代码的数据表确定方法,包括:在接收到针对应用提交的更新请求的情况下,获取针对所述应用提交的变更代码;根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口;在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表。可选的,所述根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口,包括:将所述变更代码按照变更类型分为代码类型以及非代码类型;获取所述代码类型对应的代码在代码变更文件中对应的代码变更行号列表;基于所述代码所在的所述代码变更文件以及所述代码变更行号列表确定所述代码所属的代码变更方法列表;将所述代码变更行号列表、代码变更方法列表以及所述非代码类型对应的变更信息进行组装生成变更结构;将所述变更结构与解析所述目标代码文件获得的所述应用的应用方法之间的调用关系结构进行匹配,获得所述变更代码对应的所述变更数据库层接口。可选的,所述数据库层接口与数据表之间的映射关系,采用如下方式确定:通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识;将针对基于所述目标代码文件中sql配置文件解析出的sql语句生成的抽象语法树进行遍历,获得所述sql语句对应的sql语句标识以及数据表;通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系。可选的,所述通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识步骤执行之前,还包括:在接收到针对所述应用的注册请求的情况下,通过将所述应用的应用信息写入注册表的方式完成注册;通过消息监听器,监听解析所述映射关系的解析任务的触发消息;基于所述触发消息,根据所述注册表中的所述应用名称将所述目标代码文件拉取至目标服务器。可选的,所述通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系步骤执行之后,还包括:将所述映射关系以映射关系表的形式在数据库进行存储;所述在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表步骤执行之前,在所述数据库中读取所述映射关系表。可选的,所述变更请求包括:所述应用的应用名称、代码仓库地址、起始代码版本、目标代码版本;所述获取针对所述应用提交的变更代码,包括:在所述代码仓库地址指向的代码仓库中,获取在目标代码版本与起始代码版本之间与所述应用名称对应的变更代码。根据本说明书实施例的第二方面,提供了一种基于变更代码的数据表确定装置,包括:获取模块,被配置为在接收到针对应用提交的更新请求的情况下,获取针对所述应用提交的变更代码;确定模块,被配置为根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口;查找模块,被配置为在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表。可选的,所述确定模块,包括:分类子模块,被配置为将所述变更代码按照变更类型分为代码类型以及非代码类型;获取行号列表子模块,被配置为获取所述代码类型对应的代码在代码变更文件中对应的代码变更行号列表;确定方法列表子模块,被配置为基于所述代码所在的所述代码变更文件以及所述代码变更行号列表确定所述代码所属的代码变更方法列表;组装子模块,被配置为将所述代码变更行号列表、代码变更方法列表以及所述非代码类型对应的变更信息进行组装生成变更结构;获得接口子模块,被配置为将所述变更结构与解析所述目标代码文件获得的所述应用的应用方法之间的调用关系结构进行匹配,获得所述变更代码对应的所述变更数据库层接口。可选的,所述数据库层接口与数据表之间的映射关系,通过运行如下模块进行确定:反射模块,被配置为通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识;解析模块,被配置为将针对基于所述目标代码文件中sql配置文件解析出的sql语句生成的抽象语法树进行遍历,获得所述sql语句对应的sql语句标识以及数据表;映射模块,被配置为通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系。可选的,所述基于变更代码的数据表确定装置,还包括:注册模块,被配置为在接收到针对所述应用的注册请求的情况下,通过将所述应用的应用信息写入注册表的方式完成注册;监听模块,被配置为通过消息监听器,监听解析所述映射关系的解析任务的触发消息;拉取模块,被配置为基于所述触发消息,根据所述注册表中的所述应用名称将所述目标代码文件拉取至目标服务器。可选的,所述基于变更代码的数据表确定装置,还包括:存储模块,被配置为将所述映射关系以映射关系表的形式在数据库进行存储;读取模块,被配置为所述在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表步骤执行之前,在所述数据库中读取所述映射关系表。可选的,所述变更请求包括:所述应用的应用名称、代码仓库地址、起始代码版本、目标代码版本;所述获取模块,还被配置为在所述代码仓库地址指向的代码仓库中,获取在目标代码版本与起始代码版本之间与所述应用名称对应的变更代码。根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令:在接收到针对应用提交的更新请求的情况下,获取针对所述应用提交的变更代码;根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口;在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表。根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现任意一项所述基于变更代码的数据表确定方法的步骤。本说明书提供一种基于变更代码的数据表确定方法,包括:在接收到针对应用提交的更新请求的情况下,获取针对所述应用提交的变更代码;根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口;在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表。本说明书一个实施例实现了,在确定针对应用的变更代码之后,进一步确定变更代码对应的变更数据库层接口,并在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表,实现了对变更代码对应的变更数据表的确定,在变更代码上线之前,可以有针对性的了解其影响的数据表,在变更代码上线之后,也可以快速定位出现错误的数据表。附图说明图1是本说明书一个实施例提供的一种基于变更代码的数据表确定方法的流程图;图2是本说明书一个实施例提供的一种应用于java应用的基于变更代码的数据表确定方法的处理流程图;图3是本说明书一个实施例提供的一种基于变更代码的数据表确定装置的结构示意图;图4是本说明书一个实施例提供的一种计算设备的结构框图。具体实施方式在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。在本说明书中,提供了一种基于变更代码的数据表确定方法,本说明书一个或者多个实施例同时涉及一种基于变更代码的数据表确定装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。本说明书提供的一种基于变更代码的数据表确定方法实施例如下:图1示出了根据本说明书一个实施例提供的一种基于变更代码的数据表确定方法的流程图,包括步骤s102至步骤s106。步骤s102,在接收到针对应用提交的更新请求的情况下,获取针对所述应用提交的变更代码。所述应用,是指可以在电子设备上运行的应用,此应用具有对应的代码文件,这些代码文件保存了编程语言编写的代码,而这些代码文件中的代码实现了代码文件对应的应用中的功能,具体的,此应用可以是java应用、c语言应用、c++语言应用等,本说明实施例以java应用为例进行说明,c语言应用、c++语言应用的具体实现与java应用的具体实现类似,参照java应用的具体实现即可,在此不再赘述。所述更新请求,可以是针对应用对应的代码文件中的代码进行更新的更新请求,也可以是完成一个迭代周期内代码更新的完成阶段请求,实际应用中,一个应用上线后,研发人员还需要对应用中存在的一些缺陷进行修复,或者基于这个应用新的需求进行新功能研发,这些修复或者新功能上线都需要进行对此应用进行代码的更新,而这些更新通常不是一次性上线就可以完成,而是需要分为多次,或者持续周期性地对此应用的代码进行更新上线,这一过程即为代码迭代的过程;通常完成一个迭代阶段的代码更新后,会针对这一迭代阶段提交完成阶段请求,在接收到这一完成阶段请求的情况下,基于此完成阶段请求获取针对此应用在这一迭代阶段的更新代码。可选的,所述变更请求包括:所述应用的应用名称、代码仓库地址、起始代码版本、目标代码版本。其中,所述代码仓库地址是指存放应用的代码文件的地址,通过此地址可以获取应用的代码文件;所述起始代码版本,可以是在当前迭代阶段初始时应用代码对应的版本标识;所述目标代码版本,提交更新请求时,应用代码对应的版本标识,具体的,通过更新请求所携带的以上这些请求信息,可以获取针对所述应用提交的变更代码。实际应用中,当研发人员针对某一应用完成一个迭代阶段的代码研发时,会通过迭代生命周期管理平台将自己在这一迭代阶段所研发的代码进行提交,而这些所研发的代码即变更代码可以是在此应用中原有代码的基础上进行的代码的增加、代码的修改或者代码的删除;具体的,迭代生命周期管理平台负责每个迭代的研发管理以及发布流程,并由其针对接入数据变更管控平台的应用的迭代发起变更通知;数据变更管控平台,负责衔接迭代生命周期管理平台发起的变更请求,以及与代码配置运维资产管理平台的结果查询,并向用户做最终展示;而代码配置运维资产管理平台负责管控可能引起故障的代码、配置、运维变更;此外,还有sql解析模块,用来针对应用解析出这个应用后端的数据库层接口与其对应的数据表之间的映射关系,具体实施时,这些平台和模块之间通过请求或调用彼此配合,进一步确定在应用中变更代码所影响的数据表。进一步,在更新请求包括:所述应用的应用名称、代码仓库地址、起始代码版本、目标代码版本的基础上,本说明书实施例提供的一种可选实施方式中,所述获取针对所述应用提交的变更代码,具体采用如下方式实现:在所述代码仓库地址指向的代码仓库中,获取应用代码版本在目标代码版本与起始代码版本之间与所述应用名称对应的变更代码。具体实施时,在一个迭代阶段中针对应用提交过多次代码修改,每一次代码修改会对应一个应用代码版本号,因此获取应用代码版本在目标代码版本与起始代码版本之间变更代码即为变更请求对应的针对应用提交的变更代码。以某一java应用为例,java应用的应用名称为app03,针对此应用的更新请求包括以下信息:应用名称app03,代码仓库地址:server01/build,起始代码版本为:version0005,目标代码版本为version0008,在接收到此更新请求的情况下,在代码仓库地址server01/build指向的代码仓库中server01下的build目录下,获取目标代码版本version0008与起始代码版本version0005之间针对java应用app03的代码所提交的变更代码。本说明书实施例,通过在所述代码仓库地址指向的代码仓库中,获取应用代码版本在目标代码版本与起始代码版本之间与所述应用名称对应的变更代码,为后续确定变更代码对应的变更数据表提供了数据基础。步骤s106,根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口。具体实施时,在上述获取到变更代码的基础上,确定变更代码在变更文件中对应的变更行号,并进一步确定变更行号所属的变更方法,然后从解析出的应用方法与数据库层接口之间的调用关系中,查找变更方法调用的数据库层接口作为变更数据库层接口。具体的,所述变更数据库层接口,是指变更代码对应变更方法调用的数据层的方法,此方法会直接对数据表进行操作,实际应用中,变更数据库层接口可以是dao层接口,且应用中上游方法和下游方法存在调用关系,有的是直接调用,而有些是间接调用即在存在调用关系的方法之间存在很多层方法调用,比如,方法a与调用数据库层接口d之间存在调用关系,但不是方法a直接调用数据库层接口d,而是方法a调用了方法b,方法b调用了方法c,方法c调用了数据库层接口d。本说明书实施例提供的一种可选实施方式中,所述根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口,具体采用如下方式实现:将所述变更代码按照变更类型分为代码类型以及非代码类型;获取所述代码类型对应的代码在代码变更文件中对应的代码变更行号列表;基于所述代码所在的所述代码变更文件以及所述代码变更行号列表确定所述代码所属的代码变更方法列表;将所述代码变更行号列表、代码变更方法列表以及所述非代码类型对应的变更信息进行组装生成变更结构;将所述变更结构与解析所述目标代码文件获得的所述应用的应用方法之间的调用关系结构进行匹配,获得所述变更代码对应的所述变更数据库层接口。所述变更类型,具体的,可以分为代码类型或者非代码类型,其中,代码类型对应的代码可以是应用中代码文件中的java代码,c语言代码等,在此不做限制,非代码类型对应的信息可以是应用中除代码类型之外其他配置文件中的配置信息或者其他文件中的变更信息。所述代码变更文件,可以是变更代码中变更类型为代码类型对应的代码所在的代码文件;所述代码变更行号列表,可以是上述代码在代码变更文件中的行号的集合,此行号集合以列表的形式进行展示,比如将对代码的增加,增加的代码在代码变更文件file05中对应的增加行号列表为addlinelist={3,6,17},对代码的删除,删除的代码在代码变更文件file05中对应的删除行号列表为deletelinelist={4,9},还有对代码的修改,修改的代码在代码变更文件file05中对应的修改行号列表为modifiedlinelist={2,10}。此外,还有变更方法列表,可以是通过代码变更行号列表以及代码变更文件列表确定的变更方法的集合,此方法集合以对象列表的方法进行展示,比如,通过上述代码变更行号列表中的增加行号3以及上述代码变更文件file05可以确定增加行号3所对应的代码在代码变更文件file05中所属的变更方法为function11,以及通过上述代码变更行号列表中的删除行号9以及上述代码变更文件file05可以确定删除行号9所对应的代码在代码变更文件file05中所属的变更方法为function23,还有其他确定的变更方法,集合在一起组成变更方法列表functionlist={function11,function23,……};此外,变更方法列表还可以包括其他属性,比如functionlist={name=function11,parameters=0;name=function23,parameters=5;……}所述目标代码文件,可以是应用的代码文件中的一部分或者是全部代码文件,在此不做限制,以java应用为例,此目标代码文件可以是应用的服务接口层(core)以及依赖(lib)jar(javaarchive,java归档文件)包。实际应用中,因为需要根据变更代码对应的变更方法在解析获得的方法与数据库层接口之间的调用关系中查找与更新方法对应的数据库层接口即需要通过将生成的变更结构与解析获得的调用关系结构进行匹配,获得变更代码对应的所述变更数据库层接口,因此在确定代码变更行号列表、代码变更方法列表以及所述非代码类型对应的变更信息之后,需要对这些信息按照预先解析出的调用关系结构的结构组成进行组装,以使匹配双方的结构是一致的,以便得到匹配结果。具体实施时,解析所述目标代码文件获得的所述应用的应用方法之间的调用关系结构,可以通过字节码工程库(bytecodeengineeringlibrary,bcel)对目标代码文件进行解析,获得目标代码文件中应用方法的调用关系结构,并将调用关系结构存储至数据库,且通过定时任务来触发进行周期性解析以使此调用关系被不断更新。本说明书实施例,通过将变更代码分为代码类型和非代码类型,针对代码类型对应的代码获取代码在代码更新文件中的变更行号列表,并结合以及变更方法列表,确定代码所属的代码变更方法列表,并将所述代码变更行号列表、代码变更方法列表以及非代码类型对应的变更信息进行组装生成变更结构;进一步将此变更结构与解析目标代码文件获得的所述应用的应用方法之间的调用关系结构进行匹配,获得变更代码对应的变更数据库层接口,为进一步确定变更数据库层接口对应的变更数据表提供了基础。步骤s108,在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表。所述变更数据表,是指可能被变更代码影响到的数据表,实际应用中,通过对变更代码对应的数据表的确定可以防止因变更代码对数据表结构的修改而导致数据表对应的离线的数仓表出现错误,进而避免应用因上述修改陷入故障。具体的,所述解析出的数据库层接口与数据表之间的映射关系,这个映射是针对应用的目标代码文件进行解析而获得的,实际应用中,由于应用的代码文件会被迭代更新,则应用中的目标代码文件也会出现更新,因此需对更新后的目标代码文件进行解析,进而获得更新的数据库层接口与数据表之间的映射关系。具体实施时,此映射关系可以通过定时任务对应用中的目标代码文件进行解析而获得,当解析完成后,原有的映射关系会被最新定时任务完成后获得的映射关系所更新,此映射关系也可通过手动触发对应用中的目标代码文件进行解析而获得,此外,还有其他的触发方式,在此不做限制。本说明书实施例提供的一种可选实施方式中,所述数据库层接口与数据表之间的映射关系,采用如下方式确定:通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识;将针对基于所述目标代码文件中sql配置文件解析出的sql语句生成的抽象语法树进行遍历,获得所述sql语句对应的sql语句标识以及数据表;通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系。所述对目标代码文件进行解析,以java应用为例,可以是通过java中的反射机制,获取目标代码文件中的方法以及属性,具体的方法,可以是在目标代码文件中继承这个java类的数据库层接口,属性可以是此数据库层接口关联的sql标识属性。所述sql配置文件,是指应用中目标代码文件中对应的sql配置文件,通过此sql配置文件可以解析获得sql配置文件中的sql语句,并生成这些sql语句的抽象语法树,通过遍历此抽象语法树,可以获得sql配置文件中sql语句对应的sql语句标识以及数据表,以java应用为例,此sql配置文件可以是sqlmap.xml文件。具体的,上述数据库层接口对应的sql标识,以及sql语句对应的sql语句标识都可以在此应用中唯一标识一条sql语句,将sql标识以及sql语句标识进行匹配,可以将数据库层接口与sql语句对应的数据表进行关联,建立数据库层接口与数据表之间的映射关系。以上述java应用为例,在目标代码文件中的其中一个代码文件file05中,通过java的反射机制,可以获得file05中对应的数据库层接口为datafunction2,此数据库层接口对应的sql标识为sql005,将针对基于所述目标代码文件中sql配置文件解析出的sql语句生成的抽象语法树进行遍历,获得所述sql语句为“select*fromtablea”,此sql语句对应的sql语句标识为sql005,数据表为tablea,通过数据库层接口对应的sql标识sql005与sql语句对应的sql语句标识为sql005进行关联,建立的数据库层接口与数据表之间的映射关系为数据库层接口datafunction2与数据表tablea之间的映射关系。本说明书实施例,通过对目标代码文件进行反射,获得目标代码文件中的数据库层接口,以及数据库层接口对应的sql标识,并将针对基于目标代码文件中sql配置文件解析出的sql语句生成的抽象语法树进行遍历,获得sql语句对应的sql语句标识以及数据表;通过sql标识以及sql语句标识将数据库层接口以及sql语句对应的数据表进行关联,建立数据库层接口与数据表之间的映射关系,为后续确定变更代码对应的变更数据库层接口对应的变更数据表提供了对比基础。本说明书实施例提供的一种可选实施方式中,在上述通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识步骤执行之前,还包括:在接收到针对所述应用的注册请求的情况下,通过将所述应用的应用信息写入注册表的方式完成注册;通过消息监听器,监听解析所述映射关系的解析任务的触发消息;基于所述触发消息,根据所述注册表中的所述应用名称将所述目标代码文件拉取至目标服务器。所述解析任务,是指上述根据目标代码文件解析出数据库层接口与数据表之间的映射关系的解析任务。实际应用中,在根据所述应用的目标代码文件解析出数据库层接口与数据表之间的映射关系之前,需要针对此应用先进行注册,并通过注册中包含的应用信息,具体的,这些应用信息可以是应用名称、代码仓库地址等,拉取应用的目标代码文件至目标服务器,进而在拉取到的目标代码文件的基础上根据目标代码文件解析出数据库层接口与数据表之间的映射关系。所述触发消息,是指对触发上述根据所述注册表中的所述应用名称将所述目标代码文件拉取至目标服务器步骤以及拉取到目标代码文件之后根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系的解析任务的触发消息,此解析任务可以是定时任务,也可以是基于某些条件的条件触发任务,在此不做限制。本说明书实施例,在接收到针对所述应用的注册请求的情况下,通过将所述应用的应用信息写入注册表的方式先完成注册,在完成注册的基础上,通过消息监听器,监听根据目标代码文件解析数据库层接口与数据表之间的映射关系的解析任务的触发消息,并基于所述触发消息,根据所述注册表中的所述应用名称将所述目标代码文件拉取至目标服务器,完成上述解析任务的预备工作,并可以通过触发消息根据业务需要设置解析任务的触发条件。本说明书实施例提供的一种可选实施方式中,在上述通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系步骤执行之后,还包括:将所述映射关系以映射关系表的形式在数据库进行存储;所述在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表步骤执行之前,在所述数据库中读取所述映射关系表。实际应用中,解析出根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系,需将此映射关系进行存储,以便执行在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表步骤之时,可以获取到此映射关系。本说明书实施例,将根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系以映射关系表的形式在数据库进行存储,以便在需要使用此映射关系时可以随时获取。下述结合附图2,以本说明书提供的基于变更代码的数据表确定方法在java应用中的应用为例,对所述基于变更代码的数据表确定方法进行进一步说明。其中,图2示出了本说明书一个实施例提供的一种应用于java应用的基于变更代码的数据表确定方法的处理流程图,具体步骤包括步骤s202至步骤s214。步骤s202,在接收到针对java应用提交的更新请求的情况下,获取针对所述java应用提交的变更代码。步骤s204,将所述变更代码按照变更类型分为java代码类型以及非java代码类型。步骤s206,获取所述java代码类型对应的java代码在代码变更文件中对应的代码变更行号列表。步骤s208,基于所述java代码所在的所述代码变更文件以及所述代码变更行号列表确定所述代码所属的代码变更方法列表。步骤s210,将所述代码变更行号列表、代码变更方法列表以及所述非代码类型对应的变更信息进行组装生成变更结构。步骤s212,将所述变更结构与解析所述目标代码文件获得的所述应用的应用方法之间的调用关系结构进行匹配,获得所述变更代码对应的所述变更数据库层接口。步骤s214,在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述java应用中对应的变更数据表。具体的,所述目标代码文件,可以是应用的服务接口层(core)以及依赖(lib)jar包。综上所述,本说明书一个实施例实现了,在确定针对应用的变更代码之后,进一步确定变更代码对应的变更数据库层接口,并在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表,实现了对变更代码对应的变更数据表的确定,在变更代码上线之前,可以有针对性的了解其影响的数据表,在变更代码上线之后,也可以快速定位出现错误的数据表。本说明书提供的一种基于变更代码的数据表确定装置实施例如下:与上述方法实施例相对应,本说明书还提供了基于变更代码的数据表确定装置实施例,图3示出了本说明书一个实施例提供的一种基于变更代码的数据表确定装置的结构示意图。如图3所示,该装置包括:获取模块302,被配置为在接收到针对应用提交的更新请求的情况下,获取针对所述应用提交的变更代码;确定模块304,被配置为根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口;查找模块306,被配置为在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表。可选的,所述确定模块304,包括:分类子模块,被配置为将所述变更代码按照变更类型分为代码类型以及非代码类型;获取行号列表子模块,被配置为获取所述代码类型对应的代码在代码变更文件中对应的代码变更行号列表;确定方法列表子模块,被配置为基于所述代码所在的所述代码变更文件以及所述代码变更行号列表确定所述代码所属的代码变更方法列表;组装子模块,被配置为将所述代码变更行号列表、代码变更方法列表以及所述非代码类型对应的变更信息进行组装生成变更结构;获得接口子模块,被配置为将所述变更结构与解析所述目标代码文件获得的所述应用的应用方法之间的调用关系结构进行匹配,获得所述变更代码对应的所述变更数据库层接口。可选的,所述数据库层接口与数据表之间的映射关系,通过运行如下模块进行确定:反射模块,被配置为通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识;解析模块,被配置为将针对基于所述目标代码文件中sql配置文件解析出的sql语句生成的抽象语法树进行遍历,获得所述sql语句对应的sql语句标识以及数据表;映射模块,被配置为通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系。可选的,所述基于变更代码的数据表确定装置,还包括:注册模块,被配置为在接收到针对所述应用的注册请求的情况下,通过将所述应用的应用信息写入注册表的方式完成注册;监听模块,被配置为通过消息监听器,监听解析所述映射关系的解析任务的触发消息;拉取模块,被配置为基于所述触发消息,根据所述注册表中的所述应用名称将所述目标代码文件拉取至目标服务器。可选的,所述基于变更代码的数据表确定装置,还包括:存储模块,被配置为将所述映射关系以映射关系表的形式在数据库进行存储;读取模块,被配置为所述在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表步骤执行之前,在所述数据库中读取所述映射关系表。可选的,所述变更请求包括:所述应用的应用名称、代码仓库地址、起始代码版本、目标代码版本;所述获取模块,还被配置为在所述代码仓库地址指向的代码仓库中,获取在目标代码版本与起始代码版本之间与所述应用名称对应的变更代码。上述为本实施例的一种基于变更代码的数据表确定装置的示意性方案。需要说明的是,该基于变更代码的数据表确定装置的技术方案与上述的基于变更代码的数据表确定方法的技术方案属于同一构思,基于变更代码的数据表确定装置的技术方案未详细描述的细节内容,均可以参见上述基于变更代码的数据表确定方法的技术方案的描述。本说明书提供的一种计算设备实施例如下:图4示出了根据本说明书一个实施例提供的一种计算设备400的结构框图。该计算设备400的部件包括但不限于存储器410和处理器420。处理器420与存储器410通过总线430相连接,数据库450用于保存数据。计算设备400还包括接入设备440,接入设备440使得计算设备400能够经由一个或多个网络460通信。这些网络的示例包括公用交换电话网(pstn)、局域网(lan)、广域网(wan)、个域网(pan)或诸如因特网的通信网络的组合。接入设备440可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(nic))中的一个或多个,诸如ieee802.11无线局域网(wlan)无线接口、全球微波互联接入(wi-max)接口、以太网接口、通用串行总线(usb)接口、蜂窝网络接口、蓝牙接口、近场通信(nfc)接口,等等。在本说明书的一个实施例中,计算设备400的上述部件以及图4中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图4所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。计算设备400可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或pc的静止计算设备。计算设备400还可以是移动式或静止式的服务器。本说明书提供一种计算设备,包括存储器410、处理器420及存储在存储器上并可在处理器上运行的计算机指令,所述处理器420用于执行如下计算机可执行指令:在接收到针对应用提交的更新请求的情况下,获取针对所述应用提交的变更代码;根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口;在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表。可选的,所述根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口,包括:将所述变更代码按照变更类型分为代码类型以及非代码类型;获取所述代码类型对应的代码在代码变更文件中对应的代码变更行号列表;基于所述代码所在的所述代码变更文件以及所述代码变更行号列表确定所述代码所属的代码变更方法列表;将所述代码变更行号列表、代码变更方法列表以及所述非代码类型对应的变更信息进行组装生成变更结构;将所述变更结构与解析所述目标代码文件获得的所述应用的应用方法之间的调用关系结构进行匹配,获得所述变更代码对应的所述变更数据库层接口。可选的,所述数据库层接口与数据表之间的映射关系,采用如下方式确定:通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识;将针对基于所述目标代码文件中sql配置文件解析出的sql语句生成的抽象语法树进行遍历,获得所述sql语句对应的sql语句标识以及数据表;通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系。可选的,所述通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识步骤执行之前,还包括:在接收到针对所述应用的注册请求的情况下,通过将所述应用的应用信息写入注册表的方式完成注册;通过消息监听器,监听解析所述映射关系的解析任务的触发消息;基于所述触发消息,根据所述注册表中的所述应用名称将所述目标代码文件拉取至目标服务器。可选的,所述通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系步骤执行之后,还包括:将所述映射关系以映射关系表的形式在数据库进行存储;所述在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表步骤执行之前,在所述数据库中读取所述映射关系表。可选的,所述变更请求包括:所述应用的应用名称、代码仓库地址、起始代码版本、目标代码版本;所述获取针对所述应用提交的变更代码,包括:在所述代码仓库地址指向的代码仓库中,获取在目标代码版本与起始代码版本之间与所述应用名称对应的变更代码。上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的基于变更代码的数据表确定方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述基于变更代码的数据表确定方法的技术方案的描述。本说明书提供的一种计算机可读存储介质实施例如下:本说明书提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时以用于:在接收到针对应用提交的更新请求的情况下,获取针对所述应用提交的变更代码;根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口;在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表。可选的,所述根据所述变更代码在变更文件中对应的变更行号,确定所述变更代码所属的变更方法调用的变更数据库层接口,包括:将所述变更代码按照变更类型分为代码类型以及非代码类型;获取所述代码类型对应的代码在代码变更文件中对应的代码变更行号列表;基于所述代码所在的所述代码变更文件以及所述代码变更行号列表确定所述代码所属的代码变更方法列表;将所述代码变更行号列表、代码变更方法列表以及所述非代码类型对应的变更信息进行组装生成变更结构;将所述变更结构与解析所述目标代码文件获得的所述应用的应用方法之间的调用关系结构进行匹配,获得所述变更代码对应的所述变更数据库层接口。可选的,所述数据库层接口与数据表之间的映射关系,采用如下方式确定:通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识;将针对基于所述目标代码文件中sql配置文件解析出的sql语句生成的抽象语法树进行遍历,获得所述sql语句对应的sql语句标识以及数据表;通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系。可选的,所述通过对所述目标代码文件进行解析,获得所述目标代码文件中的数据库层接口,以及所述数据库层接口对应的sql标识步骤执行之前,还包括:在接收到针对所述应用的注册请求的情况下,通过将所述应用的应用信息写入注册表的方式完成注册;通过消息监听器,监听解析所述映射关系的解析任务的触发消息;基于所述触发消息,根据所述注册表中的所述应用名称将所述目标代码文件拉取至目标服务器。可选的,所述通过所述sql标识以及所述sql语句标识将所述数据库层接口以及所述sql语句对应的数据表进行关联,建立所述数据库层接口与数据表之间的映射关系步骤执行之后,还包括:将所述映射关系以映射关系表的形式在数据库进行存储;所述在获取到的根据所述应用的目标代码文件解析出的数据库层接口与数据表之间的映射关系中,查找所述变更数据库层接口映射的数据表,作为所述变更代码在所述应用中对应的变更数据表步骤执行之前,在所述数据库中读取所述映射关系表。可选的,所述变更请求包括:所述应用的应用名称、代码仓库地址、起始代码版本、目标代码版本;所述获取针对所述应用提交的变更代码,包括:在所述代码仓库地址指向的代码仓库中,获取在目标代码版本与起始代码版本之间与所述应用名称对应的变更代码。上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的基于变更代码的数据表确定方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述基于变更代码的数据表确定方法的技术方案的描述。上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属
技术领域
:技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1