一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种目标格式数据请求体的构建方法、装置、介质及设备与流程

2022-02-22 09:12:21 来源:中国专利 TAG:


1.本技术实施例涉及大数据技术领域,尤其涉及一种目标格式数据请求体的构建方法、装置、介质及设备。


背景技术:

2.随着科学技术的发展,在数据解决方案中数据服务方法不断提升。在数据解决方案中,数据服务是获取数据内容,一般情况下数据服务提供rest请求访问接口的数据访问方式。理想状态下所有的调用方式都采用rest请求访问数据。但是随着多种数据库的兴起,数据库支持的接口类型各不相同,比如,低版本的elasticsesrch仍然只提供了rest请求访问接口。
3.为了支持只提供了rest请求访问接口的系统,目前传统的解决方法有:其一,通过设计相对固定的查询模式,利用中间件服务端进行相应的转换,并进行封装;其二,通过绕开原系统的rest接口,直接对接原系统的rest接口,重复实现语句的转换。
4.目前对于只提供rest请求访问接口的系统现有的解决方案,由于不同数据库需要不同的中间件,增加了整个系统的复杂度;如果在接入端将原系统的rest接口曾经实现过的复杂逻辑再一次通过sql语句实现一遍,则重复工作且需要写复杂的sql语句,增加了语句编写的复杂程度,导致用户体验不够友好。


技术实现要素:

