一种结构化查询语句处理方法及装置与流程

文档序号:24174080发布日期:2021-03-05 20:02阅读:110来源:国知局
一种结构化查询语句处理方法及装置与流程

1.本申请涉及数据库领域,特别涉及一种结构化查询语句处理方法及装置。


背景技术:

2.sql(structured query language,结构化查询语句)是一种用于管理数据库的编程语言,通常情况下,可以通过结构化查询语句实现数据的存取、查询、更新与删除等功能,在数据查询时,高质量语句比低质量语句的数据查询效率相对较快,并且可以保障数据库性能,同时保证了数据安全。
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.当所述结构化查询语句在各分类下的评分值中存在小于0的值时,确定所述结构化查询语句的评分为0;
28.确定各分类下的最小评分值为所述结构化查询语句的最终评分。
29.在一个实施例中,所述方法还包括:
30.根据多条评分规则生成相对应的优化建议信息;
31.向所述外部系统发送评测结果、触发规则详情及所述优化建议信息。
32.在一个实施例中,在对所述结构化查询语句进行解析之前,所述方法还包括:
33.对所述结构化查询语句进行格式化处理。
34.本申请还提供一种结构化查询语句处理装置,包括:
35.获取模块,用于在接收到外部系统发送的数据查询请求时,获取所述查询请求中的结构化查询语句;
36.检测模块,用于对所述结构化查询语句进行语法解析,以检测所述结构化查询语句的语法是否正确;
37.评测模块,用于当所述结构化查询语句的语法正确时,确定所述结构化查询语句的评分,并将评分结果和触发规则详情返回给所述外部系统;
38.执行模块,用于当评分大于预设评分时,执行所述结构化查询语句;
39.发送模块,用于在所述结构化查询语句执行完毕后,将执行结果发送给发送数据查询请求的外部系统。
40.在一个实施例中,检测模块,包括:
41.获取子模块,用于获取所述结构化查询语句中的关键词;
42.检测子模块,用于根据所述关键词检测所述结构化查询语句是否有完整的语法结构;
43.确定子模块,用于当所述结构化查询语句有完整的语法结构时,确定所述结构化查询语句的语法正确。
44.在一个实施例中,确定模块,包括:
45.分析子模块,用于对所述结构化查询语句进行词法解析与语法解析,以生成所述结构化查询语句对应的待评测指标;
46.加载子模块,用于加载规则引擎内存中存储的评分规则;
47.评分子模块,用于根据所述评分规则对所述待评测指标进行评分。
附图说明
48.图1为本申请一实施例中一种结构化查询语句处理方法的流程图;
49.图2为本申请“天梯系统”的系统构架图;
50.图3为本申请另一实施例中一种结构化查询语句处理方法的流程图;
51.图4a为本申请一实施例中评分结果、触发规则和优化建议信息的显示界面示意图;
52.图4b为本申请一总体实施例对应的流程示意图;
53.图4c为本申请另一总体实施例对应的流程示意图;
54.图5为本申请一实施例中一种结构化查询语句处理装置的框图;
55.图6为本申请另一实施例中一种结构化查询语句处理装置的框图。
具体实施方式
56.此处参考附图描述本申请的各种方案以及特征。
57.应理解的是,可以对此处申请的实施例做出各种修改。因此,上述说明书不应该视为限制,而仅是作为实施例的范例。本领域的技术人员将想到在本申请的范围和精神内的其他修改。
58.包含在说明书中并构成说明书的一部分的附图示出了本申请的实施例,并且与上面给出的对本申请的大致描述以及下面给出的对实施例的详细描述一起用于解释本申请的原理。
59.通过下面参照附图对给定为非限制性实例的实施例的优选形式的描述,本申请的这些和其它特性将会变得显而易见。
60.还应当理解,尽管已经参照一些具体实例对本申请进行了描述,但本领域技术人员能够确定地实现本申请的很多其它等效形式,它们具有如权利要求所述的特征并因此都位于借此所限定的保护范围内。
61.当结合附图时,鉴于以下详细说明,本申请的上述和其他方面、特征和优势将变得更为显而易见。
62.此后参照附图描述本申请的具体实施例;然而,应当理解,所申请的实施例仅仅是本申请的实例,其可采用多种方式实施。熟知和/或重复的功能和结构并未详细描述以避免
不必要或多余的细节使得本申请模糊不清。因此,本文所申请的具体的结构性和功能性细节并非意在限定,而是仅仅作为权利要求的基础和代表性基础用于教导本领域技术人员以实质上任意合适的详细结构多样地使用本申请。
63.本说明书可使用词组“在一种实施例中”、“在另一个实施例中”、“在又一实施例中”或“在其他实施例中”,其均可指代根据本申请的相同或不同实施例中的一个或多个。
64.图1为本申请实施例的一种结构化查询语句处理方法的流程图,该方法包括以下步骤s11-s15:
65.在步骤s11中,在接收到外部系统发送的数据查询请求时,获取查询请求中的结构化查询语句;
66.在步骤s12中,对结构化查询语句进行词法解析与语法解析,以检测结构化查询语句的语法是否正确;
67.在步骤s13中,当结构化查询语句的语法正确时,确定结构化查询语句的评分,并将评分结果和触发规则详情返回给外部系统;
68.在步骤s14中,当评分大于预设评分时,执行结构化查询语句;
69.在步骤s15中,在结构化查询语句执行完毕后,将执行结果发送给发送数据查询请求的外部系统。
70.sql(structured query language,结构化查询语句)是一种用于管理数据库的编程语言,本实施例可用于存储数据的数据库内置的sql评分系统,也可以用于与数据库连接的,用于提供sql评测服务的系统,在实际应用中,将该系统命名为“天梯系统”。
71.图2为本申请“天梯系统”的系统构架图,如图2所示,天梯系统主要提供sql语句的代码美化服务、语法解析服务和规则引擎评测服务,将sql语句首先通过代码美化服务进行格式化,再通过语法解析服务进行解析,校验语法正确与否,然后将语法正确的sql词法解析后转换成相对应的指标,通过调用规则引擎服务对指标进行规则匹配处理,从而实现sql的智能评测。sql评测后会得到一个分数,如果该分数大等于预设分数,此处设定60分,则该sql可以被执行,该系统会针对四大类(军规、算力、安全、质量)中分别给出触发规则详情与智能化优化建议,方便业务人员重新进行编辑整改,同时,业务人员还可以进行一个将sql提交至人工审核的操作选项,如果提交了人工审核,需要专业dba(databaseadministrator,数据库管理员)进行后台审核sql,这样也会面临两种情况,如果人工审核通过,该sql可以被执行,否则,业务人员将会收到不通过的通知,同时也会收到dba给出的专业建议。
72.当然,需要说明的是,上述示例仅仅是为了更加清楚详细地介绍本申请,而不用于限定本申请,那么,可以理解的是,本申请提供的代码美化、语法检查与智能评测功能,都可单独对外提供服务。本领域技术人员可以根据需求自行决定是否使用代码美化服务以及语法解析服务。
73.具体的,在本实施例中,在接收到外部系统发送的数据查询请求时,获取查询请求中的结构化查询语句;具体的,当用户通过外部系统向本地发送数据查询请求时,获取查询请求中携带的结构化查询语句。
74.在获取到查询请求中携带的结构化查询语句之后,对结构化查询语句进行语法解析,以检测结构化查询语句的语法是否正确;具体的,获取结构化查询语句中的关键词;根
据关键词并根据抽象语法树检测结构化查询语句是否有完整的语法结构;若有完整的语法结构,确定结构化查询语句的语法正确,若没有完整的语法结构,则确定结构化查询语句语法错误,向用户反馈具体的错误信息。
75.当结构化查询语句的语法正确时,确定结构化查询语句的评分,并将评分结果和触发规则详情返回给所述外部系统,其中,评分结果和具体的规则触发详情是评测功能的主要结果,方便外部系统进行结构化查询语句的整改;本申请中,可以根据结构化查询语句触发的各种规则对结构化查询语句进行评分,例如,算力分类下的规则、安全分类下的规则、质量分类下的规则和军规分类下的规则。只有当评分大于预设评分时,才可以执行结构化查询语句;例如,当评分大于等于60分,则可以执行该结构化查询语句,并在结构化查询语句执行完毕后,将执行结果发送给数据查询请求的外部系统。由于本申请的执行主体只执行高评分的结构化查询语句,因此,提升了数据查询效率,保障数据库集群的稳定和数据安全性。
76.当然,可以理解的是,在本申请中,由于确定结构化查询语句的评分之后,会将评分结果和触发规则详情返回给所述外部系统,外部系统对应的用户需要针对评分结果和触发规则详情进行结构化查询语句的整改,因此,当评分大于预设评分时,也可以先不执行结构化查询语句,待外部系统对应的用户确定执行时再执行结构化查询语句,或者外部系统对应的用户针对评分结果和触发规则详情进行结构化查询语句的整改之后,向本地发送整改后的结构化查询语句,也可以再接收整改后的结构化查询语句,然后对整改后的结构化查询语句进行评分。
77.本申请的有益效果在于:在接收到外部系统发送的数据查询请求时,对查询请求中的结构化查询语句进行语法检查,并在语法正确时确定结构化查询语句的评分,并将评分结果和触发规则详情返回给外部系统,在评分大于预设评分时执行结构化查询语句。从而实现对结构化查询语句语法的自动检查以及智能化评分,从而取代人工审核结构化查询语句的方案,提高了结构化查询语句的审核效率,统一化审核标准,并且,本申请仅执行高评分的结构化查询语句,因此,也提升了数据查询效率,保障数据库集群稳定和数据安全。
78.在一个实施例中,如图3所示,上述步骤s12可被实施为如下步骤s31-s33:
79.在步骤s31中,获取结构化查询语句中的关键词;
80.在步骤s32中,根据关键词检测结构化查询语句是否有完整的语法结构;
81.在步骤s33中,当所述结构化查询语句有完整的语法结构时,确定结构化查询语句的语法正确。
82.本实施例中,获取结构化查询语句中的关键词;根据关键词检测结构化查询语句是否有完整的语法结构;若有完整的语法结构,确定结构化查询语句的语法正确。而结构化查询语句的语法正确也说明该结构化查询语句具备可执行的条件之一,若没有完整的语法结构,则确定结构化查询语句语法错误,向用户反馈具体的错误信息。
83.在一个实施例中,上述步骤s13可被实施为如下步骤a1-a3:
84.在步骤a1中,对结构化查询语句进行词法解析与语法解析,以生成结构化查询语句对应的待评测指标;
85.在步骤a2中,加载规则引擎内存中存储的评分规则;
86.在步骤a3中,根据评分规则对待评测指标进行评分。
87.对结构化查询语句进行词法解析与语法解析,以生成结构化查询语句对应的待评测指标;具体的,语法解析服务可由语法解析器实现,语法解析器主要由三个重要部分组成,分别是语法解析器、抽象语法树和访问者模式。在解析过程中,首先对sql语句进行词法解析,以解析出sql中的每个单词,再经过语法解析器生成包含sql语句信息的抽象语法树,然后通过访问者模式对语法树进行处理,从而获取sql语句的信息,最终生成相对应的指标。通过词法解析的每段sql语句经过语法解析器都有相应的code(指标),scope(作用范围),value(值)三个属性。根据每段sql语句生成相应的指标,使对sql语句算力、安全、质量、军规上的约束与要求数字化。指标由语法解析sql语句生成,包含了sql语句的所有信息,因此,通过指标就可以体现出一段或多段sql语句质量的高低。同时,也方便了规则引擎服务对指标的调用并进行规则匹配处理,即可得出最终sql语句的得分。
88.在生成结构化查询语句对应的待评测指标之后,加载规则引擎内存中存储的评分规则;根据评分规则对待评测指标进行评分,具体的,该规则引擎中包含指标与评分的匹配规则,可以基于规则引擎中存储的规则与待评测指标进行匹配,并确定规则引擎中能够与待评测指标进行匹配的规则触发对应的得分值或扣分值。根据得分值或扣分值对待评测指标进行评分,进而实现对结构化查询语句的评分。
89.规则引擎服务可以使用drools规则引擎,drools是一款基于java的开源规则引擎,将复杂多变的规则从硬解码中解放出来,以规则脚本的形式存放在文件中,使得规则的变更不需要修正代码与重启机器就可以立即在线上环境生效。在服务启动的时候从指定的路径加载规则文件,生成规则库。在调用评测功能时,将接收到的语法解析服务生成指标加载到引擎服务的工作内存中。通过规则与指标的匹配得到评测结果。
90.在一个实施例中,上述步骤a3可被实施为如下步骤b1-b2:
91.在步骤b1中,判断待评测指标触发的评分规则;
92.在步骤b2中,根据评分规则对待评测指标进行评分,其中,所述评分规则分为以下至少一种分类:
93.算力分类、安全分类、质量分类和军规分类。
94.本实施例中,判断待评测指标触发算力分类规则、安全分类规则、质量分类规则和军规分类规则中的一项或多项,根据所触发的评分规则对待评测指标进行评分。具体的,规则引擎服务模块主要根据不同算力,安全,质量,军规等规则分类,对不同代码段语法解析后生成的指标,与用户自定义规则进行匹配,最终实现对单条或多条sql语句进行智能化评分的功能,并返回各分类规则的具体分数与最终分数。该模块应用的规则灵活配置,用户可根据不同的需求进行自定义规则,不需要修改代码便可实现不同规则的sql语句智能评分功能。
95.对于规则引擎的配置,主要分为算力,安全,质量,军规四大类。具体如下:
96.算力代表sql语句的复杂度(关键字个数,比如join/group by/order by/distinct/窗口函数/insert into等)、物理表的容量和数据量的大小限制。
97.安全代表规定用户权限,敏感字段等。
98.质量代表sql语句建议的书写规范及影响质量的用法,比如,不建议in值过多,表命名规范等。
99.军规代表为确保大数据平台运行稳定且有效,大数据平台的运营方所规定的sql
语句禁止的一项或多项规范,例如,该规范可以是如禁用update、禁止使用无条件delete,必须要有where条件等。
100.规则引擎中的规则本身通常分为三部分:attributes(属性)、lhs(条件)和rhs(结果),其中attributes(属性)部分是可选的,其他都是必须配置的信息。
101.在一个实施例中,当待评测指标触发的评分规则包括多条规则时,上述步骤b2可被实施为如下步骤c1-c3:
102.在步骤c1中,确定结构化查询语句在各分类下的评分值;
103.在步骤c2中,当结构化查询语句在各分类下的评分值中存在小于0的值时,确定结构化查询语句的评分为0;
104.在步骤c3中,确定各分类下的最小评分值为结构化查询语句的最终评分。
105.选取其中一个指标来进行drools规则引擎中每一条规则的匹配,确定结构化查询语句在各分类下的评分值。
106.例如,该指标触发的该条规则类型为军规分类,计算每个属于该指标触发属于军规分类的第x条规则累计扣分值ax=ax+wx*100,其中该规则的累计扣分值ax初始值为0,wx为该规则的权重,wx*100表示触发一个规则多要进行的扣分值,100表示满分为100分。x为属于军规分类的第x条规则。
107.而如果该指标触发的该条规则类型为算力分类,计算每个属于该指标触发属于算力分类的第y条规则累计扣分值by=by+wy*100,其中该规则的累计扣分值by初始值为0,wy为该规则的权重,wy*100表示触发一个规则多要进行的扣分值,100表示满分为100分。y为属于算力分类的第y条规则。
108.而如果该指标触发的该条规则类型为安全分类,计算每个属于该指标触发属于安全分类的第p条规则累计扣分值cp=cp+wp*100,其中该规则的累计扣分值cp初始值为0,wp为该规则的权重,wp*100表示触发一个规则多要进行的扣分值,100表示满分为100分。p为属于安全分类的第p条规则。
109.而如果该指标触发的该条规则类型为质量分类,计算每个属于该指标触发属于质量分类的第q条规则累计扣分值dq=dq+wq*100,其中该规则的累计扣分值dq初始值为0,wq为该规则的权重,wq*100表示触发一个规则多要进行的扣分值,100表示满分为100分。q为属于质量分类的第q条规则。
110.判断该条指标是否与规则内存中的所有n条规则完成匹配,当匹配完成时,判断ax是否小于军规分类第x条规则的最大扣分;如果小于,将军规分类第x条规则的最大扣分赋值给ax;判断by是否小于算力分类第y条规则的最大扣分,如果小于,将算力分类第y条规则的最大扣分赋值给by;判断cp是否小于安全分类第p条规则的最大扣分;如果小于,将安全分类第p条规则的最大扣分赋值给cp;判断dq是否小于质量分类第q条规则的最大扣分,如果小于,将质量分类第q条规则的最大扣分赋值给dq,也就是说,每条规则会触发多次,但是该规则会有最大扣分,达到最大扣分值后,该规则不会再进行扣分。
111.最后计算得到:
112.1.第z个指标军规类型总扣分ez=∑ax;
113.2.第z个指标算力类型总扣分fz=∑by;
114.3.第z个指标安全类型总扣分gz=∑cp;
115.4.第z个指标质量类型总扣分hz=∑hq;
116.那么,第z个指标的各分类下的评分值如下:
117.军规评分值:s1=100-∑ez;
118.算力评分值:s2=100-∑fz;
119.安全评分值:s3=100-∑gz;
120.质量评分值:s4=100-∑hz;
121.在计算出各个评分值中是否存在小于0的值,当结构化查询语句在各分类下的评分值中存在小于0的值时,确定结构化查询语句的评分为0;当结构化查询语句在各分类下的评分值都大于0时,确定各规则下的最小评分值为结构化查询语句的评分,也就是说,各类规则的最低分为0分,即最终评分最低分为0分。
122.需要说明的是,前述表达式ax=ax+wx*100中,“=”前的“ax”为“=”后的“ax”的下一次累加值;那么,不难理解的是,by=by+wy*100中,“=”前的“by”为“=”后的“by”的下一次累加值;cp=cp+wp*100中,“=”前的“cp”为“=”后的“cp”的下一次累加值;dq=dq+wq*100中,“=”前的“dq”为“=”后的“dq”的下一次累加值。也就是说,上述这些表达式均是为了表征对各规则下扣分值的累加过程,具体的累加次数视其触发的规则分类以及各规则分类下的不同子规则的次数而定,因此,采用了相同的字母进行表达累加前和累加后的扣分值。
123.在一个实施例中,方法还可被实施为如下步骤d1-d2:
124.在步骤d1中,根据多条评分规则生成相对应的优化建议信息;
125.在步骤d2中,向外部系统发送评测结果、触发规则详情及优化建议信息。
126.本实施例中,根据多条评分规则生成相应的优化建议信息,例如,一条结构化查询语句产生扣分,就可以基于其触发的评分规则生成相对应的优化建议信息,具体的,可以基于结构化查询语句触发的四大分类(军规分类、算力分类、安全分类、质量分类)下的规则分别给出合理化建议。也就是说,只要触发了任意评分规则,都会生成相应的优化建议信息,又例如,可以在每一类规则下都展示一个评分值,具体如图4a所示,当然,图4a仅为了便于本领域技术人员理解,在实际应用过程中,各栏目下可以显示更多细节,如果评分小于预设评分,向所述外部系统发送评测结果、触发规则详情及所述优化建议信息。
127.在一个实施例中,在步骤s12之前,方法还可被实施为如下步骤:
128.对结构化查询语句进行格式化处理。
129.本实施例中,对于结构化查询语句的格式化处理旨在对结构化查询语句进行美化操作,主要是根据结构化查询语句的关键词进行如“缩进”、“回车分隔”等操作,使结构化查询语句更加直观易懂,也便于设备对其进行检测、解析等操作。
130.图4b为本申请一总体实施例对应的流程示意图,包括以下步骤:
131.s101、业务人员或开发人员编写结构化查询语言sql(structured query language)语句。
132.s102、对s101步骤中所有sql语句进行代码美化操作,也称为格式化操作,主要是根据sql语言关键词进行一系列缩进或回车分隔,使sql语句变得更直观易懂、更美观。
133.s103、对s102步骤后的sql进行语法检测,主要是对sql语句通过druid中解析模块进行语法解析,通过分析sql语句中关键词进行处理,检测该语句是否拥有完整的sql语法
结构。如果通过语法检测,转到步骤s104,否则转到步骤s101。
134.s104、对通过语法检测后的sql语句进行词法分析,并生成一系列相应指标,通过指标对drools规则引擎中的规则进行匹配来对sql语句进行评测。
135.s105、s104步骤会对整个sql语句进行评测得到一个最终评分(即图4b中的sql分数)。
136.s106、判断该最终是否大于等于60分(预设合格分)。如果大于等于60分,转到s107步骤,否则转到步骤s108。
137.s107、该步骤表示该sql语句合格,可以执行sql语句。
138.s108、系统根据sql语句触发的四大分类(军规分类、算力分类、安全分类、质量分类)下的规则分别给出触发规则详情及对应的优化建议信息。
139.s109、判断业务人员或开发人员是否进行提交人工审核操作。如果是,转到步骤s110,否则转到步骤s101。
140.s110、数据库管理员(database administrator,简称dba)进行人工审核,给出是否审核通过的通知。如果通过,转到步骤s107,否则转到步骤s111。
141.s111、dba给出sql语句评测不通过的合理化专业建议。
142.图4c为本申请另一总体实施例对应的流程示意图,包括以下步骤:
143.s201、对所有sql语句进行语法检测。
144.s202、对所有sql进行lexer词法解析,词法解析后得到m个指标。
145.s203、加载drools规则引擎内存中的所有规则。
146.s204、判断sql语句词法解析后的m个指标是否匹配结束。如果是,转到步骤s212,否则转到步骤s205。
147.s205、选取其中一个指标来进行drools规则引擎中每一条规则的匹配。
148.s206、确定该规则属于的分类(军规、算力、安全、质量);
149.s207、计算每个规则的累计扣分值;
150.s208、判断n条规则是否匹配结束,如果是,转到步骤s209,否则转到步骤s206;
151.s209、判断各分类规则中每个规则累计扣分是否小于该规则的最大扣分,如果是,转到步骤s211,否则转到步骤s210;
152.s210、将军规第x条规则的最大扣分赋值给ax;将算力第y条规则的最大扣分赋值给by;将安全第p条规则的最大扣分赋值给cp;将质量第q条规则的最大扣分赋值给dq;
153.s211、第z个指标军规类型总扣分ez=∑ax;第z个指标算力类型总扣分fz=∑by;第z个指标安全类型总扣分gz=∑cp;第z个指标质量类型总扣分hz=∑hq;
154.s212、m个指标全部匹配结束后的四大类下的得分(即评分值)如下:
155.军规得分:s1=100-∑ez;算力得分:s2=100-∑fz;安全得分:s3=100-∑gz;质量得分:s4=100-∑hz;其中∑为求和函数。
156.s213、判断军规得分s1、算力得分s2、安全得分s3、质量得分s4是否小于0。如果是转到步骤s215,否则转到步骤s214.
157.s214、取军规得分s1、算力得分s2、安全得分s3、质量得分s4中的最小值为sql评测的最终得分。
158.s215、sql评测最终评分为0。
159.需要说明的是,本申请支持对多种数据库进行语法检测和代码评测,包括但不限于mysql、oracle、postgresql、flinksql、prestodb。
160.图5为本申请实施例的一种结构化查询语句处理装置的框图,该装置包括以下模块:
161.获取模块51,用于在接收到外部系统发送的数据查询请求时,获取查询请求中的结构化查询语句;
162.检测模块52,用于对结构化查询语句进行语法解析,以检测结构化查询语句的语法是否正确;
163.评测模块53,用于当结构化查询语句的语法正确时,确定结构化查询语句的评分,并将评分结果和触发规则详情返回给所述外部系统;
164.执行模块54,用于当评分大于预设评分时,执行所述结构化查询语句;
165.发送模块55,用于在所述结构化查询语句执行完毕后,将执行结果发送给发送数据查询请求的外部系统。
166.在一个实施例中,如图6所示,检测模块52,包括:
167.获取子模块61,用于获取结构化查询语句中的关键词;
168.检测子模块62,用于根据关键词检测结构化查询语句是否有完整的语法结构;
169.确定子模块63,用于当结构化查询语句有完整的语法结构时,确定结构化查询语句的语法正确。
170.在一个实施例中,评测模块,包括:
171.分析子模块,用于对结构化查询语句进行词法解析与语法解析,以生成结构化查询语句对应的待评测指标;
172.加载子模块,用于加载规则引擎内存中存储的评分规则;
173.评分子模块,用于根据评分规则对待评测指标进行评分。
174.以上实施例仅为本申请的示例性实施例,不用于限制本申请,本申请的保护范围由权利要求书限定。本领域技术人员可以在本申请的实质和保护范围内,对本申请做出各种修改或等同替换,这种修改或等同替换也应视为落在本申请的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1