CN111259040A - Sql语句审核方法和系统 - Google Patents

Sql语句审核方法和系统 Download PDF

Info

Publication number
CN111259040A
CN111259040A CN202010101264.1A CN202010101264A CN111259040A CN 111259040 A CN111259040 A CN 111259040A CN 202010101264 A CN202010101264 A CN 202010101264A CN 111259040 A CN111259040 A CN 111259040A
Authority
CN
China
Prior art keywords
sql
statement
characteristic information
audited
sql statement
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.)
Granted
Application number
CN202010101264.1A
Other languages
English (en)
Other versions
CN111259040B (zh
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.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
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 Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202010101264.1A priority Critical patent/CN111259040B/zh
Publication of CN111259040A publication Critical patent/CN111259040A/zh
Application granted granted Critical
Publication of CN111259040B publication Critical patent/CN111259040B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种SQL语句审核方法和系统,该方法包括:采用CityHash算法获取待审核SQL语句的指纹;根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;根据所述SQL特征信息审核所述待审核SQL语句,其中,基于SQL语句的特征信息自动实现SQL语句的高效精细的审核管理,满足软件工程中版本质量检测体系和精细化管理的需求。

Description

SQL语句审核方法和系统
技术领域
本发明涉及数据库SQL(structured query language)语言技术领域,尤其涉及一种SQL语句审核方法和系统。
背景技术
数据库作为各种信息系统的核心部分,不规范的数据库操作容易导致事务响应超时、数据库故障等问题,直接影响整个应用的可用性,特别是在金融行业核心系统中,对系统运行的高可用和稳定性有特殊要求,系统中运行的所有SQL语句都必须纳入审核管理,做到上线有审核,出问题可追溯,并尽可能将问题暴露提前到研发测试阶段。因此,有必要对程序中的SQL语句进行审核,以保障系统的平稳运行。
随着信息系统规模的不断增长,SQL语句数量巨大,在系统开发流程中对数据库操作的审核环节逐渐成为工作流瓶颈。传统的人工审核方式效率低,且人工判断容易疏漏,难以保证SQL审核的完全覆盖。业界现有的一些自动审核工具将人工审核规则自动化,审核规则过于简单,无法满足软件工程中版本质量检测体系和精细化管理的需求。
发明内容
针对现有技术中的问题,本发明提供一种SQL语句审核方法和系统、电子设备以及计算机可读存储介质,能够至少部分地解决现有技术中存在的问题。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种SQL语句审核方法,包括:
采用CityHash算法获取待审核SQL语句的指纹;
根据该指纹以及该待审核SQL语句的元数据获取该待审核SQL语句的SQL特征信息;
根据该SQL特征信息审核该待审核SQL语句。
进一步地,该根据该SQL特征信息审核该待审核SQL语句,包括:
查询SQL特征信息缓存装置中是否已有该SQL特征信息;
若是,将SQL特征信息缓存装置中的该SQL特征信息对应的SQL审核结果作为该待审核SQL语句的审核结果;
若否,查询SQL特征信息存储装置中是否已有该SQL特征信息;
若该SQL特征信息存储装置已有该SQL特征信息,则将该SQL特征信息存储装置中的该SQL特征信息对应的SQL审核结果作为该待审核SQL语句的审核结果;
若该SQL特征信息存储装置没有该SQL特征信息,对该待审核SQL语句进行SQL静态审查和SQL动态审查。
进一步地,该对该待审核SQL语句进行SQL静态审查和SQL动态审查,包括:
根据数据库对象定义对该待审核SQL语句进行SQL静态审查;
若SQL静态审查未通过,则返回审核结果,并将该待审核SQL语句的SQL特征信息及其对应的审核结果存入该SQL特征信息缓存装置以及该SQL特征信息存储装置;
若SQL静态审查通过,则对该待审核SQL语句进行SQL动态审查。
进一步地,该对该待审核SQL语句进行SQL动态审查,包括:
若该待审核SQL语句为DML语句,则根据该待审核SQL语句的生产环境数据库信息生成执行计划,进而根据该执行计划审核该待审核SQL语句,并将该待审核SQL语句的SQL特征信息及其对应的审核结果存入该SQL特征信息缓存装置以及该SQL特征信息存储装置;
若所述待审核SQL语句为DDL语句,将生产环境与所述DDL语句相关DML语句的执行计划P1和数据分布统计信息导入开发环境,在所述开发环境根据生产环境数据分布统计信息生成所述待审核SQL语句投产后相关DML语句的执行计划P2,比较所述待审核SQL语句投产之前相关DML语句的执行计划P1和所述待审核SQL语句投产之后相关DML语句的执行计划P2,判断所述待审核SQL语句投产后,与所述待审核SQL语句相关的DML语句的查询效率变化情况,进而得到审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置。
进一步地,该采用CityHash算法计算待审核SQL语句的指纹之前,还包括:
采集程序代码中的SQL语句;
对该SQL语句进行规范化。
第二方面,提供一种SQL语句审核系统,包括:
CityHash加密单元,采用CityHash算法获取待审核SQL语句的指纹;
特征信息生成单元,根据该指纹以及该待审核SQL语句的元数据获取该待审核SQL语句的SQL特征信息;
审核单元,根据该SQL特征信息审核该待审核SQL语句。
进一步地,该审核单元包括:
缓存查询子单元,查询SQL特征信息缓存装置中是否已有该SQL特征信息;
第一审核结果获取子单元,若SQL特征信息缓存装置已有该SQL特征信息,将SQL特征信息缓存装置中的该SQL特征信息对应的SQL审核结果作为该待审核SQL语句的审核结果;
存储查询子单元,查询SQL特征信息存储装置中是否已有该SQL特征信息;
第二审核结果获取子单元,若该SQL特征信息存储装置已有该SQL特征信息,则将该SQL特征信息存储装置中的该SQL特征信息对应的SQL审核结果作为该待审核SQL语句的审核结果;
动静态审查子单元,若该SQL特征信息存储装置没有该SQL特征信息,对该待审核SQL语句进行SQL静态审查和SQL动态审查。
进一步地,该动静态审查子单元包括:
SQL静态检查装置,根据数据库对象定义对该待审核SQL语句进行SQL静态审查;
静态审查结果获取装置,若SQL静态审查未通过,则返回审核结果,并将该待审核SQL语句的SQL特征信息及其对应的审核结果存入该SQL特征信息缓存装置以及该SQL特征信息存储装置
SQL动态检查装置,若SQL静态审查通过,则对该待审核SQL语句进行SQL动态审查。
进一步地,该SQL动态检查装置包括:
DML动态检查工作单元,若该待审核SQL语句为DML语句,则根据该待审核SQL语句的生产环境数据库信息生成执行计划,进而根据该执行计划审核该待审核SQL语句,并将该待审核SQL语句的SQL特征信息及其对应的审核结果存入该SQL特征信息缓存装置以及该SQL特征信息存储装置;
DDL动态检查工作单元,若所述待审核SQL语句为DDL语句,将生产环境与所述DDL语句相关DML语句的执行计划P1和数据分布统计信息导入开发环境,在所述开发环境根据生产环境数据分布统计信息生成所述待审核SQL语句投产后相关DML语句的执行计划P2,比较所述待审核SQL语句投产之前相关DML语句的执行计划P1和所述待审核SQL语句投产之后相关DML语句的执行计划P2,判断所述待审核SQL语句投产后,与所述待审核SQL语句相关的DML语句的查询效率变化情况,进而得到审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置。
进一步地,SQL语句审核系统还包括:
SQL特征信息采集装置,采集程序代码中的SQL语句;
SQL规范化单元,对该SQL语句进行规范化。
第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述的SQL语句审核方法的步骤。
第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的SQL语句审核方法的步骤。
本发明提供的SQL语句审核方法和系统、电子设备以及计算机可读存储介质,该SQL语句审核方法包括:采用CityHash算法获取待审核SQL语句的指纹;根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;根据所述SQL特征信息审核所述待审核SQL语句,其中,基于SQL语句的特征信息自动实现SQL语句的高效精细的审核管理,满足软件工程中版本质量检测体系和精细化管理的需求。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明实施例中的服务器S1与客户端设备B1之间的架构示意图;
图2为本发明实施例中的服务器S1、客户端设备B1及数据库服务器S2之间的架构示意图;
图3是本发明实施例中的SQL语句审核方法的流程示意图一;
图4示出了图3中步骤S300的具体步骤;
图5示出了图4中步骤S350的具体步骤;
图6是本发明实施例中的SQL语句审核方法的流程示意图二;
图7是本发明实施例中的SQL语句审核系统的结构框图;
图8为本发明实施例电子设备的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
现有的一些自动审核工具将人工审核规则自动化,审核规则过于简单,无法满足软件工程中版本质量检测体系和精细化管理的需求。
为至少部分解决上述技术问题,本发明实施例提供了一种SQL语句审核方法,基于SQL语句的特征信息自动实现SQL语句的高效精细的审核管理,满足软件工程中版本质量检测体系和精细化管理的需求。
有鉴于此,本申请提供了一种SQL语句审核系统,该系统可以为一种服务器S1,参见图1,该服务器S1可以与至少一个客户端设备B1通信连接,所述客户端设备B1可以将程序代码发送至所述服务器S1,所述服务器S1可以在线接收所述程序代码。所述服务器S1可以在线或者离线对获取的程序代码进行预处理,采集程序代码中的SQL语句,而后采用CityHash算法获取待审核SQL语句的指纹;根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;根据所述SQL特征信息审核所述待审核SQL语句。而后,所述服务器S1可以将审核结果在线发送至所述客户端设备B1。所述客户端设备B1可以在线接收所述审核结果。
另外,参见图2,所述服务器S1还可以与至少一个数据库服务器S2通信连接,所述数据库服务器S2用于实现SQL特征信息缓存装置和/或SQL特征信息存储装置,还能够存储元数据。所述数据库服务器S2在线将所述元数据发送至所述服务器S1,所述服务器S1可以在线接收所述元数据,用于SQL语句审核。
可以理解的是,所述客户端设备B1可以包括智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
在实际应用中,进行SQL语句审核的部分可以在如上述内容所述的服务器S1侧执行,即,如图1所示的架构,也可以所有的操作都在所述客户端设备B1中完成,且该所述客户端设备B1可以直接与数据库服务器S2进行通信连接。具体可以根据所述客户端设备B1的处理能力,以及用户使用场景的限制等进行选择。本申请对此不作限定。若所有的操作都在所述客户端设备B1中完成,所述客户端设备B1还可以包括处理器,用于进行SQL语句审核的具体处理。
所述服务器与所述客户端设备之间可以使用任何合适的网络协议进行通信,包括在本申请提交日尚未开发出的网络协议。所述网络协议例如可以包括TCP/IP协议、UDP/IP协议、HTTP协议、HTTPS协议等。当然,所述网络协议例如还可以包括在上述协议之上使用的RPC协议(Remote Procedure Call Protocol,远程过程调用协议)、REST协议(Representational State Transfer,表述性状态转移协议)等。
图3是本发明实施例中的SQL语句审核方法的流程示意图一。如图3所示,该SQL语句审核方法可以包括以下内容:
步骤S100:采用CityHash算法获取待审核SQL语句的指纹;
具体地,采用CityHash算法对SQL语句文本计算SQL指纹。
值得说明的是,由于CityHash算法更强调高性能和低碰撞率,通过采用CityHash算法能够快速精确得到SQL指纹。
步骤S200:根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;
具体地,SQL特征信息是SQL语句的标识,主要包含SQL语句的指纹、所属应用、维护部门、业务场景等、SQL审核结果的标记等。
元数据是指数据对象(指数据表、索引、数据内容等)的版本信息及应用(数据对象所属APP)、维护部门、维护人、数据生命周期、业务场景等。
其中,通过结合SQL指纹和维护部门、应用、维护人、数据生命周期、业务场景等信息编码得到SQL特征信息(此时,SQL特征信息中的SQL审核结果标记为空)。
步骤S300:根据所述SQL特征信息审核所述待审核SQL语句。
本发明实施例提供的SQL语句审核方法,基于SQL语句的特征信息自动实现SQL语句的高效精细的审核管理,满足软件工程中版本质量检测体系和精细化管理的需求,增强数据库应用开发过程中的SQL治理能力,尽早发现潜在的数据库操作风险,提高软件交付质量,保障系统投产后的平稳运行。
另外,本发明实施例不仅可结合SQL语句的特征信息进行高效而精细的SQL审核,还可以对SQL审核结果提供多维度的统计分析视图,即:根据特征信息提供多维度统计视图。比如基于部门、应用、业务分区等特征对SQL审核结果进行汇总,便于进行SQL审核问题的跟踪管理。
在一个可选的实施例中,参见图4,该步骤S300可以包括以下内容:
步骤S310:查询SQL特征信息缓存装置中是否已有所述SQL特征信息;
若是,执行步骤S320;若否,执行步骤S330;
其中,SQL特征信息缓存装置负责在本地或本部门缓存近期访问的SQL特征信息。根据程序局部性原理,且SQL特征信息中包含维护部门、业务场景等相关信息,通常不会访问其它部门的SQL特征信息,引入缓存能够快速识别已审核过的SQL语句,大幅提高SQL审核性能,且无需考虑缓存数据一致性问题。
另外,SQL特征信息缓存装置中缓存的SQL特征信息包括对应SQL语句的SQL审核结果。
步骤S320:将SQL特征信息缓存装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果;
通过将SQL特征信息缓存装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果,能够快速返回结果,提前发现潜在风险。
步骤S330:查询SQL特征信息存储装置中是否已有所述SQL特征信息;
若是,执行步骤S340;若否,执行步骤S350;
SQL特征信息存储装置负责集中存储研发测试环境的SQL特征信息,该SQL特征信息包括对应SQL语句的SQL审核结果。
步骤S340:将所述SQL特征信息存储装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果;
通过将SQL特征信息存储装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果,能够快速返回结果,提前发现潜在风险。
步骤S350:对所述待审核SQL语句进行SQL静态审查和SQL动态审查。
其中,通过SQL特征信息,将业务场景等SQL特征引入到SQL静态检查和SQL动态检查,对不同场景的SQL语句实施不同的检查规则,从而实现更精细的SQL审核,减少SQL审核系统的误报率和漏报率,提高软件交付质量。
在一个可选的实施例中,参见图5,该步骤S350可以包括以下内容:
步骤S351:根据数据库对象定义对所述待审核SQL语句进行SQL静态审查;
若SQL静态审查未通过,则执行步骤S352;若SQL静态审查通过,则执行步骤S353;
具体地,基于数据对象元数据(如表索引定义等)检查SQL文本是否符合SQL开发规范。
其中,SQL静态审查主要检查SQL文本编写是否符合SQL开发规范的要求。例如,检查可包括:(1)禁止使用SELECT*语句,必须列出列名清单。(2)操作符两端数据类型应匹配,以避免隐式类型转换影响索引使用。(3)联机交易的DELETE/UPDATE操作必须带WHERE条件,避免全表扫描。(4)子查询嵌套不超过3层。(5)连接查询必须有连接条件避免笛卡儿积。(6)查询分区表需要匹配分区字段等。
步骤S352:返回审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置;
步骤S353:对所述待审核SQL语句进行SQL动态审查。
其中,通过对静态审查通过的SQL语句进行SQL动态审查,能够有效节约动态审查所占用的资源,提高资源利用率。
在一个可选的实施例中,该步骤S353可以包括以下内容:
若所述待审核SQL语句为DML(data manipulation language)语句(如SELECT/INSERT/UPDATE/DELETE语句,主要用于增删改查表中的数据),则根据所述待审核SQL语句的生产环境数据库信息生成执行计划(包括执行该SQL语句有多少个操作,每个操作有多少个操作记录),进而根据所述执行计划审核所述待审核SQL语句,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置;
若所述待审核SQL语句为DDL(data definition language)语句(如ALTER TABLE语句,主要用于修改表的定义等),该语句投产可能改变相关表上其它DML语句的执行效率,则将生产环境与所述DDL语句相关DML语句的执行计划P1和数据分布统计信息导入开发环境,在所述开发环境根据生产环境数据分布统计信息生成所述待审核SQL语句投产后相关DML语句的执行计划P2,比较所述待审核SQL语句投产之前相关DML语句的执行计划P1和所述待审核SQL语句投产之后相关DML语句的执行计划P2,判断所述待审核SQL语句投产后,与所述待审核SQL语句相关的DML语句的查询效率变化情况,进而得到审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置。
其中,生产环境现有的DML语句执行计划是研发测试环境DDL语句投产前的;研发测试环境DML语句执行计划是DDL语句提交后的,为使研发测试环境DML语句执行计划尽可能与生产环境投产后执行计划相同,需要将生产环境相关表的数据分布统计信息等数据库信息导入到研发测试环境。然后将投产前后的DML语句执行计划进行对比,判断DDL语句投产后相关DML操作的执行效率变好还是变坏。即:对比执行DDL语句修改表、索引等定义的前后,涉及到这些表的DML语句(增删改查)的执行计划。即生产环境这些DML语句的执行计划P1是开发环境新开发的DDL语句投产之前的执行计划;将生产环境的数据分布等数据库信息导入到研发测试环境生成这些DDL语句投产之后相关DML语句的执行计划P2,比较P1和P2即可得知开发环境新写的DDL语句在生产环境投产之后,相关的DML语句效率会变好还是变差。根据生产环境中待审核DDL语句涉及到的表的数据分布统计信息,生成在这些表上增删改查DML语句的执行计划,与生产环境现有的DML语句执行计划进行比较,也就是DDL语句投产后和投产前的相关DML语句执行计划比较。实际上都是判断增删改查操作的效率,但是DDL修改表的定义会影响这些表上的DML语句执行效率。
另外,生成SQL语句的执行计划,需要数据分布的统计信息。开发环境的数据与生产环境常常有很大差异,导致在开发环境判断SQL执行效率有较大误差。一是因为生产环境的客户数据敏感不能直接导入开发环境,二是生产环境数据量巨大且有防火墙隔离,而开发环境多个版本同时开发,环境众多,不可能使用跟生产环境一样的数据。本发明为了解决这一问题,将生产环境数据库统计信息导入开发环境。实际上只需要生产环境数据分布的统计信息(如表总数据量、每个列有多少个取值等)即可生成较准确的执行计划,不需要生产环境的业务数据。
值得说明的是,应用系统的代码中只有DML和DDL语句需要进行审核,GRANT等DCL语句由运维管理系统进行审批和操作,禁止开发人员在程序中使用,COMMIT/ROLLBACK等事务控制语句过于简单且不影响SQL语句层面的执行性能。
具体地。SQL语句有DML(包括增删改查)、DDL(修改表、索引等定义)、DCL等几种,但是只有DML和DDL会影响应用系统的性能。DCL由运维管理人员执行,禁止开发程序中使用,通过另外的运维管理系统进行审批和执行流程,DCL语句简单只需权限审批,无需实施复杂的静态检查规则和动态检查规则。
部分资料将SELECT语句独立为DQL语句,本文将SELECT语句算作DML语句,为表述清晰,DML语句需补充说明包括SELECT/INSERT/DELETE/UPDATE语句。
实际上,检查的都是DML语句做增删改查操作的性能,但是DDL修改了表/索引定义会影响该表上增删改查DML语句的性能,所以本发明主要审核DML和DDL语句,其它类型语句无需考虑。
通过采用上述技术方案,采集到SQL特征信息之后,首先查询SQL特征信息缓存装置。若缓存中已有包含该SQL审核结果的特征信息,则直接返回审核结果。不存在同一条SQL语句有不同的SQL特征信息,缓存数据过期直接丢弃,因此无需考虑缓存的数据一致性问题。若缓存中找不到SQL特征信息,则查询SQL特征信息存储装置。若找到已有包含该SQL审核结果的特征信息,则返回审核结果,并更新SQL特征信息缓存装置。若SQL特征信息存储装置中找不到该SQL特征信息,说明是新的SQL语句,结合数据库对象定义对SQL语句文本进行SQL静态检查。若SQL静态检查不通过,则返回审核结果,并添加到SQL特征信息存储装置和SQL特征信息缓存装置。若通过SQL静态检查,则进一步执行SQL动态检查。结合生产环境运行时的数据库统计信息,在研发测试环境生成该SQL的执行计划,实施检查规则,返回审核结果,并添加到SQL特征信息存储装置和SQL特征信息缓存装置,能够自动实现SQL语句的高效精细的审核管理,满足软件工程中版本质量检测体系和精细化管理的需求。
在一个可选的实施例中,参见图6,该SQL语句审核方法在包含图3所示流程的基础上,还可以包括:
步骤S10:采集程序代码中的SQL语句;
具体地,可从XML格式的SQL mappper配置文件解析出SQL语句和/或从Java源文件的SQL注解中解析出SQL语句。
步骤S20:对所述SQL语句进行规范化。
具体地,规范化可包括:用占位符替换SQL过滤条件中的数据值,将只有查询条件值不同的SQL语句归一化处理为同一条SQL语句,对SQL语句格式整理等。
其中,通过自动解析SQL语句,并对语句进行规范化,能够有效提高SQL语句的审核效率。
在一个可选的实施例中,该SQL语句审核还可以包括:
记录SQL审核的详细信息,包括SQL特征信息、SQL完整文本字符串、SQL业务场景等特征信息的完整描述、SQL审核实施的规则通过/不通过详细记录、时间戳等。
其中,通过记录SQL审核的详细信息,能够实现审核过程的可追溯,利于后续维护和改进。
在一个可选的实施例中,该SQL语句审核还可以包括:
将审核不通过的问题SQL及时发送给负责维护的开发人员,跟踪问题SQL的开发反馈信息和整改情况。
在一个可选的实施例中,该SQL语句审核还可以包括:
以开发部门、所属应用等多维度的视角对SQL审核情况进行统计分析,输出SQL审核统计报表,对近期高发SQL问题进行预警等。
在一个可选的实施例中,该SQL语句审核还可以包括:
管理和配置SQL静态检查的参数。
在一个可选的实施例中,该SQL语句审核还可以包括:
管理和配置SQL动态检查。
为了使本领域技术人员更好地理解本申请,下面举例对本发明实施例提供的审核流程进行说明,具体内容如下:
(1)系统开发人员在编程客户端向代码版本管理服务器提交代码,触发SQL审核工作流程。
(2)通过XML mapper文件解析和JDK SQL注解解析源码文件,提取SQL语句。
(3)执行SQL规范化操作,整理SQL格式,用占位符替换数据值,将仅有过滤条件值不同的SQL语句归一化处理为同一条SQL语句等,避免重复审核,减少需进行审核的SQL数量。
(4)采用CityHash算法计算得到SQL语句的指纹。
(5)根据SQL指纹和数据对象元数据管理装置中的维护部门、业务场景等信息编码得到SQL特征信息(SQL审核结果标记为空)。
(6)查询SQL特征信息缓存装置。如果有包含SQL审核结果标记的SQL特征信息已存在,说明该SQL近期已进行SQL审核,直接返回SQL审核结果,并更新SQL审核详细信息存储装置中的时间戳。否则转步骤(7)。
(7)查询SQL特征信息存储装置。如果有包含SQL审核结果标记的SQL特征信息已存在,说明该SQL曾经已进行SQL审核,直接返回SQL审核结果,并更新SQL特征信息缓存装置和SQL审核详细信息存储装置中的时间戳。否则转步骤(8)。
(8)基于数据对象元数据(如表索引定义等)检查SQL文本是否符合SQL开发规范。如果不通过则返回,将SQL审核结果记入SQL审核详细信息存储装置,并更新SQL特征信息缓存装置和SQL特征信息存储装置。否则转步骤(9)。
(9)基于数据对象元数据和生产环境数据库信息(如表数据分布情况)生成执行计划,进行SQL性能判断。如果是DML语句转步骤(10),如果是DDL语句转步骤(11)。
(10)如果是DML语句,结合生产环境数据库信息生成研发测试环境SQL语句的执行计划,根据检查规则判定性能好坏。将SQL审核结果记入SQL审核详细情况存储装置,并更新SQL特征信息缓存装置和SQL特征信息存储装置。
(11)如果是DDL语句,将生产环境与所述DDL语句相关DML语句的执行计划P1和数据分布统计信息导入开发环境,在所述开发环境根据生产环境数据分布统计信息生成所述待审核SQL语句投产后相关DML语句的执行计划P2,比较所述待审核SQL语句投产之前相关DML语句的执行计划P1和所述待审核SQL语句投产之后相关DML语句的执行计划P2,判断所述待审核SQL语句投产后,与所述待审核SQL语句相关的DML语句的查询效率变化情况,进而得到审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置。
(12)如SQL审核不通过,通过SQL问题流转跟踪装置将审核结果发送给开发人员,跟踪开发人员的反馈信息和整改情况。
(13)通过SQL审核统计分析装置,定期以部门或应用的维度对SQL审核情况进行统计分析,导出SQL审核统计报表,发送给各部门负责人,并提出近期高发SQL问题预警。
综上所述,本发明实施例提供的SQL语句审核方法,能够基于特征信息快速检索,通过对特征信息进行编码,能快速检索到特定的SQL语句,解决基于SQL文本字符串比对的性能低下问题,极大提高事前SQL审核和事后统计分析的效率。另外,结合特征信息中包含的应用场景对SQL语句实施更加精细的静态检查和动态检查,提高SQL审核的准确率,减少误报和漏报。不同应用场景对应不同检查规则,即不同应用场景对SQL的需求不同,比如联机交易和批量操作的SQL需要实施不同类型的检查规则,联机交易场景需要SQL的响应时间短,核心系统和外围业务的SQL适用不同等级的检查规则参数要求等。
另一方面,本发明通过分层思想优化整个SQL审核过程,审核开销逐层增加,以最大限度节省流程、节约资源。
另外,本发明实施例提供的SQL语句审核方法,自动化程度高,降低对开发流程的干扰:自动从源码文件中提取SQL语句,自动实施SQL审核,自动导出多维度的SQL审核统计报表,全流程无需人工干预。
再者,本发明实施例能够快速返回审核结果,提前暴露潜在风险,具体通过SQL特征信息实现快速定位到指定SQL的审核结果,通过SQL规范化、SQL特征信息缓存等多种优化措施,显著减少相同SQL语句的重复审核,以最小的开销快速返回SQL审核结果。同时,通过将生产环境数据库的数据分布信息转储到研发测试环境,将SQL动态检查从模拟投产测试阶段前置到研发自测阶段,提前暴露潜在的数据库操作风险。具体地,由于动态检查是在研发测试阶段执行,因此,需要将生产环境中的数据分布拿到研发环境生成执行计划。
值得说明的是,将生产环境中的数据分布统计信息导入到研发环境,是为了解决研发环境与生产环境数据量和数据分布不一致,执行计划不准确的问题。因为生产环境数据涉密且数据量大,而研发环境为支持多套版本并行开发所以环境众多数据量小。通过导入生产环境数据库信息,可实现研发环境生成接近生产环境的执行计划,模拟生产环境投产后的系统运行情况,与投产前当前生产环境的执行计划进行比较。
值得说明的是,本发明实施例提供的SQL语句审核方法,SQL审核功能全面,保障信息系统平稳运行。通过SQL特征信息,将业务场景等SQL特征引入到SQL静态检查和SQL动态检查,对不同场景的SQL语句实施不同的检查规则,从而实现更精细的SQL审核,减少SQL审核系统的误报率和漏报率,提高软件交付质量,实现应用开发更高效、生产系统运行更稳定。
基于同一发明构思,本申请实施例还提供了一种SQL语句审核系统,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由于SQL语句审核系统解决问题的原理与上述方法相似,因此SQL语句审核系统的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是本发明实施例中的SQL语句审核系统的结构框图。如图7所示,该SQL语句审核系统具体可包括:CityHash加密单元、特征信息生成单元以及审核单元(图中未示出)
CityHash加密单元采用CityHash算法获取待审核SQL语句的指纹;
特征信息生成单元根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;
审核单元根据所述SQL特征信息审核所述待审核SQL语句。
本发明实施例提供的SQL语句审核方法,基于SQL语句的特征信息自动实现SQL语句的高效精细的审核管理,满足软件工程中版本质量检测体系和精细化管理的需求,增强数据库应用开发过程中的SQL治理能力,尽早发现潜在的数据库操作风险,提高软件交付质量,保障系统投产后的平稳运行。
在一个可选的实施例中,所述审核单元包括:缓存查询子单元、第一审核结果获取子单元、存储查询子单元、第二审核结果获取子单元以及动静态审查子单元。
缓存查询子单元查询SQL特征信息缓存装置中是否已有所述SQL特征信息;
第一审核结果获取子单元,若SQL特征信息缓存装置已有所述SQL特征信息,将SQL特征信息缓存装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果;
存储查询子单元查询SQL特征信息存储装置中是否已有所述SQL特征信息;
第二审核结果获取子单元,若所述SQL特征信息存储装置已有所述SQL特征信息,则将所述SQL特征信息存储装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果;
动静态审查子单元若所述SQL特征信息存储装置没有所述SQL特征信息,对所述待审核SQL语句进行SQL静态审查和SQL动态审查。
在一个可选的实施例中,继续参见图7,所述动静态审查子单元包括:SQL静态检查装置、静态审查结果获取装置(图中未示出)以及SQL动态检查装置。
SQL静态检查装置,根据数据库对象定义对所述待审核SQL语句进行SQL静态审查;
其中,SQL静态检查装置负责基于SQL语句相关的数据对象元数据和SQL语句文本进行静态检查。包含静态检查配置单元、静态检查工作单元。
静态检查配置单元负责管理SQL静态检查的参数配置。
静态检查工作单元负责执行SQL静态检查。主要检查SQL文本编写是否符合SQL开发规范的要求。具体检查功能包括而不限于:(1)禁止使用SELECT*语句,必须列出列名清单。(2)操作符两端数据类型应匹配,以避免隐式类型转换影响索引使用。(3)联机交易的DELETE/UPDATE操作必须带WHERE条件,避免全表扫描。(4)子查询嵌套不超过3层。(5)连接查询必须有连接条件避免笛卡儿积。(6)查询分区表需要匹配分区字段等等。
静态审查结果获取装置,若SQL静态审查未通过,则返回审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置
SQL动态检查装置,若SQL静态审查通过,则对所述待审核SQL语句进行SQL动态审查。
其中,SQL动态检查装置负责基于生产环境运行时的统计信息如表数据量、数据分布等在研发测试环境生成SQL语句的执行计划,对SQL执行计划进行性能判定,或与已投产SQL的执行计划进行对比。包含动态检查配置单元、DML动态检查单元、DDL动态检查单元。
动态检查配置单元负责管理SQL动态检查的参数配置。
DML动态检查工作单元,若所述待审核SQL语句为DML语句,则根据所述待审核SQL语句的生产环境数据库信息生成执行计划,进而根据所述执行计划审核所述待审核SQL语句,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置;
即:DML动态检查工作单元负责对DML(data manipulation language)语句如SELECT/INSERT/UPDATE/DELETE语句生成执行计划进行性能判定。
DDL动态检查工作单元,将生产环境与所述DDL语句相关DML语句的执行计划P1和数据分布统计信息导入开发环境,在所述开发环境根据生产环境数据分布统计信息生成所述待审核SQL语句投产后相关DML语句的执行计划P2,比较所述待审核SQL语句投产之前相关DML语句的执行计划P1和所述待审核SQL语句投产之后相关DML语句的执行计划P2,判断所述待审核SQL语句投产后,与所述待审核SQL语句相关的DML语句的查询效率变化情况,进而得到审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置。
即:DDL动态检查工作单元负责对DDL(data definition language)语句如ALTERTABLE语句相关的DML语句生成新的执行计划,与提交该DDL语句之前的已投产SQL执行计划进行对比,判断在生产环境执行该DDL会导致相关DML语句的查询效率变好还是变坏。
在一个可选的实施例中,SQL语句审核系统还包括:SQL特征信息采集装置以及SQL规范化单元。
SQL特征信息采集装置采集程序代码中的SQL语句;
具体地,SQL特征信息采集装置负责采集程序代码中的SQL语句并生成SQL特征信息,包括XML mappper文件解析单元、JDK SQL注解解析单元。XML mapper文件解析单元负责从XML格式的SQL mappper配置文件解析出SQL语句。JDK SQL注解解析单元负责从Java源文件的SQL注解中解析出SQL语句。
SQL规范化单元用于对所述SQL语句进行规范化。
例如:用占位符替换SQL过滤条件中的数据值,将只有查询条件值不同的SQL语句归一化处理为同一条SQL语句。此外还包括SQL语句格式整理等。
在一个可选的实施例中,该SQL语句审核系统还可以包括:数据对象元数据管理装置、生产环境数据库信息存储装置、SQL审核详细信息存储装置、SQL问题流转跟踪装置、SQL审核统计分析装置。
数据对象元数据管理装置负责记录数据对象的版本信息及应用、维护部门、维护人、数据生命周期等元数据信息管理。
生产环境数据库信息存储装置负责在研发测试环境存储生产环境的数据库统计信息、SQL执行计划等。在数据量较大的情况下,研发测试环境通常没有条件搭建与生产环境或模拟投产测试环境相同的数据库环境,通过将生产环境数据库信息(数据分布统计信息,而非数据库中存储的业务数据)转储到研发测试环境,可以实现在研发测试环境生成贴近生产环境条件的SQL执行计划、与生产环境已投产的SQL执行计划进行对比等,将对SQL执行计划的审核从模拟投产测试阶段前置到研发自测阶段。
SQL审核详细信息存储装置负责记录SQL审核的详细信息,包括SQL特征信息、SQL完整文本字符串、SQL业务场景等特征信息的完整描述、SQL审核实施的规则通过/不通过详细记录、时间戳等。
SQL问题流转跟踪装置负责将审核不通过的问题SQL及时发送给负责维护的开发人员,跟踪问题SQL的开发反馈信息和整改情况。
SQL审核统计分析装置负责以开发部门、所属应用等多维度的视角对SQL审核情况进行统计分析,输出SQL审核统计报表,对近期高发SQL问题进行预警等。
上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现下述步骤:
采用CityHash算法获取待审核SQL语句的指纹;
根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;
根据所述SQL特征信息审核所述待审核SQL语句。
从上述描述可知,本发明实施例提供的电子设备,可用于SQL语句审核,基于SQL语句的特征信息自动实现SQL语句的高效精细的审核管理,满足软件工程中版本质量检测体系和精细化管理的需求。
下面参考图8,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
图8所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口606。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现下述步骤:
采用CityHash算法获取待审核SQL语句的指纹;
根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;
根据所述SQL特征信息审核所述待审核SQL语句。
从上述描述可知,本发明实施例提供的计算机可读存储介质,可用于SQL语句审核,基于SQL语句的特征信息自动实现SQL语句的高效精细的审核管理,满足软件工程中版本质量检测体系和精细化管理的需求。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (12)

1.一种SQL语句审核方法,其特征在于,包括:
采用CityHash算法获取待审核SQL语句的指纹;
根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;
根据所述SQL特征信息审核所述待审核SQL语句。
2.根据权利要求1所述的SQL语句审核方法,其特征在于,所述根据所述SQL特征信息审核所述待审核SQL语句,包括:
查询SQL特征信息缓存装置中是否已有所述SQL特征信息;
若是,将SQL特征信息缓存装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果;
若否,查询SQL特征信息存储装置中是否已有所述SQL特征信息;
若所述SQL特征信息存储装置已有所述SQL特征信息,则将所述SQL特征信息存储装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果;
若所述SQL特征信息存储装置没有所述SQL特征信息,对所述待审核SQL语句进行SQL静态审查和SQL动态审查。
3.根据权利要求2所述的SQL语句审核方法,其特征在于,所述对所述待审核SQL语句进行SQL静态审查和SQL动态审查,包括:
根据数据库对象定义对所述待审核SQL语句进行SQL静态审查;
若SQL静态审查未通过,则返回审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置;
若SQL静态审查通过,则对所述待审核SQL语句进行SQL动态审查。
4.根据权利要求3所述的SQL语句审核方法,其特征在于,所述对所述待审核SQL语句进行SQL动态审查,包括:
若所述待审核SQL语句为DML语句,则根据所述待审核SQL语句的生产环境数据库信息生成执行计划,进而根据所述执行计划审核所述待审核SQL语句,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置;
若所述待审核SQL语句为DDL语句,将生产环境与所述DDL语句相关DML语句的执行计划P1和数据分布统计信息导入开发环境,在所述开发环境根据生产环境数据分布统计信息生成所述待审核SQL语句投产后相关DML语句的执行计划P2,比较所述待审核SQL语句投产之前相关DML语句的执行计划P1和所述待审核SQL语句投产之后相关DML语句的执行计划P2,判断所述待审核SQL语句投产后,与所述待审核SQL语句相关的DML语句的查询效率变化情况,进而得到审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置。
5.根据权利要求1所述的SQL语句审核方法,其特征在于,所述采用CityHash算法计算待审核SQL语句的指纹之前,还包括:
采集程序代码中的SQL语句;
对所述SQL语句进行规范化。
6.一种SQL语句审核系统,其特征在于,包括:
CityHash加密单元,采用CityHash算法获取待审核SQL语句的指纹;
特征信息生成单元,根据所述指纹以及所述待审核SQL语句的元数据获取所述待审核SQL语句的SQL特征信息;
审核单元,根据所述SQL特征信息审核所述待审核SQL语句。
7.根据权利要求6所述的SQL语句审核系统,其特征在于,所述审核单元包括:
缓存查询子单元,查询SQL特征信息缓存装置中是否已有所述SQL特征信息;
第一审核结果获取子单元,若SQL特征信息缓存装置已有所述SQL特征信息,将SQL特征信息缓存装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果;
存储查询子单元,查询SQL特征信息存储装置中是否已有所述SQL特征信息;
第二审核结果获取子单元,若所述SQL特征信息存储装置已有所述SQL特征信息,则将所述SQL特征信息存储装置中的所述SQL特征信息对应的SQL审核结果作为所述待审核SQL语句的审核结果;
动静态审查子单元,若所述SQL特征信息存储装置没有所述SQL特征信息,对所述待审核SQL语句进行SQL静态审查和SQL动态审查。
8.根据权利要求7所述的SQL语句审核系统,其特征在于,所述动静态审查子单元包括:
SQL静态检查装置,根据数据库对象定义对所述待审核SQL语句进行SQL静态审查;
静态审查结果获取装置,若SQL静态审查未通过,则返回审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置;
SQL动态检查装置,若SQL静态审查通过,则对所述待审核SQL语句进行SQL动态审查。
9.根据权利要求8所述的SQL语句审核系统,其特征在于,所述SQL动态检查装置包括:
DML动态检查工作单元,若所述待审核SQL语句为DML语句,则根据所述待审核SQL语句的生产环境数据库信息生成执行计划,进而根据所述执行计划审核所述待审核SQL语句,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置;
DDL动态检查工作单元,若所述待审核SQL语句为DDL语句,则将生产环境与所述DDL语句相关DML语句的执行计划P1和数据分布统计信息导入开发环境,在所述开发环境根据生产环境数据分布统计信息生成所述待审核SQL语句投产后相关DML语句的执行计划P2,比较所述待审核SQL语句投产之前相关DML语句的执行计划P1和所述待审核SQL语句投产之后相关DML语句的执行计划P2,判断所述待审核SQL语句投产后,与所述待审核SQL语句相关的DML语句的查询效率变化情况,进而得到审核结果,并将所述待审核SQL语句的SQL特征信息及其对应的审核结果存入所述SQL特征信息缓存装置以及所述SQL特征信息存储装置。
10.根据权利要求6所述的SQL语句审核系统,其特征在于,还包括:
SQL特征信息采集装置,采集程序代码中的SQL语句;
SQL规范化单元,对所述SQL语句进行规范化。
11.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至5任一项所述的SQL语句审核方法的步骤。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至5任一项所述的SQL语句审核方法的步骤。
CN202010101264.1A 2020-02-19 2020-02-19 Sql语句审核方法和系统 Active CN111259040B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010101264.1A CN111259040B (zh) 2020-02-19 2020-02-19 Sql语句审核方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010101264.1A CN111259040B (zh) 2020-02-19 2020-02-19 Sql语句审核方法和系统

Publications (2)

Publication Number Publication Date
CN111259040A true CN111259040A (zh) 2020-06-09
CN111259040B CN111259040B (zh) 2023-04-11

Family

ID=70954537

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010101264.1A Active CN111259040B (zh) 2020-02-19 2020-02-19 Sql语句审核方法和系统

Country Status (1)

Country Link
CN (1) CN111259040B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035580A (zh) * 2020-06-30 2020-12-04 中国民航信息网络股份有限公司 一种Oracle数据库的智能审核方法及系统
CN112613176A (zh) * 2020-12-23 2021-04-06 贝壳技术有限公司 慢sql语句预测方法及系统
CN112783747A (zh) * 2021-02-09 2021-05-11 中国工商银行股份有限公司 一种应用程序的执行时间预测方法及装置
CN113515521A (zh) * 2021-04-26 2021-10-19 中国工商银行股份有限公司 基于检查sql操作的索引优化方法及装置
CN114356896A (zh) * 2022-03-18 2022-04-15 中信建投证券股份有限公司 一种数据库检测方法及装置
CN116136901A (zh) * 2023-04-19 2023-05-19 杭州美创科技股份有限公司 应用程序防假冒方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162729B1 (en) * 2016-02-01 2018-12-25 State Farm Mutual Automobile Insurance Company Automatic review of SQL statement complexity
CN109284282A (zh) * 2018-10-22 2019-01-29 北京极数云舟科技有限公司 一种基于MySQL数据库运维方法和系统
US20190228008A1 (en) * 2016-09-28 2019-07-25 Ping An Technology (Shenzhen) Co., Ltd. Method, device, server and storage apparatus of reviewing sql
CN110442516A (zh) * 2019-07-12 2019-11-12 上海陆家嘴国际金融资产交易市场股份有限公司 信息处理方法、设备及计算机可读存储介质
CN110795450A (zh) * 2019-09-12 2020-02-14 连连银通电子支付有限公司 Sql处理方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162729B1 (en) * 2016-02-01 2018-12-25 State Farm Mutual Automobile Insurance Company Automatic review of SQL statement complexity
US20190228008A1 (en) * 2016-09-28 2019-07-25 Ping An Technology (Shenzhen) Co., Ltd. Method, device, server and storage apparatus of reviewing sql
CN109284282A (zh) * 2018-10-22 2019-01-29 北京极数云舟科技有限公司 一种基于MySQL数据库运维方法和系统
CN110442516A (zh) * 2019-07-12 2019-11-12 上海陆家嘴国际金融资产交易市场股份有限公司 信息处理方法、设备及计算机可读存储介质
CN110795450A (zh) * 2019-09-12 2020-02-14 连连银通电子支付有限公司 Sql处理方法及装置

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035580A (zh) * 2020-06-30 2020-12-04 中国民航信息网络股份有限公司 一种Oracle数据库的智能审核方法及系统
CN112613176A (zh) * 2020-12-23 2021-04-06 贝壳技术有限公司 慢sql语句预测方法及系统
CN112783747A (zh) * 2021-02-09 2021-05-11 中国工商银行股份有限公司 一种应用程序的执行时间预测方法及装置
CN112783747B (zh) * 2021-02-09 2024-06-11 中国工商银行股份有限公司 一种应用程序的执行时间预测方法及装置
CN113515521A (zh) * 2021-04-26 2021-10-19 中国工商银行股份有限公司 基于检查sql操作的索引优化方法及装置
CN114356896A (zh) * 2022-03-18 2022-04-15 中信建投证券股份有限公司 一种数据库检测方法及装置
CN114356896B (zh) * 2022-03-18 2022-07-01 中信建投证券股份有限公司 一种数据库检测方法及装置
CN116136901A (zh) * 2023-04-19 2023-05-19 杭州美创科技股份有限公司 应用程序防假冒方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN111259040B (zh) 2023-04-11

Similar Documents

Publication Publication Date Title
CN111259040B (zh) Sql语句审核方法和系统
US11847574B2 (en) Systems and methods for enriching modeling tools and infrastructure with semantics
US10013439B2 (en) Automatic generation of instantiation rules to determine quality of data migration
US20170109657A1 (en) Machine Learning-Based Model for Identifying Executions of a Business Process
US20170109676A1 (en) Generation of Candidate Sequences Using Links Between Nonconsecutively Performed Steps of a Business Process
US20170109668A1 (en) Model for Linking Between Nonconsecutively Performed Steps in a Business Process
US20170109667A1 (en) Automaton-Based Identification of Executions of a Business Process
US11461410B2 (en) Case leaf nodes pointing to business objects or document types
US20180046956A1 (en) Warning About Steps That Lead to an Unsuccessful Execution of a Business Process
US8626543B2 (en) Tracing software execution of a business process
CN111949543B (zh) 基于分布式平台的测试方法、装置、电子设备及存储介质
US20140025412A1 (en) Automatic configuration of process definition metrics
CN111699484A (zh) 用于数据管理的系统和方法
CN105868956A (zh) 一种数据处理方法及装置
US20170109640A1 (en) Generation of Candidate Sequences Using Crowd-Based Seeds of Commonly-Performed Steps of a Business Process
CN114880405A (zh) 一种基于数据湖的数据处理方法及系统
CN114416852A (zh) 数据处理方法、装置、设备及介质
US11227288B1 (en) Systems and methods for integration of disparate data feeds for unified data monitoring
US8396847B2 (en) System and method to retrieve and analyze data for decision making
US20170109670A1 (en) Crowd-Based Patterns for Identifying Executions of Business Processes
CN113590686A (zh) 生态环境数据指标的处理方法、装置及设备
CN117829121B (zh) 数据处理方法、装置、电子设备和介质
CN118227200B (zh) 一种多链路追踪方法
CN117648339B (zh) 一种数据探查方法、装置、服务器及存储介质
CN113946632A (zh) 一种敏捷数据仓库架构及其构建方法和应用

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant