CN117971855A - 一种数据库查询处理方法及装置 - Google Patents

一种数据库查询处理方法及装置 Download PDF

Info

Publication number
CN117971855A
CN117971855A CN202211303141.1A CN202211303141A CN117971855A CN 117971855 A CN117971855 A CN 117971855A CN 202211303141 A CN202211303141 A CN 202211303141A CN 117971855 A CN117971855 A CN 117971855A
Authority
CN
China
Prior art keywords
code
database
language
information
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211303141.1A
Other languages
English (en)
Inventor
潘临杰
沈栋
边攀
梁广泰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Cloud Computing Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Cloud Computing Technologies Co Ltd filed Critical Huawei Cloud Computing Technologies Co Ltd
Priority to CN202211303141.1A priority Critical patent/CN117971855A/zh
Publication of CN117971855A publication Critical patent/CN117971855A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种数据库查询处理方法及装置,涉及计算机领域。所述方法包括:接收第一代码,所述第一代码用于查询第一数据库,所述第一代码是第一语言或第二语言,所述第一语言和所述第二语言为两种不同类型的计算机语言;将所述第一代码转换为第三语言的第二代码;根据所述第二代码查询所述第一数据库包括的第一节点的第一信息,所述第一节点属于第三代码中的代码。如此,由于均可通过多种语言查询第一数据库中的第三代码的信息,因此无需用户耗费大量时间掌握语言,节省查询数据库所需的时间,提高查询数据库的效率。

Description

