数据库查询语句生成方法及装置制造方法

文档序号:6638624阅读:144来源:国知局
数据库查询语句生成方法及装置制造方法
【专利摘要】本发明公开了一种数据库查询语句生成方法及装置。该数据库查询语句生成方法包括:获取多个多维表达式语句;按照查询操作的类型对多个多维表达式语句进行分组,获取多个目标组;分别根据多个目标组生成多个预设转化模板;按照目标转化模板将待转化多维表达式语句转化为数据库查询语句,解决了将多维表达式语句转化为数据库查询语句时复杂度较高的问题,进而通过根据多个目标组生成多个预设转化模板,并按照目标转化模板将待转化多维表达式语句转化为数据库查询语句,达到了降低多维表达式语句转化为数据库查询语句的复杂度的效果。
【专利说明】数据库查询语句生成方法及装置

【技术领域】
[0001]本发明涉及计算机领域,具体而言,涉及一种数据库查询语句生成方法及装置。

【背景技术】
[0002]微软结构化查询语言系统(Microsoft SQL Sever)在数据立方体(CUBE)为实时联机分析处理(R0LAP)模式下,每次通过多维表达式(MDX)语句对CUBE进行查询时,R0LAP查询引擎都会依照默认的转化规则,把MDX语句翻译转化成数据库能理解的数据库查询语句,例如SQL语句,数据库并由此返回相应的数据查询。
[0003]在MDX语句转化成SQL语句的过程中,按照固定的规则模板进行转化。由于该模板需要适用到各种情况,提高了复杂度,影响了可读性,执行效率也比较低下。
[0004]针对相关技术中将多维表达式语句转化为数据库查询语句时复杂度较高的问题,目前尚未提出有效的解决方案。


【发明内容】

[0005]本发明的主要目的在于提供一种数据库查询语句生成方法及装置,以解决将多维表达式语句转化为数据库查询语句时复杂度较高的问题。
[0006]为了实现上述目的,根据本发明的一个方面,提供了一种数据库查询语句生成方法。
[0007]根据本发明的数据库查询语句生成方法包括:获取多个多维表达式语句;按照查询操作的类型对多个多维表达式语句进行分组,获取多个目标组;分别根据多个目标组生成多个预设转化模板,其中,多个预设转化模板包括目标转化模板,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同;按照目标转化模板将待转化多维表达式语句转化为数据库查询语句。
[0008]进一步地,通过以下方法确定查询操作的类型:获取默认转化模板文件,其中,默认转化模板文件中包含对应不同查询操作类型的默认转化模板;根据默认转化模板文件将查询操作划分为不同类型的查询操作。
[0009]进一步地,根据以下方法确定目标转化模板:确定待转化多维表达式语句对应的查询操作的类型;根据待转化多维表达式语句对应的查询操作的类型在多个预设转化模板中查找目标转化模板。
[0010]进一步地,分别根据多个目标组生成多个预设转化模板包括:根据多个目标组对默认转化模板进行模板修改,得到修改后的多个模板;将修改后的多个模板作为多个预设转化模板。
[0011 ] 进一步地,在按照目标转化模板将待转化多维表达式语句转化为数据库查询语句之前,该方法还包括:确定服务器的内核的数量,其中,服务器是用于执行将待转化多维表达式语句转化为数据库查询语句的服务器;根据服务器的内核的数量确定目标转化模板查询时的目标并发数。
[0012]进一步地,在按照目标转化模板将待转化多维表达式语句转化为数据库查询语句之前,该方法还包括:确定多个数据库表的数据量对比值;根据多个数据库表的数据量对比值确定目标转化模板中数据库表的连接方式。
[0013]进一步地,按照目标转化模板将待转化多维表达式语句转化为数据库查询语句包括:获取默认转化模板;将默认转化模板替换为目标转化模板;按照目标转化模板将待转化多维表达式语句转化为数据库查询语句。
[0014]为了实现上述目的,根据本发明的另一方面,提供了一种数据库查询语句生成装置。
[0015]根据本发明的数据库查询语句生成装置包括:获取单元,用于获取多个多维表达式语句;分组单元,用于按照查询操作的类型对多个多维表达式语句进行分组,获取多个目标组;生成单元,用于分别根据多个目标组生成多个预设转化模板,其中,多个预设转化模板包括目标转化模板,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同;转化单元,用于按照目标转化模板将待转化多维表达式语句转化为数据库查询语句。
[0016]进一步地,通过以下模块确定查询操作的类型:获取模块,用于获取默认转化模板文件,其中,默认转化模板文件中包含对应不同查询操作类型的默认转化模板;划分模块,用于根据默认转化模板文件将查询操作划分为不同类型的查询操作。
[0017]进一步地,根据以下模块确定目标转化模板:确定模块,用于确定待转化多维表达式语句对应的查询操作的类型;查找模块,用于根据待转化多维表达式语句对应的查询操作的类型在多个预设转化模板中查找目标转化模板。
[0018]通过本发明,采用包括以下步骤的方法:获取多个多维表达式语句;按照查询操作的类型对多个多维表达式语句进行分组,获取多个目标组;分别根据多个目标组生成多个预设转化模板,其中,多个预设转化模板包括目标转化模板,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同;按照目标转化模板将待转化多维表达式语句转化为数据库查询语句,解决了将多维表达式语句转化为数据库查询语句时复杂度较高的问题,进而通过根据多个目标组生成多个预设转化模板,并按照目标转化模板将待转化多维表达式语句转化为数据库查询语句,达到了降低多维表达式语句转化为数据库查询语句的复杂度的效果。

