CN115292347A - 一种基于规则的主动式sql算法性能检查装置及方法 - Google Patents
一种基于规则的主动式sql算法性能检查装置及方法 Download PDFInfo
- Publication number
- CN115292347A CN115292347A CN202210851784.3A CN202210851784A CN115292347A CN 115292347 A CN115292347 A CN 115292347A CN 202210851784 A CN202210851784 A CN 202210851784A CN 115292347 A CN115292347 A CN 115292347A
- Authority
- CN
- China
- Prior art keywords
- algorithm
- rule
- semantic
- checking
- blood
- 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/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
- G06F16/254—Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
Abstract
本发明公开了一种基于规则的主动式SQL算法性能检查装置,包括相互电连接的语义解析模块、血缘分析模块和规则校验模块;其中,语义解析模块,用于对SQL算法的语义进行解析,构建算法语义树;血缘分析模块,用于对SQL算法的血缘进行分析,构建表级血缘图和字段级血缘图;规则校验模块,用于定义校验规则,并对算法的语义和血缘进行校验,并记录其校验的潜在问题。本发明基于规则进行主动式、提前的性能检测,在算法编写阶段即可发现性能问题,并给出改进建议;解决事后检查的延迟性、片面性的问题。
Description
技术领域
本发明属于无线大数据领域,具体涉及一种基于规则的主动式SQL算法性能检查装置及方法。
背景技术
无线大数据领域的数据具有数据量大、数据源种类繁多、数据类型丰富、报表指标复杂等诸多特点。为了能够更好的利用无线的大数据,为规、建、维、优、营提供数据分析的基础,需要对无线大数据进行数据治理。治理的过程需要对数据进行抽取、转换、加载,这涉及到数据的ETL算法。为降低ETL算法开发难度,业界普遍使用SQL编写算法对数据进行处理。这部分算法的运行需要占用大量资源。为降低数据处理的成本,需要对这些算法进行性能优化。目前,通常采用被动式、后处理的方式,即当算法实际运行之后,再来发现是否存在性能问题。此时,由于算法已经发布,再来发现性能问题为时已晚。并且由于测试数据量的不同,容易造成无法发现部分算法实际存在的性能问题。
发明内容
本发明的目的在于,提供一种基于规则的主动式SQL算法性能检查装置及方法,基于规则进行主动式、提前的性能检测,在算法编写阶段即可发现性能问题,并给出改进建议;解决事后检查的延迟性、片面性的问题。
为解决上述技术问题,本发明的技术方案为:一种基于规则的主动式SQL算法性能检查装置,包括相互电连接的语义解析模块、血缘分析模块和规则校验模块;其中,
语义解析模块,用于对SQL算法的语义进行解析,构建算法语义树;
血缘分析模块,用于对SQL算法的血缘进行分析,构建表级血缘图和字段级血缘图;
规则校验模块,用于定义校验规则,并对算法的语义和血缘进行校验,并记录其校验的潜在问题。
还包括系统服务模块,用于用户交互控制与系统初始化操作。
所述语义解析模块包括第一语义解析子模块和第二语义解析子模块;其中,
第一语义解析子模块,用于对SQL算法的语义进行解析,构建初步算法语义树;
第二语义解析子模块,用于对初步算法语义树作进一步解析,结合Schema信息构建得到算法语义树。
所述血缘分析模块包括表级血缘分析子模块和字段级血缘分析子模块;其中,
表级血缘分析子模块,用于从若干算法语义树中抽取关联表信息,并对表引用的关系构建表的血缘关系图;
字段级血缘分析子模块,用于从若干算法语义树中抽取各表中字段之间的关联关系,并对字段引用的关系构建字段的血缘关系图。
所述规则校验模块包括规则管理子模块和规则应用子模块;其中,
规则校验子模块,用于定义校验规则,并对校验规则进行维护和管理;
规则应用子模块,用于对算法语义树、表级血缘和字段级血缘应用校验规则,对各检验规则进行模式匹配,记录被校验规则匹配的潜在问题。
还提供一种基于规则的主动式SQL算法性能检查方法,包括以下步骤:
对SQL算法的语义进行解析,构建算法语义树;
对SQL算法的血缘进行分析,构建表级血缘图和字段级血缘图;
定义校验规则,并对算法的语义和血缘进行校验,并记录其校验的潜在问题。
语义解析方法包括:
根据Antlr4语法定义规范,定义SQL算法的语义,并通过Antlr4工具,自动生成语义解析器,通过将SQL算法的字符串输入到语义解析器中,对其语义进行分析,生成初步算法语义树。
语义解析方法还包括:
根据初步算法语义树,使用visitor模式对各初步算法语义树的节点进行转换,并结合所使用表的Schema信息,对涉及到的字段信息、字段类型信息进行补充与校验,最终转换得到算法语义树。
构建表级血缘图和字段级血缘图的方法为:
在算法语义树抽取一个算法涉及到的表,记作输入表A;在算法语义树中该算法的结果插入到的表,记作输出表B;对A、B建立血缘关系:在A的fan out列表中增加B节点;在B的fan in列表中增加A节点;对各SQL算法涉及到的所有表执行如上步骤,构建出各算法形成一张表的血缘图,记作表级血缘图;
在表级血缘图中进一步细化表内的字段血缘关系:对于存在血缘关系的A和B,根据算法语义树,抽取B表中各字段与A表中字段的血缘关系,在A的fan out列表中增加B节点;在B的fan in列表中增加A节点;对各SQL算法涉及到的所有字段执行如上步骤,构建出各算法形成一张表的血缘图,记作字段级血缘图。
校验方法为:
获取每一条规则,从中获取其要检查的对象定义,对象至少包括算法语义树、表级血缘、字段级血缘;
根据检查规则中的匹配规则的定义,对每个对象,进行规则的模式匹配;
检查其值与规则中要求的值的差异,如果满足规则中要求的值,则为匹配成功,形成规则校验匹配记录;
汇总所有的规则及其匹配记录,并获取每个规则对应的通用修改建议,输出校验报告。
与现有技术相比,本发明的有益效果为:
基于规则进行主动式、提前的性能检测,在算法编写阶段即可发现性能问题,并给出改进建议;解决事后检查的延迟性、片面性的问题。
附图说明
图1为本发明一实施例的整体框架图;
图2为本发明一实施例的算法自动生成流程图。
具体实施方式
下面结合具体实例和附图对本发明做进一步说明。
本发明提供一种基于规则的主动式SQL算法性能检查装置,如图1所示,它包括:
语义解析模块,用于对算法语义进行解析,构建算法语义树。其中,语法解析模块,用于对SQL语句进行语法解析,构建SQL的语义树。语义解析模块,用于对SQL语义树进行进一步解析,结合Schema信息构建SQL语义树。
血缘分析模块,用于对算法血缘进行分析,构建表级血缘、字段级血缘。其中,表级血缘分析子模块,用于从多个算法的语义树种抽取关联表信息,并对表引用的关系构建起表的血缘关系图。字段级血缘分析子模块,用于从多个算法的语义树抽取每个表的字段之间的关联关系,并对字段引用的关系构建起表字段的血缘关系图。
规则校验模块,用于定义检查规则,并对算法的语义、血缘应用检查规则,发现潜在性能问题。其中,规则管理子模块,用于定义校验规则,包括但不限于性能问题的校验规则,维护和管理校验规则。规则应用子模块,用于在语义树、字段血缘、表血缘上应用检查规则,对每条规则进行模式匹配,记录被规则匹配到的潜在问题。
本发明提供一种规则的主动式算法性能问题自动检测方法,如图2所示,它包括以下步骤:
步骤1,在语义分析模块中,对算法的语法、语义进行分析,构建语义树。具体为:其一,根据Antlr4语法定义规范,定义SQL语言的语法,并通过Antlr4工具,自动生成语法解析器。通过将SQL算法的字符串输入到语法解析器中,对其语法进行分析,生成语义树。其二,根据生成的语义树,使用visitor模式对每个语义树的节点进行转换,并结合所使用表的Schema信息,对涉及到的字段信息、字段类型信息进行补充与校验,最终转换得到逻辑执行计划,也可称为语义树。
步骤2:在血缘分析模块中,对表血缘、字段血缘进行分析,构建血缘图。具体为:其一,根据生成的语义树中,抽取一个算法涉及到的表,记作输入表A;同时根据生成的语义树,获取算法的结果插入到的表,记作输出表B。对A、B建立血缘关系:A的fan out列表中增加B节点;B的fan in列表中增加A节点。对所有算法涉及到的所有表执行如上步骤,构建出所有算法的一张表的血缘图。其二,在生成的表血缘图中,进一步细化表内的字段血缘关系。对于存在血缘关系的A和B,根据算法的语义树,抽取B表中每个字段与A表的字段的关系,参考表的血缘图构建方式,同样方式构建出字段血缘图。
步骤3:在规则校验模块中,定义检查规则,并通过对语义树、血缘图进行规则的模式匹配,发现被规则识别到的潜在性能问题。具体为:其一,定义规则,规则定义包括本规则要检查的对象,如语义树、表血缘、字段血缘等;还包括规则匹配的特征,如表的血缘关系中fan in和fan out的个数要求、语义树中filter过滤的顺序等。其二,获取每一条规则,从中获取其要检查的对象定义。并从之前步骤中生成的对象,包括语义树、表血缘、字段血缘,选取该规则要检查对象。其次,根据检查规则中的匹配规则的定义,对每个对象,进行规则的模式匹配。具体为:获取检查规则需要检查对象的特征,如表血缘对象的fan out属性,检查其值与规则中要求的值的差异,如果满足规则中要求的值,则为匹配成功。返回此规则与对象,形成一条规则校验匹配记录。最后,汇总所有的规则及其匹配记录,并获取每个规则对应的通用修改建议,输出检测报告。
本发明基于检查规则以及语义树、血缘图的匹配,实现算法性能问题的主动式自动识别,解决了当前性能问必须依赖于后期实测的问题,尽早发现并解决问题,提升了算法的质量和性能,降低了算法运行的成本。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于规则的主动式SQL算法性能检查装置,其特征在于,包括相互电连接的语义解析模块、血缘分析模块和规则校验模块;其中,
语义解析模块,用于对SQL算法的语义进行解析,构建算法语义树;
血缘分析模块,用于对SQL算法的血缘进行分析,构建表级血缘图和字段级血缘图;
规则校验模块,用于定义校验规则,并对算法的语义和血缘进行校验,并记录其校验的潜在问题。
2.根据权利要求1所述的一种基于规则的主动式SQL算法性能检查装置,其特征在于,还包括系统服务模块,用于用户交互控制与系统初始化操作。
3.根据权利要求1所述的一种基于规则的主动式SQL算法性能检查装置,其特征在于,所述语义解析模块包括第一语义解析子模块和第二语义解析子模块;
其中,
第一语义解析子模块,用于对SQL算法的语义进行解析,构建初步算法语义树;
第二语义解析子模块,用于对初步算法语义树作进一步解析,结合Schema信息构建得到算法语义树。
4.根据权利要求1所述的一种基于规则的主动式SQL算法性能检查装置,其特征在于,所述血缘分析模块包括表级血缘分析子模块和字段级血缘分析子模块;其中,
表级血缘分析子模块,用于从若干算法语义树中抽取关联表信息,并对表引用的关系构建表的血缘关系图;
字段级血缘分析子模块,用于从若干算法语义树中抽取各表中字段之间的关联关系,并对字段引用的关系构建字段的血缘关系图。
5.根据权利要求1所述的一种基于规则的主动式SQL算法性能检查装置,其特征在于,所述规则校验模块包括规则管理子模块和规则应用子模块;其中,规则校验子模块,用于定义校验规则,并对校验规则进行维护和管理;
规则应用子模块,用于对算法语义树、表级血缘和字段级血缘应用校验规则,对各检验规则进行模式匹配,记录被校验规则匹配的潜在问题。
6.一种使用如权利要求1所述的一种基于规则的主动式SQL算法性能检查装置的方法,其特征在于,包括以下步骤:
对SQL算法的语义进行解析,构建算法语义树;
对SQL算法的血缘进行分析,构建表级血缘图和字段级血缘图;
定义校验规则,并对算法的语义和血缘进行校验,并记录其校验的潜在问题。
7.根据权利要求6所述的方法,其特征在于,语义解析方法包括:
根据Antlr4语法定义规范,定义SQL算法的语义,并通过Antlr4工具,自动生成语义解析器,通过将SQL算法的字符串输入到语义解析器中,对其语义进行分析,生成初步算法语义树。
8.根据权利要求7所述的方法,其特征在于,语义解析方法还包括:
根据初步算法语义树,使用visitor模式对各初步算法语义树的节点进行转换,并结合所使用表的Schema信息,对涉及到的字段信息、字段类型信息进行补充与校验,最终转换得到算法语义树。
9.根据权利要求6所述的方法,其特征在于,构建表级血缘图和字段级血缘图的方法为:
在算法语义树抽取一个算法涉及到的表,记作输入表A;在算法语义树中该算法的结果插入到的表,记作输出表B;对A、B建立血缘关系:在A的fan out列表中增加B节点;在B的fanin列表中增加A节点;对各SQL算法涉及到的所有表执行如上步骤,构建出各算法形成一张表的血缘图,记作表级血缘图;
在表级血缘图中进一步细化表内的字段血缘关系:对于存在血缘关系的A和B,根据算法语义树,抽取B表中各字段与A表中字段的血缘关系,在A的fan out列表中增加B节点;在B的fan in列表中增加A节点;对各SQL算法涉及到的所有字段执行如上步骤,构建出各算法形成一张表的血缘图,记作字段级血缘图。
10.根据权利要求6所述的方法,其特征在于,校验方法为:
获取每一条规则,从中获取其要检查的对象定义,对象至少包括算法语义树、表级血缘、字段级血缘;
根据检查规则中的匹配规则的定义,对每个对象,进行规则的模式匹配;
检查其值与规则中要求的值的差异,如果满足规则中要求的值,则为匹配成功,形成规则校验匹配记录;
汇总所有的规则及其匹配记录,并获取每个规则对应的通用修改建议,输出校验报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210851784.3A CN115292347A (zh) | 2022-07-19 | 2022-07-19 | 一种基于规则的主动式sql算法性能检查装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210851784.3A CN115292347A (zh) | 2022-07-19 | 2022-07-19 | 一种基于规则的主动式sql算法性能检查装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115292347A true CN115292347A (zh) | 2022-11-04 |
Family
ID=83824184
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210851784.3A Pending CN115292347A (zh) | 2022-07-19 | 2022-07-19 | 一种基于规则的主动式sql算法性能检查装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115292347A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166718A (zh) * | 2023-04-25 | 2023-05-26 | 北京捷泰云际信息技术有限公司 | 一种数据血缘获取方法和装置 |
-
2022
- 2022-07-19 CN CN202210851784.3A patent/CN115292347A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116166718A (zh) * | 2023-04-25 | 2023-05-26 | 北京捷泰云际信息技术有限公司 | 一种数据血缘获取方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
CN113032362B (zh) | 数据血缘分析方法、装置、电子设备和存储介质 | |
CN107644073A (zh) | 一种基于深度优先遍历的字段血缘分析方法、系统及装置 | |
CN111400338B (zh) | Sql优化方法、装置、存储介质及计算机设备 | |
CN106611044B (zh) | 一种sql优化方法及设备 | |
JP5791149B2 (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
EP3671526A1 (en) | Dependency graph based natural language processing | |
Ghrab et al. | Grad: On graph database modeling | |
CN111078729B (zh) | 医疗数据溯源方法、装置、系统、存储介质以及电子设备 | |
CN112818181B (zh) | 图数据库检索方法、系统、计算机设备和存储介质 | |
CN116450616A (zh) | 一种基于解析树的通用异构关系型数据库sql迁移方法 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN115292347A (zh) | 一种基于规则的主动式sql算法性能检查装置及方法 | |
CN112988163B (zh) | 编程语言智能适配方法、装置、电子设备和介质 | |
CN110008448B (zh) | 将SQL代码自动转换为Java代码的方法和装置 | |
CN117112408A (zh) | 一种生成自动化测试用例脚本方法、装置及介质 | |
CN109918391A (zh) | 一种流式事务处理方法及系统 | |
CN115757593A (zh) | 一种数据处理方法、装置及存储介质 | |
CN112948419A (zh) | 查询语句处理方法及装置 | |
CN114547083A (zh) | 数据处理方法、装置及电子设备 | |
CN113032366A (zh) | 基于Flex和Bison的SQL语法树解析方法 | |
KR102605930B1 (ko) | 데이터베이스 상에서 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 플랫폼 | |
CN115237936B (zh) | 检测sql语句中字段的方法、装置、存储介质和设备 | |
KR102605931B1 (ko) | 복수의 서로 다른 데이터베이스 상의 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 플랫폼 | |
KR102605929B1 (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 |