发明内容
为了解决现有技术的问题,本发明实施例提供了一种结构化查询语言的血缘解析方法及其工具。可以批量和持续性解析多种不同类型数据库动、静态的结构化查询语言,所述血缘解析方法和工具不仅扩展性强,且解析结果精准。
为解决上述技术问题,本发明采用的技术方案是:
第一方面,提供了一种结构化查询语言的血缘解析方法,所述血缘解析方法包括:
提取若干不同类型数据库的业务系统,将所述业务系统的结构化查询语言持续性地批量导入消息队列表中;
对所述消息队列表中包含有静态参数和动态参数的所述结构化查询语言分别预处理,若所述结构化查询语言中仅涉及静态参数则进行标准化格式操作,若所述结构化查询语言中涉及动态参数则进行事先处理;
将预处理后的所述结构化查询语言进行语法校对,使得所述结构化查询语言符合所述不同类型数据库的标准语法支持;
生成匹配所述不同类型数据库的所述结构化查询语言的抽象语法树,对所述抽象语法树进行遍历,获取所述结构化查询语言的血缘关系;
对所述业务系统的所述血缘关系进行信息的提取,获取所述血缘关系的血缘脉络和关键血缘数据并最终形成血缘图谱,将所述血缘图谱存储于图数据库中,通过所述图数据库完成对所述业务系统的分析与预测。
进一步地,所述不同类型数据库包括Hive数据仓库和关系型数据库,所述关系型数据库包括主流的MySQL数据库、Oracle数据库、DB2数据库。
进一步地,所述标准化格式操作包括:将任一所述结构化查询语言中的空白字符替换为单个空格,以及将结构化查询语言统一为大写字母或者小写字母。
进一步地,所述事先处理包括:设置自定义的语法模块实现对所述动态参数的识别和解析,对所述动态参数进行整体替换成真实的静态参数,完成对所述动态参数的模糊处理。
进一步地,所述语法校对包括对所述结构化查询语言中特殊字符、保留字的检查。
进一步地,所述抽象语法树的生成是基于antlr和druid的开源语法分析器;对所述抽象语法树的遍历包括:依次获取所述结构化查询语言中库名、表名、字段名以及表和字段描述的元数据信息,将所述元数据信息作为生成表和表、字段和字段、表和表实例、字段和字段实例之间血缘关系的源信息,并获取所述源信息之间的血缘映射关系。
进一步地,所述血缘映射关系包括所述表的父表与子表的映射对,所述字段的父字段与子字段的映射对,所述表实例或字段实例的父实例与子实例的映射对。
进一步地,对所述业务系统的分析和预测能够针对所述关键血缘数据中任一节点信息的精准定位,任一血缘链路的血缘查询,任一全局血缘的视图总览。
进一步地,所述业务系统的分析和预测包括但不限于:对所述关键血缘数据中表结构变化或者删除后做出及时告警;对所述关键血缘数据中上下游信息进行特殊分析,往上定位具体问题,往下做影响评估;对所述关键血缘数据的报表中异常数据的追踪,分析并确定所述异常数据的问题所在,定位具体的错误点;对所述关键血缘数据中某些数据做清洗脱敏工作时,根据血缘关系信息找到整个血缘链路,进而评估脱敏后的风险和制定计划需要的周期。
另一方面,提供了一种结构化查询语言的血缘解析工具,所述血缘解析工具包括:
数据源提取系统,用于提取若干不同类型数据库的业务系统,将所述业务系统的结构化查询语言持续性地批量导入消息队列表中;
数据预处理系统,用于将所述消息队列表中包含有静态参数和动态参数的所述结构化查询语言分别预处理,若所述结构化查询语言中仅涉及静态参数则进行标准化格式操作,若所述结构化查询语言中涉及动态参数则进行事先处理;
数据语法校对系统,用于将预处理后的所述结构化查询语言进行语法校对,使得所述结构化查询语言符合所述不同类型数据库的标准语法支持;
血缘关系获取系统,用于生成匹配所述不同类型数据库的所述结构化查询语言的抽象语法树,对所述抽象语法树进行遍历,获取所述结构化查询语言的血缘关系;
血缘数据分析系统,用于对所述业务系统的所述血缘关系进行信息的提取,获取所述血缘关系的血缘脉络和关键血缘数据并最终形成血缘图谱,将所述血缘图谱存储于图数据库中,通过所述图数据库完成对所述业务系统的分析与预测。
进一步地,所述数据源提取系统包括Hive数据仓库和关系型数据库,所述关系型数据库包括主流的MySQL数据库、Oracle数据库、DB2数据库。
进一步地,所述数据预处理系统包括事先处理单元,用于设置自定义的语法模块实现对所述动态参数的识别和解析,将所述动态参数进行整体替换成真实的静态参数,完成对所述动态参数的模糊处理。
进一步地,所述血缘关系获取系统包括基于antlr和druid的开源语法分析器,用于所述抽象语法树的生成,并依次获取所述结构化查询语言中库名、表名、字段名以及表和字段描述的元数据信息,将所述元数据信息作为生成表和表、字段和字段、表和表实例、字段和字段实例之间血缘关系的源信息,并获取所述源信息之间的血缘映射关系。
进一步地,所述血缘数据分析系统包括业务系统单元,用于对所述业务系统分析和预测,并能够针对所述关键血缘数据中任一节点信息的精准定位,任一血缘链路的血缘查询,任一全局血缘的视图总览。
进一步地,所述业务系统单元对业务系统的分析和预测包括但不限于:对所述关键血缘数据中表结构变化或者删除后做出及时告警;对所述关键血缘数据中上下游信息进行特殊分析,往上定位具体问题,往下做影响评估;对所述关键血缘数据的报表中异常数据的追踪,分析并确定所述异常数据的问题所在,定位具体的错误点;对所述关键血缘数据中某些数据做清洗脱敏工作时,根据血缘关系信息找到整个血缘链路,进而评估脱敏后的风险和制定计划需要的周期。
本发明实施例提供的技术方案带来的有益效果是:
1、本发明实施例中对不同类型的结构化查询语言持续性地批量导入消息队列表中,一方面可以将血缘解析的数据库类型显著提高,能够适应目前多种主流的数据库,因此,本发明实施例适用的语法规则广,扩展性强。另一方面通过消息列表,依赖消息队列能够大批量、持续性的解析结构化查询语言。
2、本发明实施例中通过标准化格式操作和事先处理,再获取血缘关系的血缘脉络和关键血缘数据并最终形成血缘图谱,使得对结构化查询语言的解析不仅可以支持静态的数据源,同时可以匹配动态的数据源,因此,对结构化查询语言的解析更加广泛,解析结果更加准确。
3、本发明实施例中通过对结构化查询语言的血缘解析以及对所述业务系统的分析与预测,能够对关键血缘数据各种场景中出现的不同情况进行告警、跟踪、定位具体问题和风险评估,进而有效的对数据溯源与数据预测。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明实施例中,结构化查询语言(Structured Query Language,简称SQL),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
实施例一:
如图1所示,本发明实施例提供了一种结构化查询语言的血缘解析方法,所述血缘解析方法包括:
S1:提取若干不同类型数据库的业务系统,将所述业务系统的结构化查询语言持续性地批量导入消息队列表中;
优选地,所述不同类型数据库包括Hive数据仓库和关系型数据库,所述关系型数据库包括主流的MySQL数据库、Oracle数据库、DB2数据库。相比于目前对语言的血缘解析而言,本发明实施例可以同时批量解析出多种数据库的SQL,其中,由于本发明实施例中对于多种不同SQL的解析队列,因此,可以针对多种SQL批量自动解析,显著提高了本发明实施例中对于SQL的解析速度和广度。
S2:对所述消息队列表中包含有静态参数和动态参数的所述结构化查询语言分别预处理,若所述结构化查询语言中仅涉及静态参数则进行标准化格式操作,若所述结构化查询语言中涉及动态参数则进行事先处理。优选地,所述标准化格式操作包括:将任一所述结构化查询语言中的空白字符替换为单个空格,以及将结构化查询语言统一为大写字母或者小写字母。
具体而言,由于SQL语句的书写形式多种多样,例如包括:单行、多行、单空格间隔、多空格间隔、大写、小写等,因此需要消除SQL语句前后的空白,将其中的连续空白字符替换成单个空格,包括对空格,TAB和回车换行等的替换,并将SQL语句统一转化成小写(或大写);还需要对包含动态参数的SQL语句进行事先处理操作,对SQL语句进行动态参数格式的字符匹配如”${var}”、”${key:value}”,预先对此类形式的字符进行整体替换,以确保支持动态SQL的解析以及解析结果尽量准确。如图2所示,对于SQL预处理包括以下具体步骤:
S201:开始对SQL语句进行预处理;
S202:判断SQL语句中是否有动态参数;
S203:若存在动态参数,对动态参数进行整体替换成真实的静态参数,完成对动态参数的模糊处理;
S204:若不存在动态参数,或者替换完了动态参数,则将SQL语句中的所以空白字符替换为单个空格,并将SQL语句字母大小写进行统一。
S3:将预处理后的所述结构化查询语言进行语法校对,使得所述结构化查询语言符合所述不同类型数据库的标准语法支持。具体的,SQL语法检查是在完成SQL预处理的基础上,对SQL语句基于语法的再一次校对,通过各类数据库标准语法对SQL解析的语法支持,检查SQL中是否含有不符合语法规范的因素,如语法解析不支持的特殊字符例如字符:!@#$...”、SQL中表名和字段名等命名中存在保留字等,确保SQL不会因语法错误而解析失败。
S4:如图3所示,对于获取SQL语句血缘关系的流程。具体的,生成匹配所述不同类型数据库的所述结构化查询语言的抽象语法树,对所述抽象语法树进行遍历,获取所述结构化查询语言的血缘关系;优选地,所述抽象语法树的生成是基于antlr和druid的开源语法分析器;对所述抽象语法树的遍历包括:依次获取所述结构化查询语言中库名、表名、字段名以及表和字段描述的元数据信息,将所述元数据信息作为生成表和表、字段和字段、表和表实例、字段和字段实例之间血缘关系的源信息,并获取所述源信息之间的血缘映射关系。进一步地,所述血缘映射关系包括所述表的父表与子表的映射对,所述字段的父字段与子字段的映射对,所述表实例或字段实例的父实例与子实例的映射对。
S5:对所述业务系统的所述血缘关系进行信息的提取,获取所述血缘关系的血缘脉络和关键血缘数据并最终形成血缘图谱,将所述血缘图谱存储于图数据库中,通过所述图数据库完成对所述业务系统的分析与预测。进一步地,以表节点、字段节点、实例节点的形式散落部署于图数据库中,节点与节点之间由各类血缘关系形成边,针对不同业务需求,对所述业务系统的分析和预测能够针对所述关键血缘数据中任一节点信息的精准定位,任一血缘链路的血缘查询,任一全局血缘的视图总览,通过对此类血缘信息的分析,助于理清表、字段与实例的血缘脉络,对数据进行溯源分析。
如图4所示提供的对于结构化查询语言在解析过程中数据流转示意图,可以看出对于SQL血缘解析的过程,优选地,所述业务系统的分析和预测包括但不限于以下四个方面:
业务场景一:对所述关键血缘数据中表结构变化或者删除后做出及时告警;具体的:用户无论是命令方式还是平台上的可视化方式,当对表结构做出修改时,均会实时感知到,再对关键点结构的变化做出相应的分析,例如字段减少或增加,字段位置发生变化,通过已关联的字段和任务,字段和表,表和任务之间的血缘关系,对引用到该表的任务中所配置的告警人员,申请了该表权限的人员或者所在系统管理员做出及时告警,避免较大事故的发生。
业务场景二:对所述关键血缘数据中上下游信息进行特殊分析,往上定位具体问题,往下做影响评估;具体的,当任务运行失败时,可根据血缘信息对任务的上下游进行特殊分析,往上追述任务并逐个分析问题,直到定位具体问题,往下做影响评估,查看当前任务的失败可能会影响哪些任务,又可能会造成何种程度的损失并给出评估报告。
业务场景三:对所述关键血缘数据的报表中异常数据的追踪,分析并确定所述异常数据的问题所在,定位具体的错误点;具体的,在生成报表的时候,若发现报表中可能存在异常数据,可根据报表追述到具体的上游字段和表,再逐一分析它们之间的关系和运算规则从而确定问题所在,定位具体的错误点,保障数据的可靠性和可延续性。
业务场景四:对所述关键血缘数据中某些数据做清洗脱敏工作时,根据血缘关系信息找到整个血缘链路,进而评估脱敏后的风险和制定计划需要的周期。具体的,若需要对某些数据做清洗脱敏工作时,可根据血缘关联信息清楚的找到整个链路,进而评估脱敏后的风险和制定计划需要的周期。但当发现未脱敏的数据已经被外泄时,可依据血缘关系信息从而快速的找到目前数据已经流转到了哪里,需要做怎样的紧急处理,最大程度的降低安全风险,避免更严重事故的发生。
实施例二:
如图5所示,本发明实施例提供了一种结构化查询语言的血缘解析工具,所述血缘解析工具包括:
数据源提取系统101,用于提取若干不同类型数据库的业务系统,将所述业务系统的结构化查询语言持续性地批量导入消息队列表中;
数据预处理系统102,用于将所述消息队列表中包含有静态参数和动态参数的所述结构化查询语言分别预处理,若所述结构化查询语言中仅涉及静态参数则进行标准化格式操作,若所述结构化查询语言中涉及动态参数则进行事先处理;
数据语法校对系统103,用于将预处理后的所述结构化查询语言进行语法校对,使得所述结构化查询语言符合所述不同类型数据库的标准语法支持;
血缘关系获取系统104,用于生成匹配所述不同类型数据库的所述结构化查询语言的抽象语法树,对所述抽象语法树进行遍历,获取所述结构化查询语言的血缘关系;
血缘数据分析系统105,用于对所述业务系统的所述血缘关系进行信息的提取,获取所述血缘关系的血缘脉络和关键血缘数据并最终形成血缘图谱,将所述血缘图谱存储于图数据库中,通过所述图数据库完成对所述业务系统的分析与预测。
优选地,所述数据源提取系统101包括Hive数据仓库和关系型数据库,所述关系型数据库包括主流的MySQL数据库、Oracle数据库、DB2数据库。因此所述血缘解析工具能够解析多种不同类型的SQL语句,所述血缘解析工具适用的语法规则广,扩展性强。另一方面通过消息列表,依赖消息队列能够大批量、持续性的解析结构化查询语言。
优选地,所述数据预处理系统102包括事先处理单元,用于设置自定义的语法模块实现对所述动态参数的识别和解析,将所述动态参数进行整体替换成真实的静态参数,完成对所述动态参数的模糊处理。既实施例所述的血缘解析工具,不仅可以支持静态的数据源,同时可以匹配动态的数据源,因此,对结构化查询语言的解析更加广泛,解析结果更加准确。
优选地,所述血缘解析工具中所述血缘关系的获取系统104包括基于antlr和druid的开源语法分析器,用于所述抽象语法树的生成,并依次获取所述结构化查询语言中库名、表名、字段名以及表和字段描述的元数据信息,将所述元数据信息作为生成表和表、字段和字段、表和表实例、字段和字段实例之间血缘关系的源信息,并获取所述源信息之间的血缘映射关系。
优选地,所述血缘数据分析系统105包括业务系统单元,用于对所述业务系统分析和预测,并能够针对所述关键血缘数据中任一节点信息的精准定位,任一血缘链路的血缘查询,任一全局血缘的视图总览。
在实际从操作过程中,所述血缘解析工具能够对关键血缘数据各种场景中出现的不同情况进行告警、跟踪、定位具体问题和风险评估,进而有效的对数据溯源与数据预测。所述血缘解析工具对于业务系统的分析和预测包括但不限于以下四个方面:
业务场景一:对所述关键血缘数据中表结构变化或者删除后做出及时告警;具体的:用户无论是命令方式还是平台上的可视化方式,当对表结构做出修改时,均会实时感知到,再对关键点结构的变化做出相应的分析,例如字段减少或增加,字段位置发生变化,通过已关联的字段和任务,字段和表,表和任务之间的血缘关系,对引用到该表的任务中所配置的告警人员,申请了该表权限的人员或者所在系统管理员做出及时告警,避免较大事故的发生。
业务场景二:对所述关键血缘数据中上下游信息进行特殊分析,往上定位具体问题,往下做影响评估;具体的,当任务运行失败时,可根据血缘信息对任务的上下游进行特殊分析,往上追述任务并逐个分析问题,直到定位具体问题,往下做影响评估,查看当前任务的失败可能会影响哪些任务,又可能会造成何种程度的损失并给出评估报告。
业务场景三:对所述关键血缘数据的报表中异常数据的追踪,分析并确定所述异常数据的问题所在,定位具体的错误点;具体的,在生成报表的时候,若发现报表中可能存在异常数据,可根据报表追述到具体的上游字段和表,再逐一分析它们之间的关系和运算规则从而确定问题所在,定位具体的错误点,保障数据的可靠性和可延续性。
业务场景四:对所述关键血缘数据中某些数据做清洗脱敏工作时,根据血缘关系信息找到整个血缘链路,进而评估脱敏后的风险和制定计划需要的周期。具体的,若需要对某些数据做清洗脱敏工作时,可根据血缘关联信息清楚的找到整个链路,进而评估脱敏后的风险和制定计划需要的周期。但当发现未脱敏的数据已经被外泄时,可依据血缘关系信息从而快速的找到目前数据已经流转到了哪里,需要做怎样的紧急处理,最大程度的降低安全风险,避免更严重事故的发生。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
需要说明的是:上述实施例提供的结构化查询语言的血缘解析工具在对SQL语句进行解析时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将结构化查询语言的血缘解析工具的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的结构化查询语言的血缘解析工具与结构化查询语言的血缘解析方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。