CN113032371A - 数据库语法分析方法、装置和计算机设备 - Google Patents
数据库语法分析方法、装置和计算机设备 Download PDFInfo
- Publication number
- CN113032371A CN113032371A CN202110411003.4A CN202110411003A CN113032371A CN 113032371 A CN113032371 A CN 113032371A CN 202110411003 A CN202110411003 A CN 202110411003A CN 113032371 A CN113032371 A CN 113032371A
- Authority
- CN
- China
- Prior art keywords
- database
- analyzed
- data
- statement
- database 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.)
- Pending
Links
Images
Classifications
-
- 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
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- 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/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据库语法分析方法、装置、计算机设备和存储介质。所述方法通过在进行数据库语法分析时,先获取初始状态的待分析数据库语句,这部分待分析数据库语句包含小写标识,而后通过对待分析数据库语句进行格式化处理,将其中的小写标识转化为大写标识,来降低关键词提取过程的复杂度后,再通过预设关键字识别算法来高效地识别所述格式化处理后的待分析数据库语句中的关键字,最后基于识别得到关键字来构建待分析数据库语句对应的语法分析树,整个语法分析树的构建过程中通过将待分析数据库语句中的小写标识转化为大写标识来进行高效地关键字识别,大大化简对关键字进行智能识别的复杂度,从而提高数据库语法分析的运行效率。
Description
技术领域
本申请涉及计算机领域,特别是涉及一种数据库语法分析方法、装置和计算机设备。
背景技术
计算机技术中的数据库是指“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。在数据库内,一般通过数据库语句进行相应的数据处理,如对于结构化查询语言(Structured QueryLanguage,SQL)数据库,其对应的数据库语句为结构化查询语言,它是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
目前,对数据库语句进行语法分析以生成语法树的方法,由于其从日志中抽取信息进行职能识别困难较大,因此分析所得的数据库语法内容不够全面,数据库语法分析效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高数据库语法分析效率的数据库语法分析方法、装置、计算机设备和存储介质。
一种数据库语法分析方法,所述方法包括:
获取待分析数据库语句,所述待分析数据库语句包含小写标识;
对所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句,所述格式化处理用于将所述待分析数据库语句中的小写标识转化为大写标识;
通过预设关键字识别算法识别所述格式化处理后的待分析数据库语句中的关键字;
根据所述关键字,构建所述待分析数据库语句对应的语法分析树。
一种数据库语法分析装置,所述装置包括:
数据获取模块,用于获取待分析数据库语句,所述待分析数据库语句包含小写标识;
格式化处理模块,用于对所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句,所述格式化处理用于将所述待分析数据库语句中的小写标识转化为大写标识;
关键字识别模块,用于通过预设关键字识别算法识别所述格式化处理后的待分析数据库语句中的关键字;
语法分析模块,用于根据所述关键字,构建所述待分析数据库语句对应的语法分析树。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待分析数据库语句,所述待分析数据库语句包含小写标识;
对所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句,所述格式化处理用于将所述待分析数据库语句中的小写标识转化为大写标识;
通过预设关键字识别算法识别所述格式化处理后的待分析数据库语句中的关键字;
根据所述关键字,构建所述待分析数据库语句对应的语法分析树。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待分析数据库语句,所述待分析数据库语句包含小写标识;
对所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句,所述格式化处理用于将所述待分析数据库语句中的小写标识转化为大写标识;
通过预设关键字识别算法识别所述格式化处理后的待分析数据库语句中的关键字;
根据所述关键字,构建所述待分析数据库语句对应的语法分析树。
上述数据库语法分析方法、装置、计算机设备和存储介质,通过在进行数据库语法分析时,先获取初始状态的待分析数据库语句,这部分待分析数据库语句包含小写标识,而后通过对待分析数据库语句进行格式化处理,将其中的小写标识转化为大写标识,来降低关键词提取过程的复杂度后,再通过预设关键字识别算法来高效地识别所述格式化处理后的待分析数据库语句中的关键字,最后基于识别得到关键字来构建待分析数据库语句对应的语法分析树,整个语法分析树的构建过程中通过将待分析数据库语句中的小写标识转化为大写标识来进行高效地关键字识别,大大化简对关键字进行智能识别的复杂度,从而提高数据库语法分析的运行效率。
附图说明
图1为一个实施例中数据库语法分析方法的应用环境图;
图2为一个实施例中数据库语法分析方法的流程示意图;
图3为一个实施例中获取待分析数据库语句步骤的流程示意图;
图4为一个实施例中数据值模拟替换步骤的流程示意图;
图5为一个实施例中去除注释信息步骤的流程示意图;
图6为一个实施例中去除空格内容步骤的流程示意图;
图7为一个实施例中识别待分析数据库语句中的关键字步骤的流程示意图;
图8为一个实施例中构建语法分析树步骤的流程示意图;
图9为一个实施例中构建所得的数据库语法分析树的结构示意图;
图10为另一个实施例中数据库语法分析方法的流程示意图;
图11为一个实施例中数据库语法分析装置的结构框图;
图12为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。本申请具体涉及人工智能领域的模式匹配领域,主要为基于关键词识别的模式匹配。可以通过本申请的数据库语法分析方法来识别待分析数据库语句中的关键词,并依据识别的结果来进行语法分析,构建语法树。
本申请提供的数据库语法分析方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。终端102可以向服务器104提供待分析数据库语句,而后由服务器来对待分析数据库语句进行语法分析,生成对应的语法分析树。服务器104获取待分析数据库语句;通过预设关键字识别算法识别待分析数据库语句中的关键字;对关键字进行格式化处理,得到格式化处理后的关键字,格式化处理用于将关键字中小写标识对应的关键字的小写标识转化为大写标识;根据格式化处理后的关键字,构建待分析数据库语句对应的语法分析树。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。在另一个实施例中,本申请的数据库语法分析方法也可以应用于终端,通过终端来实现。在其中一个实施例中,多个服务器可组成为一区块链,而服务器为区块链上的节点。
在一个实施例中,如图2所示,提供了一种数据库语法分析方法,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:
步骤201,获取待分析数据库语句,待分析数据库语句包含小写标识。
其中,本申请主要适用于对数据库相关的代码数据进行语法分析,语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等。语法分析程序判断源程序在结构上是否正确。可以根据语法分析的结果生成语法分析树。语法分析树是人为对语法结构的抽象,用图形方式展现了从文法的开始符号推导出相应语言中的符号串的过程。而数据库语句是本申请中数据库语法分析的分析对象。数据库语句是用于对数据库进行操作的一种程序语言,一般具有存取数据以及查询、更新和管理数据库的功能。可以基于对用户相关数据的语法分析,得到包括:基于用户行为分析的数据库语句慢查询分析的数据源去重的前置数据处理等等,基于调用链路的字段长度一致性检测的数据源去重的前置数据处理等等;用户常用字段分析;用户常用表格分析等等分析数据。在其中一个实施例中,本申请的待分析数据库语句具体可以为结构化查询语言语句,即SQL语句。从而获取SQL数据相应的语法分析结果。
具体地,本申请具体可以将待分析数据库语句作为数据库语法分析的基础数据。因此,在执行方法时,需要先收集作为分析数据源的待分析数据库语句。而待分析数据库语句的来源包括所需要分析对象的数据库日志内待分析数据库语句的数据,或者在相应的业务日志中待分析数据库语句的数据。在其中一个实施例中,终端102可以将收集到的待分析数据库语句发送至服务器104。而在另一个实施例中,终端102可以发送数据库语法分析的请求指令,服务器104根据请求指令,通过查找对应的数据库日志或者业务日志,得到待分析数据库语句。
步骤203,对待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句,格式化处理用于将待分析数据库语句中的小写标识转化为大写标识。
其中,本申请中的格式化处理具体是指把同类事物处理成相同的规格、样式。此处具体是指将所有待分析数据库语句处理为同一类型的待分析数据库语句,换而言之,将待分析数据库语句中的小写部分转化为大写部分从而得到格式化处理后的待分析数据库语句。此时待分析数据库语句全部为大写,大大化简智能识别的复杂度,并能提高运行效率。待分析数据库语句中的大写标识与小写标识则是指,对于二进制表示的大写字母与小写字母,其一般只有前三位是不同的,如对于小写字母“a”其对应的二进制表示为“01100001”而其对应的大写字母“A”的二进制表示为“01000001”。因此在进行大小写转化时,可以将小写字母的小写标识,即前三位数“011”转为相应的大写标识“010”,来对所有的小写格式的待分析数据库语句进行格式化处理。
具体地,在识别得到待分析数据库语句之后,由于识别得到的待分析数据库语句中,包括有大写的待分析数据库语句以及小写的待分析数据库语句两部分内容,因而从待分析数据库语句中抽取信息进行语法分析过程的智能识别困难较大,为了化简智能识别的复杂度,可以对待分析数据库语句进行格式化处理,将待分析数据库语句的格式统一转化为大写待分析数据库语句。而格式化处理的具体过程具体可以是指对二进制表示下的字母的大写标识与小写标识进行格式化,将待分析数据库语句中小写标识对应的待分析数据库语句的小写标识转化为大写标识。
步骤205,通过预设关键字识别算法识别格式化处理后的待分析数据库语句中的关键字。
其中,对于关键字,如果某个字段或多个字段的值可以唯一地标识一条记录,则该字段或字段组就称为关键字。关键字一般包括插入关键字、查询关键字或者修改关键字等。如对于SQL数据库,其数据库语句可以包括:create table,创建一张表;insert into…values,向表中插入一条信息;delete from,从表中删除一条信息;update…set…where,在where的位置,更新内容为set的值;drop table,删除表;alter table…add,向表中添加某个属性;alter table…drop,将表中的某个属性删除。而其对应的关键字包括:select,表示要查找出的表所含有的属性;from,表示要操作的表;where,判断条件,根据该判断条件选择信息;distinct,在select后加入关键字distinct表示将结果去重;all,在select后加入关键字all表示不去重(默认);and,在where中使用and表示将判断条件连接起来;or,在where中使用or表示判断条件多选一;not,在where中使用not表示判断条件取反。而预设关键字识别算法,主要用于实现关键字的查找。
具体地,由于部分数据库关键字支持大小写混用,因而从日志中抽取信息进行职能识别困难较大,因此,本申请设计通过预设关键字识别算法进行高效的智能识别相关数据库关键字前,先将所有待分析数据库语句均改为大写,来大大化简智能识别的复杂度,并能提高运行效率。因此,在得到待分析数据库语句后,需要先通过预设关键字识别算法来识别出待分析数据库语句中的关键字后再进行相应的语法分析。在一个具体的实施例中,本申请具体通过改进的KMP(Knuth-Morria-Pratt)算法来实现待分析数据库语句的格式化处理以及关键字匹配。原有的KMP算法的核心是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。即只包括匹配的方法,而本申请中通过改进的KMP算法,先对待分析数据库语句进行格式化处理,来将其中的小写标识对应的待分析数据库语句的小写标识转化为大写标识后,再进行匹配,可以有效保证匹配的准确性。从而保证KMP算法可以应用于数据库语法分析的领域。
步骤207,根据关键字,构建待分析数据库语句对应的语法分析树。
其中,语法分析树是人为对语法结构的抽象,用图形方式展现了从文法的开始符号推导出相应语言中的符号串的过程。
具体地,在通过预设关键字识别算法识别出所有的关键字之后,即可高效地识别出关键字所属的类别,具体可以包括:查询(select)、插入(insert)以及修改(update)这三大类。继而可以进一步分离出:插入字段/插入表格、修改类分离出修改字段、修改条件、修改表格以及查询类分离出查询字段,查询范围,查询条件等作为数据库语法分析树的子节点,生成相应的数据库语法分析树。
上述数据库语法分析方法,通过在进行数据库语法分析时,先获取初始状态的待分析数据库语句,这部分待分析数据库语句包含小写标识,而后通过对待分析数据库语句进行格式化处理,将其中的小写标识转化为大写标识,来降低关键词提取过程的复杂度后,再通过预设关键字识别算法来高效地识别所述格式化处理后的待分析数据库语句中的关键字,最后基于识别得到关键字来构建待分析数据库语句对应的语法分析树,整个语法分析树的构建过程中通过将待分析数据库语句中的小写标识转化为大写标识来进行高效地关键字识别,大大化简对关键字进行智能识别的复杂度,从而提高数据库语法分析的运行效率。
在一个实施例中,如图3所示,步骤201包括:
步骤302,获取输入的数据库日志数据以及业务日志数据。
步骤304,从数据库日志数据以及业务日志数据中提取数据库语句,将提取得到的数据库语句作为待分析数据库语句。
其中,数据库日志数据具体是指数据库的事务日志先关数据,数据库都具有事务日志,用于记录所有事务以及每个事务对数据库所做的修改。事务日志是数据库的重要组件,如果系统出现故障,则可能需要使用事务日志将数据库恢复到一致状态。事务日志支持以下操作:恢复个别的事务。在数据库启动时恢复所有未完成的事务。将还原的数据库、文件、文件组或页前滚至故障点。支持事务复制。支持备份服务器解决方案等。而业务日志则是指与数据库相关的业务系统或数据系统中提取得到的日志数据,这部分日志也可能涉及数据库的相关操作,因此可能包含部分数据库语句,因此将数据库日志数据以及业务日志数据作为提取待分析数据库语句的基础数据。
具体地,在进行数据库语法分析时,终端102可以直接将数据库日志数据以及业务日志数据作为语法分析的基础数据输入到服务器104中,服务器104则直接从数据库日志数据以及业务日志数据中提取得到数据库语句,并将提取得到的数据库语句作为待分析数据库语句,从而完成语法分析过程的数据准备工作。本实施例中,通过将输入的数据库日志数据以及业务日志数据作为待分析数据库语句的来源数据,进行语句提取,可以保证待分析数据库语句收集过程的便捷性,并保证数据来源的有效性。
在其中一个实施例中,步骤203之前,还包括:对待分析数据库语句执行数据值模拟替换操作以及数据清洗操作,数据值模拟替换操作用于将不同的数据值数据转化为相同的数据值数据。步骤203包括:对执行数据值模拟替换操作以及数据清洗操作后的待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句。
其中,数据值模拟替换具体是指将待分析数据库语句中部分真实的数据值,替换为一个固定的数值,从而消除数据值之间的差异,从而减少后续的信息过滤中产生噪音的可能性。在其中一个实施例中,数据值模拟替换操作具体是指mock操作。mock操作具体是指创建一个类的虚假的对象,在测试环境中,用来替换掉真实的对象,以达到两大目的:验证这个对象的某些方法的调用情况,调用了多少次,参数是什么等等;指定这个对象的某些方法的行为,返回特定的值,或者是执行特定的动作。本申请中mock操作具体用于指定对象返回特定的值。数据清洗操作则是指去除掉待分析数据库语句中部分无用的信息,从而降低语法分析难度,加速语法分析构建语法树的进程。
具体地,对待分析数据库语句进行格式化处理之前。还可以通过一些数据值替换的操作或者数据清洗的操作,来对得到的待分析数据库语句进行处理,从而提高后续过程的处理效率。本实施例中,通过数据值模拟替换操作以及数据清洗操作来对待分析数据库语句进行处理,可以有效提高后续处理过程中处理效率,同时降低处理的难度。
其中一个实施例中,如图4所示,对待分析数据库语句执行数据值模拟替换操作的步骤具体包括:
步骤401,基于正则匹配,识别待分析数据库语句中的数据值数据。
步骤403,对识别出的数据值数据执行数据值模拟替换操作。
其中,正则匹配具体是指通过正则表达式来进行匹配操作。正则表达式(regularexpression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。在本申请中,正则匹配则具体用于识别待分析数据库语句中的数据值数据。即value值数据。
具体地,在进行数据值模拟替换操作时,可以先基于正则匹配,通过正则表达式来从待分析数据库语句中识别出哪些属于数据值数据,从而进行后续的数据值模拟替换操作。在其中一个实施例中,本申请中的数据值模拟替换操作具体是指mock操作,通过将=“……”或=替换成=“#”或=#,对所有的value值进行mock,消除value值的差异。本实施例中,通过正则匹配来查找数据值数据,而后通过数据值模拟替换操作,来减少数据值数据在后续的信息过滤造成噪音的可能,从而加速后续的信息过滤力度,保证处理的效果。
在其中一个实施例中,如图5所示,对待分析数据库语句执行数据清洗操作的步骤包括:
步骤502,识别待分析数据库语句中的注释信息以及限制信息。
步骤504,在待分析数据库语句中查找限制信息对应限制相关值信息。
步骤506,去除待分析数据库语句中的注释信息以及限制相关值信息。
其中,注释信息是指待分析数据库语句用于进行内容注释的信息。是对数据库语句代码的解释和说明,其目的是让人们能够更加轻松地了解代码,能提高程序代码的可读性。而注释信息内可能包含部分关键字,因此在进行数据库语法分析之前,可以先对待分析数据库语句中的注释信息。而限制信息具体是指数据库语句中的limit关键字,而限制相关值信息则是limit关键字对应的limit内容。在关系型数据库中,limit子句用于限制查询结果返回的数量,常用于分页查询。其中查找待分析数据库语句中的注释信息可以通过正则表达式来进行,一般的对于代码内的注释信息都会通过注释符进行标记,不同的数据库语言的注释符可能不同,当然也可以通过其他类型的注释符查找方法来识别待分析数据库语句中的注释信息。而对于限制信息,由于数据库中限制信息的关键字可能包含大写与小写两种类型,因此可以通过将所有的待分析数据库语句转化为大写后,将预设关键词指定为限制信息的关键词后,再通过预设关键词识别算法从待分析数据库语句中识别出限制信息,在查询到限制信息后,可以基于限制信息直接获取对应部分的限制相关值信息。
具体地,在对待分析数据库语句进行格式化处理还需要去除语句中的注释信息,从而防止关键词提取出错。同时本申请中去注释不是简单去掉注释的/**/之间的内容。此外,还需要存储限制内容,即limit内容,而后去除待分析数据库语句中的注释信息以及限制相关值信息。从而为后续过程信息过滤是否忽略limit内容影响,提供前置准备。
在其中一个实施例中,如图6所示,对待分析数据库语句执行数据清洗操作还包括:
步骤601,识别待分析数据库语句中的字符串数据。
步骤603,查找字符串数据内的空格内容。
步骤605,去除字符串数据中的空格内容。
具体地,其中对于识别待分析数据库语句内的字符串,可以通过对应数据库的字符串提取方法来识别,如对于SQL数据库可以通过substring方法来进行字符串提取,在其中一个具体的实施例中,具体可以将所有的待分析数据库语句作为一个字符串来进行处理。而查找字符串数据内的空格内容则可以通过正则表达式来实现,同时对于不同的编程语言也有对应的空格查找方法,可以根据执行本方法的编程语言类型来选用合适的空格查找方法。待分析数据库语句的字符串中可能包含有空格,而去除空格可以有效地减少后续过程中智能语法分析过程的分析难度,从而提高语法分析构建语法树的效率。因此,可以在对待分析数据库语句执行数据清洗操作前,先识别待分析数据库语句中的字符串数据,并查找识别出这些字符串数据内的空格内容,而后直接将字符串内的空格内容去除,来将字符串内其他部分拼接,从而为后续的语法分析过程提供便利。本实施例中,通过对待分析数据库语句执行数据清洗操作的预处理过程中,去除待分析数据库语句中的字符串间空格,可以大大方便了智能语法分析难度,加速语法分析构建语法树的进程
在其中一个实施例中,如图7所示,步骤205包括:
步骤702,将待分析数据库语句与预设关键字模式串对比,获取待分析数据库语句中子字符串的字符与预设关键字模式串的匹配标记值,匹配标记值用于表征子字符串中当前字符之前的字符串的最大前后缀相似度。
步骤704,构建匹配标记值对应的匹配数组。
步骤706,根据匹配数组,识别待分析数据库语句中的关键字。
其中,本申请主要通过预设关键字识别算法来进行关键字的提取操作。预设关键字识别算法具体为一种字符串匹配算法,通过预设关键字模式串与主串对比,来识别主串中的关键字部分,在本申请中,主串即为格式化处理后的待分析数据库语句。而预设关键字模式串,为待分析数据库语句可能涉及的字段数据,预设关键字模式串可以根据待分析数据库语句的数据库类型来构建。
具体地,本申请的预设关键字识别算法可以为KMP算法,KMP算法是一种改进的字符串匹配算法,也为克努特—莫里斯—普拉特操作。KMP算法的核心是用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是通过一个匹配数组(next数组)实现,匹配数组本身包含了模式串的局部匹配信息。具体地,在关键字匹配的过程中,先将主串(待分析数据库语句)与子串(预设关键字模式串)对比,当子串与主串不匹配时,子串下一个开始匹配的索引位置的值取决与子串当前失配字符之前的字符串的最大前后缀相似度。把子串中当前字符之前的字符串的最大前后缀相似度记为匹配标记值(next值),该值也代表着子串当前位置失配时,重新开始尝试匹配的位置。如在一个具体的实施例中,将主串ABCDEFGAB…与子串ABCDEX进行匹配,子串的第六个字符与主串不匹配,则此处的匹配标记值为最大前缀相似度6,当进行下一轮匹配时,则可以直接将主串中的FGAB…与子串ABCDEX进行匹配。特别的,对于主串为ABCABABC,,,与子串ABCABX进行匹配的情况,当子串的第六个字符与主串不匹配时,由于子串内存在重复的AB字符,因此子串的第1与第2个字符必定能与主串的第4个与第5个字符匹配,则此处的匹配标记值结合最大后缀相似度由6变为3。每个子串中字符的匹配标记值构成的数组称为匹配数组。如此,就可以利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。本申请中的预设关键字识别算法和格式化处理过程组合包装为优化的KMP算法。优化的KMP算法包括将对待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句部分的部分,以及通过预设关键字识别算法来识别待分析数据库语句中的关键字的部分。本申请中,通过利用匹配失败后的信息,尽量减少待分析数据库语句与预设关键字模式串对比过程中的匹配次数,从而达到快速匹配的目的,可以有效提高语法分析过程的处理效率。
在其中一个实施例中,如图8所示,步骤207包括:
步骤801,识别格式化处理操作后的关键字对应的数据库操作类型。
步骤803,根据数据库操作类型以及数据库操作类型对应的关键字,构建待分析数据库语句对应的语法分析树。
其中,数据库操作类型具体是指数据库操作所属的类型,包括插入(insert)、查询(select)以及修改(update)等类型。
具体地,在进行语法分析时,可以根据提取得到的关键字对应的操作类型,进一步地分离出不同的操作字段对应的关键字,而后基于数据库操作类型以及数据库操作类型对应的关键字,构建待分析数据库语句对应的语法分析树。得到语法分析树之后,语法分析树的可适用范围,包括但不局限于以下几点:1)基于用户行为分析的数据库语句慢查询分析的数据源去重的前置数据处理等等;2)基于调用链路的字段长度一致性检测的数据源去重的前置数据处理等等;3)用户常用字段分析;4)用户常用表格分析。在其中一个具体的实施例中,本申请用于构建SQL语法树,构建所得的SQL语法树如图9所示。其中,可以根据关键字(select、insert、update)将SQL分为3类,其中插入类分离出插入字段/插入表格、修改类分离出修改字段、修改条件、修改表格以及查询类分离出查询字段,查询范围,查询条件等。本实施例中,通过数据库操作类型以及数据库操作类型对应的关键字,可以有效地构建相应的语法分析树,保证语法分析树的可用性。
本申请还提供一种应用场景,该应用场景应用上述的数据库语法分析方法。具体地,该数据库语法分析方法在该应用场景的应用如下:
当需要针对SQL数据库进行语法分析,构建相应的SQL语法树时。由于SQL的关键字支持大小写混用,因而从日志中抽取信息进行职能识别困难较大。此时可以通过本申请的数据库语法分析方法来进行相应的语法分析,提高分析效果。整体的处理流程可以参照图10,首先收集需要分析的SQL语句数据,这可以通过从mysql日志中过滤SQL,也可以直接从业务日志中过滤SQL。来得到分析的待分析SQL语句。而后是对得到的待分析SQL语句进行预处理。包括mock value、去除注释以及去除多余空格三个步骤。其中mock value是指基于正则匹配,将待分析SQL语句中的=“……”或=替换成=“#”或=#,对所有的value值进行mock。消除value值的差异,从而防止后续处理中信息过滤造成噪音的可能,提高信息过滤的效率与处理准确率。而去注释也不是简单去掉/**/之间的内容。此外,还需要存储limit内容,并对存储后SQL去掉limit相关值信息。为后续信息过滤是否忽略limit内容影响,提供前置准备。而去空格则是指去除sql字符串间空格,大大方便了智能语法分析难度,加速语法分析构建语法树的进程。当预处理完成后,则是关键字格式化以及关键字提取的过程。由于日常手工执行SQL或开发同时调用DB时的代码风格差异,所使用SQL关键字大小写不统一,为语法分析设立障碍,因此本申请使用优化的KMP算法,对SQL语句进行格式化处理,从而将待分析数据库语句中的关键字转化为大写,并通过KMP算法从待分析SQL语句中提取出来,从而极大程度的方便语法分析地进行,最后根据关键字(select、insert、update)将SQL分为3类,其中插入类分离出插入字段/插入表格、修改类分离出修改字段、修改条件、修改表格以及查询类分离出查询字段,查询范围,查询条件等,构成最后的语法分析树。
应该理解的是,虽然上述流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,上述流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图11所示,提供了一种数据库语法分析装置,该装置可以采用软件模块或硬件模块,或者是二者的结合成为计算机设备的一部分,该装置具体包括:数据获取模块1102、格式化处理模块1104、关键字识别模块1106和语法分析模块1108,其中:
数据获取模块1102,用于获取待分析数据库语句,待分析数据库语句包含小写标识。
格式化处理模块1104,用于对待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句,格式化处理用于将待分析数据库语句中的小写标识转化为大写标识。
关键字识别模块1106,用于通过预设关键字识别算法识别格式化处理后的待分析数据库语句中的关键字。
语法分析模块1108,用于根据关键字,构建待分析数据库语句对应的语法分析树。
在其中一个实施例中,数据获取模块1102具体用于:获取输入的数据库日志数据以及业务日志数据;从数据库日志数据以及业务日志数据中提取数据库语句,将提取得到的数据库语句作为待分析数据库语句。
在其中一个实施例中,还包括预处理模块,用于:对待分析数据库语句执行数据值模拟替换操作以及数据清洗操作,数据值模拟替换操作用于将不同的数据值数据转化为相同的数据值数据;格式化处理模块1104具体用于:对执行数据值模拟替换操作以及数据清洗操作后的待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句。
在其中一个实施例中,预处理模块具体用于:基于正则匹配,识别待分析数据库语句中的数据值数据;对识别出的数据值数据执行数据值模拟替换操作。
在其中一个实施例中,预处理模块还用于:识别待分析数据库语句中的注释信息以及限制信息;在待分析数据库语句中查找限制信息对应限制相关值信息;去除待分析数据库语句中的注释信息以及限制相关值信息。
在其中一个实施例中,预处理模块还用于:识别待分析数据库语句中的字符串数据;查找字符串数据内的空格内容;去除字符串数据中的空格内容。
在其中一个实施例中,关键字识别模块1105具体用于:将格式化处理后的待分析数据库语句与预设关键字模式串对比,获取格式化处理后的待分析数据库语句与预设关键字模式串的匹配标记值,匹配标记值用于表征预设关键字模式串与待分析数据库语句不匹配时,当前失配字符之前的字符串的最大前后缀相似度以及预设关键字模式串在下一轮对比的索引位置;构建匹配标记值对应的匹配数组;根据匹配数组,识别格式化处理后的待分析数据库语句中的关键字。
在其中一个实施例中,语法分析模块1107具体用于:识别关键字对应的数据库操作类型;根据数据库操作类型以及数据库操作类型对应的关键字,构建待分析数据库语句对应的语法分析树。
关于数据库语法分析装置的具体实施例可以参见上文中对于数据库语法分析方法的实施例,在此不再赘述。上述数据库语法分析装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图12所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据库语法分析数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据库语法分析方法。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各方法实施例中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据库语法分析方法,其特征在于,所述方法包括:
获取待分析数据库语句,所述待分析数据库语句包含小写标识;
对所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句,所述格式化处理用于将所述待分析数据库语句中的小写标识转化为大写标识;
通过预设关键字识别算法识别所述格式化处理后的待分析数据库语句中的关键字;
根据所述关键字,构建所述待分析数据库语句对应的语法分析树。
2.根据权利要求1所述的方法,其特征在于,所述获取待分析数据库语句包括:
获取输入的数据库日志数据以及业务日志数据;
从所述数据库日志数据以及所述业务日志数据中提取数据库语句,将提取得到的数据库语句作为待分析数据库语句。
3.根据权利要求1所述的方法,其特征在于,所述对所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句之前,还包括:
对所述待分析数据库语句执行数据值模拟替换操作以及数据清洗操作,所述数据值模拟替换操作用于将不同的数据值数据转化为相同的数据值数据;
所述对所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句包括:
对执行数据值模拟替换操作以及数据清洗操作后的所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句。
4.根据权利要求3所述的方法,其特征在于,所述对所述待分析数据库语句执行数据值模拟替换操作包括:
基于正则匹配,识别所述待分析数据库语句中的数据值数据;
对识别出的所述数据值数据执行数据值模拟替换操作。
5.根据权利要求3所述的方法,其特征在于,所述对所述待分析数据库语句执行数据清洗操作包括:
识别所述待分析数据库语句中的注释信息以及限制信息;
在所述待分析数据库语句中查找所述限制信息对应限制相关值信息;
去除所述待分析数据库语句中的注释信息以及限制相关值信息。
6.根据权利要求3所述的方法,其特征在于,所述对所述待分析数据库语句执行数据清洗操作包括:
识别所述待分析数据库语句中的字符串数据;
查找所述字符串数据内的空格内容;
去除所述字符串数据中的空格内容。
7.根据权利要求1所述的方法,其特征在于,所述通过预设关键字识别算法识别所述格式化处理后的待分析数据库语句中的关键字包括:
将所述格式化处理后的待分析数据库语句与预设关键字模式串对比,获取所述格式化处理后的待分析数据库语句与预设关键字模式串的匹配标记值,所述匹配标记值用于表征所述预设关键字模式串与所述待分析数据库语句不匹配时,当前失配字符之前的字符串的最大前后缀相似度以及预设关键字模式串在下一轮对比的索引位置;
构建所述匹配标记值对应的匹配数组;
根据所述匹配数组,识别所述格式化处理后的待分析数据库语句中的关键字。
8.根据权利要求1所述的方法,其特征在于,所述根据所述关键字,构建所述待分析数据库语句对应的语法分析树包括:
识别所述关键字对应的数据库操作类型;
根据所述数据库操作类型以及所述数据库操作类型对应的关键字,构建所述待分析数据库语句对应的语法分析树。
9.一种数据库语法分析装置,其特征在于,所述装置包括:
数据获取模块,用于获取待分析数据库语句,所述待分析数据库语句包含小写标识;
格式化处理模块,用于对所述待分析数据库语句进行格式化处理,得到格式化处理后的待分析数据库语句,所述格式化处理用于将所述待分析数据库语句中的小写标识转化为大写标识;
关键字识别模块,用于通过预设关键字识别算法识别所述格式化处理后的待分析数据库语句中的关键字;
语法分析模块,用于根据所述关键字,构建所述待分析数据库语句对应的语法分析树。
10.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至8中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110411003.4A CN113032371A (zh) | 2021-04-16 | 2021-04-16 | 数据库语法分析方法、装置和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110411003.4A CN113032371A (zh) | 2021-04-16 | 2021-04-16 | 数据库语法分析方法、装置和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113032371A true CN113032371A (zh) | 2021-06-25 |
Family
ID=76457377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110411003.4A Pending CN113032371A (zh) | 2021-04-16 | 2021-04-16 | 数据库语法分析方法、装置和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113032371A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836171A (zh) * | 2021-09-27 | 2021-12-24 | 北京金山云网络技术有限公司 | 数据脱敏方法、装置、电子设备及可读存储介质 |
CN114880351A (zh) * | 2022-05-31 | 2022-08-09 | 中国电信股份有限公司 | 慢查询语句的识别方法及装置、存储介质、电子设备 |
-
2021
- 2021-04-16 CN CN202110411003.4A patent/CN113032371A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836171A (zh) * | 2021-09-27 | 2021-12-24 | 北京金山云网络技术有限公司 | 数据脱敏方法、装置、电子设备及可读存储介质 |
CN114880351A (zh) * | 2022-05-31 | 2022-08-09 | 中国电信股份有限公司 | 慢查询语句的识别方法及装置、存储介质、电子设备 |
CN114880351B (zh) * | 2022-05-31 | 2024-02-06 | 中国电信股份有限公司 | 慢查询语句的识别方法及装置、存储介质、电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102491172B1 (ko) | 자연어 질의응답 시스템 및 그 학습 방법 | |
CN110276071B (zh) | 一种文本匹配方法、装置、计算机设备及存储介质 | |
US20080059146A1 (en) | Translation apparatus, translation method and translation program | |
CN112115232A (zh) | 一种数据纠错方法、装置及服务器 | |
CN115576984A (zh) | 中文自然语言生成sql语句及跨数据库查询方法 | |
KR101724398B1 (ko) | 지식베이스를 이용한 개체명 인식 코퍼스 생성 시스템 및 방법 | |
CN108920447B (zh) | 一种面向特定领域的中文事件抽取方法 | |
CN109885641B (zh) | 一种数据库中文全文检索的方法及系统 | |
CN114817298A (zh) | 字段级数据血缘提取方法、装置、设备及存储介质 | |
US11170169B2 (en) | System and method for language-independent contextual embedding | |
CN109522396B (zh) | 一种面向国防科技领域的知识处理方法及系统 | |
CN110909126A (zh) | 一种信息查询方法及装置 | |
CN113032371A (zh) | 数据库语法分析方法、装置和计算机设备 | |
CN116628173B (zh) | 一种基于关键字提取的智能客服信息生成系统及生成方法 | |
CN111190873B (zh) | 一种用于云原生系统日志训练的日志模式提取方法及系统 | |
CN106547765B (zh) | 基于sql的数据库管理方法及装置 | |
CN112507089A (zh) | 一种基于知识图谱的智能问答引擎及其实现方法 | |
CN111831624A (zh) | 数据表创建方法、装置、计算机设备及存储介质 | |
Yan et al. | Chemical name extraction based on automatic training data generation and rich feature set | |
Wang et al. | Semi-supervised chinese open entity relation extraction | |
CN110705285B (zh) | 一种政务文本主题词库构建方法、装置、服务器及可读存储介质 | |
CN115408419A (zh) | 一种数据抽取方法及相关装置 | |
CN114003231B (zh) | 一种sql语法解析树优化方法及系统 | |
Lehmberg | Web table integration and profiling for knowledge base augmentation | |
KR102203895B1 (ko) | 임베딩 기반의 인과 관계 탐지 시스템과 방법 및 이를 실행하기 위한 프로그램이 기록된 기록매체 |
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 |