业务数据查询方法、装置、电子设备和存储介质与流程

文档序号:31937725发布日期:2022-10-26 02:15阅读:43来源:国知局
业务数据查询方法、装置、电子设备和存储介质与流程

1.本技术涉及互联网技术领域,具体而言,涉及业务数据查询方法、装置、电子设备和存储介质。


背景技术:

2.随着科技的快速发展,企业、政府部门、院校等在业务处理的过程中产生了大量的业务数据,这些业务数据通常存储于数据库中。数据库通常有多种类型,包括sqlite、mysql、mongodb等,当针对不同类型的数据库进行业务数据的查询时,由于不同类型的数据库所使用的编程语言通常不同,因此通常需要技术人员利用多种编程语言来重复编写查询语句,导致业务数据的查询效率较低。


技术实现要素:

3.本技术实施例的目的在于提供业务数据查询方法、装置、电子设备和存储介质,用于解决现有技术中业务数据查询效率较低的问题。
4.本技术实施例第一方面提供了一种业务数据查询方法,所述方法包括:
5.获取第一结构化编程语言的查询语句;
6.根据所述第一结构化编程语言的语法规则,识别所述查询语句中的各个函数以及对应的函数值;
7.根据第二结构化编程语言的语法规则,将所识别出的各个函数以及对应的函数值,转化为所述第二结构化编程语言中对应的函数和函数值;
8.利用所述第二结构化编程语言中对应的函数和函数值,生成第二结构化编程语言的查询语句,用于对目标类型的数据库进行业务数据的查询。
9.于一实施例中,根据所述第一结构化编程语言的语法规则,识别所述查询语句中的各个函数以及对应的函数值,具体包括:
10.根据所述第一结构化编程语言的语法规则,利用词法分析识别所述查询语句中的各个函数以及对应的函数值。
11.于一实施例中,利用所述第二结构化编程语言中对应的函数和函数值,生成第二结构化编程语言的查询语句,具体包括:
12.将所述的各个函数和对应的函数值生成语句片段;
13.将各个语句片段通过拼接,生成第二结构化编程语言的查询语句。
14.于一实施例中,所述方法还包括:
15.对所述第二结构化编程语言的查询语句进行代码优化;
16.通过代码优化后的查询语句,对目标类型的数据库进行业务数据的查询。
17.于一实施例中,对所述第二结构化编程语言的查询语句进行代码优化,具体包括:
18.通过条件合并和/或规整的优化方式,对查询语句进行代码优化。
19.于一实施例中,所述方法还包括:
20.获取业务数据查询请求,所述业务数据查询请求包括第一结构化编程语言的查询语句;以及,
21.获取第一结构化编程语言的查询语句,具体包括:
22.从所述业务数据查询请求中,提取所述第一结构化编程语言的查询语句。
23.于一实施例中,获取业务数据查询请求,具体包括:
24.从请求队列获取所述业务数据查询请求;或,
25.获取时任务被触发所生成的业务数据查询请求。
26.本技术实施例第二方面提供了一种业务数据查询装置,包括:
27.查询语句获取单元,用于获取第一结构化编程语言的查询语句;
28.识别单元,用于根据所述第一结构化编程语言的语法规则,识别所述查询语句中的各个函数以及对应的函数值;
29.转化单元,用于根据第二结构化编程语言的语法规则,将所识别出的各个函数以及对应的函数值,转化为所述第二结构化编程语言中对应的函数和函数值;
30.生成单元,用于利用所述第二结构化编程语言中对应的函数和函数值,生成第二结构化编程语言的查询语句,用于对目标类型的数据库进行业务数据的查询。
31.本技术实施例第三方面提供了一种电子设备,包括:
32.存储器,用以存储计算机程序;
33.处理器,用以执行本技术方法实施例中任一项所述的方法。
34.本技术实施例第四方面提供了一种存储介质,包括:程序,当其在电子设备上运行时,使得电子设备可执行本技术方法实施例中任一项所述的方法。
35.采用本技术实施例所提供的业务数据查询方法,在获取第一结构化编程语言的查询语句之后,根据第一结构化编程语言的语法规则,识别出该查询语句中的各个函数以及对应的函数值,然后根据第二结构化编程语言的语法规则,将所识别出的各个函数以及对应的函数值,转化为第二结构化编程语言中对应的函数和函数值,然后利用转化得到的第二结构化编程语言中对应的函数和函数值,生成第二结构化编程语言的查询语句,进而能够通过第二结构化编程语言的查询语句,对目标类型的数据库进行业务数据的查询。采用该方法由于能够通过第一结构化编程语言的查询语句,生成为第二结构化编程语言的查询语句,因此在针对不同类型的数据库进行业务数据的查询时,能够减少技术人员重复编写查询语句的次数,进而提高业务数据的查询效率。
附图说明
36.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
37.图1为本技术一实施例提供的电子设备的结构示意图;
38.图2为本技术一实施例提供的,电子设备与终端交互示意图;
39.图3为本技术一实施例提供的,业务数据查询方法的具体流程示意图;
40.图4为本技术一实施例提供的,具体应用场景下业务数据查询方法的具体流程示
意图;
41.图5为本技术一实施例提供的,业务数据查询装置的具体结构示意图。
具体实施方式
42.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。在本技术的描述中,诸如“第一”、“第二”、“第三”等术语仅用于区分描述,而不能理解为指示或暗示相对重要性或先后顺序。
43.如前所述,数据库通常有多种类型,当针对不同类型的数据库进行业务数据的查询时,由于不同类型的数据库所使用的编程语言通常不同,因此通常需要技术人员利用多种编程语言来重复编写查询语句,导致业务数据的查询效率较低。
44.比如,针对mysql数据库进行业务数据的查询时,需要技术人员利用诸如结构化查询语言(structured query language,sql)来编写查询语句,而对mongodb数据库进行业务数据的查询时,需要技术人员利用mongodbql语言来编写查询语句,导致业务数据的查询效率较低。
45.如图1所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图1中以一个处理器为例。处理器11和存储器12可以通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。
46.该电子设备1可以是手机、笔记本电脑、台式电脑或其组成的大型服务器或服务器集群等。
47.如图2所示,电子设备1还可以对接一个或多个终端2,电子设备1可以分别和每个终端2进行数据通信。终端2可以是用户的手机、电脑或其他类型的终端。因此,于一实施例中,当用户需要查询数据库中的业务数据查询时,用户可以在终端2的图形用户界面上进行诸如点击、拖动、触控、编写等操作,从而通过终端2生成业务数据查询请求,该业务数据查询请求中包括第一结构化编程语言的查询语句,并将该业务数据查询请求发送至电子设备1,从而通过该电子设备1执行下述实施例中方法的全部或部分流程,实现对业务数据的查询。
48.于一实施例中,当需要查询数据库中的业务数据时,用户也可以在电子设备1的图形用户界面上进行诸如点击、拖动、触控、编写等操作,从而使电子设备1生成业务数据查询请求,该业务数据查询请求中包括第一结构化编程语言的查询语句,从而通过该电子设备1执行下述实施例中方法的全部或部分流程,实现对业务数据的查询。
49.如图3所示为本技术一实施例所提供的,业务数据查询方法的流程示意图,该方法部分或全部步骤可由图1所示的电子设备1来执行,比如这里可以以电子设备1作为服务器来执行该方法作为示例,对该方法进行说明。该方法包括如下步骤:
50.步骤s31:获取业务数据查询请求,该业务数据查询请求包括第一结构化编程语言的查询语句。
51.其中,结构化编程是一种编程范例,旨在通过广泛使用选择和重复,块结构的结构化控制流构造来提高计算机程序的清晰度、质量和开发时间。通常可以使用结构化编程语言来进行结构化编程。在实际应用中,该第一结构化编程语言可以为任意一种结构化编程
语言,比如可以为sql语言,也可以为mongodbql语言,也可以为新开发的构化编程语言,也可以为其他的结构化编程语言。
52.在用户需要查询数据库中的业务数据时,可以在终端上进行操作,从而通过终端向服务器发送该业务数据查询请求,此时服务器能够接收到该业务数据查询请求。
53.比如,用户在终端的图形用户界面,利用第一结构化编程语言,通过点击、拖动、触控、编写等操作编写出第一结构化编程语言的查询语句,然后通过终端向服务器发送,包括该第一结构化编程语言查询语句的业务数据查询请求。
54.当然,通过用户在终端的图形用户界面的操作,也可以从查询语句数据库或云端获取该第一结构化编程语言的查询语句,比如用户预先利用第一结构化编程语言编写出第一结构化编程语言的查询语句之后,将该第一结构化编程语言的查询语句存储于查询语句数据库或云端,使得后续能够从该查询语句数据库或云端获取到该第一结构化编程语言的查询语句;用户从查询语句数据库或云端获取到第一结构化编程语言的查询语句之后,可以通过终端向服务器发送该业务数据查询请求。
55.服务器获取业务数据查询请求的方式可以有多种,这里可以列举其中的几种方式进行说明。
56.方式一,用户在终端向服务器发送业务数据查询请求之后,使服务器能够直接接收到该数据处理请求。因此,服务器获取到业务数据查询请求的具体方式可以是,接收终端所发送的数据处理请求。
57.另外,服务器获取到业务数据查询请求的具体方式还可以是,从请求队列中获取到该业务数据查询请求,比如,当多个不同用户短时间内均通过终端向服务器发送业务数据查询请求时,服务器若直接接收这些业务数据查询请求,可能会导致运算压力过大,此时可以将这些业务数据查询请求,按照终端发送时间戳的先后顺序等,依次添加至预先建立的请求队列中,然后服务器从该请求队列依次获取这些业务数据查询请求。
58.方式二,服务器生成该业务数据查询请求。该方式二中,由服务器自身生成该业务数据查询请求。
59.对于服务器生成该业务数据查询请求的具体方式,比如可以是用户在服务器的图形用户界面上进行操作,从而使服务器生成业务数据查询请求。
60.另外,还可以在服务器预先构建定时任务,该定时任务设置有目标时间点,在实际时间到达该目标时间点时,该定时任务被触发,从而生成该业务数据查询请求,进而使服务器实现对业务数据的查询。
61.步骤s32:获取第一结构化编程语言的查询语句。
62.在上述步骤s31的基础上,该步骤s32具体的实现方式可以是,从步骤s31所获取的业务数据查询请求中,提取出该第一结构化编程语言的查询语句。
63.步骤s33:根据第一结构化编程语言的语法规则,识别该查询语句中的各个函数以及对应的函数值。
64.其中,对于该第一结构化编程语言的查询语句,由于该查询语句为利用该第一结构化编程语言编写,因此符合该第一结构化编程语言的语法规则,在该查询语句中包括第一结构化编程语言的一个或多个函数,以及与各个函数对应的函数值。
65.在结构化编程语言中,为了便于对程序进行模块化组织,通常可以包括函数,比如
sql语言中包括select、where、count等函数,在编程的过程中,可以调用这些函数并对函数进行赋值(即函数对应的函数值)。一个或多个函数及对应的函数值,能够通过组合或单独形成代码片段,并将这些代码片段通过逻辑连接词(包括and、or、not),以及该结构化编程语言中其他类型的连接词进行拼接,从而生成该结构化编程语言的查询语句。
66.因此,在该步骤s33中,能够根据第一结构化编程语言的语法规则,来识别出第一结构化编程语言的查询语句中的各个函数,以及这些函数分别对应的函数值。
67.具体来说,可以根据第一结构化编程语言的语法规则,并利用词法分析来识别该查询语句中的各个函数以及对应的函数值,比如,在该过程中,可以按顺序获取该查询语句中的有限字符序列(该限字符序列的字符数量可以为1个、2个或其他数量),并结合第一结构化编程语言的语法规则,识别该有限字符序列是否为该第一结构化编程语言中,具有词法含义的单词,若是则作为一个分词,并进一步识别该分词是否为第一结构化编程语言中的函数或函数值,若否则继续获取其他的有限字符序列。
68.比如,若第一结构化编程语言为sql语言,可以结合sql语言的语法规则,包括sql语言的运算符、控制符、函数等,识别该有限字符序列是否为该第一结构化编程语言中,具有词法含义的单词,若是,则将该有限字符序列作为一个分词,并进一步识别该分词是否为第一结构化编程语言中的函数或函数值,从而通过这种方式,能够识别出第一结构化编程语言的查询语句中的各个函数以及对应的函数值。
69.步骤s34:根据第二结构化编程语言的语法规则,将所识别出的各个函数以及对应的函数值,转化为第二结构化编程语言中对应的函数和函数值。
70.其中,该第二结构化编程语言可以为,不同于第一结构化编程语言的构化编程语言。比如,该第一结构化编程语言为sql语言时,该第二结构化编程语言可以为mongodbql语言;第一结构化编程语言为新开发的构化编程语言时,该第二结构化编程语言可以为sql语言等。
71.在该步骤s34中,可以根据第二结构化编程语言的语法规则,将上述步骤s33所识别出的各个函数以及对应的函数值,转化为第二结构化编程语言中对应的函数和函数值。比如,该第一结构化编程语言为sql语言,所识别出的函数为select,该select对应的函数值为“xxx”,其中,在sql语言中,select的功能为从数据库中查询数据,并将查询结果返回给用户,检索条件为select的函数值“xxx”;并且,该第二结构化编程语言为mongodbql语言;此时在该步骤s34中,可以根据sql语言中select的功能,从mongodbql语言中筛选出相应的函数,并将select的函数值“xxx”经过mongodbql语言的语法规则转换格式等之后,赋予该筛选出的函数。
72.步骤s35:利用转化得到的第二结构化编程语言中对应的函数和函数值,生成第二结构化编程语言的查询语句。
73.在上述步骤s34转化得到第二结构化编程语言中对应的函数和函数值之后,可以进一步利用该转化得到的第二结构化编程语言中对应的函数和函数值,生成第二结构化编程语言的查询语句。比如,在该过程中,可以先将转化得到的各个函数及对应的函数值生成语句片段,比如将其中的一个或多个函数及对应的函数值,通过组合或单独形成代码片段;在生成语法片段之后,将这些代码片段通过and、or、not等逻辑连接词,以及该第二结构化编程语言中其他类型的连接词(比如运算符、控制符等)进行拼接,从而生成第二结构化编
程语言的查询语句。
74.步骤s36:通过第二结构化编程语言的查询语句,对目标类型的数据库进行业务数据的查询。
75.在生成第二结构化编程语言的查询语句之后,还可以将该查询语句用于对目标类型的数据库进行业务数据的查询,其中,该目标类型的数据库指支持该第二结构化编程语言的数据库,比如,该第二结构化编程语言为mongodbql时,目标类型的数据库为mongodb数据库。
76.其中,将该查询语句用于对目标类型的数据库进行业务数据的查询,可以是直接将该查询语句输入至该数据库,进而通过执行该查询语句对该数据库中的业务数据进行查询。
77.当然,为了提高业务数据的查询效率,在生成该第二结构化编程语言的查询语句之后,还可以先对该查询语句进行代码优化,从而得到代码优化后的查询语句,然后通过代码优化后的查询语句,对目标类型的数据库进行业务数据的查询,比如将该代码优化后的查询语句输入至该数据库,进而通过执行该优化后的查询语句,对该数据库中的业务数据进行查询。其中,对该查询语句进行代码优化的方式可以包括,通过条件合并和/或规整等优化方式,对该查询语句进行代码优化,当然也可以是其他的代码优化方式。
78.采用本技术实施例所提供的业务数据查询方法,在获取第一结构化编程语言的查询语句之后,根据第一结构化编程语言的语法规则,识别出该查询语句中的各个函数以及对应的函数值,然后根据第二结构化编程语言的语法规则,将所识别出的各个函数以及对应的函数值,转化为第二结构化编程语言中对应的函数和函数值,然后利用转化得到的第二结构化编程语言中对应的函数和函数值,生成第二结构化编程语言的查询语句,进而能够通过第二结构化编程语言的查询语句,对目标类型的数据库进行业务数据的查询。采用该方法由于能够通过第一结构化编程语言的查询语句,生成为第二结构化编程语言的查询语句,因此在针对不同类型的数据库进行业务数据的查询时,能够减少技术人员重复编写查询语句的次数,进而提高业务数据的查询效率。
79.上述是对本技术实施例所提供的业务数据查询方法的说明,为了便于理解,这里可以结合具体的示例,对该方法进行进一步的说明。在该示例中,第二结构化编程语言为sql语言,第一结构化编程语言为新开发的构化编程语言,这里可以对该第一结构化编程语言的语法规则进行简单说明:
80.该第一结构化编程语言可以包括多个函数,比如fields、sort、limit、skip、filter、group、aggregate等,各个函数的功能和使用如下所示:
81.1、fields:该函数的属性结构是list《string》,也就是字符串数组,用户填入的字符串会被函数解析器认定为是需要从数据库中查询和展示的数据,不在fields里的数据库数据不会被展示。比如,fields的函数值为["name","desc"],则需要查询数据库中的name字段的数据和desc字段的数据;fields的函数值可以为空(即null)。
[0082]
因此,该第一结构化编程语言中的fields的功能,对应于sql语言中的函数select,比如上述的查询语句fields:["name","desc"],转化为sql语言中的查询语句为select`name`,`desc`;查询语句fields:[null],转化为sql语言中的查询语句为select*。
[0083]
2、sort:是一个集合结构,表现为list《sortoperation》,其中sortoperation又分
为key和sorttype,key是指需要被排序的字段,sorttype是指对应字段的排序方向,即顺序还是降序(对应的函数值desc)。举例来说,sort的函数值为key=bookid,sorttype=desc,表示对数据库中key字段的业务数据进行降序排列;对应于sql语言中的函数order by,函数值为`bookid`desc,因此转化为sql语言中查询语句为order by`bookid`desc。
[0084]
3、limit、skip:这两个函数用于是对数据库中的业务数据进行截取,常用于分页或者列表需求。比如limit的函数值为30,表示从数据库中截取30行业务数据即可,对应于sql语言中的函数limit,因此查询语句limit:30,转化为sql语言中的查询语句为limit 30。skip的功能对应于sql语言中的offset。
[0085]
4、filter函数的结构比较复杂,其是一个可递归的数据结构,分为logic、compares、sublogic。
[0086]
其中,logic指的是本层的逻辑关系,支持and、or、not等逻辑连接词。compares是本层的筛选条件数组,其结构为source、op、target,其中,source指的是需要筛选的字段,op指的是条件操作符,该条件操作符包括$eq(等于)、$gt(大于)、$gte(大于等于)、$lt(小于)、$lte(小于等于)、$in(在一些值之中)、$ne(不等于)、$nin(对$in取反)、$like(模糊匹配)、$between(在一个值和另一个值之中)、$unitdaterange(相对时间操作符)等。
[0087]
其中,$eq对应于sql语言中的=;$gt对应于sql语言中的》;$in对应于sql语言中的in;$nin对应于sql语言中的not in;$like对应于sql语言中的like;$between对应于sql语言中的between;
[0088]
$unitdaterange用于表达相对时间,弥补了常规语言在这方面的弱势。其定义是unit、begin、end组成。其中unit支持天、周、月、季度、年,begin、end任一一个,如果是正数则代表未来的时间,如果是负数代表是过去的时间,0自是当前。比如说unit=day,begin=-2,end=3,表示前2天和未来3天之间,假设今天是5号,则sql为between 20220103 and 20220108。常用于相对时间计算。
[0089]
target指的是目标值,一般是字符串或者是数字。
[0090]
比如source=bookid op=$gte target=1002,表示为bookid》=1002。因为其是数组,所以多个元素情况下,能够用logic来做连接符,即compares[0]logic(or and)compares[1]。
[0091]
sublogic表示数组的filter是递归结构,是用来表达子逻辑的,能够与logic联动,表达为where compares logic(sublogic),因为其递归结构可以复杂地转换为where a and b and(c or(d and e and f))。
[0092]
5、group:该函数用于对数据进行分组。其结构为op、key、target、format、range。
[0093]
其中,op指的是分组操作符,分为$category、$dateformat、$range。
[0094]
该$category指的是根据key进行直接分组。
[0095]
$dateformat指的是根据key格式化成日期格式的分组。其值分为$dateyearmonthday、$dateyearmonth、$dateyear。
[0096]
$dateyearmonthday通常会将日期字段转换成年-月-日的格式,比如为yyyy-mm-dd格式。$dateyearmonth会转为年-月的格式,比如为yyyy-mm。$dateyear则表示年的格式,比如为yyyy。
[0097]
$range指的是范围分组,其是一个数组,结构分为left、right、leftopen、
rightopen、value。其中,left、right指的是其中一个分组的左边界、右边界,如果值是null,则代表无穷边界;leftopen、rightopen指的是边界是否是开区间,如果是开区间则不包含对应的left或者right,如果是闭区间,则反之;value指的是一个分组的标签值,也就是分组释义。
[0098]
比如,$range=[(left=1,right=3,leftopen=false,rightopen=true,value=低价值用户),(left=3,right=6,leftopen=false,rightopen=true,value=中价值用户),(left=6,right=null,leftopen=false,rightopen=true,value=高价值用户)],表示的是1《=低价值《3,3《=中价值《6,6《=高价值《9,会转化为下面的sql
[0099]
key指的是分组别名;target指的是被分组的字段;format仅在op=$dateformat有意义;range仅在op=$range有意义。
[0100]
比如,该第一结构化编程语言中的查询语句op=$category key=bookidgroup target=bookid format=null range=null,转化为sql中的查询语句为:select`bookid`as'bookidgroup'group by`bookid`。
[0101]
6、aggregate:该函数是用于聚合数据的,其结构是一个数组,数组里的每个元素由op、key、target组成。
[0102]
其中,op包含$max、$min、$count、$count_distinct、$avg、$sum;
[0103]
$max是用取最大值的方式聚合,$min、$count、$avg、$sum依此类推。$count_distinct和$count的区别是,前者是去重数,后者是总数。
[0104]
key指向的是该聚合字段结果的别名;target指向的是被聚合的字段。
[0105]
比如,该第一结构化编程语言中的查询语句op=$sum key=mymoney target=money,转化为sql中的查询语句为:sum(`money`)as"mymoney";又比如该第一结构化编程语言中的查询语句op=$count_distinct key=ipdiscount target=ip,转化为sql中的查询语句为:count(distinct(`ip`))as"ipdiscount"。
[0106]
如图4所示,该应用场景下,第一结构化编程语言为上述新开发的构化编程语言,第二结构化编程语言为sql语言,目标类型的数据库为mysql数据库。该方法包括如下步骤:
[0107]
步骤s41:获取第一结构化编程语言的查询语句。
[0108]
步骤s42:根据第一结构化编程语言的语法规则,识别该查询语句中的各个函数以及对应的函数值。
[0109]
比如,根据该新开发的构化编程语言的语法规则,通过词法分析来是被出相应的函数和函数值。
[0110]
步骤s43:根据sql语言的语法规则,将所识别出的各个函数以及对应的函数值,转化为sql语言中对应的函数和函数值。
[0111]
比如,对于该新开发的构化编程语言中的函数fields,其功能类似于sql语言中的函数select,因此直接转化为select,并将fields的函数值根据sql语言的语法规则进行调整后,对select进行赋值。
[0112]
对于该新开发的构化编程语言中的函数sort的,其功能类似于sql语言中的函数order by,因此直接转化为order by,并将sort的函数值根据sql语言的语法规则进行调整后,对order by进行赋值。
[0113]
对于该新开发的构化编程语言中的函数limit,其功能类似于sql语言中的函数
limit,因此直接转化为sql语言中的limit,并将limit的函数值根据sql语言的语法规则进行调整后,对limit进行赋值。
[0114]
对于该新开发的构化编程语言中的函数skip,其功能类似于sql语言中的函数offset,因此直接转化为sql语言中的offset,并将skip的函数值根据sql语言的语法规则进行调整后,对offset进行赋值。
[0115]
对于该新开发的构化编程语言中的函数filter,其功能类似于sql语言中的函数where,因此直接转化为sql语言中的where,并将filter的函数值根据sql语言的语法规则进行调整后,对where进行赋值。
[0116]
对于该新开发的构化编程语言中的函数group因为函数结构的特殊性,此时不仅对应sql语言中的函数group,还需要将group中的key对应的值添加至sql语言中的select,因此该新开发的构化编程语言中的函数group,对应于sql语言中的函数group和select,形成select groupkey。
[0117]
对于该新开发的构化编程语言中的函数aggregate字段,直接转换为select的部分即可。一般来说,aggregate必须搭配group,如果不搭配,虽然能翻译,但是结果是没有意义的。
[0118]
步骤s44:利用sql语言中对应的函数和函数值,生成sql语言的查询语句。
[0119]
步骤s45:利用该sql语言的查询语句,对mysql数据库进行业务数据的查询。
[0120]
显然该图4所示的方法也能够解决现有技术中的问题,这里对此不再赘述。
[0121]
基于与本技术实施例所提供的,业务数据查询方法相同的发明构思,本技术实施例还提供了一种业务数据查询装置,对于该装置实施例,如有不清楚之处,可以参考方法实施例的相应内容。如图5所示为该装置50的具体结构示意图,该装置50包括:查询语句获取单元501、识别单元502、转化单元503和生成单元504,其中:
[0122]
查询语句获取单元501,用于获取第一结构化编程语言的查询语句;
[0123]
识别单元502,用于根据所述第一结构化编程语言的语法规则,识别所述查询语句中的各个函数以及对应的函数值;
[0124]
转化单元503,用于根据第二结构化编程语言的语法规则,将所识别出的各个函数以及对应的函数值,转化为所述第二结构化编程语言中对应的函数和函数值;
[0125]
生成单元504,用于利用所述第二结构化编程语言中对应的函数和函数值,生成第二结构化编程语言的查询语句,用于对目标类型的数据库进行业务数据的查询。
[0126]
采用本技术实施例所提供的装置50,由于该装置50采用与本技术实施例所提供的,业务数据查询方法相同的发明构思,在该方法能够解决技术问题的前提下,该装置50也能够解决技术问题,这里对此不再赘述。
[0127]
另外,在实际应用中,通过将该装置50与具体硬件设备、云技术等相结合所取得的技术效果,也在本技术的保护范围之内,比如采用分布式集群的方式将该装置50中的不同单元布设于分布式集群中的不同节点中,从而提高效率等。
[0128]
识别单元502还可以具体包括识别子单元,用于根据所述第一结构化编程语言的语法规则,利用词法分析识别所述查询语句中的各个函数以及对应的函数值。
[0129]
转化单元503还可以具体包括转化子单元,用于将所述的各个函数和对应的函数值生成语句片段;将各个语句片段通过拼接,生成第二结构化编程语言的查询语句。
[0130]
该装置50还可以还包括优化单元和查询单元,其中:
[0131]
优化单元,用于对所述第二结构化编程语言的查询语句进行代码优化;
[0132]
查询单元,用于通过代码优化后的查询语句,对目标类型的数据库进行业务数据的查询。
[0133]
优化单元还可以具体包括优化子单元,用于通过条件合并和/或规整的优化方式,对查询语句进行代码优化。
[0134]
该装置50还可以包括第一获取单元,用于获取业务数据查询请求,所述业务数据查询请求包括第一结构化编程语言的查询语句;以及,查询语句获取单元可以具体包括查询语句获取子单元,用于从所述业务数据查询请求中,提取所述第一结构化编程语言的查询语句。
[0135]
第一获取单元可以具体包括第一获取子单元,用于从请求队列获取所述业务数据查询请求;或,获取时任务被触发所生成的业务数据查询请求
[0136]
本发明实施例还提供了一种存储介质,包括:程序,当其在电子设备上运行时,使得电子设备可执行上述实施例中方法的全部或部分流程。其中,存储介质可为磁盘、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等。存储介质还可以包括上述种类的存储器的组合。
[0137]
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1