5.本技术实施例提供一种目标格式数据请求体的构建方法、装置、介质及设备,无须额外的中间件服务,可以实现灵活的语法转换,支持绝大部分rest请求接口,充分利用客户端资源,避免增加数据服务端的复杂度。
6.第一方面,本技术实施例提供了一种目标格式数据请求体的构建方法,方法包括:
7.获取sql查询语句,将sql查询语句转换成抽象语法树;
8.对抽象语法树采用预先获取的元数据进行校验,若检验无问题,则将抽象语法树的节点转换成处理节点;其中,抽象语法树的节点包括根节点和子节点;
9.将处理节点按照预设映射规则进行处理,得到映射结果;
10.将映射结果构建成目标格式的数据请求体,以对支持目标格式的服务进行数据请求。
11.可选的,将处理节点按照预设映射规则进行处理,得到映射结果,包括:
12.将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体;
13.对目标请求体进行拼接,得到映射结果。
14.可选的,处理节点包括filter、project、sort以及scan中的至少一种;
15.目标请求体包括elasticsearch数据库中的source、termquery、sort以及索引名中的至少一种。
16.可选的,将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体,
包括:
17.若处理节点为filter,则按照预设映射规则进行处理得到source请求体;
18.若处理节点为project,则按照预设映射规则进行处理得到termquery请求体;
19.若处理节点为sort,则按照预设映射规则进行处理得到sort请求体;
20.若处理节点为scan,则按照预设映射规则进行处理得到索引名请求体。
21.可选的,将抽象语法树的节点转换成处理节点,包括:
22.若抽象语法树的节点为where或having,则转换成filter处理节点;
23.若抽象语法树的节点为select,则转换成project处理节点;
24.若抽象语法树的节点为order by、offset或fetch,则转换成sort处理节点;
25.若抽象语法树的节点为from,则转换成scan处理节点。
26.可选的,在将sql查询语句转换成抽象语法树之后,所述方法还包括:
27.对抽象语法树采用预先获取的元数据进行校验,若检验有问题,则确定为非法sql语句,并返回错误信息。
28.可选的,在将sql语句转换成抽象语法树之前,所述方法还包括:
29.获取并缓存支持目标格式的服务的元数据;其中,元数据包括数据库名、表名、字段名以及字段类型中的至少一种。
30.第二方面,本技术实施例提供了一种目标格式数据请求体的构建装置,该装置包括:
31.语句转换模块,用于获取sql查询语句,将所述sql查询语句转换成抽象语法树;
32.校验模块,用于对所述抽象语法树采用预先获取的元数据进行校验,若检验无问题,则将所述抽象语法树的节点转换成处理节点;其中,所述抽象语法树的节点包括根节点和子节点;
33.映射模块,用于将所述处理节点按照预设映射规则进行处理,得到映射结果;
34.数据请求模块,用于将所述映射结果构建成目标格式的数据请求体,以对支持目标格式的服务进行数据请求。
35.第三方面,本技术实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本技术实施例所述的目标格式数据请求体的构建方法。
36.第四方面,本技术实施例提供了一种电子设备,包括存储器,处理器及存储在存储器上并可在处理器运行的计算机程序,所述处理器执行所述计算机程序时实现如本技术实施例所述的目标格式数据请求体的构建方法。
37.本技术实施例所提供的技术方案,通过提供一种目标格式数据请求体的构建方法、装置、介质及设备,首先获取sql查询语句,将sql查询语句转换成抽象语法树,再将抽象语法树的节点转换成处理节点;其次将处理节点按照预设映射规则进行处理,得到映射结果;并将映射结果构建成目标格式的数据请求体,以对支持目标格式的服务进行数据请求,解决事先约定格式的瓶颈,无须额外的中间件服务,可以实现灵活的语法转换,支持绝大部分rest请求接口,最大地利用数据库的数据查询能力。利用上述方案,能够灵活的实现语法转换,可以充分利用客户端资源,避免增加数据服务端的复杂度。
附图说明
38.图1是本发明实施例一提供的目标格式数据请求体的构建方法的流程图;
39.图2是本发明实施例二提供的另一目标格式数据请求体的构建方法的流程图;
40.图3是本发明实施例三提供的一种目标格式数据请求体的构建装置的结构框图;
41.图4是本技术实施例五提供的一种电子设备的结构示意图。
具体实施方式
42.下面结合附图和实施例对本技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本技术,而非对本技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本技术相关的部分而非全部结构。
43.在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各步骤描述成顺序的处理,但是其中的许多步骤可以被并行地、并发地或者同时实施。此外,各步骤的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
44.实施例一
45.图1是本发明实施例一提供的目标格式数据请求体的构建方法的流程图,本实施例可适用于通过数据请求体访问数据的场景,该方法可以由本技术实施例所提供的目标格式数据请求体的构建装置执行,该装置可以由软件和/或硬件的方式来实现,并可集成于电子设备中。
46.如图1所示,本发明实施例一提供的目标格式数据请求体的构建方法,包括如下步骤:
47.s110、获取sql查询语句,将sql查询语句转换成抽象语法树。
48.其中,sql查询语句是从java数据库连接数据库(java database connectivity,jdbc)中检索满足条件的数据。示例性的,查询的数据源可以来自一张表,也可以来自多张表或者来自视图。查询的结果是由0行(没有满足条件的数据)或多行记录组成的一个记录集合,并允许选择一个或多个字段作为输出字段。
49.其中,抽象语法树是源代码语法结构的一种抽象表示,它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。抽象语法树的节点包括根节点和子节点。
50.具体的,从jdbc将sql查询语句存入表中,并存储相应的需要的信息,生成一个类似的日志表,在程序中读取就可获取sql查询语句,然后对sql查询语句进行语法分析,将查询语句转换成按照某种有用方式标识查询语句结构的抽象语法树。
51.s120、对抽象语法树采用预先获取的元数据进行校验,若检验无问题,则将抽象语法树的节点转换成处理节点。
52.具体的,对抽象语法树采用预先获取的元数据进行校验,当一个字段的类型是数值型,但是sql中的这个数值型是一个字符串,那么数值类型不匹配,直接返回;当a在元数据中不存在,带有引号的会被认为是字符串,没带引号的无法识别,确认为有问题。
53.其中,抽象语法树的节点可以包括有根节点和子节点;处理节点可以是一种关系
表达式,关系表达式处理数据,通常有sort、join、project、filter以及scan函数等,本发明实施例对此不进行限制。
54.具体的,将抽象语法树的节点转换成处理节点,所有的处理节点的关系表达式都可以在sql select中找到,如where和having对应的filter、select list对应project、order by、offset以及fetch对应着sort,以及from对应着scan/join等等,最后抽象语法树的节点全部生成对应的处理节点。
55.s130、将处理节点按照预设映射规则进行处理,得到映射结果。
56.其中,预设映射规则可以是每个处理节点对应着对数据的一个操作处理,如where和having对应的filter,selectlist对应project、order by、offset以及fetch对应着sort,from对应着scan/join等,本发明实施例对此不进行限制。
57.s140、将映射结果构建成目标格式的数据请求体,以对支持目标格式的服务进行数据请求。
58.其中,数据请求体是客户端发送给应用程序编程接口的数据。
59.具体的,将映射结果构建成目标格式的数据请求体,需要对filter、project、sort、scan以及join等数据的处理操作都进行一一映射,比如project对应到elasticsearch中的_source请求体,filter对应到termquery,sort对应到sort,scan对应的索引名,相当于传统数据库的表名。
60.本技术实施例所提供的技术方案,通过实现灵活的语法转换,解决事先约定格式的瓶颈,无须额外的中间件服务,支持绝大部分rest请求接口,最大地利用数据库的数据查询能力,充分利用客户端资源,避免增加数据服务端的复杂度。
61.在上述技术方案的基础上,可选的,在将sql语句转换成抽象语法树之前,所述方法还包括:获取并缓存支持目标格式的服务的元数据;其中,元数据包括数据库名、表名、字段名以及字段类型中的至少一种。其中,元数据是指描述数据的数据,对信息及信息资源的描述性信息。具体的,获取并缓存支持目标格式的服务的元数据,使用系统存储过程和系统函数访问元数据,系统存储过程与系统函数在系统表和元数据之间提供了一个抽象层,使得我们不用直接查询系统表就能获得当前数据库对象的元数据。这样设置的好处在于可以预先对所转换的sql语句进行语法校验,避免出现因语法存在错误无法获取到相应的数据的情况,提高数据访问效率和成功率。
62.在上述技术方案的基础上,可选的,在将sql查询语句转换成抽象语法树之后,所述方法还包括:对抽象语法树采用预先获取的元数据进行校验,若检验有问题,则确定为非法sql语句,并返回错误信息。具体的,抽象语法树采用预先获取的元数据,进行校验,若一个字段的类型是数值型,但是sql中的这个数值型等于一个字符串,类型不匹配,那么校验有问题,确定为非法sql语法,并返回错误信息。示例性的,如果在元数据中没有a,带引号才认为是字符串,而a没有带引号,所以类型不匹配,确认校验有问题,将a确定为非法sql语法,并返回错误信息a。这样设置的好处在于,对转换完成的抽象语法树预先获取的元数据进行校验筛选,返回非法sql语句,提高后续转换步骤的效率,避免增加系统的复杂度。
63.在上述技术方案的基础上,可选的,将抽象语法树的节点转换成处理节点,包括:若抽象语法树的节点为where或having,则转换成filter处理节点;若抽象语法树的节点为select,则转换成project处理节点;若抽象语法树的节点为order by、offset或fetch,则
转换成sort处理节点;若抽象语法树的节点为from,则转换成scan处理节点。其中,抽象语法树的节点是数据结构化中用于表发关系运算的中间数据结构,通过对抽象语法树的节点的语义分析,将其转换成处理节点,通过初始化rexbuilder;初始化reloptplanner;初始化reloptcluster;初始化sqltorelconverter;进行转换。这样设置的好处在于可以对抽象语法树的节点进行语义分析,生成相应的逻辑计划,对代码进行逻辑优化。
64.实施例二
65.图2是本发明实施例二提供的另一目标格式数据请求体的构建方法的流程图,本实施例以上述实施例为基础进行优化。具体优化为:将处理节点按照预设映射规则进行处理,得到映射结果,包括:将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体;对目标请求体进行拼接,得到映射结果;处理节点包括filter、project、sort以及scan中的至少一种;目标请求体包括elasticsearch数据库中的source、termquery、sort以及索引名中的至少一种;将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体,包括:若处理节点为filter,则按照预设映射规则进行处理得到source请求体;若处理节点为project,则按照预设映射规则进行处理得到termquery请求体;若处理节点为sort,则按照预设映射规则进行处理得到sort请求体;若处理节点为scan,则按照预设映射规则进行处理得到索引名请求体。
66.如图2所示,本实施例的方法具体包括如下步骤:
67.s210、获取sql查询语句,将sql查询语句转换成抽象语法树。
68.s220、对抽象语法树采用预先获取的元数据进行校验,若检验无问题,则将抽象语法树的节点转换成处理节点。
69.s230、将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体。
70.其中,处理节点是一种关系表达式,关系表达式处理数据,通常有sort、join、project、filter以及scan函数等;预设映射规则是每个处理节点对应着对数据的一个操作处理,如where和having对应的filter,selectlist对应project,order by、offset、fetch对应着sort,from对应着scan/join等,本发明实施例对此不进行限制。
71.其中,目标请求体是将处理节点根据抽象语法树转换成表述性状态传递(representational state transfer,rest)结构。
72.具体的,将处理节点对应的处理数据sort、join、project、filter以及scan函数等对应一个操作处理,得到每个处理节点对应的目标请求体。
73.s240、对目标请求体进行拼接,得到映射结果。
74.其中,映射结果是对rest支持的字符串等,具体的,将数据库中的表字段实体类中的属性名映射起来,究竟是那个字段名与属性名对应。
75.s250、将映射结果构建成目标格式的数据请求体,以支持目标格式的服务进行数据请求。
76.本技术实施例所提供的技术方案,通过将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体;对目标请求体进行拼接,得到映射结果,实现了灵活的sql语义转换。
77.在上述技术方案的基础上,可选的,处理节点包括filter、project、sort以及scan中的至少一种,目标请求体包括elasticsearch数据库中的source、termquery、sort以及索
引名中的至少一种;将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体,包括:若处理节点为filter,则按照预设映射规则进行处理得到source请求体;若处理节点为project,则按照预设映射规则进行处理得到termquery请求体;若处理节点为sort,则按照预设映射规则进行处理得到sort请求体;若处理节点为scan,则按照预设映射规则进行处理得到索引名请求体。
78.其中,预设映射规则可以是每个处理节点对应着对数据的一个操作处理,如where和having对应的filter,selectlist对应project、order by、offset以及fetch对应着sort,from对应着scan/join等,这样设置的好处是不需要额外的中间件服务,可以灵活的实现语法间的转换,提供更加灵活的数据服务能力。
79.实施例三
80.图3是本发明实施例三提供的一种目标格式数据请求体的构建装置的结构框图,如图3所示,所述目标格式数据请求体的构建装置具体包括:语句转换模块310、校验模块320、映射模块330和数据请求模块340。其中,
81.语句转换模块310,用于获取sql查询语句,将sql查询语句转换成抽象语法树;
82.校验模块320,用于对抽象语法树采用预先获取的元数据进行校验,若检验无问题,则将抽象语法树的节点转换成处理节点;其中,抽象语法树的节点包括根节点和子节点;
83.映射模块330,用于将处理节点按照预设映射规则进行处理,得到映射结果;
84.数据请求模块340,用于将映射结果构建成目标格式的数据请求体,以对支持目标格式的服务进行数据请求。
85.可选的,语句转换模块310,包括:
86.校验单元,用于在将sql查询语句转换成抽象语法树之后,对抽象语法树采用预先获取的元数据进行校验,若检验有问题,则确定为非法sql语句,并返回错误信息。
87.可选的,语句转换模块310,还包括:
88.获取单元,用于在将sql语句转换成抽象语法树之前,获取并缓存支持目标格式的服务的元数据;其中,元数据包括数据库名、表名、字段名以及字段类型中的至少一种。
89.可选的,校验模块320,将抽象语法树的节点转换成处理节点,具体包括包括:
90.第一处理单元,用于若抽象语法树的节点为where或having,则转换成filter处理节点;
91.第二处理单元,用于若抽象语法树的节点为select,则转换成project处理节点;
92.第三处理单元,用于若抽象语法树的节点为order by、offset或fetch,则转换成sort处理节点;
93.第四处理单元,用于若抽象语法树的节点为from,则转换成scan处理节点。
94.可选的,映射模块330,具体包括:
95.映射单元,用于将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体;
96.拼接单元,用于对目标请求体进行拼接,得到映射结果。
97.可选的,映射模块330,还包括:
98.处理节点单元,用于处理节点包括filter、project、sort以及scan中的至少一种;
99.目标请求体单元,用于目标请求体包括elasticsearch数据库中的source、termquery、sort以及索引名中的至少一种。
100.可选的,映射模块330,将处理节点按照预设映射规则进行处理,得到各处理节点的目标请求体,具体包括:
101.第一映射单元,用于若处理节点为filter,则按照预设映射规则进行处理得到source请求体;
102.第二映射单元,用于若处理节点为project,则按照预设映射规则进行处理得到termquery请求体;
103.第三映射单元,用于若处理节点为sort,则按照预设映射规则进行处理得到sort请求体;
104.第四映射单元,用于若处理节点为scan,则按照预设映射规则进行处理得到索引名请求体。
105.上述产品可执行本技术实施例所提供的目标格式数据请求体的构建方法,具备执行方法相应的功能模块和有益效果。
106.实施例四
107.本发明实施例四提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本技术所有发明实施例提供的目标格式数据请求体的构建方法:
108.获取sql查询语句,将sql查询语句转换成抽象语法树;
109.对抽象语法树采用预先获取的元数据进行校验,若检验无问题,则将抽象语法树的节点转换成处理节点;其中,抽象语法树的节点包括根节点和子节点;
110.将处理节点按照预设映射规则进行处理,得到映射结果;
111.将映射结果构建成目标格式的数据请求体,以对支持目标格式的服务进行数据请求。
112.可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
113.计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
114.计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、rf等等,或者上述的任意合适的组合。
115.可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机
程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c ,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
116.实施例五
117.本技术实施例五提供了一种电子设备。图4是本技术实施例五提供的一种电子设备的结构示意图。如图4所示,本实施例提供了一种电子设备,其包括:一个或多个处理器420;存储装置410,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器420执行,使得所述一个或多个处理器420实现本技术实施例所提供的目标格式数据请求体的构建方法,该方法包括:
118.获取sql查询语句,将sql查询语句转换成抽象语法树;
119.对抽象语法树采用预先获取的元数据进行校验,若检验无问题,则将抽象语法树的节点转换成处理节点;其中,抽象语法树的节点包括根节点和子节点;
120.将处理节点按照预设映射规则进行处理,得到映射结果;
121.将映射结果构建成目标格式的数据请求体,以对支持目标格式的服务进行数据请求。
122.当然,本领域技术人员可以理解,处理器420还实现本技术任意实施例所提供的目标格式数据请求体的构建方法的技术方案。
123.图4显示的电子设备仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
124.如图4所示,该电子设备包括处理器420、存储装置410、输入装置430和输出装置440;电子设备中处理器420的数量可以是一个或多个,图4中以一个处理器420为例;电子设备中的处理器420、存储装置410、输入装置430和输出装置440可以通过总线或其他方式连接。
125.存储装置410作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块单元,如本技术实施例中的目标格式数据请求体的构建方法对应的程序指令。
126.存储装置410可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储装置410可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储装置410可进一步包括相对于处理器420远程设置的存储器,这些远程存储器可以通过网络连接。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
127.输入装置430可用于接收输入的数字、字符信息或语音信息,以及产生与电子设备的用户设置以及功能控制有关的键信号输入。输出装置440可包括显示屏、扬声器等电子设备。
128.本技术实施例提供的电子设备,可以通过将sql转换为更加通用的抽象语法树,对于语法树中各种表达式映射成相应的rest请求表达式,支持灵活的sql语义,最大地利用数据库的数据查询能力。
129.上述实施例中提供的目标格式数据请求体的构建装置、介质及设备可执行本技术任意实施例所提供的目标格式数据请求体的构建方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本技术任意实施例所提供的目标格式数据请求体的构建方法。
130.注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献