【专利附图】

【附图说明】
[0019]构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0020]图1是根据本发明的数据库查询语句生成方法的实施例的流程图;以及
[0021]图2是根据本发明的数据库查询语句生成装置的实施例的示意图。

【具体实施方式】
[0022]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0023]为了使本【技术领域】的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
[0024]需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0025]下面根据本发明的实施例,提供了一种数据库查询语句生成方法。
[0026]图1是根据本发明的数据库查询语句生成方法的实施例的流程图。如图1所示,该方法包括步骤S102至步骤S108:
[0027]步骤S102,获取多个多维表达式语句。
[0028]通常情况下,在提供数据多维度剖析的系统中,底层实现方法是在实时联机分析处理模式的数据立方体上进行查询接口的封装,从而提供查询功能。在这种应用场景下,生成的多维表达式语句类型相对比较固定。因此,可以收集多个多维表达式语句,例如,提供数据多维度剖析的系统中包含的所有可能的多维表达式语句。
[0029]需要说明的是,对于随机对实时联机分析处理模式的数据立方体进行查询时,也同样适用本方法,只是每次都需要从获取多个多维表达式语句开始进行整个查询过程。
[0030]步骤S104,按照查询操作的类型对多个多维表达式语句进行分组,获取多个目标组,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同。
[0031]可选地,可以通过以下方法确定查询操作的类型:获取默认转化模板文件,其中,默认转化模板文件中包含对应不同查询操作类型的默认转化模板;根据默认转化模板文件将查询操作划分为不同类型的查询操作。
[0032]对收集到的多维表达式语句进行分析后,可以按照参与查询的操作的类型进行分组。这可以参照系统中存储的默认转化模板展开相应的操作。默认转化模板是系统中在实时联机分析处理模式的数据立方体上进行查询接口的封装场景下形成的转化模板,对应的多维表达式语句类型相对比较固定。例如,通过参考存储在{SQLServer安装目录}\OLAP\bin\Cartridges\下的sql2000默认模板文件,可以把查询操作分为INSERT,SELECT,UPDATE,DROP等多种类型。
[0033]步骤S106,分别根据多个目标组生成多个预设转化模板,其中,多个预设转化模板包括目标转化模板。
[0034]可选地,可以根据以下方法确定目标转化模板:确定待转化多维表达式语句对应的查询操作的类型;根据待转化多维表达式语句对应的查询操作的类型在多个预设转化模板中查找目标转化模板。
[0035]例如,待转化多维表达式语句对应的查询操作的类型为UPDATE。由上述提及的方法可知,已根据默认转化模板文件将查询操作划分为不同类型的查询操作,其中,包括查询操作的类型为UPDATE。因此,当确定待转化多维表达式语句对应的查询操作的类型为UPDATE之后,可以直接在多个预设转化模板中查找目标转化模板,即在多个预设转化模板中查找对应的查询操作的类型为UPDATE的预设转化模板,通过该模板将待转化多维表达式语句转化为数据库查询语句。
[0036]可选地,可以分别根据多个目标组生成多个预设转化模板包括:根据多个目标组对默认转化模板进行模板修改,得到修改后的多个模板;将修改后的多个模板作为多个预设转化模板。
[0037]为了适用所有的应用场景,默认的多维表达式语句转化模板枚举了所有的操作,例如:聚合运算(如求和运算、均值运算等);远程和本地的数据读取;以及其他算术运算等。因此,即使只是一个简单的求和操作,也需要进行整个逻辑判断的流程。通过根据多个目标组对默认转化模板进行模板修改,可以简化生成数据库查询语句的过程。
[0038]例如,根据查询操作的类型,例如INSERT,SELECT,UPDATE,DROP等,可以将系统中的默认转化模板进行分组。将分组后的默认转化模板进行修改,生成对应的预设转化模板。假设待转化多维表达式语句对应的查询操作的类型为INSERT,则可以直接在多个预设转化模板中查找查询操作类型为INSERT的预设转化模板,从而利用该模板进行多维表达式语句到数据库查询语句的转化。
[0039]步骤S108,按照目标转化模板将待转化多维表达式语句转化为数据库查询语句。
[0040]通过对默认转化模板的改写,可以简化生成数据库查询语句的过程,同时也可以对该转化过程进行干预,实现对多维表达式语句转化为数据库查询语句过程的优化。转化模板的生成依赖系统的具体情况,例如服务器的资源、数据库表的元数据等。通过自动改写或者替换多维表达式语句转化数据库查询语句的模板,可以提高生成的数据库查询语句的可读性,同时也可以利用数据库查询语句中的调优方法(比如查询提示),来优化多维表达式语句的转化执行效率。
[0041]可选地,在按照目标转化模板将待转化多维表达式语句转化为数据库查询语句之前,还可以进行如下步骤:确定服务器的内核的数量,其中,服务器是用于执行将待转化多维表达式语句转化为数据库查询语句的服务器;根据服务器的内核的数量确定目标转化模板查询时的目标并发数。
[0042]优选地,在多个CPU内核的环境中,并发数一般建议设置成核数的2N分之一,例如,在CPU内核为16核的机器上,并发数可以设置为8或者4。这种设置方法可以增加并行度,同时,也可以防止过多的并发之间的同步等待。
[0043]可选地,在按照目标转化模板将待转化多维表达式语句转化为数据库查询语句之前,还可以进行如下步骤:确定多个数据库表的数据量对比值;根据多个数据库表的数据量对比值确定目标转化模板中数据库表的连接方式。
[0044]例如,在数据库中,有专门的分析优化器用来衡量数据库为完成用户的一次特定请求其所有可选方案所需要的开销,并从中选出最优方案。在最简单的两个数据库表的连接中,数据库表的数据量是一个重要的影响因素,如果两个表数据量相当,即两数据库的数据量对比值接近1,则通常情况下数据库首先会作哈希运算,然后再进行两个数据库表的连接。如果两个数据库表的数据量级别差距比较大,即两个数据库的数据量对比值远远大于1,则数据库往往比较倾向于使用嵌套循环方式来实现两个数据库表的连接。
[0045]按照目标转化模板将待转化多维表达式语句转化为数据库查询语句可以按照如下步骤进行:获取默认转化模板;将默认转化模板替换为目标转化模板;按照目标转化模板将待转化多维表达式语句转化为数据库查询语句。
[0046]在对待转化多维表达式语句进行转化时,应首先替换成该查询操作类型对应的模板。需要说明的是,对于单个多维表达式语句查询的情况,本发明的数据库查询语句生成方法依然适用,因为该方法是介入多维表达式语句至数据库查询语句转化的唯一渠道。本方法简化了多维表达式语句到数据库查询语句转化过程中的模板,同时根据多维表达式语句的类型,结合实际软硬件条件进行语句的调优,达到了提高了生成的数据库查询语句的可读性的效果,并且提高了执行的效率。
[0047]该实施例由于采用包含如下步骤的方法:获取多个多维表达式语句;按照查询操作的类型对多个多维表达式语句进行分组,获取多个目标组;分别根据多个目标组生成多个预设转化模板,其中,多个预设转化模板包括目标转化模板,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同;按照目标转化模板将待转化多维表达式语句转化为数据库查询语句,解决了将多维表达式语句转化为数据库查询语句时复杂度较高的问题,进而通过根据多个目标组生成多个预设转化模板,并按照目标转化模板将待转化多维表达式语句转化为数据库查询语句,达到了降低多维表达式语句转化为数据库查询语句的复杂度的效果。
[0048]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0049]根据本发明的实施例,提供了一种数据库查询语句生成装置。需要说明的是,本发明实施例的数据库查询语句生成装置可以用于执行本发明实施例所提供的数据库查询语句生成方法,本发明实施例的数据库查询语句生成方法也可以通过本发明实施例所提供的数据库查询语句生成装置来执行。
[0050]图2是根据本发明的数据库查询语句生成装置的实施例的示意图。如图2所示,该装置包括:获取单元10、分组单元20、生成单元30和转化单元40。
[0051]获取单元10,用于获取多个多维表达式语句。
[0052]分组单元20,用于按照查询操作的类型对多个多维表达式语句进行分组,获取多个目标组。
[0053]可选地,可以通过以下模块确定查询操作的类型:获取模块,用于获取默认转化模板文件,其中,默认转化模板文件中包含对应不同查询操作类型的默认转化模板;划分模块,用于根据默认转化模板文件将查询操作划分为不同类型的查询操作。
[0054]生成单元30,用于分别根据多个目标组生成多个预设转化模板,其中,多个预设转化模板包括目标转化模板,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同。
[0055]可选地,可以根据以下模块确定目标转化模板:确定模块,用于确定待转化多维表达式语句对应的查询操作的类型;查找模块,用于根据待转化多维表达式语句对应的查询操作的类型在多个预设转化模板中查找目标转化模板。
[0056]转化单元40,用于按照目标转化模板将待转化多维表达式语句转化为数据库查询语句。
[0057]该实施例提供的数据库查询语句生成装置包括:获取单元10,用于获取多个多维表达式语句;分组单元20,用于按照查询操作的类型对多个多维表达式语句进行分组,获取多个目标组;生成单元30,用于分别根据多个目标组生成多个预设转化模板,其中,多个预设转化模板包括目标转化模板,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同;转化单元40,用于按照目标转化模板将待转化多维表达式语句转化为数据库查询语句。通过该装置,解决了将多维表达式语句转化为数据库查询语句时复杂度较高的问题,进而通过生成单元30根据多个目标组生成多个预设转化模板,并通过转化单元40按照目标转化模板将待转化多维表达式语句转化为数据库查询语句,达到了降低多维表达式语句转化为数据库查询语句的复杂度的效果。
[0058]上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0059]在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0060]在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0061]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0062]另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0063]所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0064]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种数据库查询语句生成方法,其特征在于,包括: 获取多个多维表达式语句; 按照查询操作的类型对所述多个多维表达式语句进行分组,获取多个目标组; 分别根据所述多个目标组生成多个预设转化模板,其中,所述多个预设转化模板包括目标转化模板,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同;以及 按照所述目标转化模板将所述待转化多维表达式语句转化为数据库查询语句。
2.根据权利要求1所述的方法,其特征在于,通过以下方法确定所述查询操作的类型: 获取默认转化模板文件,其中,所述默认转化模板文件中包含对应不同查询操作类型的默认转化模板;以及 根据所述默认转化模板文件将所述查询操作划分为不同类型的查询操作。
3.根据权利要求1所述的方法,其特征在于,根据以下方法确定所述目标转化模板: 确定所述待转化多维表达式语句对应的查询操作的类型;以及 根据所述待转化多维表达式语句对应的查询操作的类型在所述多个预设转化模板中查找所述目标转化模板。
4.根据权利要求1所述的方法,其特征在于,分别根据所述多个目标组生成多个预设转化模板包括: 根据所述多个目标组对默认转化模板进行模板修改,得到修改后的多个模板;以及 将所述修改后的多个模板作为所述多个预设转化模板。
5.根据权利要求1所述的方法,其特征在于,在按照所述目标转化模板将所述待转化多维表达式语句转化为数据库查询语句之前,所述方法还包括: 确定服务器的内核的数量,其中,所述服务器是用于执行将所述待转化多维表达式语句转化为所述数据库查询语句的服务器;以及 根据所述服务器的内核的数量确定所述目标转化模板查询时的目标并发数。
6.根据权利要求1所述的方法,其特征在于,在按照所述目标转化模板将所述待转化多维表达式语句转化为数据库查询语句之前,所述方法还包括: 确定多个数据库表的数据量对比值;以及 根据所述多个数据库表的数据量对比值确定所述目标转化模板中数据库表的连接方式。
7.根据权利要求1所述的方法,其特征在于,按照所述目标转化模板将所述待转化多维表达式语句转化为数据库查询语句包括: 获取默认转化模板; 将所述默认转化模板替换为所述目标转化模板;以及 按照所述目标转化模板将所述待转化多维表达式语句转化为数据库查询语句。
8.一种数据库查询语句生成装置,其特征在于,包括: 获取单元,用于获取多个多维表达式语句; 分组单元,用于按照查询操作的类型对所述多个多维表达式语句进行分组,获取多个目标组; 生成单元,用于分别根据所述多个目标组生成多个预设转化模板,其中,所述多个预设转化模板包括目标转化模板,所述目标转化模板对应的查询操作的类型和待转化多维表达式语句对应的查询操作的类型相同;以及 转化单元,用于按照所述目标转化模板将所述待转化多维表达式语句转化为数据库查询语句。
9.根据权利要求8所述的装置,其特征在于,通过以下模块确定所述查询操作的类型: 获取模块,用于获取默认转化模板文件,其中,所述默认转化模板文件中包含对应不同查询操作类型的默认转化模板;以及划分模块,用于根据所述默认转化模板文件将所述查询操作划分为不同类型的查询操作。
10.根据权利要求8所述的装置,其特征在于,根据以下模块确定所述目标转化模板: 确定模块,用于确定所述待转化多维表达式语句对应的查询操作的类型;以及 查找模块,用于根据所述待转化多维表达式语句对应的查询操作的类型在所述多个预设转化模板中查找所述目标转化模板。
【文档编号】G06F17/30GK104484392SQ201410770798
【公开日】2015年4月1日 申请日期:2014年12月11日 优先权日:2014年12月11日
【发明者】黄健 申请人:北京国双科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1