一种数据库查询处理方法及装置
技术领域
本申请实施例涉及计算机技术领域,尤其涉及一种数据库查询处理方法及装置。
背景技术
在开发者开发代码之后,可对该代码进行分析,以发现该代码存在的问题。开发者可根据分析出的问题,对该代码进行修改。
目前,一般是利用分析工具提取程序的信息,并将程序的信息写入数据库中。开发者输入数据库对应的查询语句,分析工具根据查询语句,输出程序对应的漏洞信息。但这种方式中,分析工具仅支持数据库对应的查询语句。而开发者可能并不熟悉数据库对应的计算机语言,因此开发者需要花费大量的时间去学习数据库对应的计算机语言,而后才能通过查询语句去查询,这使得查询效率较低。
发明内容
本申请实施例提供一种数据库查询处理方法及装置,用于提高查询数据库效率。
第一方面,本申请实施例提供一种数据库查询处理方法,该方法可由计算设备执行,或者具体由计算设备中的软件模块执行,计算设备例如为服务器或终端设备等,计算设备中的软件模块例如为运行在计算设备中的工具。为便于描述,下文以计算设备执行进行介绍。所述方法包括:接收用于查询第一数据库的第一代码,所述第一代码是第一语言或第二语言,所述第一语言和所述第二语言为两种不同类型的计算机语言;将所述第一代码转换为第三语言的第二代码;根据所述第二代码查询所述第一数据库包括的第一节点的信息,所述第一节点属于第三代码中的代码,所述第三代码为待分析的代码。例如第三代码为用户输入的代码。
本申请实施例中,在查询第一数据库时,可以采用第一语言或第二语言的代码(如第一代码)进行查询,第一语言和第二语言属于不同类型的计算机语言。由于不同用户熟悉的计算机语言可能不同,因此支持不同的计算机语言查询的代码查询数据库中的信息,可满足不同用户的需求,无需用户花费大量时间去查询,有利于节省查询数据库的时间,提高查询数据库的效率。并且,本申请实施例可通过多种计算机语言对应的代码查询第一数据库中的节点的信息,提高查询数据库的灵活性。
在一种可能的实施方式中,所述第一数据库为多个数据库中的一个,所述多个数据库至少存在类型不同的两个数据库。
在上述实施方式中,可支持对多种类型的数据库进行读操作和写操作,用户在查询节点的信息,可灵活选择数据库,或者可根据用户输入的第一代码,灵活选择数据库。并且,不同类型的数据库具有不同的特点,可满足用户的不同需求,有利于提升用户的体验。
在一种可能的实施方式中,在将所述第一代码转换为第三语言的第二代码之前,所述方法还包括:确定用于查询所述第一数据库的语言为所述第三语言。
在上述实施方式中,可将第一代码转换为与第一数据库对应的计算机语言,便于直接快速地查询第一数据库中的信息。
在一种可能的实施方式中,所述第三语言、所述第二语言和所述第一语言为三种不同类型的语言。
在一种可能的实施方式中,所述方法还包括:接收所述第三代码;对所述第三代码进行分析,获得所述第三代码包括的M个节点的信息,M为正整数;将所述M个节点的信息存储在所述第一数据库中,所述第一节点属于所述M个节点。
在上述实施方式中,提供一种获得第一数据库中第三代码包括的节点的信息的方式,可对第三代码进行分析,以获得M个节点的信息,可将M个节点的信息写入第一数据库,用户可对数据库进行灵活查询。
在一种可能的实施方式中,如果所述第一数据库的类型为关系型数据库,所述M个节点的信息包括所述M个节点的属性信息;或者,如果所述第一数据库的类型为图数据库,所述M个节点的信息包括所述M个节点之间的关系信息。
在上述实施方式中,第一数据库的类型可以为多种类型中的一种,丰富了第一数据库的类型。并且,第一数据库的类型不同,那么第一数据库存储的M个节点的信息存在一定差别,如此,可充分利用不同类型数据库的特性,分别存储第三代码包括的节点的信息,使得后续可分别从不同数据库查找数据,相对可提高查找第三代码包括的节点的信息的效率。
在一种可能的实施方式中,所述方法还包括:接收第四代码;确定所述第四代码与所述第三代码的差异部分;对所述差异部分进行分析,获得所述差异部分包括的N个节点的信息,N为正整数;将所述N个节点的信息存储在所述第一数据库中。
在上述实施方式中,在分析第四代码时,可对第四代码相对于第三代码的差异部分进行分析,而无需对第四代码包括的所有代码进行分析,有利于减少分析的代码量,有利于提高分析第四代码的效率。
在一种可能的实施方式中,确定所述差异部分包括的N个节点的信息,包括:确定对所述差异部分进行分析的分析粒度,所述分析粒度为对所述差异部分进行分析的最小单元;按照所述分析粒度对所述差异部分进行分析,获得所述N个节点的信息。
在上述实施方式中,可以确定用于分析差异部分的分析粒度,提高了对差异部分进行分析的灵活性,有利于满足不同用户的需求。
在一种可能的实施方式中,所述分析粒度包括如下的至少一种:与所述差异部分相关的代码模块,其中,所述第四代码包括至少一个代码模块,其中一个代码模块用于实现一种功能,与所述差异部分相关的代码模块属于所述至少一个代码模块;或,与所述差异部分相关的代码文件,其中,所述第四代码包括至少一个代码模块,其中一个代码模块包括至少一个代码文件,与所述差异部分相关的代码文件属于所述至少一个代码模块对应的至少一个代码文件;或,与所述差异部分相关的类,其中,所述第四代码包括至少一个代码模块,其中,一个代码模块包括至少一个代码文件,其中一个代码文件包括至少一个类,与所述差异部分相关的类属于所述至少一个代码模块包括的至少一个代码文件对应的至少一个类。
在上述实施方式中,提供了分析粒度的几种形式,丰富了分析粒度的实现方式。并且,以代码模块、代码文件或类依次对差异部分进行分析,对差异部分进行分析的全面性逐渐减小,但对差异部分进行分析的速度逐渐提高,使得用户可根据当前的分析需求,灵活选择分析粒度。
第二方面,本申请实施例提供一种数据库查询处理装置,所述数据库查询处理装置可以为上述计算设备。数据库查询处理装置包括用于执行上述第一方面或任一可能的实施方式的相应的手段(means)或模块。例如,所述数据库查询处理装置包括收发模块(也可称为收发单元)和处理模块(也可称为处理单元)。
例如,收发模块,用于接收第一代码,所述第一代码用于查询第一数据库,所述第一代码是第一语言或第二语言,所述第一语言和第二语言为两种不同类型的计算机语言;处理模块,用于将所述第一代码转换为第三语言的第二代码,所述第三语言与所述第一语言和所述第二语言均属于不同类型的计算机语言,以及根据所述第二代码查询所述第一数据库包括的第一节点的第一信息,所述第一节点属于第三代码中的代码,所述第三代码为用户输入的待分析的代码。
在一种可能的实施方式中,所述数据库查询处理装置包括存储模块(也可以称为存储单元)。其中,所述处理模块能够与存储模块耦合,并执行存储模块中的程序或指令,使能数据库查询处理装置执行上述数据库查询处理装置的功能。
第三方面,本申请实施例提供一种数据库查询处理装置,包括:处理器和存储器;所述存储器用于存储一个或多个计算机程序,所述一个或多个计算机程序包括计算机执行指令,当所述数据库查询处理装置运行时,所述处理器执行所述存储器存储的所述一个或多个计算机程序,以使得所述数据库查询处理装置执行如第一方面中任一项所述的方法。
可选的,所述数据库查询处理装置还包括其他部件,例如,天线,输入输出模块,接口等。这些部件可以是硬件,软件,或者软件和硬件的结合。
第四方面,本申请实施例提供一种芯片系统,该芯片系统包括:处理器和接口。其中,该处理器用于从该接口调用并运行指令,当该处理器执行该指令时,实现上述第一方面中任一项所述的方法。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序或指令,当其被运行时,实现上述第一方面中任一项所述的方法。
第六方面,本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,实现上述第一方面中任一项所述的方法。
关于第二方面至第六方面的有益效果,可参照第一方面论述的有益效果,此处不再列举。
附图说明
图1为本申请实施例适用的一种场景的示意图;
图2为本申请实施例适用的另一种场景的示意图;
图3为本申请实施例提供的一种计算设备的结构示意图;
图4为本申请实施例提供的一种数据库查询处理方法的流程示意图;
图5为本申请实施例提供的一种采用增量分析对第四代码进行分析的流程示意图;
图6为本申请实施例提供的另一种数据库查询处理方法的流程示意图;
图7为本申请实施例提供的一种数据库查询处理装置的结构示意图;
图8为本申请实施例提供的另一种计算设备的一种结构示意图;
图9为本申请实施例提供的一种计算设备集群的结构示意图。
具体实施方式
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例作进一步地详细描述。
1、终端设备,是一种具有无线收发功能的设备,可以是固定设备,移动设备、手持设备、穿戴设备、车载设备,或内置于上述设备中的无线装置(例如,通信模块或芯片系统等)。所述终端设备用于连接人,物,机器等,可广泛用于各种场景,例如包括但不限于以下场景:蜂窝通信、设备到设备通信(device-to-device,D2D)、车到一切(vehicle toeverything,V2X)、机器到机器/机器类通信(machine-to-machine/machine-typecommunications,M2M/MTC)、物联网(internet of things,IoT)、虚拟现实(virtualreality,VR)、增强现实(augmented reality,AR)、工业控制(industrial control)、无人驾驶(self driving)、远程医疗(remote medical)、智能电网(smart grid)、智能家具、智能办公、智能穿戴、智能交通,智慧城市(smart city)、无人机、机器人等场景的终端设备。所述终端设备有时可称为用户设备(user equipment,UE)、终端、接入站、UE站、远方站、无线通信设备、或用户装置等,为描述方便,本申请实施例中将终端设备以UE为例进行说明。
2、计算设备,是指具有处理能力的设备,包括终端设备或服务器等。
3、服务器,具有计算能力,可以为客户端提供服务。客户端例如为终端设备,或者为运行在终端设备中的软件模块,软件模块例如应用(application,APP)等。例如,服务器可接收客户端提交的请求,并向客户端反馈与该请求对应的处理结果。服务器可以是单个服务器或者服务器集群。
4、节点,是指代码的组成部分,例如代码中的函数、变量或结构等均可视为代码片段中的节点。该变量例如全部变量或局部变量。该结构例如为代码中的部分代码的语法结构。
5、领域特定语言(domain specific language,DSL),又可以称为领域专用语言,是指专门针对特定应用领域的计算机语言。根据特定应用领域的不同,DSL又可以划分为多种类型的语言,例如应用于数据库查询领域的计算机语言或应用于网页创建领域的计算机语言等。数据库查询领域的计算机语言例如结构化查询语言(structured querylanguage,SQL)或Gremlin语言。网页创建领域的计算机语言例如超文本标记语言(hypertext markup language,HTML)。
DSL和通用编程语言(eneral purpose language,GPL)是两种不同大类的计算机语言。GPL可应用于多种应用领域,但并不为某种应用领域特意设置。GPL也可划分多种类型的语言,例如,C语言或JAVA语言等。
本申请实施例中,对于名词的数目,除非特别说明,表示“单数名词或复数名词”,即"一个或多个”。“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。例如,A/B,表示:A或B。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),表示:a,b,c,a和b,a和c,b和c,或a和b和c,其中a,b,c可以是单个,也可以是多个。
请参照图1,为本申请实施例适用的一种场景的示意图。或者,图1也可视为一种数据库查询处理系统的架构示意图。如图1所示,该数据库查询处理系统包括终端设备110、运行在终端设备110中的客户端111、与终端设备110之间可相互通信的计算设备120、以及计算设备120可进行读/写操作的数据库130,数据库130的数量可以是一个或多个。在这一个或多个数据库130中,不同数据库130的类型不同。
客户端111用于为用户(如开发者)提供某种服务的软件模块,客户端111例如应用(application,APP)、网页、应用中的插件(或工具)或小程序等。客户端111与用户对应,换言之,用户可对客户端111进行操作。计算设备120例如可通过服务器实现,服务器例如为单个服务器或服务器集群。一个或多个数据库130可设置在计算设备120中。或者,一个或多个数据库130可设置在其他设备上,计算设备120可与其他设备通信,从而对一个或多个数据库130进行读/写操作。
计算设备120可为客户端111提供查询服务,例如,客户端111可接收用户输入的代码,并将代码发送给计算设备120,计算设备120查询一个或多个数据库130中的任一数据库130中的节点的信息,并将查询的节点的信息发送给客户端111。其中,节点的信息、以及计算设备120查询任一数据库130的具体内容将在下文进行介绍。可选的,计算设备120还可为客户端111提供代码分析服务,例如,客户端111可接收用户输入的代码片段,并将代码片段发送给计算设备120,计算设备对代码片段进行分析,获得该代码片段的信息,并将该代码片段的信息写入所述任一数据库130中。
请参照图2,为本申请实施例适用的另一种场景的示意图。或者,图2也可视为另一种数据库查询处理系统的架构示意图。如图2所示,该数据库查询处理系统包括计算设备210和运行在计算设备210中的工具211。图2中的计算设备210例如通过服务器或终端设备实现,该服务器例如为单个服务器或服务器集群。图2中的工具211也可为用户提供服务。与图1不同的是,图2中的工具211可以独立运行在计算设备210中,独立为用户提供服务,无需依赖服务器等其他设备的支持。
例如,工具211可接收用户输入的代码,根据该代码向用户反馈节点的信息。例如,工具211也可设置有一个或多个数据库212,一个或多个数据库可用于存储代码片段包括的节点的信息。其中,一个或多个数据库212中不同数据库的类型不同。或者,一个或多个数据库212也可设置在计算设备210的本地,而不设置在工具211中,但工具211可对一个或多个数据库212进行读/写操作。
本申请的各个实施例可由计算设备执行,或者可由计算设备中的工具执行。为了便于介绍,本申请的各个实施例是以由计算设备执行为例进行介绍。本申请的各个实施例涉及的计算设备例如为图1所示的计算设备120,以及客户端例如为图1中的客户端111;或者,图4所示的实施例涉及的计算设备例如为图2中的计算设备210,以及工具例如为图2中的工具211。
请参照图3,为本申请实施例提供的一种数据库查询处理方法的流程图。
S301、计算设备接收第三代码。
第三代码是指待分析的代码片段。第三代码例如包括某个应用(或程序)的源代码中的全部代码或部分代码,或者包括用户(如开发者)提供的任意的一段代码。第三代码的计算机语言的类型可以是任意的,例如,第三代码的计算机语言为GPL,例如Golong语言、C语言、JAVA语言、C++语言、派森(Python)语言或Typescript语言等。
如果用户期望分析第三代码存在的问题,例如语法问题,则用户可在客户端中输入第三代码。客户端接收第三代码之后,可向计算设备发送第三代码,相应的,计算设备就可以接收来自客户端的第三代码。或者,用户可以在计算设备提供的工具中输入第三代码,相应的,计算设备可以接收用户输入的第三代码。
S302、计算设备对第三代码进行分析,获得M个节点的第一信息。M为正整数。
示例性的,计算设备可分析第三代码,获得第三代码的信息。
第三代码的信息包括M个节点的第一信息,M个节点的第一信息又可以称为M个节点的信息。第三代码包括M个节点,例如,第三代码可以由M个节点组成;或者,第三代码可包括M个节点,以及还包括其他信息,其他信息例如为第三代码中的注解信息。M个节点中的一个节点可以是第三代码内的函数、变量或结构等。因此,M个节点可包括第三代码内的函数、变量或结构中的一种或多种。
例如,M个节点的第一信息包括M个节点的属性信息或M个节点之间的关系信息。
M个节点的属性信息可包括M个节点中的部分或全部节点的属性信息。可选的,M个节点的属性信息例如包括M个节点中的每个节点的属性信息。
M个节点中的一个节点的属性信息可指示该节点和该节点的属性。该节点的属性例如包括该节点的类型和/或参数等。例如,一个节点为函数,则该节点的属性也就是该函数的属性,该节点的参数就是该函数的参数。该函数的属性可包括该函数的类型为方法,该函数的参数可包括该函数包括的局部变量的数量等。例如一个节点的属性包括该节点的类型和参数,则该节点的属性信息可包括该节点的标识、该节点对应的类型、以及该节点的参数的信息。
M个节点之间的关系信息可指示M个节点中的部分或全部节点之间的关系。可选的,M个节点之间的关系信息指示M个节点中任意两个节点之间的关系。例如,M个节点包括节点1(例如为函数1)和节点2(例如为局部变量1),节点1包括节点2。相应的,M个节点之间的关系信息可指示节点1与节点2之间的从属关系,即,指示节点1包括节点2。
可选的,第三代码的信息还可以包括M个节点的第二信息。例如,M个节点的第一信息包括M个节点的属性信息,M个节点的第二信息包括M个节点之间的关系信息;或者,M个节点的第一信息包括M个节点之间的关系信息,M个节点的第二信息包括M个节点的属性信息。
在一种可能的实施方式中,第三代码的信息的一种实现形式为第三代码的代码属性图(code property graph,CPG)。其中,代码属性图是一种可拓展数据结构。第三代码的代码属性图例如包括第三代码的抽象语法树(abstract syntax code,AST)、控制流图(control flow graph,GFG)或程序依赖图(program dependence graph,PDG)的一种或多种。
其中,抽象语法树也可以简称为语法树,第三代码的抽象语法树可表示第三代码的语法结构。可以理解为,第三代码的抽象语法树是以树的形式表现第三代码的语法结构。其中,该语法树中的每个节点可表示第三代码包括的一段代码的语法结构。该语法树中的每个节点可以是M个节点中的一个节点。
控制流图也可以称为控制流程图,第三代码的控制流图可以理解为第三代码的执行过程的抽象表现,例如包括第三代码的执行过程中会遍历到的所有路径。其中,该所有路径上的每个点可以视为一个节点,路径上的每个点可以是M个节点中的一个节点。
第三代码的程序依赖图,是第三代码的一种图形表示,用于指示第三代码中的节点之间的依赖关系。
上述S301至S302为一种获取M个节点的第一信息的一种方式。除此之外,计算设备获取M个节点的第一信息的方式还有多种。例如,计算设备可从其他设备或网络上获得M个节点的第一信息。如果计算设备采用其他方式将M个节点的第一信息,则计算设备可无需执行S301~S302,因此S301和S302在图3中以虚线示意。
S303、计算设备将M个节点的第一信息存储在第一数据库中。
如果计算设备能进行读/写操作的一个或多个数据库的数量为1,该数据库为第一数据库,计算设备可将M个节点的第一信息存储在第一数据库中。第一数据库例如为图1所涉及的任一数据库130,或者为图2所涉及的一个数据库212。第一数据库例如为图数据库或关系型数据库。
例如,第一数据库为图数据库,M个节点的第一信息包括M个节点之间的关系信息,则计算设备可将M个节点之间的关系信息存储在第一数据库中。或者,如果M个节点的第一信息包括M个节点的属性信息,计算设备也可将M个节点的属性信息存储在图数据库中。
或者,第一数据库为关系型数据库,M个节点的第一信息包括M个节点的属性信息,计算设备可将M个节点的属性信息存储在第一数据库中。或者,如果M个节点的第一信息包括M个节点之间的关系信息,计算设备也可将M个节点之间的关系信息存储在第一数据库中。
如果计算设备能够进行读/写操作的数据库的数量为K,K为大于1的整数,且K个数据库包括第一数据库,那么计算设备可将第三代码的信息拆分为P个第三信息。例如,计算设备可根据数据库的数量K,将第三代码的信息拆分为P个第三信息,P为小于或等于K的整数。例如,P个第三信息中一个第三信息可包括M个节点的一部分信息,例如该第三信息可包括M个节点中的一个节点的部分信息,但不包括该节点的完整信息。例如,P个第三信息中的一个第三信息包括M个节点的第一信息,或者包括M个节点的第二信息;或者,P个第三信息中的一个第三信息包括M个节点中的部分节点的第一信息,以及M个节点中的另一部节点的第二信息。计算设备可将P个第三信息中的一个第三信息写入K个数据库中的至少一个数据库,以此类推,计算设备可将P个第三信息写入K个数据库。其中,K个数据库中至少包括类型不同的两个数据库,例如,K个数据库中的任意两个数据库的类型不同。
以K个数据库包括第一数据库和第二数据库为例。其中,第一数据库和第二数据库的类型不同。例如第一数据库为图数据库,第二数据库为关系型数据库;或者,第一数据库为关系型数据库,第二数据库为图数据库。
示例性的,在第一数据库为图数据库、第二数据库为关系型数据库的情况下,计算设备可将M个节点的第一信息包括的M个节点之间的关系信息存储在第一数据库中,以及将M个节点的第二信息包括的M个节点的属性信息存储在第二数据库中。
或者,在第一数据库为关系型数据库、第二数据库为图数据库的情况下,计算设备可将M个节点的第一信息包括的M个节点的属性信息存储到第一数据库中,以及将M个节点的第二信息包括的M个节点的关系信息存储到第二数据库中。
本申请实施例中,计算设备可以将第三代码的信息存储在一个数据库中,使得用户可以在一个数据库中查找第三代码的部分或全部信息,用户无需选择需要查询的数据库,简化了查询的过程。或者,计算设备可以将第三代码的信息存储在K个数据库中,则可用于存储信息的数据库数量较多,使得一个数据库存储的信息相对少,能够减轻数据库的存储负担,也有利于提高计算设备查询单个数据库中的信息的效率。
S303是以计算设备将M个节点的第一信息存储在第一数据库为例,实际上也可以是除了计算设备之外的其他设备将M个节点的第一信息存储在第一数据库中,这种情况下,则S303是无需执行的,即S303为可选的步骤,在图3中以虚线示意。
S304、计算设备接收第一代码,第一代码是第一语言或第二语言。
第一语言和第二语言是两种不同类型的计算机语言,例如为两种不同类型的DSL。例如,第一语言为应用于代码分析领域的DSL,其中,应用于代码分析领域的DSL可称为用户层DSL;第二语言为应用于代码分析领域和数据库查询领域的DSL,其中,应用于代码分析领域和数据库查询领域的DSL,应用于代码分析领域和数据库查询领域的DSL可称为应用层DSL。应用于代码分析领域和数据库查询领域的DSL可理解为代码分析领域和数据库查询领域之间的一种过渡性计算机语言。
例如,用户期望查询第三代码包括的节点的信息,则用户可在客户端输入用于查询第一数据库的第一代码,第一代码为第一语言或第二语言。客户端可将第一代码发送给计算设备,相应的,计算设备接收来自客户端的第一代码。或者,用户可通过计算设备提供的工具向计算设备输入第一语言或第二语言的第一代码,相应的,计算设备可接收用户输入的第一代码。
例如,第一代码可用于查询第一数据库中的第三代码所包括的节点的信息,例如用于查询第三代码所包括的节点的第一信息。在这种情况下,可认为第一代码用于确定(或查询)第三代码包括的信息。而第一数据库包括的M个节点的第一信息是对第三代码进行分析得到的,因此可以认为,第一代码用于查询对第三代码进行分析后得到的信息。可选的,计算设备在获取第一代码之后,可根据第一代码,确定第一代码用于查询的第三代码所包括的节点的信息对应的存储位置。
可选的,用户可自行确定第三代码中可能出现的问题的节点满足的条件,相应的,用户可以根据所述条件,输入与所述条件对应的第一代码。这种情况下,第一代码相当于用于确定存在问题的节点,因此可以认为第一代码指示了第三代码的分析规则。
可选的,在计算设备能够进行读/写操作的数据库的数量为K的情况下,计算设备还可确定第一代码所查询的数据库,例如确定第一代码请求查询的数据库为第一数据库。其中,计算设备要确定第一代码所查询的数据库,可以有多种确定方式,如下举例介绍。
方式1,计算设备根据用户的第一操作确定第一数据库。第一操作用于指示第一数据库。
例如,在用户在客户端中输入第一代码,客户端向计算设备发送第一代码之后,计算设备可向客户端发送K个数据库的标识。相应的,客户端可从计算设备接收K个数据库的标识,并显示K个数据库的标识。用户可以从K个数据库的标识中选择一个数据库的标识,相当于用户对客户端进行了第一操作。客户端向计算设备发送该数据库的标识,计算设备可确定该数据库的标识对应的数据库,例如为第一数据库。可选的,如果K个数据库中任意两个数据库的类型不同,则K个数据库中的任一个数据库的标识可采用该数据库的类型信息来实现。
又例如,在用户在计算设备中输入第一代码之后,计算设备可通过工具显示K个数据库的标识,用户可以从K个数据库的标识中选择一个数据库的标识,相当于用户对计算设备进行了第一操作。计算设备可确定将该数据库的标识对应的数据库,例如为第一数据库。
方式2,计算设备根据第一代码确定第一数据库。
示例性的,如前文论述的内容,计算设备可以确定第一代码用于查询的节点的信息的存储位置,计算设备根据该存储位置确定第一数据库。例如,第一代码用于查询第三代码包括的第一节点的第一信息,计算设备确定第三代码包括的M个节点的第一信息存储在第一数据库,第一节点是M个节点中的一个节点,因此计算设备可以确定第一数据库。
S305、计算设备将第一代码转换为第三语言的第二代码。
由于第一代码或第二代码可能无法直接用于查询第一数据库,因此计算设备可对第一代码进行转换(或翻译),将其转换为第三语言,第三语言为用于查询第一数据库的计算机语言,从而使得转换后的第一代码能够用于查询第一数据库。例如将转换后的第一代码称为第二代码,第二代码的语言类型为第三语言。例如,第三语言也可以是一种类型的DSL,例如为应用于数据库查询领域的DSL。可选的,第一语言、第二语言和第三语言可以是三种不同类型的计算机语言。
如果第一代码的语言类型不同,则计算设备将第一代码转换为第二代码的过程也可能有不同,下面分别介绍。
1、第一代码为第一语言。在第一代码为第一语言的情况下,计算设备将第一代码转换为第二代码可包括两种(即第一种转换方式和第二种转换方式),下面分别介绍。
第一种转换方式,计算设备可将第一语言的第一代码转换为第二语言的第五代码,再将第二语言的第五代码转换为第二代码。
示例性的,计算设备可通过第一解析器,将第一代码转换为第五代码,以及通过第二解析器,将第五代码转换为第二代码。例如,第一解析器包括用于将第一语言的代码转换为第二语言的代码的第一规则,第二解析器包括用于将第二语言的代码转换为第三语言的代码的第二规则。
在第一语言为用户层DSL,以及第二语言为应用层DSL的情况下,相应的,第一解析器包括的第一规则可包括节点的标识、节点的属性以及第一语言的算子与第二语言的算子之间的第一对应关系。算子可为运算方式,算子可包括谓词,例如和运算、或者或运算等。第二解析器包括的第二规则可包括节点的标识、节点的属性以及第二语言的算子与第三语言的算子之间的第二对应关系。
例如,计算设备可通过第一解析器,将第一代码中的第一语言的算子转换为第二语言的算子,从而获得第二语言的第五代码。同理,计算设备可通过第二解析器,将第二代码中的第二语言的算子,转换为第三语言的算子,从而获得第二代码。
第二种转换方式,计算设备可直接将第一语言的第一代码转换为第三语言的第二代码,例如,计算设备可通过第三解析器,将第一代码转换为第二代码。
示例性的,第三解析器包括用于将第一语言的代码转换为第三语言的代码的第三规则。
在第一代码为用户层DSL,以及第二代码为应用层DSL的情况下,相应的,第三解析器包括的第三规则可具体包括节点的标识、节点的属性以及第一语言的算子与第三语言的算子之间的第三对应关系。
例如,计算设备可通过第三解析器,将第一语言的算子转换为第三语言的算子,从而获得第三语言的第二代码。
2、第一代码为第二语言。
示例性的,计算设备可将第一代码直接转换为第二代码。
例如,计算设备可通过第二解析器,将第一代码转换为第二代码。第二解析器的内容可参照前文。
由于不同数据库对应的语言可能存在差别,因此在计算设备支持对K个数据库进行读写操作的情况下,计算设备可确定第一数据库对应的第三语言,进而确定将第一代码转换为第三语言的第二代码。
S306、计算设备根据第二代码查询第一数据库包括的第一节点的第一信息。
第一节点属于M个节点,第一节点可为M个节点中的一个或多个节点,可以进一步理解的是,第一数据库的M个节点的第一信息中符合第一代码的节点为第一节点。
例如,第一代码指示查询节点的名称以debug开头的函数、函数包括一个参数、且该函数的参数类型为java.util.List。相应的,第一数据库包括的M个节点中满足第一代码的节点则为第一节点。
计算设备可根据第二代码,从第一数据库中确定符合第二代码的第一节点的信息,由于第一代码本身包含了分析第三代码的规则,因此计算设备确定了符合第二代码的第一节点的信息,也就相当于计算设备获得了第三代码的分析结果。
在本申请实施例中,计算设备可利用多种语言查询数据库,以满足不同用户的需求,无需用户花费大量时间学习计算机语言,从而节省查询数据库的时间,提高了分析代码的效率。并且,支持根据第一语言或第二语言的第一代码,查询第一数据库中的节点的信息,增加了查询数据库的灵活性。并且,不同用户对不同语言的熟悉程度不同,用户可灵活选择,有利于提高用户的体验。并且,计算设备支持对多种数据库进行查询,使得用户在查询时可供选择的数据库的更多。
用户可能会对第三代码进行更新,获得第四代码,例如,用户更改第三代码包括的部分代码,或者用户增加第三代码包括的代码。用户可能想对第四代码再进行分析,在本申请实施例中计算设备接收第四代码之后,可采用增量分析方式,对第四代码进行分析。增量分析可理解为计算设备对第四代码相对于第三代码的不同的部分(下文称为差异部分)进行分析。下面结合图4所示的采用增量分析方式,对第四代码进行分析的流程示意图进行介绍。图4所示的流程示意图具体包括如下步骤。
S401、计算设备接收第四代码。
第四代码的内容可参照前文第三代码的内容、以及计算设备接收第四代码的方式可参照前文计算设备接收第三代码的内容。
S402、计算设备确定第四代码和第三代码的差异部分。
计算设备在接收第四代码之后,可以将第三代码与第四代码进行分析,识别出第四代码和第三代码的差异部分。其中,差异部分可理解为第四代码中与第三代码不同的部分。
S403、计算设备确定对差异部分进行分析的分析粒度。
分析粒度可理解为对差异部分进行分析的最小单元(或基本单元)。分析粒度例如包括代码模块、代码文件或类。代码模块、代码文件和类的粒度依次减小。
其中,一个代码片段可包括一个或多个代码模块,一个代码模块可用于实现一种功能。一个代码模块可包括一个或多个代码文件。一个代码文件可理解为以文件的形式存在的一段代码。一个代码文件可包括一段代码,一个代码文件可包括一个或多个类。类可理解为对某种对象的定义,类可以描述一个对象能够执行的行为和执行行为所采用的方法(method),类例如包括对象的属性和方法。
下面对计算设备确定分析粒度的方式进行介绍。
计算设备可根据用户的第二操作,确定分析粒度。其中,第二选择操作指示分析粒度。
示例性的,在计算设备接收第四代码之后,客户端可从计算设备接收多个分析粒度的标识,并显示多个分析粒度的标识。用户可从多个分析粒度的标识中选择至少一个分析粒度的标识,也就相当于用户进行了第二操作。客户端确定所述至少一个分析粒度的标识,并将所述至少一个分析粒度发送给计算设备,计算设备可将所述至少一个分析粒度确定为用于对差异部分进行分析的分析粒度。所述至少一个分析粒度的标识例如采用所述至少一个分析粒度的名称进行表示。
或者,如果用户可直接在计算设备提供的工具进行操作,那么计算设备在接收第四代码之后,可直接显示多个分析粒度的标识,用户可以从多个分析粒度的标识中选择至少一个分析粒度的标识,相当于用户进行了第二操作,计算设备可直接将所述至少一个分析粒度的标识确定为用于分析差异部分的分析粒度。
作为一个示例,计算设备也可预存用于分析差异部分的分析粒度,而无需单独确定差异部分的分析粒度,或者,计算设备可按照分析第三代码的方式对差异部分进行分析,而无需考虑分析粒度,这些情况下,可无需执行S403的步骤,即S403为可选的步骤,在图4中以虚线示意。
S404、计算设备按照分析粒度,对差异部分进行分析,获得N个节点的第一信息。N为正整数。
N个节点的第一信息可包括N个节点中部分或全部节点的属性信息,或者N个节点中部分或全部之间的关系信息。N个节点中的任一节点的第一信息的内容可参照前文M个节点中的一个节点的第一信息的内容。
示例性的,计算设备确定用于分析差异部分的分析粒度之后,可以按照分析粒度,对差异部分进行分析,从而获得差异部分的信息。差异部分的信息包括N个节点的第一信息。
其中,差异部分与分析粒度的大小关系可以是任意的,例如差异部分的大小等于分析粒度的大小,差异部分的大小小于分析粒度的大小,或者差异部分的大小大于分析粒度的大小。
例如,差异部分可以是一个类,而分析粒度包括类,那么相当于差异部分的大小等于分析粒度的大小;又例如,差异部分可以是一个代码模块中的一个代码文件,而分析粒度包括代码模块,那么相当于差异部分的大小少于分析粒度的大小;又例如,差异部分可以是一个代码模块,而分析粒度包括类,那么相当于差异部分的大小大于分析粒度的大小。
其中,分析粒度不同,则计算设备对差异部分进行分析的实现方式也存在差异,下面分别介绍。
A1、用于分析差异部分的分析粒度包括代码模块。
例如,计算设备可对与差异部分相关的代码模块进行分析,也就相当于对差异部分进行分析。与差异部分相关的代码模块包括差异部分在第四代码中所属的至少一个代码模块。
可选的,与差异部分相关的代码模块还包括第四代码中除了所述至少一个代码模块之外且受到所述差异部分的影响的其他代码模块。可以理解的是,其他代码模块并不是差异部分在第四代码所属的代码模块,但会因差异部分而受到影响。
A2、用于分析差异部分的分析粒度包括代码文件。
例如,计算设备可对与差异部分相关的代码文件进行分析,也就相当于对差异部分进行了分析。与差异部分相关的代码文件包括差异部分在第四代码中所属的至少一个代码文件。
可选的,与差异部分相关的代码文件还包括第四代码中除了所述至少一个代码文件之外且受到与所述差异部分的影响的其他代码文件。可以理解的是,其他代码文件并不是差异部分在第四代码所属的代码文件,但会因差异部分而受到影响。
A3、用于分析差异部分的分析粒度包括类。
例如,计算设备可对与差异部分相关的类进行分析,也就相当于对差异部分进行了分析。与差异部分相关的代码文件包括差异部分在第四代码中所属的至少一个类。
可选的,与差异部分相关的代码文件还包括第四代码中除了所述至少一个类之外且受到与所述差异部分的影响的其他类。可以理解的是,其他类并不是差异部分在第四代码所属的类,但会因差异部分而受到影响。
在一种可能的实施方式中,计算设备可以按照上述A1至A3中的任意两种或两种方式分析差异部分。
例如,用于分析差异部分的分析粒度包括代码模块和代码文件,计算设备可以结合上述A1和A2的两种方式,分析差异部分。这种情况下,计算设备可以将A1和A2获得的所有节点的第一信息作为N个节点的信息。
或者,用于分析差异部分的分析粒度包括代码模块和类,计算设备可以结合上述A1和A3的两种方式,分析差异部分。这种情况下,计算设备可以将A1和A3获得的所有节点的第一信息作为N个节点的信息。
或者,用于分析差异部分的分析粒度包括代码文件和类,计算设备可以结合上述A2和A3的两种方式,分析差异部分。这种情况下,计算设备可以将A2和A3获得的所有节点的第一信息作为N个节点的信息。
或者,用于分析差异部分的分析粒度包括代码模块、代码文件和类,计算设备可以结合上述A1至A3的三种方式,分析差异部分。这种情况下,计算设备可以将A1至A3三种方式获得的所有节点的第一信息作为N个节点的信息。
在本申请实施例中,计算设备以代码模块为分析粒度,对差异部分进行分析,这样可更全面地对差异部分进行分析;计算设备以代码文件为分析粒度,对差异部分进行分析,这样相比以代码模块为分析粒度,可以相对减少计算设备执行的分析量,有利于提高计算设备分析差异部分的效率;计算设备以类为分析粒度,对差异部分进行分析,这样相比以代码模块为分析粒度,也可减少计算设备分析的代码数量,也可提高计算设备分析差异部分的效率。
可选的,差异部分的信息还包括N个节点的第二信息。N个节点的一个节点的第二信息的内容可参照前文M个节点中的一个节点的第二信息的内容。
S405、计算设备将N个节点的第一信息存储在第一数据库中。
计算设备相当于对图4所示的实施例中的第一数据库进行了更新。
如果计算设备可对K个数据库进行读写操作,那么计算设备获得了N个节点的第二信息,计算设备还可将N个节点的第二信息存储在第二数据库中,也就相当于计算设备对图4所示的实施例中的第二数据库进行更新。
在本申请实施例中,计算设备接收第四代码之后,可对第四代码进行增量分析,而不必对第四代码的所有代码均进行处理,这样有利于减少计算设备的处理量,有利于提高对第四代码处理的效率。并且,在对第四代码进行增量分析时,用户还可灵活选择分析粒度,以满足不同用户的不同需求。
可选的,计算设备接收第一语言或第二语言的第五代码之后,可根据第五代码,对更新后的第一数据库或第二数据库进行查询,从而获得与第四代码包括的节点的信息。其中,第一语言和第二语言的含义可参照前文,以及接收第五代码的方式可参照前文接收第一代码的内容、以及第五代码的内容可参照前文第一代码的内容。
下面结合图5所示的一种数据库查询处理方法的原理示意图,对查询更新后的第一数据库的过程进行介绍。在图5中是以K个数据库包括第一数据库和第二数据库为例进行介绍。图5所示的过程示例图包括如下步骤。
S501、计算设备接收第四代码。
第四代码的含义可参照前文。
S502、对第四代码进行增量分析,确定差异部分。
S503、计算设备确定差异部分的信息。
差异部分的信息的内容可参照前文。在图5中是以差异部分的信息包括N个节点的第一信息和N个节点的第二信息进行示例。
S504、计算设备将N个节点的第一信息写入第一数据库,以及将N个节点的第二信息写入第二数据库。
如上所述,图5中是以K个数据库包括第一数据库和第二数据库进行示例,相应的,计算设备可以将N个节点的第一信息写入第一数据库,以及将N个节点的第二信息写入第二数据库。
在另一种可能的实施方式中,如果计算设备仅支持对第一数据库进行读写操作,那么计算设备可将N个节点的第一信息写入第一数据库,即无需执行将N个节点的第二信息写入第二数据库的步骤。
S505、计算设备接收第一语言或第二语言的第五代码。
其中,第一语言和第二语言的含义可参照前文。接收第五代码的方式、以及第五代码的内容可参照前文。
示例性的,计算设备对第四代码进行转换,获得第三语言的第五代码。其中,计算设备对第四代码进行转换的方式可参照前文对第一代码进行转换的内容。
S506、计算设备根据第五代码,查询第一数据库,获得第二节点的信息。
第二节点为第四代码包括的节点,例如,第二节点属于N个节点,第二节点属于M个节点,或者第二节点中的部分节点属于N个节点,以及第二节点的另一部分节点属于M个节点。
在本申请实施例中,对第四代码进行增量分析,提高对第四代码进行处理的效率,也就能提高后续查询第四代码的节点的信息的效率。
本申请的各个实施例也可由计算设备中的工具执行,工具例如为图2中的工具211。工具执行上述数据库查询处理方法的流程可参照前文论述的计算设备执行数据库查询处理方法的流程,此处不再赘述。
请参照图6,为本申请实施例提供的一种数据库查询处理装置的结构示意图。如图6所示,数据库查询处理装置600包括收发模块601和处理模块602。
数据库查询处理装置600可用于实现前文任一的数据库查询处理方法。数据库查询处理装置600还可用于实现前文任一的计算设备的功能。
例如,数据库查询处理装置600用于实现图3所示的数据库查询处理方法,相应的,收发模块601用于实现S304的步骤,处理模块602可用于实现S305和S306的步骤。可选的,收发模块601还用于实现S301的步骤,处理模块602还用于实现S302和S303的步骤。
另外,数据库查询处理装置600用于实现图4所示的实施例,相应的,收发模块601用于实现S401的步骤,处理模块602可用于实现S402至S405的步骤。
又例如,数据库查询处理装置600用于实现图5所示的实施例,相应的,收发模块601用于实现S505的步骤,处理模块602可用于实现S506的步骤。可选的,收发模块601还用于实现S501的步骤,处理模块602用于实现S502至S504的步骤。
请参照图7,为本申请实施例提供的一种数据库查询处理装置的结构示意图。
如图7所示,数据库查询处理装置700包括一个或多个数据库703和查询模块702。可选的,数据库查询处理装置700还包括源码模块701,源码模块701在图7中以虚线框示意。
数据库查询处理装置700可用于实现前文任一的数据库查询处理方法。数据库查询处理装置700还可用于实现前文任一的计算设备的功能。
另外,数据库查询处理装置700用于实现前文图3所示的数据库查询处理方法,相应的,查询模块702可用于执行S304至S306的步骤,源码模块701可用于执行S301至S303的步骤。
例如,数据库查询处理装置700用于实现前文图4所示的数据库查询处理方法,相应的,源码模块701可用于执行S401-S405的步骤。
又例如,数据库查询处理装置700用于实现前文图5所示的数据库查询处理方法,相应的,源码模块701可用于执行S501至S504的步骤,查询模块702可用于执行S505和S506的步骤。
图7是以数据库查询处理装置700包括一个或多个数据库703为例。或者,这一个或多个数据库703也可设置在除了数据库查询处理装置700外的其他设备上,数据库查询处理装置700可支持对其他设备上的一个或多个数据库703进行读/写操作。
作为一个示例,图7中的数据库查询处理装置700可用于实现图6中的数据库查询处理装置600的功能。
请参照图8,为本申请实施例提供的一种计算设备的结构示意图。如图8所示,计算设备800包括处理器801和存储器802。处理器801用于执行存储器802存储的指令或程序,实现前文任一的数据库查询处理方法。
处理器801可以是中央处理单元(central processing unit,CPU),还可以是其它通用处理器、数字信号处理器(digital signal processor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其它可编程逻辑器件、晶体管逻辑器件,硬件部件或者其任意组合。通用处理器可以是微处理器,也可以是任何常规的处理器。
可选的,计算设备800还包括接口803,在图8中以虚线框示意。可以理解的是,接口803可以为收发器或输入输出接口。
可选的,计算设备800可用于实现前文数据库查询处理装置600或数据库查询处理装置700的功能。计算设备800用于实现前文数据库查询处理装置600的功能的情况下,处理器801用于实现上述处理模块602的功能。
请参照图9,为本申请实施例提供的一种计算设备集群的结构示意图。计算设备集群可包括至少一个计算设备900。至少一个计算设备900中的任意两个计算设备900的结构可相同。示例性的,至少一个计算设备900中的一个计算设备900可包括处理器901和存储器902,可选的,计算设备900还包括接口903,在图9中以虚线框示意。其中,处理器901、存储器902和接口903的功能和实现方式可参照前文图8的内容。
可选的,至少一个计算设备900中的任一计算设备900可用于实现前文任一的数据库查询处理方法。或者,至少一个计算设备900中的部分或全部计算设备900协同实现前文任一的数据库查询处理方法。
本申请实施例提供一种芯片系统,该芯片系统包括:处理器和接口。其中,该处理器用于从该接口调用并运行指令,当该处理器执行该指令时,实现上述任一所述的数据库查询处理方法。
本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序或指令,当其被运行时,实现上述任一所述的数据库查询处理方法。
本申请实施例提供一种包含指令的计算机程序产品,当其在计算机上运行时,实现上述任一所述的数据库查询处理方法。
本申请的实施例中的方法步骤可以通过硬件的方式来实现,也可以由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器、闪存、只读存储器、可编程只读存储器、可擦除可编程只读存储器、电可擦除可编程只读存储器、寄存器、硬盘、移动硬盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于基站或终端中。当然,处理器和存储介质也可以作为分立组件存在于基站或终端中。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘;还可以是半导体介质,例如,固态硬盘。该计算机可读存储介质可以是易失性或非易失性存储介质,或可包括易失性和非易失性两种类型的存储介质。
在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
可以理解的是,在本申请的实施例中涉及的各种数字编号仅为描述方便进行的区分,并不用来限制本申请的实施例的范围。上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定。

Claims (22)

1.一种数据库查询处理方法,其特征在于,包括:
接收第一代码,所述第一代码用于查询第一数据库,所述第一代码是第一语言或第二语言,所述第一语言和所述第二语言为两种不同类型的计算机语言;
将所述第一代码转换为第三语言的第二代码;
根据所述第二代码查询所述第一数据库包括的第一节点的信息,所述第一节点属于第三代码中的代码,所述第三代码为待分析的代码。
2.根据权利要求1所述的方法,其特征在于,所述第一数据库为多个数据库中的一个,所述多个数据库至少存在类型不同的两个数据库。
3.根据权利要求2所述的方法,其特征在于,在将所述第一代码转换为第三语言的第二代码之前,所述方法还包括:
确定用于查询所述第一数据库的语言为所述第三语言。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第三语言、所述第一语言和所述第二语言为三种不同类型的语言。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
接收所述第三代码;
对所述第三代码进行分析,获得所述第三代码包括的M个节点的信息,M为正整数;
将所述M个节点的信息存储在所述第一数据库中,所述第一节点属于所述M个节点。
6.根据权利要求5所述的方法,其特征在于,
如果所述第一数据库的类型为关系型数据库,所述M个节点的信息包括所述M个节点的属性信息;或者,
如果所述第一数据库的类型为图数据库,所述M个节点的信息包括所述M个节点之间的关系信息。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
接收第四代码;
确定所述第四代码与所述第三代码的差异部分;
对所述差异部分进行分析,获得所述差异部分包括的N个节点的信息,N为正整数;
将所述N个节点的信息存储在所述第一数据库中。
8.根据权利要求7所述的方法,其特征在于,确定所述差异部分包括的N个节点的信息,包括:
确定对所述差异部分进行分析的分析粒度,所述分析粒度为对所述差异部分进行分析的最小单元;
按照所述分析粒度对所述差异部分进行分析,获得所述N个节点的信息。
9.根据权利要求8所述的方法,其特征在于,所述分析粒度包括如下的至少一种:
与所述差异部分相关的代码模块,其中,所述第四代码包括至少一个代码模块,其中一个代码模块用于实现一种功能,与所述差异部分相关的代码模块属于所述至少一个代码模块;或,
与所述差异部分相关的代码文件,其中,所述第四代码包括至少一个代码模块,其中一个代码模块包括至少一个代码文件,与所述差异部分相关的代码文件属于所述至少一个代码模块对应的至少一个代码文件;或,
与所述差异部分相关的类,其中,所述第四代码包括至少一个代码模块,其中,一个代码模块包括至少一个代码文件,其中一个代码文件包括至少一个类,与所述差异部分相关的类属于所述至少一个代码模块包括的至少一个代码文件对应的至少一个类。
10.一种数据库查询处理装置,其特征在于,包括:
收发模块,用于接收第一代码,所述第一代码用于查询第一数据库,所述第一代码是第一语言或第二语言,所述第一语言和所述第二语言为两种不同类型的计算机语言;
处理模块,用于将所述第一代码转换为第三语言的第二代码,以及根据所述第二代码查询所述第一数据库包括的第一节点的信息,所述第一节点属于第三代码中的代码,所述第三代码为待分析的代码。
11.根据权利要求10所述的装置,其特征在于,所述第一数据库为多个数据库中的一个,所述多个数据库至少存在类型不同的两个数据库。
12.根据权利要求11所述的装置,其特征在于,所述处理模块还用于:
在将所述第一代码转换为第三语言的第二代码之前,确定用于查询所述第一数据库的语言为所述第三语言。
13.根据权利要求10-12任一项所述的装置,其特征在于,所述第三语言、所述第一语言和所述第二语言为三种不同类型的语言。
14.根据权利要求10-13任一项所述的装置,其特征在于,
所述收发模块,还用于接收所述第三代码;
所述处理模块,还用于对所述第三代码进行分析,获得所述第三代码包括的M个节点的信息,M为正整数,以及将所述M个节点的第一信息存储在所述第一数据库中,所述第一节点属于所述M个节点。
15.根据权利要求14所述的装置,其特征在于,如果所述第一数据库的类型为关系型数据库,所述M个节点的信息包括所述M个节点的属性信息;或者,
如果所述第一数据库的类型为图数据库,所述M个节点的信息包括所述M个节点之间的关系信息。
16.根据权利要求14或15所述的装置,其特征在于,
所述收发模块,还用于接收第四代码;
所述处理模块,还用于确定所述第四代码与所述第三代码的差异部分,对所述差异部分进行分析,获得所述差异部分包括的N个节点的第一信息,N为正整数,以及将所述N个节点的信息存储在所述第一数据库中。
17.根据权利要求16所述的装置,其特征在于,所述处理模块具体用于:
确定对所述差异部分进行分析的分析粒度,所述分析粒度为对所述差异部分进行分析的基本单元;
按照所述分析粒度对所述差异部分进行分析,获得所述N个节点的第一信息。
18.根据权利要求17所述的装置,其特征在于,所述分析粒度包括如下的至少一种:
与所述差异部分相关的代码模块,其中,所述第四代码包括至少一个代码模块,其中一个代码模块用于实现一种功能,与所述差异部分相关的代码模块属于所述至少一个代码模块;或,
与所述差异部分相关的代码文件,其中,所述第四代码包括至少一个代码模块,其中一个代码模块包括至少一个代码文件,与所述差异部分相关的代码文件属于所述至少一个代码模块对应的至少一个代码文件;或,
与所述差异部分相关的类,其中,所述第四代码包括至少一个代码模块,其中,一个代码模块包括至少一个代码文件,其中一个代码文件包括至少一个类,与所述差异部分相关的类属于所述至少一个代码模块包括的至少一个代码文件对应的至少一个类。
19.一种计算设备,其特征在于,包括:处理器和存储器;所述存储器用于存储一个或多个计算机程序,所述一个或多个计算机程序包括计算机执行指令,当所述计算设备运行时,所述处理器执行所述存储器存储的所述一个或多个计算机程序,以使得所述计算设备执行如权利要求1-9任一项所述的方法。
20.一种计算设备集群,其特征在于,包括至少一个计算设备,每个计算设备包括处理器和存储器;
所述至少一个计算设备的处理器用于执行所述至少一个计算设备的存储器中存储的指令,以使得所述计算设备集群执行如权利要求1-9任一项所述的方法。
21.一种包含指令的计算机程序产品,其特征在于,一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备集群运行时,使得所述计算设备集群执行如权利要求的1-9任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1-9任一项所述的方法。
CN202211303141.1A 2022-10-24 2022-10-24 一种数据库查询处理方法及装置 Pending CN117971855A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211303141.1A CN117971855A (zh) 2022-10-24 2022-10-24 一种数据库查询处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211303141.1A CN117971855A (zh) 2022-10-24 2022-10-24 一种数据库查询处理方法及装置

Publications (1)

Publication Number Publication Date
CN117971855A true CN117971855A (zh) 2024-05-03

Family

ID=90854066

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211303141.1A Pending CN117971855A (zh) 2022-10-24 2022-10-24 一种数据库查询处理方法及装置

Country Status (1)

Country Link
CN (1) CN117971855A (zh)

Similar Documents

Publication Publication Date Title
US9305057B2 (en) Extensible indexing framework using data cartridges
US7761586B2 (en) Accessing and manipulating data in a data flow graph
US9430494B2 (en) Spatial data cartridge for event processing systems
CN108694221B (zh) 数据实时分析方法、模块、设备和装置
CN112287013B (zh) 数据转换方法及适配器
CN108153716B (zh) 表单处理方法、装置、存储介质及电子设备
CN108733727B (zh) 一种查询处理方法、数据源注册方法及查询引擎
CN109710220B (zh) 关系型数据库查询方法、装置、设备及存储介质
CN111797073A (zh) 数据库管理方法、电子设备与计算机可读存储介质
CN111259067A (zh) 一种基于Spring实现DAO接口的方法、装置及设备
CN114356971A (zh) 数据处理方法、装置以及系统
US10866960B2 (en) Dynamic execution of ETL jobs without metadata repository
CN107832391B (zh) 一种数据查询方法和系统
CN113901083A (zh) 基于多解析器的异构数据源操作资源解析定位方法和设备
CN115905630A (zh) 一种图数据库查询方法、装置、设备及存储介质
CN114722036A (zh) 数据处理方法、装置、电子设备及可读存储介质
CN116795859A (zh) 数据分析方法、装置、计算机设备和存储介质
CN113987337A (zh) 基于组件化动态编排的搜索方法、系统、设备及存储介质
CN114064601B (zh) 存储过程转换方法、装置、设备和存储介质
CN112307061A (zh) 用于查询数据的方法和装置
CN116738954A (zh) 报表导出方法、报表模板的配置方法、装置、计算机设备
CN117971855A (zh) 一种数据库查询处理方法及装置
WO2023164294A1 (en) Query splitter for an inverted index datastore
CN114036178A (zh) 服务接口生成方法、装置、计算机及可读存储介质
CN111143398B (zh) 基于扩展sql函数的超大集合查询方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication