CN107797916B - Ddl语句审核方法和装置 - Google Patents
Ddl语句审核方法和装置 Download PDFInfo
- Publication number
- CN107797916B CN107797916B CN201611000842.2A CN201611000842A CN107797916B CN 107797916 B CN107797916 B CN 107797916B CN 201611000842 A CN201611000842 A CN 201611000842A CN 107797916 B CN107797916 B CN 107797916B
- Authority
- CN
- China
- Prior art keywords
- auditing
- ddl statement
- ddl
- audited
- belonging
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
Abstract
本发明涉及一种DDL语句审核方法和装置。上述方法,包括:获取待审核的脚本文件;解析所述脚本文件,得到所述脚本文件中各条DDL语句的对象类型;根据所述各条DDL语句的对象类型对所述各条DDL语句进行分类,划分属于各个对象类别的DDL语句;获取与各个对象类别对应的对象审核模板;根据所述与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核。上述DDL语句审核方法和装置,节省了大量的人力及时间,能够提高DDL语句的审核效率,并有效提高了审核的准确性,减少审核错误。
Description
技术领域
本发明涉及数据库技术领域,特别是涉及一种DDL语句审核方法和装置。
背景技术
由于生产业务的需求,一般规模较大的公司都需要建立庞大的数据库组存储实际生产业务中的数据,包括产品信息、客户信息等。为了有效地管理数据库组,通常需要保证数据库中的DDL(Data Definition Language,数据库定义语言)语句符合相应的规范,以保证数据库的稳定运行。在传统的方式中,一般是由数据库管理员对数据库中的DDL语句进行人工审核,对质量低的DDL语句进行改造,此种审核方式浪费大量的人力及时间,审核效率低,且容易出错,审核的准确性差。
发明内容
基于此,有必要提供一种DDL语句审核方法,能有效提高DDL语句的审核效率,节约大量的人力及时间,并提高审核的准确性。
此外,还有必要提供一种DDL语句审核装置,能有效提高DDL语句的审核效率,节约大量的人力及时间,并提高审核的准确性。
一种DDL语句审核方法,包括:
获取待审核的脚本文件;
解析所述脚本文件,得到所述脚本文件中各条DDL语句的对象类型;
根据所述各条DDL语句的对象类型对所述各条DDL语句进行分类,划分属于各个对象类别的DDL语句;
获取与各个对象类别对应的对象审核模板;
根据所述与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核。
在其中一个实施例中,在所述获取待审核的脚本文件的步骤之前,还包括:
接收上传的数据库压缩脚本文件;
解压所述数据库压缩脚本文件,得到原始脚本文件;
对所述原始脚本文件进行统一格式化处理,得到格式化的待审核的脚本文件。
在其中一个实施例中,所述根据所述与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核,包括:
解析待审核的DDL语句,得到所述待审核的DDL语句的操作类型;
根据所述待审核的DDL语句的操作类型,从所述待审核的DDL语句所属的对象类别对应的对象审核模板中提取匹配的审核条件信息;
根据所述审核条件信息对所述待审核的DDL语句进行审核。
在其中一个实施例中,所述对象类别包括序列对象;
所述根据所述审核条件信息对所述待审核的DDL语句进行审核,包括:
当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测所述属于序列对象的待审核的DDL语句是否对预设参数进行设值,若是,则审核通过,若否,则审核不通过;和/或
当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测创建的序列的名称是否符合预设格式,若是,则审核通过,若否,则审核不通过;和/或
当属于序列对象的待审核的DDL语句的操作类型为创建序列或删除序列,检测所述属于序列对象的待审核的DDL语句是否包含属主名称,若是,则审核通过,若否,则审核不通过。
在其中一个实施例中,所述对象类别包括表对象;
所述根据所述审核条件信息对所述待审核的DDL语句进行审核,包括:
当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句是否在创建主键之前创建索引,若是,则审核通过,若否,则审核不通过;和/或
当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句中是否包含预设的设置项目,若是,则审核不通过,若否,则审核通过;和/或
当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句中创建的字段是否大于预设大小,若是,则审核不通过,若否,则审核通过。
一种DDL语句审核装置,包括:
脚本获取模块,用于获取待审核的脚本文件;
解析模块,用于解析所述脚本文件,得到所述脚本文件中各条DDL语句的对象类型;
分类模块,用于根据所述各条DDL语句的对象类型对所述各条DDL语句进行分类,划分属于各个对象类别的DDL语句;
模板获取模块,用于获取与各个对象类别对应的对象审核模板;
审核模块,用于根据所述与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核。
在其中一个实施例中,所述装置,还包括:
接收模块,用于接收上传的数据库压缩脚本文件;
解压模块,用于解压所述数据库压缩脚本文件,得到原始脚本文件;
格式化模块,用于对所述原始脚本文件进行统一格式化处理,得到格式化的待审核的脚本文件。
在其中一个实施例中,所述审核模块,包括:
解析单元,用于解析待审核的DDL语句,得到所述待审核的DDL语句的操作类型;
提取单元,用于根据所述待审核的DDL语句的操作类型,从所述待审核的DDL语句所属的对象类别对应的对象审核模板中提取匹配的审核条件信息;
审核单元,用于根据所述审核条件信息对所述待审核的DDL语句进行审核。
在其中一个实施例中,所述对象类别包括序列对象;
所述审核单元,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测所述属于序列对象的待审核的DDL语句是否对预设参数进行设值,若是,则审核通过,若否,则审核不通过;和/或
所述审核单元,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测创建的序列的名称是否符合预设格式,若是,则审核通过,若否,则审核不通过;和/或
所述审核单元,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列或删除序列,检测所述属于序列对象的待审核的DDL语句是否包含属主名称,若是,则审核通过,若否,则审核不通过。
在其中一个实施例中,所述对象类别包括表对象;
所述审核单元,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句是否在创建主键之前创建索引,若是,则审核通过,若否,则审核不通过;和/或
所述审核单元,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句中是否包含预设的设置项目,若是,则审核不通过,若否,则审核通过;和/或
所述审核单元,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句中创建的字段是否大于预设大小,若是,则审核不通过,若否,则审核通过。
上述DDL语句审核方法和装置,通过解析获取的脚本文件,得到脚本文件中各条DDL语句的对象类型,并根据各条DDL语句的对象类型对各条DDL语句进行分类,再根据与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核,自动根据DDL语句的对象类型进行分类再进行审核,节省了大量的人力及时间,能有效提高DDL语句的审核效率,且针对不同的对象类别能根据对应的对象审核模板对DDL语句进行审核,有效提高了审核的准确性,减少审核错误。
附图说明
图1为一个实施例中服务器的内部结构示意图;
图2为一个实施例中DDL语句审核方法的流程示意图;
图3为一个实施例中对原始脚本文件进行统一格式化处理的流程示意图;
图4为一个实施例中根据与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核的流程示意图;
图5为一个实施例中DDL语句审核装置的结构示意图;
图6为另一个实施例中DDL语句审核装置的结构示意图;
图7为一个实施例中审核模块的内部结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
图1为一个实施例中服务器的内部结构示意图。如图1所示,该服务器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服务器的非易失性存储介质存储有操作系统、数据库和DDL语句审核装置,数据库中存储有数据库脚本文件,该DDL语句审核装置用于实现适用于服务器的一种DDL语句审核方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的内存储器为非易失性存储介质中的DDL语句审核装置的运行提供环境,该内存储器中可储存有计算机可读指令,该计算机可读指令被所述处理器执行时,可使得所述处理器执行DDL语句审核方法。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的审核DDL语句的请求等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
如图2所示,提供了一种DDL语句审核方法,包括以下步骤:
步骤S210,获取待审核的脚本文件。
具体的,服务器可获取待审核的脚本文件,脚本文件中包含一条或多条DDL语句,DDL是SQL(Structured Query Language,结构化查询语言)中的一种,主要用于定义或改变表的结构、数据类型、表之间的链接和约束等初始化工作,DDL主要的命令包括CREATE(创建)、ALTER(更改)和DROP(删除)等。
步骤S220,解析脚本文件,得到脚本文件中各条DDL语句的对象类型。
具体的,服务器可对获取的待审核的脚本文件进行解析,分析脚本文件中的DDL语句,通过检测DDL语句中是否包含预设的关键词,并根据DDL中包含的关键词确定DDL语句的对象类型,例如,DDL语句中若是包含关键词TABLE,则其对象类型为表类型,DDL语句中若是包含关键词INDEX,则其对象类型为索引类型,DDL语句中若是包含关键词SEQUENCE,则其对象类型为序列类型,DDL语句中若是包含关键词SYNONYM,则其对象类型为同义词类型,DDL语句中若是包含关键词VIEW,则其对象类型为视图类型等。
步骤S230,根据各条DDL语句的对象类型对各条DDL语句进行分类,划分属于各个对象类别的DDL语句。
具体的,对象类别可包括表对象、索引对象、序列对象、同义词对象及视图对象中的一种或多种,服务器可根据脚本文件中各条DDL语句的对象类型对DDL语句进行分类,划分属于各个对象类别的DDL语句。
步骤S240,获取与各个对象类别对应的对象审核模板。
具体的,不同的对象类别可对应不同的对象审核模板,对象审核模板中制定了一套与对应的对象类别相关的审核规则,对象审核模板中可包括一项或多项审核条件信息,用于审核DDL语句。例如,表对象对应的对象审核模板中可包括表中一条记录所有字段的长度不能超过该数据库的设置的db_block_size(数据库的数据块容量)大小,及所有外键上都必须创建索引等审核条件信息;索引对象对应的对象审核模板中可包括创建索引时,不能指定索引表空间等审核条件信息。服务器对脚本文件中的DDL语句进行分类后,可获取与各个对象类别的对应对象审核模板。
步骤S250,根据与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核。
具体的,服务器可根据与各个对象类别对应的对象审核模板中的审核条件信息,分别对属于各个对象类别下的DDL语句进行审核,例始,根据与表对象对应的对象审核模板中的审核条件信息对属于表对象的DDL语句进行审核,根据与索引对象对应的对象审核模板中的审核条件信息对属于索引对象的DDL语句进行审核等。当DDL语句全部通过对象审核模板中的审核条件信息时,则可判断DDL语句审核通过,若DDL语句不满足对象审核模板中的任一审核条件信息时,则可判断DDL语句审核不通过。可根据审核结果生成审核结果集,对DDL语句的审核结果进行标记,例如,审核通过的DDL语句标记为1,审核不通过的DDL语句标记为0,但不限于此。
在一个实施例中,上述DDL语句审核方法,还包括:获取审核不通过的DDL语句的基本信息,并根据审核不通过的DDL语句的基本信息生成DDL审核报告。
具体的,审核不通过的DDL语句的基本信息可包括DDL语句的编号、DDL语句的内容、不通过的审核条件信息对应的编号、DDL语句的来源数据库标识等,可从审核结果集中获取审核不通过的DDL语句的基本信息,并生成DDL审核报告。数据库管理员可通过查看DDL审核报告了解数据库的DDL语句审核情况,并对审核不通过的DDL语句进行整改。
上述DDL语句审核方法,通过解析获取的脚本文件,得到脚本文件中各条DDL语句的对象类型,并根据各条DDL语句的对象类型对各条DDL语句进行分类,再根据与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核,自动根据DDL语句的对象类型进行分类再进行审核,节省了大量的人力及时间,能有效提高DDL语句的审核效率,且针对不同的对象类别能根据对应的对象审核模板对DDL语句进行审核,有效提高了审核的准确性,减少审核错误。
如图3所示,在一个实施例中,在步骤S210获取待审核的脚本文件之前,还包括:
步骤S302,接收上传的数据库压缩脚本文件。
具体的,可收集各个数据库的脚本文件,并对收集的数据库脚本文件进行压缩,可打包生成ZIP、RAR等格式的数据库压缩脚本文件,并发送至服务器。
步骤S304,解压数据库压缩脚本文件,得到原始脚本文件。
具体的,服务器接收数据库压缩脚本文件,可对数据库压缩脚本文件进行解压,得到各个数据库的原始脚本文件。
步骤S306,对原始脚本文件进行统一格式化处理,得到格式化的待审核的脚本文件。
具体的,各个数据库的原始脚本文件中包含的数据量较大,数据内容较为复杂且格式不一,因此需要对解压得到的原始脚本文件进行数据清洗及统一格式化处理,其中,数据清洗指的是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并保证数据一致性,可通过数据清洗过滤掉原始脚本文件中不属于DDL语句的其它SQL语句。对原始脚本文件进行数据清洗后,可进行统一格式化处理,将原始脚本文件中的DDL语句转化为统一格式,例如,可将所有的字母统一转化为大写,或统一转化为小写,可去除原始脚本文件中不必要的空格,也可以“;”为结尾对原始脚本文件中的DDL语句进行分段等。对原始脚本文件进行数据清洗及统一格式化处理后,可得到格式化的待审核的脚本文件。
在本实施例中,对数据库的原始脚本文件进行格式化处理,可提高DDL语句的可读性,并方便以统一格式进行审核,加速审核效率,且能提高审核准确度。
如图4所示,在一个实施例中,步骤S250根据与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核,包括以下步骤:
步骤S402,解析待审核的DDL语句,得到待审核的DDL语句的操作类型。
具体的,服务器可建立多条线程,用于并发执行审核DDL语句的任务,每条线程可分别对应一个对象类别,单审核属于对应的对象类别的DDL语句。通过线程,可对属于与该线程对应的对象类别的DDL语句进行解析,分析DDL语句所执行的操作命令,并得到待审核的DDL语句的操作类型,操作类型可包括创建、更改、删除等。
步骤S404,根据待审核的DDL语句的操作类型,从待审核的DDL语句所属的对象类别对应的对象审核模板中提取匹配的审核条件信息。
具体的,与对象类别对应的对象审核模板中,针对于不同操作类型的DDL语句,包含有不同的审核条件信息,可根据待审核的DDL语句的操作类型,从与其所属的对象类别对应的对象审核模板中提取与操作类型匹配的审核条件信息,例如,审核属于索引对象的DDL语句,分析得到该DDL语句的操作类型为创建索引,则从与索引对象对应的对象审核模板中提取与创建索引相关的审核条件信息,可包括创建索引时不能指定索引表空间、一个索引包含的所有字段的最大长度必须小于或等于(db_block_size-192)*60%、创建的索引名称符合表名+字段名的格式等。
步骤S406,根据审核条件信息对待审核的DDL语句进行审核。
具体的,可根据与DDL语句的操作类型匹配的审核条件信息对DDL语句进行审核,判断DDL语句是否符合审核条件信息,若符合,则审核通过,若不符合,则审核不通过。
在一个实施例中,当待审核的DDL语句属于序列对象,则步骤S406根据审核条件信息对待审核的DDL语句进行审核,包括(a)和/或(b)和/.或(c):
(a)当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测属于序列对象的待审核的DDL语句是否对预设参数进行设值,若是,则审核通过,若否,则审核不通过。
具体的,序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值。当待审核的DDL语句属于序列对象,分析DDL语句所执行的操作命令,得到该DDL语句的操作类型为创建序列,则可检测该创建序列的DDL语句是否对预设参数进行设值,例如minvalue、maxvalue、start with、increment by等参数,其中,minvalue代表序列器能产生的最小值,maxvalue代表序列器能产生的最大值,start with定义序列的初始值,即产生的第一个值,increment by用于定义序列的步长。若是DDL语句中指定了预设参数的值,则审核通过。
(b)当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测创建的序列的名称是否符合预设格式,若是,则审核通过,若否,则审核不通过。
具体的,当属于序列对象的DDL语句的操作类型为创建序列,可检测创建的序列的名称是否符合预设格式,预设格式可根据实际需求进行设定,例如,可设定序列的命名格式为系统名+子系统名+功能描述等,但不限于此。若创建的序列的名称符合预设格式,则审核通过。
(c)当属于序列对象的待审核的DDL语句的操作类型为创建序列或删除序列,检测属于序列对象的待审核的DDL语句是否包含属主名称,若是,则审核通过,若否,则审核不通过。
具体的,当属于序列对象的DDL语句的操作类型为创建序列或删除序列,可检测该DDL语句中是否包含属主名称,属主名称可用于表示创建的序列所属的用户,若该DDL语句中包含属主名称,则审核通过。
在一个实施例中,当待审核的DDL语句属于表对象,则步骤S406根据审核条件信息对待审核的DDL语句进行审核,包括(1)和/或(2)和/或(3):
(1)当属于表对象的待审核的DDL语句的操作类型为创建表,检测属于表对象的待审核的DDL语句是否在创建主键之前创建索引,若是,则审核通过,若否,则审核不通过。
具体的,当待审核的DDL语句属于表对象,分析DDL语句所执行的操作命令,得到该DDL语句的操作类型为创建表,可检测该DDL语句是否在创建主键之前创建索引,若是,则审核通过。在创建主键之前创建索引可帮助后续在查询表的数据时快速地找到所需的数据,加快查询速度,节省数据库开销。
(2)当属于表对象的待审核的DDL语句的操作类型为创建表,检测属于表对象的待审核的DDL语句中是否包含预设的设置项目,若是,则审核不通过,若否,则审核通过。
具体的,当属于表对象的DDL语句的操作类型为创建表,可检测该DDL语句中是否包含预设的设置项目,例如检测DDL语句中是否设置nologging选项、storage选项等,若是,则审核不通过。在创建表是设置nologging选项、storage选项等,会影响数据库遇上故障时的备份及恢复。
(3)当属于表对象的待审核的DDL语句的操作类型为创建表,检测属于表对象的待审核的DDL语句中创建的字段是否大于预设大小,若是,则审核不通过,若否,则审核通过。
具体的,当属于表对象的DDL语句的操作类型为创建表,可检测该DDL语句中创建的字段是否大于预设大小,例如,是否大于数据库中的db_block_size大小等。
可以理解地,根据与DDL语句的操作类型匹配的审核条件信息对DDL语句进行审核的方式并不限于上式提及的几种方式,还可根据实际需要进行设定,例如,创建表或删除表时必须带上属主名称、对于不同含义的字段不能使用相同的命名等。除此之外,当待审核的DDL语句属于同义词对象、索引对象或视图对象等对象类别时,在与同义词对象、索引对象或视图对象对应的对象审核模板中,针对于不同操作类型的DDL语句,可包含匹配的审核条件信息,用于审核相应的DDL语句,例如,创建视图时禁止使用FOR UPDATE子句、创建同义词时禁止使用or replace等关键字、创建索引必须初始化事务槽等,但并不限于此。
在本实施例中,针对于各对象类型的DDL语句,可根据DDL语句的操作类型从与对象类型对应的对象审核模板中提取匹配的审核条件信息,对DDL语句进行审核,有效提高了审核的准确性,减少审核错误,进一步保障了数据库的稳定。
如图5所示,提供了一种DDL语句审核装置,包括脚本获取模块510、解析模块520、分类模块530、模板获取模块540及审核模块550。
脚本获取模块510,用于获取待审核的脚本文件。
具体的,服务器可获取待审核的脚本文件,脚本文件中包含一条或多条DDL语句,DDL是SQL中的一种,主要用于定义或改变表的结构、数据类型、表之间的链接和约束等初始化工作,DDL主要的命令包括CREATE、ALTER和DROP等。
解析模块520,用于解析脚本文件,得到脚本文件中各条DDL语句的对象类型。
具体的,服务器可对获取的待审核的脚本文件进行解析,分析脚本文件中的DDL语句,通过检测DDL语句中是否包含预设的关键词,并根据DDL中包含的关键词确定DDL语句的对象类型,例如,DDL语句中若是包含关键词TABLE,则其对象类型为表类型,DDL语句中若是包含关键词INDEX,则其对象类型为索引类型,DDL语句中若是包含关键词SEQUENCE,则其对象类型为序列类型,DDL语句中若是包含关键词SYNONYM,则其对象类型为同义词类型,DDL语句中若是包含关键词VIEW,则其对象类型为视图类型等。
分类模块530,用于根据各条DDL语句的对象类型对各条DDL语句进行分类,划分属于各个对象类别的DDL语句。
具体的,对象类别可包括表对象、索引对象、序列对象、同义词对象及视图对象中的一种或多种,服务器可根据脚本文件中各条DDL语句的对象类型对DDL语句进行分类,划分属于各个对象类别的DDL语句。
模板获取模块540,用于获取与各个对象类别对应的对象审核模板。
具体的,不同的对象类别可对应不同的对象审核模板,对象审核模板中制定了一套与对应的对象类别相关的审核规则,对象审核模板中可包括一项或多项审核条件信息,用于审核DDL语句。例如,表对象对应的对象审核模板中可包括表中一条记录所有字段的长度不能超过该数据库的设置的db_block_size大小,及所有外键上都必须创建索引等审核条件信息;索引对象对应的对象审核模板中可包括创建索引时,不能指定索引表空间等审核条件信息。服务器对脚本文件中的DDL语句进行分类后,可获取与各个对象类别的对应对象审核模板。
审核模块550,用于根据与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核。
具体的,服务器可根据与各个对象类别对应的对象审核模板中的审核条件信息,分别对属于各个对象类别下的DDL语句进行审核,例始,根据与表对象对应的对象审核模板中的审核条件信息对属于表对象的DDL语句进行审核,根据与索引对象对应的对象审核模板中的审核条件信息对属于索引对象的DDL语句进行审核等。当DDL语句全部通过对象审核模板中的审核条件信息时,则可判断DDL语句审核通过,若DDL语句不满足对象审核模板中的任一审核条件信息时,则可判断DDL语句审核不通过。可根据审核结果生成审核结果集,对DDL语句的审核结果进行标记,例如,审核通过的DDL语句标记为1,审核不通过的DDL语句标记为0,但不限于此。
在一个实施例中,上述DDL语句审核装置,还包括报告生成模块,用于:获取审核不通过的DDL语句的基本信息,并根据审核不通过的DDL语句的基本信息生成DDL审核报告。
具体的,审核不通过的DDL语句的基本信息可包括DDL语句的编号、DDL语句的内容、不通过的审核条件信息对应的编号、DDL语句的来源数据库标识等,可从审核结果集中获取审核不通过的DDL语句的基本信息,并生成DDL审核报告。数据库管理员可通过查看DDL审核报告了解数据库的DDL语句审核情况,并对审核不通过的DDL语句进行整改。
上述DDL语句审核装置,通过解析获取的脚本文件,得到脚本文件中各条DDL语句的对象类型,并根据各条DDL语句的对象类型对各条DDL语句进行分类,再根据与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核,自动根据DDL语句的对象类型进行分类再进行审核,节省了大量的人力及时间,能有效提高DDL语句的审核效率,且针对不同的对象类别能根据对应的对象审核模板对DDL语句进行审核,有效提高了审核的准确性,减少审核错误。
如图6所示,在另一个实施例中,上述DDL语句审核装置,除了包括脚本获取模块510、解析模块520、分类模块530、模板获取模块540及审核模块550,还包括接收模块560、解压模块570及格式化模块580。
接收模块560,用于接收上传的数据库压缩脚本文件。
具体的,可收集各个数据库的脚本文件,并对收集的数据库脚本文件进行压缩,可打包生成ZIP、RAR等格式的数据库压缩脚本文件,并发送至服务器。
解压模块570,用于解压数据库压缩脚本文件,得到原始脚本文件。
具体的,服务器接收数据库压缩脚本文件,可对数据库压缩脚本文件进行解压,得到各个数据库的原始脚本文件。
格式化模块580,用于对原始脚本文件进行统一格式化处理,得到格式化的待审核的脚本文件。
具体的,各个数据库的原始脚本文件中包含的数据量较大,数据内容较为复杂且格式不一,因此需要对解压得到的原始脚本文件进行数据清洗及统一格式化处理,其中,数据清洗指的是对数据进行重新审查和校验的过程,目的在于删除重复信息、纠正存在的错误,并保证数据一致性,可通过数据清洗过滤掉原始脚本文件中不属于DDL语句的其它SQL语句。对原始脚本文件进行数据清洗后,可进行统一格式化处理,将原始脚本文件中的DDL语句转化为统一格式,例如,可将所有的字母统一转化为大写,或统一转化为小写,可去除原始脚本文件中不必要的空格,也可以“;”为结尾对原始脚本文件中的DDL语句进行分段等。对原始脚本文件进行数据清洗及统一格式化处理后,可得到格式化的待审核的脚本文件。
在本实施例中,对数据库的原始脚本文件进行格式化处理,可提高DDL语句的可读性,并方便以统一格式进行审核,加速审核效率,且能提高审核准确度。
如图7所示,在一个实施例中,审核模块550包括解析单元552、提取单元554及审核单元556。
解析单元552,用于解析待审核的DDL语句,得到待审核的DDL语句的操作类型。
具体的,服务器可建立多条线程,用于并发执行审核DDL语句的任务,每条线程可分别对应一个对象类别,单审核属于对应的对象类别的DDL语句。通过线程,可对属于与该线程对应的对象类别的DDL语句进行解析,分析DDL语句所执行的操作命令,并得到待审核的DDL语句的操作类型,操作类型可包括创建、更改、删除等。
提取单元554,用于根据待审核的DDL语句的操作类型,从待审核的DDL语句所属的对象类别对应的对象审核模板中提取匹配的审核条件信息。
具体的,与对象类别对应的对象审核模板中,针对于不同操作类型的DDL语句,包含有不同的审核条件信息,可根据待审核的DDL语句的操作类型,从与其所属的对象类别对应的对象审核模板中提取与操作类型匹配的审核条件信息,例如,审核属于索引对象的DDL语句,分析得到该DDL语句的操作类型为创建索引,则从与索引对象对应的对象审核模板中提取与创建索引相关的审核条件信息,可包括创建索引时不能指定索引表空间、一个索引包含的所有字段的最大长度必须小于或等于(db_block_size-192)*60%、创建的索引名称符合表名+字段名的格式等。
审核单元556,用于根据审核条件信息对待审核的DDL语句进行审核。
具体的,可根据与DDL语句的操作类型匹配的审核条件信息对DDL语句进行审核,判断DDL语句是否符合审核条件信息,若符合,则审核通过,若不符合,则审核不通过。
在一个实施例中,审核单元556,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测所述属于序列对象的待审核的DDL语句是否对预设参数进行设值,若是,则审核通过,若否,则审核不通过。
具体的,序列是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值。当待审核的DDL语句属于序列对象,分析DDL语句所执行的操作命令,得到该DDL语句的操作类型为创建序列,则可检测该创建序列的DDL语句是否对预设参数进行设值,例如minvalue、maxvalue、start with、increment by等参数,其中,minvalue代表序列器能产生的最小值,maxvalue代表序列器能产生的最大值,start with定义序列的初始值,即产生的第一个值,increment by用于定义序列的步长。若是DDL语句中指定了预设参数的值,则审核通过。
审核单元556,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测创建的序列的名称是否符合预设格式,若是,则审核通过,若否,则审核不通过。
具体的,当属于序列对象的DDL语句的操作类型为创建序列,可检测创建的序列的名称是否符合预设格式,预设格式可根据实际需求进行设定,例如,可设定序列的命名格式为系统名+子系统名+功能描述等,但不限于此。若创建的序列的名称符合预设格式,则审核通过。
审核单元556,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列或删除序列,检测属于序列对象的待审核的DDL语句是否包含属主名称,若是,则审核通过,若否,则审核不通过。
具体的,当属于序列对象的DDL语句的操作类型为创建序列或删除序列,可检测该DDL语句中是否包含属主名称,属主名称可用于表示创建的序列所属的用户,若该DDL语句中包含属主名称,则审核通过。
在一个实施例中,审核单元556,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测属于表对象的待审核的DDL语句是否在创建主键之前创建索引,若是,则审核通过,若否,则审核不通过。
具体的,当待审核的DDL语句属于表对象,分析DDL语句所执行的操作命令,得到该DDL语句的操作类型为创建表,可检测该DDL语句是否在创建主键之前创建索引,若是,则审核通过。在创建主键之前创建索引可帮助后续在查询表的数据时快速地找到所需的数据,加快查询速度,节省数据库开销。
审核单元556,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测属于表对象的待审核的DDL语句中是否包含预设的设置项目,若是,则审核不通过,若否,则审核通过。
具体的,当属于表对象的DDL语句的操作类型为创建表,可检测该DDL语句中是否包含预设的设置项目,例如检测DDL语句中是否设置nologging选项、storage选项等,若是,则审核不通过。在创建表是设置nologging选项、storage选项等,会影响数据库遇上故障时的备份及恢复。
审核单元556,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测属于表对象的待审核的DDL语句中创建的字段是否大于预设大小,若是,则审核不通过,若否,则审核通过。
具体的,当属于表对象的DDL语句的操作类型为创建表,可检测该DDL语句中创建的字段是否大于预设大小,例如,是否大于数据库中的db_block_size大小等。
可以理解地,根据与DDL语句的操作类型匹配的审核条件信息对DDL语句进行审核的方式并不限于上式提及的几种方式,还可根据实际需要进行设定,例如,创建表或删除表时必须带上属主名称、对于不同含义的字段不能使用相同的命名等。除此之外,当待审核的DDL语句属于同义词对象、索引对象或视图对象等对象类别时,在与同义词对象、索引对象或视图对象对应的对象审核模板中,针对于不同操作类型的DDL语句,可包含匹配的审核条件信息,用于审核相应的DDL语句,例如,创建视图时禁止使用FOR UPDATE子句、创建同义词时禁止使用or replace等关键字、创建索引必须初始化事务槽等,但并不限于此。
在本实施例中,针对于各对象类型的DDL语句,可根据DDL语句的操作类型从与对象类型对应的对象审核模板中提取匹配的审核条件信息,对DDL语句进行审核,有效提高了审核的准确性,减少审核错误,进一步保障了数据库的稳定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种DDL语句审核方法,包括:
获取待审核的脚本文件;
解析所述脚本文件,得到所述脚本文件中各条DDL语句的对象类型;
根据所述各条DDL语句的对象类型对所述各条DDL语句进行分类,划分属于各个对象类别的DDL语句;
获取与各个对象类别对应的对象审核模板;不同的对象类别对应不同的对象审核模板;
根据所述与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核;
所述根据所述与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核,包括:
解析待审核的DDL语句,得到所述待审核的DDL语句的操作类型;
根据所述待审核的DDL语句的操作类型,从所述待审核的DDL语句所属的对象类别对应的对象审核模板中提取匹配的审核条件信息;
根据所述审核条件信息对所述待审核的DDL语句进行审核。
2.根据权利要求1所述的DDL语句审核方法,其特征在于,在所述获取待审核的脚本文件的步骤之前,还包括:
接收上传的数据库压缩脚本文件;
解压所述数据库压缩脚本文件,得到原始脚本文件;
对所述原始脚本文件进行统一格式化处理,得到格式化的待审核的脚本文件。
3.根据权利要求1所述的DDL语句审核方法,其特征在于,所述对象类别包括序列对象;
所述根据所述审核条件信息对所述待审核的DDL语句进行审核,包括:
当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测所述属于序列对象的待审核的DDL语句是否对预设参数进行设值,若是,则审核通过,若否,则审核不通过;和/或
当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测创建的序列的名称是否符合预设格式,若是,则审核通过,若否,则审核不通过;和/或
当属于序列对象的待审核的DDL语句的操作类型为创建序列或删除序列,检测所述属于序列对象的待审核的DDL语句是否包含属主名称,若是,则审核通过,若否,则审核不通过。
4.根据权利要求1或3所述的DDL语句审核方法,其特征在于,所述对象类别包括表对象;
所述根据所述审核条件信息对所述待审核的DDL语句进行审核,包括:
当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句是否在创建主键之前创建索引,若是,则审核通过,若否,则审核不通过;和/或
当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句中是否包含预设的设置项目,若是,则审核不通过,若否,则审核通过;和/或
当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句中创建的字段是否大于预设大小,若是,则审核不通过,若否,则审核通过。
5.一种DDL语句审核装置,其特征在于,包括:
脚本获取模块,用于获取待审核的脚本文件;
解析模块,用于解析所述脚本文件,得到所述脚本文件中各条DDL语句的对象类型;
分类模块,用于根据所述各条DDL语句的对象类型对所述各条DDL语句进行分类,划分属于各个对象类别的DDL语句;
模板获取模块,用于获取与各个对象类别对应的对象审核模板;不同的对象类别对应不同的对象审核模板;
审核模块,用于根据所述与各个对象类别对应的对象审核模板分别对属于各个对象类别的DDL语句进行审核;
所述审核模块,包括:
解析单元,用于解析待审核的DDL语句,得到所述待审核的DDL语句的操作类型;
提取单元,用于根据所述待审核的DDL语句的操作类型,从所述待审核的DDL语句所属的对象类别对应的对象审核模板中提取匹配的审核条件信息;
审核单元,用于根据所述审核条件信息对所述待审核的DDL语句进行审核。
6.根据权利要求5所述的DDL语句审核装置,其特征在于,所述装置,还包括:
接收模块,用于接收上传的数据库压缩脚本文件;
解压模块,用于解压所述数据库压缩脚本文件,得到原始脚本文件;
格式化模块,用于对所述原始脚本文件进行统一格式化处理,得到格式化的待审核的脚本文件。
7.根据权利要求5所述的DDL语句审核装置,其特征在于,所述对象类别包括序列对象;
所述审核单元,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测所述属于序列对象的待审核的DDL语句是否对预设参数进行设值,若是,则审核通过,若否,则审核不通过;和/或
所述审核单元,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列,检测创建的序列的名称是否符合预设格式,若是,则审核通过,若否,则审核不通过;和/或
所述审核单元,还用于当属于序列对象的待审核的DDL语句的操作类型为创建序列或删除序列,检测所述属于序列对象的待审核的DDL语句是否包含属主名称,若是,则审核通过,若否,则审核不通过。
8.根据权利要求5或7所述的DDL语句审核装置,其特征在于,所述对象类别包括表对象;
所述审核单元,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句是否在创建主键之前创建索引,若是,则审核通过,若否,则审核不通过;和/或
所述审核单元,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句中是否包含预设的设置项目,若是,则审核不通过,若否,则审核通过;和/或
所述审核单元,还用于当属于表对象的待审核的DDL语句的操作类型为创建表,检测所述属于表对象的待审核的DDL语句中创建的字段是否大于预设大小,若是,则审核不通过,若否,则审核通过。
9.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时可实现如权利要求1至4任一项所述的DDL语句审核方法。
10.一种终端设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至4中任一项所述的DDL语句审核方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611000842.2A CN107797916B (zh) | 2016-11-14 | 2016-11-14 | Ddl语句审核方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611000842.2A CN107797916B (zh) | 2016-11-14 | 2016-11-14 | Ddl语句审核方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107797916A CN107797916A (zh) | 2018-03-13 |
CN107797916B true CN107797916B (zh) | 2020-04-28 |
Family
ID=61530933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611000842.2A Active CN107797916B (zh) | 2016-11-14 | 2016-11-14 | Ddl语句审核方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107797916B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684321A (zh) * | 2018-12-25 | 2019-04-26 | 江苏满运软件科技有限公司 | 数据质量管理方法、装置、电子设备、存储介质 |
CN109977022B (zh) * | 2019-04-03 | 2023-01-10 | 网易(杭州)网络有限公司 | 游戏资源的检查方法、装置、系统及存储介质 |
CN110163603A (zh) * | 2019-04-18 | 2019-08-23 | 平安城市建设科技(深圳)有限公司 | 信息验证方法、装置、设备及可读存储介质 |
CN111177181A (zh) * | 2019-12-11 | 2020-05-19 | 天翼电子商务有限公司 | Sql文本审核方法、系统、存储介质及装置 |
CN110968569B (zh) * | 2019-12-19 | 2023-12-29 | 广州品唯软件有限公司 | 数据库的管理方法、数据库的管理装置及存储介质 |
CN111538743B (zh) * | 2020-04-22 | 2023-08-18 | 电子科技大学 | 基于sql的数据血缘关系分析方法以及系统 |
CN113138974B (zh) * | 2021-04-23 | 2023-08-22 | 建信金融科技有限责任公司 | 数据库合规检测的方法和装置 |
CN116401177B (zh) * | 2023-06-09 | 2023-08-15 | 瀚高基础软件股份有限公司 | 一种ddl正确性检测方法、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521354A (zh) * | 2011-12-13 | 2012-06-27 | 北京天融信科技有限公司 | 一种数据库协议审计测试方法及装置 |
CN103778185A (zh) * | 2013-12-27 | 2014-05-07 | 北京天融信软件有限公司 | 一种用于数据库审计系统的sql语句解析方法和系统 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
CN105635046A (zh) * | 2014-10-28 | 2016-06-01 | 北京启明星辰信息安全技术有限公司 | 一种数据库命令行过滤、阻断审计方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8856102B2 (en) * | 2012-11-07 | 2014-10-07 | International Business Machines Corporation | Modifying structured query language statements |
-
2016
- 2016-11-14 CN CN201611000842.2A patent/CN107797916B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521354A (zh) * | 2011-12-13 | 2012-06-27 | 北京天融信科技有限公司 | 一种数据库协议审计测试方法及装置 |
CN103778185A (zh) * | 2013-12-27 | 2014-05-07 | 北京天融信软件有限公司 | 一种用于数据库审计系统的sql语句解析方法和系统 |
CN105635046A (zh) * | 2014-10-28 | 2016-06-01 | 北京启明星辰信息安全技术有限公司 | 一种数据库命令行过滤、阻断审计方法和装置 |
CN104391995A (zh) * | 2014-12-15 | 2015-03-04 | 北京趣拿软件科技有限公司 | 一种sql语句审核的方法、数据库运维的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107797916A (zh) | 2018-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107797916B (zh) | Ddl语句审核方法和装置 | |
CN110569214B (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
CN109376196B (zh) | 一种redo日志批量同步方法及装置 | |
CN105912594B (zh) | Sql语句处理方法和系统 | |
US20190370368A1 (en) | Data consistency verification method and system minimizing load of original database | |
CN113239365B (zh) | 一种基于知识图谱的漏洞修复方法 | |
CN113779272A (zh) | 基于知识图谱的数据处理方法、装置、设备及存储介质 | |
CN110659282A (zh) | 数据路由的构建方法、装置、计算机设备和存储介质 | |
CN113495902A (zh) | 数据处理方法及数据标准管理系统 | |
CN112328499A (zh) | 一种测试数据生成方法、装置、设备及介质 | |
CN105630656A (zh) | 基于日志模型的系统健壮性分析方法及装置 | |
CN106547726A (zh) | 一种基于文档的自动化审查方法及审查装置 | |
JP6244274B2 (ja) | 相関ルール分析装置および相関ルール分析方法 | |
CN116302089B (zh) | 基于图片相似度的代码克隆检测方法、系统及存储介质 | |
CN112612810A (zh) | 慢sql语句识别方法及系统 | |
CN109344163B (zh) | 一种数据校验方法、装置和计算机可读介质 | |
CN106776704B (zh) | 统计信息收集方法和装置 | |
CN112711678A (zh) | 数据解析方法、装置、设备及存储介质 | |
CN114676054A (zh) | 一种测试数据生成方法、装置、设备、介质及产品 | |
CN111859896B (zh) | 配方文档检测方法、装置、计算机可读介质及电子设备 | |
CN113760864A (zh) | 数据模型的生成方法和装置 | |
US8775873B2 (en) | Data processing apparatus that performs test validation and computer-readable storage medium | |
CN115758135B (zh) | 轨道交通信号系统功能需求追溯方法、装置及电子设备 | |
CN111339378A (zh) | 一种运维管理中的字符命令审计方法及系统 | |
CN113064597B (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 |