一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

字段级数据血缘提取方法、装置、设备及存储介质与流程

2022-07-30 09:02:15 来源:中国专利 TAG:
1.本发明涉及人工智能
技术领域
:,尤其涉及一种字段级数据血缘提取方法、装置、设备及存储介质。
背景技术
::2.数据安全管控是保护数据安全的重要方式之一,采用最小授权原则,通过对字段级数据访问权限的精准控制,降低数据泄露的风险。数据安全管控中最重要的环节之一是对用户查询结果的各个字段进行溯源以获得这些字段对应实际表的安全管控信息,例如,是否有权限访问、是否加密/脱敏处理等,从而采取相应的干预措施。3.由于数据安全管控需要能够覆盖企业的所有数据库系统,包括关系型数据库如mysql、oracle等,以及大数据系统如hive、spark、presto等,因此,如何覆盖多种数据库系统,且能准确进行字段级查询结果溯源以确定其对应物理表和字段,确定数据之间的血缘信息成了本领域技术人员需要解决的技术问题。技术实现要素:4.本发明的主要目的是通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。5.本发明第一方面提供了一种字段级数据血缘提取方法,包括:获取初始sql语句,并对所述初始sql语句进行预处理,得到预设格式的目标sql语句;对所述目标sql语句进行词法解析,生成抽象语法树;基于所述抽象语法树的解析规则和解析策略,遍历所述抽象语法树的多个层级的节点,得到所述目标sql语句的中各输出字段;对所述抽象语法树进行递归回溯,得到所述各输出字段对应的物理表字段,确定所述输出字段与所述物理表字段之间的对应关系;根据所述输出字段与所述物理表字段之间的对应关系,生成所述输出字段与所述物理表字段之间的字段血缘信息。6.可选地,在本发明第一方面的第一种实现方式中,所述获取初始sql语句,并对所述初始sql语句进行预处理,得到预设格式的目标sql语句包括:基于预设第一正则表达式删除所述初始sql语句中的无用数据,其中,所述无用数据包括注释、空格、换行符及结束符;删除所述初始sql语句中的分页操作limit代码;基于预设第二正则表达式剔除所述初始sql语句中的生命周期;基于预设策略模式,对所述初始sql语句进行对应类型的语法处理,得到预设格式的目标sql语句。7.可选地,在本发明第一方面的第二种实现方式中,所述对所述目标sql语句进行词法解析,生成抽象语法树包括:获取预设的关键字段集合,从所述目标sql语句中筛选出与所述关键字段集合中的关键字段一致的单词,得到标准关键字段;利用所述标准关键字段对所述目标sql语句进行切分,得到多个sql子字段;将多个所述sql子字段转换为抽象语法树。8.可选地,在本发明第一方面的第三种实现方式中,所述利用所述标准关键字段对所述目标sql语句进行切分,得到多个sql子字段包括:以所述标准关键字段作为切分节点,对所述目标sql语句进行基于所述切分节点往左边和往右边的切分,得到多个sql子字段;基于所述标准关键字段作为定位点,对所述多个切分语句进行二次切分,得到多个sql子字段。9.可选地,在本发明第一方面的第四种实现方式中,所述基于所述抽象语法树的解析规则和解析策略,遍历所述抽象语法树的多个层级的节点,得到所述目标sql语句的中各输出字段包括:基于所述抽象语法树的解析规则和解析策略,遍历所述抽象语法树的多个层级的节点,从所述抽象语法树的多个层级的节点获取涉及到的字段数据;根据出度及入度确定输入节点、输出节点及中间转化节点;遍历所有所述输出节点,判断所述输出节点的目标sql语句是否包含了字段值,若是,则将所述目标sql语句中的字段作为输出字段,若否,则获取表输出中该表所有的字段作为输出字段。10.可选地,在本发明第一方面的第五种实现方式中,所述根据所述输出字段与所述物理表字段之间的对应关系,生成所述输出字段与所述物理表字段之间的字段血缘信息包括:根据所述抽象数据树中的预设基础节点node的类型,确定所述输出字段对应的血缘解析器;基于所述血缘解析器,对所述基础节点node进行字段查询,得到对应的查询字段列表;遍历所述查询字段列表和所述物理表字段,并通过递归溯源的方式查找,得到所述输出字段与所述物理表字段之间的字段血缘信息。11.可选地,在本发明第一方面的第六种实现方式中,在所述根据所述输出字段与所述物理表字段之间的对应关系,生成所述输出字段与所述物理表字段之间的字段血缘信息之后,还包括:将所述字段血缘信息输入所述目标sql语句进行数据还原,得到所述输出字段对应的目标物理字段信息。12.本发明第二方面提供了一种字段级数据血缘提取装置,包括:预处理模块,用于获取初始sql语句,并对所述初始sql语句进行预处理,得到预设格式的目标sql语句;解析模块,用于对所述目标sql语句进行词法解析,生成抽象语法树;遍历模块,用于基于所述抽象语法树的解析规则和解析策略,遍历所述抽象语法树的多个层级的节点,得到所述目标sql语句的中各输出字段;确定模块,用于对所述抽象语法树进行递归回溯,得到所述各输出字段对应的物理表字段,确定所述输出字段与所述物理表字段之间的对应关系;生成模块,用于根据所述输出字段与所述物理表字段之间的对应关系,生成所述输出字段与所述物理表字段之间的字段血缘信息。13.可选地,在本发明第二方面的第一种实现方式中,所述预处理模块具体用于:基于预设第一正则表达式删除所述初始sql语句中的无用数据,其中,所述无用数据包括注释、空格、换行符及结束符;删除所述初始sql语句中的分页操作limit代码;基于预设第二正则表达式剔除所述初始sql语句中的生命周期;基于预设策略模式,对所述初始sql语句进行对应类型的语法处理,得到预设格式的目标sql语句。14.可选地,在本发明第二方面的第二种实现方式中,所述解析模块包括:筛选单元,用于获取预设的关键字段集合,从所述目标sql语句中筛选出与所述关键字段集合中的关键字段一致的单词,得到标准关键字段;切分单元,用于利用所述标准关键字段对所述目标sql语句进行切分,得到多个sql子字段;转换单元,用于将多个所述sql子字段转换为抽象语法树。15.可选地,在本发明第二方面的第三种实现方式中,所述切分单元具体用于:以所述标准关键字段作为切分节点,对所述目标sql语句进行基于所述切分节点往左边和往右边的切分,得到多个sql子字段;基于所述标准关键字段作为定位点,对所述多个切分语句进行二次切分,得到多个sql子字段。16.可选地,在本发明第二方面的第四种实现方式中,所述遍历模块具体用于:基于所述抽象语法树的解析规则和解析策略,遍历所述抽象语法树的多个层级的节点,从所述抽象语法树的多个层级的节点获取涉及到的字段数据;根据出度及入度确定输入节点、输出节点及中间转化节点;遍历所有所述输出节点,判断所述输出节点的目标sql语句是否包含了字段值,若是,则将所述目标sql语句中的字段作为输出字段,若否,则获取表输出中该表所有的字段作为输出字段。17.可选地,在本发明第二方面的第五种实现方式中,所述生成模块具体用于:根据所述抽象数据树中的预设基础节点node的类型,确定所述输出字段对应的血缘解析器;基于所述血缘解析器,对所述基础节点node进行字段查询,得到对应的查询字段列表;遍历所述查询字段列表和所述物理表字段,并通过递归溯源的方式查找,得到所述输出字段与所述物理表字段之间的字段血缘信息。18.可选地,在本发明第二方面的第六种实现方式中,所述字段级数据血缘提取装置还包括:数据还原模块,用于将所述字段血缘信息输入所述目标sql语句进行数据还原,得到所述输出字段对应的目标物理字段信息。19.本发明第三方面提供了一种字段级数据血缘提取设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;20.所述至少一个处理器调用所述存储器中的所述指令,以使得所述字段级数据血缘提取设备执行上述的字段级数据血缘提取方法的各个步骤。21.本发明的第四方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的字段级数据血缘提取方法的各个步骤。22.本发明提供的技术方案中,通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。附图说明23.图1为本发明提供的字段级数据血缘提取方法的第一个实施例示意图;24.图2为本发明提供的字段级数据血缘提取方法的第二个实施例示意图;25.图3为本发明提供的字段级数据血缘提取方法的第三个实施例示意图;26.图4为本发明提供的字段级数据血缘提取方法的第四个实施例示意图;27.图5为本发明提供的字段级数据血缘提取方法的第五个实施例示意图;28.图6为本发明提供的字段级数据血缘提取装置的第一个实施例示意图;29.图7为本发明提供的字段级数据血缘提取装置的第二个实施例示意图;30.图8为本发明提供的字段级数据血缘提取设备的一个实施例示意图。具体实施方式31.本发明实施例提供了一种字段级数据血缘提取方法、装置、设备及存储介质,本发明的技术方案中,首先通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。32.本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”或“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。33.为便于理解,下面对本发明实施例的具体流程进行描述,请参阅图1,本发明实施例中字段级数据血缘提取方法的第一个实施例包括:34.101、获取初始sql语句,并对初始sql语句进行预处理,得到预设格式的目标sql语句;35.本实施例中,所述预处理为系统自定义设置的用于对获取的待处理的初始sql语句进行的前置处理,其可包括但不限于以下中的任一项或多项的组合:使用第一正则表达式剔除初始sql语句中的无用信息,所述无用信息包括以下中的至少一项:注释、空格、换行符及结束符;去除初始sql语句中的分页操作limit代码;使用第二正则表达式去除sql语句中的生命周期;使用预设策略模式对不同类型的初始sql语句进行对应类型的语法处理。36.所述目标sql语句为符合标准sql语法的标准sql语句,例如其不包括例如注释、空格、结束符和换行符等特殊符号的sql语句等。37.102、对目标sql语句进行词法解析,生成抽象语法树;38.本实施例中,获取sql语句的源代码,将源代码的字符流依次读入,对源代码进行语法分析以获得抽象语法树。39.在另一具体实施例中,获取到初始sql语句对应的源代码,基于源代码的结束符对源代码进行切分,以获得源代码对应的多行代码;去除多行代码中的冗余字符,以获得处理后的多行代码;利用语法分析器对处理后的多行代码进行语义分析,以获得抽象语法树。40.具体地,获取到开发人员编写的sql语句的源代码,对源代码以分号结束符作为切分节点,将源代码切分为多行代码,以形成源代码对应的代码结构,将多行代码中的冗余换行符、指标符、注释语句去除,以获得处理后的多行代码,并对处理后的多行代码进行逐行sql语义解析,以获得抽象语法树,将冗余字符去除以提高语义解析的效率,并降低冗余字符对语义解析的影响,提高语义解析的准确率,以使获得的抽象语法树与初始sql语句匹配度更高。41.103、基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;42.本实施例中,基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段。其中,预先定义有针对抽象语法树多个层级节点的解析规则和解析策略,获取到抽象语法树的解析规则和解析策略后,基于抽象语法树的解析规则和解析策略对抽象语法树的节点进行分析,从层级高的节点向层级低的节点直至遍历抽象语法树的所有节点。43.在另一具体实施例中,抽象语法树包括层级从高到低的一元节点、二元节点和叶子节点,针对抽象语法树中的表对象、字段对象设有各自对应的解析规则,对于同一类型的对象在一元节点、二元节点和叶子节点设有对应的解析策略,基于预先设定的抽象语法树的解析规则和解析策略,对抽象语法树中不同类型的对象在一元节点、二元节点和叶子节点进行分析,以获得多个层级的节点。44.具体地,所述sql语句对应的多种类型的数据分别对应有一种解析规则,解析规则针对不同层级的节点包括不同的解析策略,且解析策略兼容多种类型的sql语句的语法规则。其中,解析规则和解析策略向后兼容presto等其他sql语法规则。针对不同的语法规则,预先设定兼容多种语法规则的解析策略,以满足不同类型的数据在多种语法规则下的解析需求,以提高对抽象语法树进行解析时的兼容性。45.104、对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;46.本实施例中,对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系。其中,对抽象语法树进行递归回溯对各个作业节点依次进行处理,分别确定输入字段集合、输出字段集合、各个作业节点内部的字段映射信息。对于kettle脚本,如图2所示,确定输入字段集合、输出字段集合。47.具体地,所述递归回溯又叫递归回溯算法,递归回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。48.105、根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。49.本实施例中,根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。50.具体地,对所述抽象语法树进行遍历,并将所述抽象语法树中与预设字段的节点一致的节点标记为目标节点;提取所述目标节点中的数据值,基于所述数据值和数据库中的数据表进行比对查询,得到所述数据值对应的作业表;根据所述作业表对应的标签确定所述作业表的类型,确定不同类型的作业表之间的关系,并将所述作业表和作业表之间的关系进行汇总,得到血缘解析结果。详细地,本发明实施例中所述预设字段为table,提取所述目标节点中所述预设字段对应的值,如:tablea,那么对应的值为a,再查询预设数据库中表名为a的数据表,得到对应的所述作业表。51.具体地,根据所述作业表所对应的标签属于的类型确定所述作业表的类型,例如,若所述作业表对应的标签类型为起始数据表标签则将所述作业表确定为起始数据表;若所述数据表对应的标签类型为目标数据表标签,则将所述作业表确定为目标数据表,起始数据表与目标数据表的血缘关系为起始数据表为目标数据表的上游数据表,汇总所有的所述起始数据表及所述目标数据表,得到所述血缘关系分析结果。52.本发明实施例中,通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。53.请参阅图2,本发明实施例中字段级数据血缘提取方法的第二个实施例包括:54.201、基于预设第一正则表达式删除初始sql语句中的无用数据;55.本实施例中,所述第一正则表达式为编程语言java中自定义设置的,其是对字符串和特殊字符操作的一种逻辑公式。本技术使用第一正则表达式来剔除待处理sql语句中的无用信息,所述无用信息包括但不限于以下中的任一项或多项的组合:注释、空格、换行符、结束符或其他特殊字符/符号。56.202、删除初始sql语句中的分页操作limit代码;57.本实施例中,去除掉待处理sql语句中分页操作(limit)后面的代码片段,以防止无法获取sql语句中数据间的血缘关系。58.203、基于预设第二正则表达式剔除初始sql语句中的生命周期;59.本实施例中,基于预设第二正则表达式剔除初始sql语句中的生命周期。具体的,所述第二正则表达式为编程语言java中自定义设置的,其是对字符串和特殊字符操作的一种逻辑公式。所述第一正则表达式与所述第二正则表达式存在不同。本技术使用第二正则表达式去除掉待处理sql语句中可能存在的生命周期。60.具体地,所述正则表达式,又称规则表达式。(英语:regularexpression,在代码中常简写为regex、regexp或re),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。61.许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。62.204、基于预设策略模式,对初始sql语句进行对应类型的语法处理,得到预设格式的目标sql语句;63.本实施例中,基于预设策略模式,对初始sql语句进行对应类型的语法处理,得到预设格式的目标sql语句。具体地,所述预设策略模式为系统自定义设置的,可自定义处理hadler方法,以用于对不同类型的sql语句进行对应的特殊语法处理。本技术可使用预设策略模式所指示的第三正则表达式对待处理sql语句进行对应的特殊语法处理。64.举例来说,本实施例采用如下第三正则表达式对待处理sql语句进行处理:(i)(create\\s (temp|temporary)\\s table\\s ).*,其表示匹配该正则表达式的sql语句中的temp|temporarytable替换成createtable,这样后续的操作才能正常解析出数据间的血缘关系。65.205、对目标sql语句进行词法解析,生成抽象语法树;66.206、基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;67.207、对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;68.208、根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。69.本实施例中步骤205-208与第一实施例中的步骤102-105类似,此处不再赘述。70.本发明实施例中,通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。71.请参阅图3,本发明实施例中字段级数据血缘提取方法的第三个实施例包括:72.301、获取初始sql语句,并对初始sql语句进行预处理,得到预设格式的目标sql语句;73.302、获取预设的关键字段集合,从目标sql语句中筛选出与关键字段集合中的关键字段一致的单词,得到标准关键字段;74.本实施例中,获取预设的关键字段集合,从目标sql语句中筛选出与关键字段集合中的关键字段一致的单词,得到标准关键字段。具体地,所述关键字段集合包括起始关键字段集合及目标关键字段集合,其中,所述起始关键字段集合包含'leftjoin','rightjoin','leftouterjoin','rightouterjoin'等,所述目标关键字段包含“create”、“insert”、“select”'into','overwrite'。75.303、以标准关键字段作为切分节点,对目标sql语句进行基于切分节点往左边和往右边的切分,得到多个sql子字段;76.本实施例中,以标准关键字段作为切分节点,对目标sql语句进行基于切分节点往左边和往右边的切分,得到多个sql子字段。其中,以所述标准关键字段作为切分节点,对所述sql语句进行基于所述切分节点往左边和往右边的切分,得到多个sql子语句;或基于预设的随机切分长度对所述sql语句进行切分,得到多个切分语句,并利用所述标准关键字段作为定位点对所述多个切分语句进行二次切分,得到多个sql子语句。77.例如,所述sql语句为selectcol_afroma,所述标准关键字段为“select”和“from”,故以所述标准关键字段“select”、“from”作为切分节点进行切分,得到selectcol_a及froma共两个sql子语句。78.304、基于标准关键字段作为定位点,对多个切分语句进行二次切分,得到多个sql子字段;79.本实施例中,基于标准关键字段作为定位点,对多个切分语句进行二次切分,得到多个sql子字段。其中,所述切分是对词语进行切分。中文切词(又称中文分词,chinesewordsegmentation)指的是将一个汉字序列切分成一个一个单独的词。中文分词是文本挖掘的基础,对于输入的一段中文,成功的进行中文分词,可以达到电脑自动识别语句含义的效果。这种方法又叫做机械分词方法,它是按照一定的策略将待分析的汉字串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(识别出一个词)。80.305、将多个sql子字段转换为抽象语法树;81.本实施例中,基于预设的随机切分长度对所述sql语句进行切分,得到多个切分语句,并利用所述标准关键词作为定位点对所述多个切分字段进行二次切分,得到多个sql子字段。例如,所述sql字段为selectcol_afroma,所述标准关键词为“select”和“from”,故以所述标准关键词“select”、“from”作为切分节点进行切分,得到selectcol_a及froma共两个sql子字段。82.具体地,所述利用所述标准关键词对所述sql字段进行切分,得到多个sql子字段之后,所述方法还包括:对所述多个sql子字段进行标签标记。例如,所述sql子字段selectcol_a对应的关键词为目标关键词集合中的关键词,因此所述sql子字段selectcol_a对应的标签为目标标签。83.进一步地,所述将多个所述sql子字段转换为抽象语法树,包括:利用预设的词法分析器对所述sql子语句进行分析,得到多个词元;将多个所述词元按照预设的语法分析方法进行语法树构建,得到所述抽象语法树。其中,所述预设的语法分析方法包括自顶向下的分析方法和自底向上的分析方法。84.306、基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;85.307、对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;86.308、根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。87.本实施例中步骤301、306-308与第一实施例中的步骤101、103-105类似,此处不再赘述。88.本发明实施例中,通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。89.请参阅图4,本发明实施例中字段级数据血缘提取方法的第四个实施例包括:90.401、获取初始sql语句,并对初始sql语句进行预处理,得到预设格式的目标sql语句;91.402、对目标sql语句进行词法解析,生成抽象语法树;92.403、基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,从抽象语法树的多个层级的节点获取涉及到的字段数据;93.本实施例中,基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,从抽象语法树的多个层级的节点获取涉及到的字段数据。具体地,sql语句对应的多种类型的数据分别对应有一种解析规则,解析规则针对不同层级的节点包括不同的解析策略,且解析策略兼容多种类型的sql语句的语法规则。其中,解析规则和解析策略向后兼容presto等其他sql语法规则。针对不同的语法规则,预先设定兼容多种语法规则的解析策略,以满足不同类型的数据在多种语法规则下的解析需求,以提高对抽象语法树进行解析时的兼容性。94.404、根据出度及入度确定输入节点、输出节点及中间转化节点;95.本实施例中,根据出度及入度确定输入节点、输出节点及中间转化节点。具体地,根据无回路有向图中作业节点的出度及入度,将作业节点划分为输入节点、输出节点及中间转化节点。对于输入节点,其是指出度大于0、入度为0的作业节点。对于输出节点,其是指出度为0、入度大于0的作业节点。对于出度、入度均大于0的作业节点,其为中间转化节点。96.405、遍历所有输出节点,判断输出节点的目标sql语句是否包含了字段值,若是,则将目标sql语句中的字段作为输出字段,若否,则获取表输出中该表所有的字段作为输出字段;97.本实施例中,遍历所有输出节点,判断输出节点的目标sql语句是否包含了字段值,若是,则将目标sql语句中的字段作为输出字段,若否,则获取表输出中该表所有的字段作为输出字段。具体地,生成数据血缘图的核心是进行字段间的映射,因此,本发明分别对输入节点、输出节点及中间转化节点进行处理,以确定相应的输入字段、输出字段及输入字段与输出字段间的映射关系。对于输入节点。本实施例获取相应节点的sql语句,判断该sql语句中是否包含了字段值。对于输入节点对应的sql语句中的字段值,直接作为输入字段。当sql语句中不包含字段值,而是采用全匹配符时,本实施例根据sql语句中的表输入,直接获取该表所有的字段作为输入字段。98.具体地,本实施例基于sql语句,确定相应的操作表,根据数据库连接信息,动态连接相应的数据库,从数据库中获取当前表的所有字段,作为输入字段。本发明遍历所有输入节点,将针对每个输入节点处理获取的输入字段组成输入字段集合。99.406、对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;100.407、根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。101.本实施例中步骤401-402、406-407与第一实施例中的步骤101-102、104-105类似,此处不再赘述。102.本发明实施例中,通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。103.请参阅图5,本发明实施例中字段级数据血缘提取方法的第五个实施例包括:104.501、获取初始sql语句,并对初始sql语句进行预处理,得到预设格式的目标sql语句;105.502、对目标sql语句进行词法解析,生成抽象语法树;106.503、基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;107.504、对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;108.505、根据抽象数据树中的预设基础节点node的类型,确定输出字段对应的血缘解析器;109.本实施例中,根据抽象数据树中的预设基础节点node的类型,确定输出字段对应的血缘解析器。具体地,可根据所述基础节点node的类型选择相应的血缘解析器来进行血缘关系解析。可理解的,血缘关系通常存在于insertnode和createnode中。因此若所述基础节点node的类型为insertnode,则选择与所述insertnode对应的血缘解析器;反之,若所述基础节点node的类型为createnode,则选择与所述createnode对应的血缘解析器。110.506、基于血缘解析器,对基础节点node进行字段查询,得到对应的查询字段列表;111.本实施例中,基于血缘解析器,对基础节点node进行字段查询,得到对应的查询字段列表。其中,所述查询字段列表中包括主表和主表对应的字段信息。这里的主表可以是insert表或create表。所述字段和列表查询包括但不限于以下中的任一项或多项的组合:常规/普通查询、子查询、联合union查询及函数字段查询,本技术可根据基础节点node的实际情况选择对应的查询方式进行查询处理得到最终的查询字段列表。112.507、遍历查询字段列表和物理表字段,并通过递归溯源的方式查找,得到输出字段与物理表字段之间的字段血缘信息;113.本实施例中,遍历查询字段列表和物理表字段,并通过递归溯源的方式查找,得到输出字段与物理表字段之间的字段血缘信息。具体地,可循环遍历所述查询字段列表,找出该列表中包括的主表及主表的字段信息。然后采用递归溯源的方式从所述查询字段列表中的主表及主表的字段信息中查找出对应数据间的血缘关系。所述血缘关系包括但不限于以下中的至少一项:表级血缘关系、字段级血缘关系或其他级血缘关系等。114.508、将字段血缘信息输入目标sql语句进行数据还原,得到输出字段对应的目标物理字段信息。115.本实施例中步骤501-504与第一实施例中的101-105类似,此处不再赘述。116.在本发明实施例中,通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。117.上面对本发明实施例中字段级数据血缘提取方法进行了描述,下面对本发明实施例中字段级数据血缘提取装置进行描述,请参阅图6,本发明实施例中字段级数据血缘提取装置的第一个实施例包括:118.预处理模块601,用于获取初始sql语句,并对所述初始sql语句进行预处理,得到预设格式的目标sql语句;119.解析模块602,用于对所述目标sql语句进行词法解析,生成抽象语法树;120.遍历模块603,用于基于所述抽象语法树的解析规则和解析策略,遍历所述抽象语法树的多个层级的节点,得到所述目标sql语句的中各输出字段;121.确定模块604,用于对所述抽象语法树进行递归回溯,得到所述各输出字段对应的物理表字段,确定所述输出字段与所述物理表字段之间的对应关系;122.生成模块605,用于根据所述输出字段与所述物理表字段之间的对应关系,生成所述输出字段与所述物理表字段之间的字段血缘信息。123.本发明实施例中,通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。124.请参阅图7,本发明实施例中字段级数据血缘提取装置的第二个实施例,该字段级数据血缘提取装置具体包括:125.预处理模块601,用于获取初始sql语句,并对所述初始sql语句进行预处理,得到预设格式的目标sql语句;126.解析模块602,用于对所述目标sql语句进行词法解析,生成抽象语法树;127.遍历模块603,用于基于所述抽象语法树的解析规则和解析策略,遍历所述抽象语法树的多个层级的节点,得到所述目标sql语句的中各输出字段;128.确定模块604,用于对所述抽象语法树进行递归回溯,得到所述各输出字段对应的物理表字段,确定所述输出字段与所述物理表字段之间的对应关系;129.生成模块605,用于根据所述输出字段与所述物理表字段之间的对应关系,生成所述输出字段与所述物理表字段之间的字段血缘信息。130.本实施例中,所述预处理模块601具体用于:131.基于预设第一正则表达式删除所述初始sql语句中的无用数据,其中,所述无用数据包括注释、空格、换行符及结束符;132.删除所述初始sql语句中的分页操作limit代码;133.基于预设第二正则表达式剔除所述初始sql语句中的生命周期;134.基于预设策略模式,对所述初始sql语句进行对应类型的语法处理,得到预设格式的目标sql语句。135.本实施例中,所述解析模块602包括:136.筛选单元6021,用于获取预设的关键字段集合,从所述目标sql语句中筛选出与所述关键字段集合中的关键字段一致的单词,得到标准关键字段;137.切分单元6022,用于利用所述标准关键字段对所述目标sql语句进行切分,得到多个sql子字段;138.转换单元6023,用于将多个所述sql子字段转换为抽象语法树。139.本实施例中,所述切分单元6022具体用于:140.以所述标准关键字段作为切分节点,对所述目标sql语句进行基于所述切分节点往左边和往右边的切分,得到多个sql子字段141.基于所述标准关键字段作为定位点,对所述多个切分语句进行二次切分,得到多个sql子字段。142.本实施例中,所述遍历模块603具体用于:143.基于所述抽象语法树的解析规则和解析策略,遍历所述抽象语法树的多个层级的节点,从所述抽象语法树的多个层级的节点获取涉及到的字段数据;144.根据出度及入度确定输入节点、输出节点及中间转化节点;145.遍历所有所述输出节点,判断所述输出节点的目标sql语句是否包含了字段值,若是,则将所述目标sql语句中的字段作为输出字段,若否,则获取表输出中该表所有的字段作为输出字段。146.本实施例中,所述生成模块605具体用于:147.根据所述抽象数据树中的预设基础节点node的类型,确定所述输出字段对应的血缘解析器;148.基于所述血缘解析器,对所述基础节点node进行字段查询,得到对应的查询字段列表;149.遍历所述查询字段列表和所述物理表字段,并通过递归溯源的方式查找,得到所述输出字段与所述物理表字段之间的字段血缘信息。150.本实施例中,所述字段级数据血缘提取装置,还包括:151.数据还原模块606,用于将所述字段血缘信息输入所述目标sql语句进行数据还原,得到所述输出字段对应的目标物理字段信息。152.本发明实施例中,通过对初始sql语句进行预处理,得到目标sql语句,并将目标sql语句解析为抽象语法树;基于抽象语法树的解析规则和解析策略,遍历抽象语法树的多个层级的节点,得到目标sql语句的中各输出字段;对抽象语法树进行递归回溯,得到各输出字段对应的物理表字段,确定输出字段与物理表字段之间的对应关系;根据输出字段与物理表字段之间的对应关系,生成输出字段与物理表字段之间的字段血缘信息。本方案通过对输入sql语句的进行输出字段的血缘数据分析与提取,解决了现有技术中无法覆盖多种数据库系统,且能准确确定数据之间的血缘信息的技术问题。153.上面图6和图7从模块化功能实体的角度对本发明实施例中的字段级数据血缘提取装置进行详细描述,下面从硬件处理的角度对本发明实施例中字段级数据血缘提取设备进行详细描述。154.图8是本发明实施例提供的一种字段级数据血缘提取设备的结构示意图,该字段级数据血缘提取设备800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,cpu)810(例如,一个或一个以上处理器)和存储器820,一个或一个以上存储应用程序833或数据832的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器820和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对字段级数据血缘提取设备800中的一系列指令操作。更进一步地,处理器810可以设置为与存储介质830通信,在字段级数据血缘提取设备800上执行存储介质830中的一系列指令操作,以实现上述各方法实施例提供的字段级数据血缘提取方法的步骤。155.字段级数据血缘提取设备800还可以包括一个或一个以上电源840,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口860,和/或,一个或一个以上操作系统831,例如windowsserve,macosx,unix,linux,freebsd等等。本领域技术人员可以理解,图8示出的字段级数据血缘提取设备结构并不构成对本技术提供的字段级数据血缘提取设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。156.本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行上述字段级数据血缘提取方法的步骤。157.所述领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。158.所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。159.以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献