CN116127153A - 数据溯源方法、装置、介质及设备 - Google Patents
数据溯源方法、装置、介质及设备 Download PDFInfo
- Publication number
- CN116127153A CN116127153A CN202310096748.5A CN202310096748A CN116127153A CN 116127153 A CN116127153 A CN 116127153A CN 202310096748 A CN202310096748 A CN 202310096748A CN 116127153 A CN116127153 A CN 116127153A
- Authority
- CN
- China
- Prior art keywords
- sql
- traced
- reverse
- type
- data
- 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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9032—Query formulation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例公开了一种数据溯源方法、装置、存储介质及设备。该方法包括:对待溯源结构化查询语言SQL进行解析,得到待溯源SQL对应的抽象语法树;基于抽象语法树,获取待溯源SQL对应的预定要素信息;基于预定要素信息以及待溯源SQL的语法结构,构建待溯源SQL对应的反向SQL;基于反向SQL进行数据溯源处理。
Description
技术领域
本说明书涉及大数据技术领域,尤其涉及一种数据溯源方法、装置、存储介质及设备。
背景技术
随着互联网技术的发展,每天会产生大量的数据,如何对产生的数据进行数据溯源成为了关注的焦点。
数据溯源能够重现数据的流转路径以及演变过程。在一种技术方案中,通过反向查询法对目标数据进行数据溯源处理,获得目标数据的溯源结果,例如,根据数据转换过程对目标数据进行反向推导,追溯到目标数据的原数据。然而,目前的反向查询法对目标数据进行数据溯源处理时,获得的目标数据的溯源结果的准确性较低。
因此,如何提高数据溯源处理的溯源结果的准确性,成为了亟待解决的技术难题。
发明内容
本说明书提供一种数据溯源方法、装置、存储介质及设备,能够提高数据溯源处理的溯源结果的准确性,并能够快速准确定位数据的来源。
第一方面,本说明书实施例提供一种数据溯源方法,包括:
对待溯源结构化查询语言SQL进行解析,得到所述待溯源SQL对应的抽象语法树;
基于所述抽象语法树,获取所述待溯源SQL对应的预定要素信息;
基于所述预定要素信息以及所述待溯源SQL的语法结构,构建所述待溯源SQL对应的反向SQL;
基于所述反向SQL进行数据溯源处理。
第二方面,本说明书实施例提供了一种数据溯源装置,包括:
解析模块,用于对待溯源结构化查询语言SQL进行解析,得到所述待溯源SQL对应的抽象语法树;
要素获取模块,用于基于所述抽象语法树,获取所述待溯源SQL对应的预定要素信息;
反向函数构建模块,用于基于所述预定要素信息以及所述待溯源SQL的语法结构,构建所述待溯源SQL对应的反向SQL;
溯源处理模块,用于基于所述反向SQL进行数据溯源处理。
第三方面,本说明书实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法的步骤。
第四方面,本说明书实施例提供一种包含指令的计算机程序产品,当所述计算机程序产品在计算机或处理器上运行时,使得所述计算机或处理器执行上述的方法的步骤。
第五方面,本说明书实施例提供一种电子设备,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法的步骤。
根据本说明书实施例的技术方案,一方面,通过对待溯源SQL进行解析得到对应的抽象语法树,基于抽象语法树,获取待溯源SQL对应的预定要素信息,能够准确地确定待溯源SQL中的关键要素;另一方面,基于预定要素信息以及抽象语法树,构建待溯源SQL对应的反向SQL,基于反向SQL,对待溯源SQL对应的执行结果进行数据溯源处理,由于反向SQL能够快速准确地查询到待溯源SQL的执行结果的原始数据,从而能够提高数据溯源处理的溯源结果的准确性,进而能够快速准确地定位执行结果中的数据的来源;再一方面,由于在需要时才对执行结果中的数据进行数据溯源处理,从而能够降低数据溯源处理占用的存储空间。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例提供的一种应用场景的示意图;
图2为本说明书实施例提供的一种数据溯源方法的流程示意图;
图3为根据本说明书实施例提供的构建反向SQL的流程示意图;
图4为根据本说明书实施例提供的对多表溯源要素模型中的各个溯源要素进行拼接的流程示意图;
图5为本说明书实施例提供的对多层嵌套溯源要素模型中的要素进行拼接的流程示意图;
图6为本说明书实施例提供的另一种数据溯源方法的流程示意图;
图7为本说明书实施例提供的一种抽象语法树的示意图;
图8为本说明书实施例提供的数据溯源装置的结构示意图;
图9为本说明书实施例提供的一种电子设备的结构示意图。
具体实施方式
为使得本说明书的特征和优点能够更加的明显和易懂,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而非全部实施例。基于本说明书中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
AST(Abstract Syntax Tree,抽象语法树):一种语法结构的树形表示方式。
Antlr:一种语言工具,该语言工具可以通过包含Java,C++,或C#等语言的语法描述来构造语言识别器,例如编译器和解析器,语言识别器用于读取、处理、执行或翻译结构化文本或二进制文件。
数据溯源:数据治理范畴的一部分,主要追踪数据的起源与重现数据的历史状态。
SQL(Structured Query Language,结构化查询语言)溯源:数据溯源的具体场景,利用SQL语句的语法结构和执行结果,获取执行结果在相应的数据表的原始数据。
反向查询法:通过构造反向函数对查询求逆,或者根据数据转换过程进行反向推导,由结果追溯到原数据的过程。
反向SQL:用于获取正向SQL语句的原始数据的SQL,SQL溯源的主要实现方式之一。
数据血缘:数据溯源结果的主要呈现方式,主要通过数据图谱的形式,展示数据的来源去向。
由于标注法需要额外的存储空间,并不适合细粒度数据,特别是大数据集中的数据溯源,因此,在一种技术方案中,通过反向查询法对目标数据进行溯源,例如,通过构造反向函数对查询求逆,或者根据数据转换过程进行反向推导,由结果追溯到原数据的过程。然而,随着数据血缘关系变得越来越复杂,上述技术方案中的反向查询法难以快速准确地定位执行结果中的数据的来源。
基于上述内容,本说明书实施例提供了一种数据溯源方法,一方面,通过对待溯源SQL进行解析得到对应的抽象语法树,基于抽象语法树,获取待溯源SQL对应的预定要素信息,能够准确地确定待溯源SQL中的关键要素;另一方面,基于预定要素信息以及待溯源SQL的语法结构,构建待溯源SQL对应的反向SQL,基于反向SQL,对待溯源SQL对应的执行结果进行数据溯源处理,由于反向SQL能够快速准确地查询到待溯源SQL的执行结果的原始数据,从而能够提高数据溯源处理的溯源结果的准确性,进而能够快速准确地定位执行结果中的数据的来源;再一方面,由于在需要时才对执行结果中的数据进行数据溯源处理,从而能够降低数据溯源处理占用的存储空间。
下面,将结合附图对本说明书实施例的技术方案进行详细的说明。
图1为本说明书实施例提供的一种应用场景的示意图。
如图1所示,该应用场景包括SQL配置和运行模块110、数据库120、SQL溯源模块130以及溯源结果展示模块140。其中,SQL配置和运行模块110用于配置待溯源SQL以及运行配置好的待溯源SQL,从数据库120中获取待溯源SQL的执行结果。数据库120中存储有多个数据表,数据表中存储有待溯源SQL的执行结果对应的原始数据。SQL溯源模块130用于基于待溯源SQL的语法结构以及执行结果,对待溯源SQL的执行结果中的数据进行数据溯源处理。数据展示模块140用于对待溯源SQL的执行结果以及数据溯源处理的结果进行展示。
需要说明的是,本说明书的示例实施例中的数据溯源方法中的步骤可以部分由客户端执行,部分由服务器执行,也可以全部由服务器或者全部由客户端执行,本说明书对此不进行特殊限定。
基于图1所示应用场景,下面将结合图2-图7,对本说明书实施例提供的数据溯源方法进行详细介绍。需要注意的是,上述应用场景仅是为了便于理解本说明书的精神和原理而示出,本说明书的实施例在此方面不受任何限制。相反,本说明书的实施例可以应用于适用的任何场景。
图2为本说明书实施例提供的一种数据溯源方法的流程示意图。该数据溯源方法可以通过具有计算能力的设备执行,例如终端设备或服务器。如图2所示,本说明书实施例的数据溯源方法可以包括以下步骤S210至步骤S240。
在步骤S210中,对待溯源SQL进行解析,得到待溯源SQL对应的抽象语法树。
在示例实施例中,抽象语法树是一种用来描述SQL的语法结构的树形表示方式,抽象语法树的每一个节点都代表着SQL中的一个语法结构或SQL要素,例如,抽象语法树的节点可以为表名、表操作名称以及字段。基于SQL语言的词法规则对待溯源SQL进行词法分析,得到待溯源SQL对应的符号流;基于SQL语言的语法规则对符号流进行语法分析,生成待溯源SQL对应的抽象语法树。
举例而言,通过词法分析器分析待溯源SQL中的各个字符,将各个字符都转化成符合SQL语言的词法规则的符号,形成待溯源SQL对应的符号流;根据待溯源SQL对应的符号流,利用语法分析器,将符号流中的各个符号作为语法节点来构建待溯源SQL的抽象语法树。
在步骤S220中,基于抽象语法树,获取待溯源SQL对应的预定要素信息。
在示例实施例中,预定要素信息为待溯源SQL的关键要素的信息。例如表名、查询条件、字段、表关联关系等要素。需要说明的是,虽然以预定要素信息包括表名、字段、表关联关系为例进行了说明,但是本领域技术人员应该理解的是,预定要素信息还可以包括其他适当的要素信息例如关联条件或要素所属层级等信息,这同样在本说明书实施例的范围内。
进一步地,在示例实施例中,基于待溯源SQL的语法规则从抽象语法树中获取待溯源SQL对应的预定要素信息。举例而言,确定待溯源SQL的数据操作类型,数据操作类型可以为创建(Create)、更新(Update)、读取(Read)或删除(Delete)操作,基于该数据操作类型对应的语法规则从抽象语法树中获取待溯源SQL对应的预定要素信息。
例如,预先设置各种数据操作类型对应的语法规则文件,语法规则文件中包括数据操作名称要素、表名要素、字段要素等要素,基于待溯源SQL对应的数据操作类型获取对应的语法规则文件,基于该语法规则文件中的预定要素名称例如表名tableName,遍历抽象语法树,从抽象语法树中获取待溯源SQL对应的预定要素信息,例如待溯源SQL中的表名或表查询条件等要素信息。
在步骤S230中,基于预定要素信息以及SQL的语法结构,构建待溯源SQL对应的反向SQL。
在示例实施例中,基于SQL的语法结构,确定待溯源SQL对应的语法结构类型,语法结构类型为单表类型、多表类型以及多层嵌套类型中的一种类型,基于该语法结构类型以及预定要素信息,构建待溯源SQL对应的反向SQL。
举例而言,若语法结构类型为单表类型,则基于单表类型的SQL语法结构对预定要素信息中的各个要素进行拼接,生成待溯源SQL对应的反向SQL。例如,设待溯源SQL为单表类型,如select id from student where name='jack',预定要素包括数据操作类型select、表名student、查询条件where、字段name,基于单表类型的SQL语法结构对预定要素信息中的各个要素进行拼接,生成该待溯源SQL对应的反向SQL即select*from studentwhere name='jack',其中,“*”为反向SQL中的填充要素,表示可以替换为对应的数据表中的字段。
在步骤S240中,基于反向SQL进行数据溯源处理。
在示例实施例中,反向SQL指的是用于获取正向SQL语句的原始数据的SQL。反向SQL可以包括填充要素例如符号“*”,从数据表的元数据中获取数据表对应的字段;将获取的字段填充到反向SQL的填充要素;执行反向SQL进行数据溯源处理。
举例而言,设数据表为学生表student,数据表的字段包括唯一标识ID、姓名name、班级class等,设待溯源SQL为单表类型,如select id from student where name='jack',该待溯源SQL的查询结果为姓名为“jack”的唯一标识ID,反向SQL即select*fromstudent where name='jack',响应于对待溯源SQL的数据溯源请求,执行该反向SQL,得到该反向SQL的执行结果,即数据溯源处理的结果,该反向SQL的执行结果为学生表student中姓名为“jack”的一行记录。
根据图2的示例实施例中的技术方案,一方面,通过对待溯源SQL进行解析得到对应的抽象语法树,基于抽象语法树,获取待溯源SQL对应的预定要素信息,能够准确地确定待溯源SQL中的关键要素;另一方面,基于预定要素信息以及待溯源SQL的语法结构,构建待溯源SQL对应的反向SQL,基于反向SQL,对待溯源SQL对应的执行结果进行数据溯源处理,由于反向SQL能够快速准确地查询到待溯源SQL的执行结果的原始数据,从而能够提高数据溯源处理的溯源结果的准确性,进而能够快速准确地定位执行结果中的数据的来源;再一方面,由于在需要时才对执行结果中的数据进行数据溯源处理,从而能够降低数据溯源处理占用的存储空间。
进一步地,在示例实施例中,该数据溯源方法还包括:通过数据血缘图谱的方式,对数据溯源处理的处理结果进行展示。根据数据血缘图谱的方式对溯源结果进行展示,能够以可视化的方式直观地对目标数据的来源以及数据流转路径进行展示,从而能够支持行级别的数据溯源。
图3为根据本说明书实施例提供的构建反向SQL的流程示意图。
参照图3所示,在步骤S310中,基于待溯源SQL的语法结构,确定待溯源SQL对应的语法结构类型。
在一些示例实施例中,待溯源SQL的语法结构类型为单表类型、多表类型以及多层嵌套类型中的一种类型。下表1中示出了SQL的三种语法结构类型:
表1.SQL的三种语法结构类型
在示例实施例中,基于待溯源SQL的语法结构,确定待溯源SQL的目标要素,从待溯源SQL的抽象语法树中获取待溯源SQL的目标要素,基于获取的目标要素的数量确定待溯源SQL对应的语法结构类型。
举例而言,设待溯源SQL为查询SQL,基于查询SQL的语法结构,例如下文所示的查询语法结构,确定待溯源SQL的目标要素为数据表的表名和select关键字,获取待溯源SQL中的数据表的表名和select关键字,若数据表的表名为1个并且select关键字为1个,则确定待溯源SQL对应的语法结构类型为单表类型;若数据表的表名为2个以上并且select关键字为1个,则确定待溯源SQL对应的语法结构类型为多表类型;若select关键字为2个以上,则确定待溯源SQL对应的语法结构为多层嵌套类型。下面示出了本说明书实施例提供的一种SQL的查询语法结构:
select[all|distinct]<expression>[,<expression>]...
from<table>[,<table>]...
where<condition>[and|or][<condition>]...
group by<expression>[,<expression>]...
having...
order by...
在步骤S320中,基于语法结构类型以及预定要素信息,构建待溯源SQL对应的溯源要素模型。
在示例实施例中,溯源要素模型包括与待溯源SQL对应的多个要素,基于语法结构类型从预定要素信息中选取对应的要素,基于选取的要素构建待溯源SQL对应的溯源要素模型。例如,若待溯源SQL的语法结构类型为单表类型,则基于单表类型确定预定要素信息中的单表溯源要素,构建待溯源SQL对应的单表溯源要素模型。下面示出了本说明实施例提供的一种溯源要素模型,该溯源要素模型包括多个溯源要素的属性:
其中,该溯源要素模型包括表名tableName、别名alias、select关键字列表、Where关键字、Join关键字等溯源要素。
举例而言,预先设置与上述语法结构类型对应的溯源要素模型,溯源要素模型包括该语法结构类型对应的SQL的多个要素的属性,设语法结构类型为单表类型,数据操作类型为读取操作类型即select操作,从预定要素信息中获取与单表类型的溯源要素模型对应的要素的属性值例如,表名的值、查询条件的值等,根据获取的要素的属性值构建待溯源SQL对应的单表溯源要素模型,即将获取的要素的值赋给该溯源要素模型,生成该待溯源SQL对应的单表溯源要素模型。
进一步地,在示例实施例中,若待溯源SQL的语法结构类型为多表类型,则基于多表类型确定预定要素信息中的多表溯源要素,多表溯源要素包括多表关联要素,基于多表溯源要素,构建待溯源SQL对应的多表溯源要素模型;若待溯源SQL的语法结构类型为多层嵌套类型,基于多层嵌套类型确定预定要素信息中的嵌套溯源要素,嵌套溯源要素包括要素所属层级信息;基于嵌套溯源要素,构建待溯源SQL对应的多层嵌套溯源要素模型。
在步骤S330中,基于语法结构类型对应的SQL语法结构,对溯源要素模型中的各个溯源要素进行拼接,生成所述待溯源SQL对应的反向SQL。
在示例实施例中,确定待溯源SQL的语法结构类型对应的SQL语法结构,基于待溯源SQL的语法结构类型对应的SQL语法结构,对溯源要素模型中的各个溯源要素进行拼接,生成待溯源SQL对应的反向SQL。
举例而言,预先设置各种语法结构类型对应的SQL语法结构,若待溯源SQL的语法结构类型为单表类型,则基于单表类型的SQL语法结构对单表溯源要素模型中的各个溯源要素进行拼接,生成待溯源SQL对应的反向SQL。若待溯源SQL的语法结构类型为多表类型,预定要素信息包括多表关联要素信息,则基于多表类型的SQL语法结构以及多表关联要素信息对多表溯源要素模型中的各个溯源要素进行拼接;生成待溯源SQL对应的各个数据表的反向SQL。若待溯源SQL的语法结构类型为多层嵌套类型,预定要素信息包括要素所属层级信息,基于多层嵌套类型的SQL语法结构以及要素所属层级信息,逐层对多层嵌套溯源要素模型中的各个溯源要素进行拼接;生成待溯源SQL对应的各个层级的反向SQL。
根据图3的示例实施例中的技术方案,基于语法结构类型以及预定要素信息,构建待溯源SQL对应的溯源要素模型,能够高效准确地确定待溯源SQL的关键要素;基于语法结构类型对应的SQL语法结构对溯源要素模型中的各个溯源要素进行拼接,生成待溯源SQL对应的反向SQL,能够高效地生成待溯源SQL对应的反向SQL,从而能够基于反向SQL快速准确定位执行结果中的数据的来源;再一方面,由于SQL能够对数据表的行级别的数据进行操作,从而能够支持行级别的数据溯源。
图4为根据本说明书实施例提供的对多表溯源要素模型中的各个溯源要素进行拼接的流程示意图。
参照图4所示,在步骤S410中,基于抽象语法树,确定多表关联要素信息对应的表关联条件。
在示例实施例中,从待溯源SQL的解析结构即抽象语法树中,确定多表关联要素信息对应的表关联条件。例如,多表关联要素为join要素和where或on要素,待溯源SQL为“select student.name from student left join score on student.id=score.student_id”,则基于多表关联要素信息,从待溯源SQL中确定对应的表关联条件,例如“join score on student.id=score.student_id”。
在步骤S420中,基于表关联条件,确定针对多个数据表中各个数据表的反向SQL的子查询条件。
在示例实施例中,表关联条件涉及多个数据表,基于待溯源SQL中的表关联条件,确定针对各个数据表的反向SQL的子查询条件。
举例而言,设待溯源SQL为“select student.name from student left joinscore on student.id=score.student_id”,则表关联条件为“join score onstudent.id=score.student_id”,涉及的数据表包括数据表student和数据表score,针对数据表student,生成反向SQL的子查询条件为“select student_id from score”;针对数据表score,生成的子查询条件为“select id from student”。
在步骤S430中,基于针对各个数据表的反向SQL的子查询条件以及多表类型的SQL语法结构,对多表溯源要素模型中各个数据表对应的溯源要素进行拼接。
在示例实施例中,确定多表溯源要素模型中各个数据表对应的溯源要素,基于针对各个数据表的反向SQL的子查询条件以及多表类型的SQL语法结构,对多表溯源要素模型中各个数据表对应的溯源要素进行拼接,生成待溯源SQL对应的各个数据表的反向SQL。
举例而言,设待溯源SQL为“select student.name from student left joinscore on student.id=score.student_id”,针对数据表student,反向SQL的子查询条件为“select student_id from score”,则针对数据表student,拼接后生成的反向SQL为“select student.*from student where student.id in(select student_id fromscore)”;针对数据表score,反向SQL的子查询条件为“select id from student”,则针对数据表score,拼接后生成的反向SQL为“select score.*from score wherescore.student_id in(select id from student)”。
根据图4的示例实施例中的技术方案,一方面,基于抽象语法树,确定多表关联要素信息对应的表关联条件,基于表关联条件确定针对多个数据表中各个数据表的反向SQL的子查询条件,能够准确地确定针对各个数据表的反向SQL的子查询条件;另一方面,基于针对各个数据表的反向SQL的子查询条件以及多表类型的SQL语法结构,对多表溯源要素模型中各个数据表对应的溯源要素进行拼接,能够生成待溯源SQL对应的各个数据表的反向SQL,从而能够基于反向SQL快速准确定位多表类型的SQL的执行结果中的数据的来源。
图5为本说明书实施例提供的对多层嵌套溯源要素模型中的要素进行拼接的流程示意图。
参照图5所示,在步骤S510中,基于要素所属层级信息确定多层嵌套溯源要素模型中的各个溯源要素的层级。
在示例实施例中,从待溯源SQL的解析结构中获取各个要素的要素所属层级信息,基于要素所属层级信息确定多层嵌套溯源要素模型中的各个溯源要素的层级。例如,基于溯源要素的标识信息获取与溯源要素对应的要素所属层级信息,基于该要素所属层级信息确定该溯源要素的层级。
在步骤S520中,按照从内层到外层的顺序,基于各个层级的SQL的语法结构,确定各个层级的SQL的语法结构类型。
在示例实施例中,设最内层的层级为1,按照从内层到外层的顺序层级依次递增1。按照从内存到外层的顺序,确定待溯源SQL中各个层级的SQL,基于各个层级的SQL的SQL语法结构,确定各个层级的SQL的语法结构类型。语法结构类型为单表类型、多表类型以及多层嵌套类型中的一种类型。
举例而言,设某一层级的SQL为查询SQL,基于该查询SQL的语法结构,确定该查询SQL的目标要素为数据表的表名和select关键字,获取该查询SQL中的数据表的表名和select关键字,若数据表的表名为1个并且select关键字为1个,则确定该查询SQL对应的语法结构类型为单表类型;若数据表的表名为2个以上并且select关键字为1个,则确定该查询SQL对应的语法结构类型为多表类型;若select关键字为2个以上,则确定该查询SQL对应的语法结构为多层嵌套类型。
在步骤S530中,基于各个层级的SQL的语法结构类型,对各个层级对应的多层嵌套溯源要素模型中的溯源要素进行拼接,生成待溯源SQL对应的各个层级的反向SQL。
在示例实施例中,基于各个层级的SQL的语法结构类型,确定各个层级的SQL对应的语法结构,基于各个层级的SQL的语法结构,对各个层级对应的多层嵌套溯源要素模型中的溯源要素进行拼接,生成待溯源SQL对应的各个层级的反向SQL。
举例而言,若内层SQL的语法结构类型为单表类型,则基于单表类型的SQL语法结构对该层级对应的多层嵌套溯源要素模型中的溯源要素进行拼接,生成该内层SQL对应的反向SQL。若该内层SQL的语法结构类型为多表类型,则基于多表类型的SQL语法结构以及多表关联要素信息对该层级对应的多层嵌套溯源要素模型中的溯源要素进行拼接;生成该内层SQL对应的反向SQL。
例如,设待溯源SQL为“select student.age,temp.value from student,(selectvalue,student_id from score where score.grade=60)where student.id=temp2.student_id”,其中,括号内为内层SQL,该内层SQL对应的反向SQL为“select*fromscore where score.grade=60(内层)”;外层SQL对应的反向SQL为“select*from studentwhere student.id in(select student_id from score where score.grade=60)(外层)”。
根据图5的示例实施例中的技术方案,一方面,基于要素所属层级信息确定多层嵌套溯源要素模型中的各个溯源要素的层级,能够准确地确定要素模型中各个溯源要素的层级;另一方面,按照从内层到外层的顺序,基于各个层级的SQL的语法结构,确定各个层级的语法结构类型,能够准确地确定各个层级的SQL的语法结构类型;再一方面,基于各个层级的SQL的语法结构类型,对各个层级对应的多层嵌套溯源要素模型中的溯源要素进行拼接,能够生成待溯源SQL的各个层级对应的反向SQL,从而能够基于反向SQL快速准确定位多层嵌套的SQL的执行结果中的数据的来源。
进一步地,在示例实施例中,将内层的SQL子查询作为临时表,对外层对应的多层嵌套溯源要素模型中的溯源要素进行拼接;将拼接后的反向SQL中的临时表替换为SQL子查询。例如,从多层嵌套类型的待溯源SQL的最内层开始,依次构建各个层级的SQL的反向SQL,若内层SQL子查询为单表类型SQL,则调用单表类型SQL的反向SQL生成处理逻辑,否则调用多表类型SQL的反向SQL生成处理逻辑;构建外层时,将内层SQL子查询当作临时表,直到整个多层嵌套查询被拆分成单表查询;然后,将临时表替换成多层嵌套溯源要素模型中的原层级的SQL部分。
举例而言,设待溯源SQL为“select student.age,temp.value from student,(select value,student_id from score where score.grade=60)temp wherestudent.id=temp2.student_id”,其中,括号内为内层SQL,将该内层SQL作为临时表temp,该内层SQL对应的反向SQL为“select*from score where score.grade=60(内层)”;外层SQL对应的反向SQL为“select*from student where student.id in(select student_idfrom score where score.grade=60)(外层)”,其中,括号内为临时表对应的内层SQL。
根据上述示例实施例中的技术方案,通过将内存的子查询SQL作为临时表,构建外层的反向SQL,能够减少构建外层的反向SQL的处理数据,提高生成反向SQL的处理效率。
图6为本说明书实施例提供的另一种数据溯源方法的流程示意图。
参照图6所示,在步骤S605中,输入待溯源SQL。
在示例实施例中,可以通过图形用户界面输入SQL,例如通过SQL数据库的图形用户界面输入待溯源SQL。例如待溯源SQL为“CREATE TABLE t1(id int,name varchar)”。
需要说明的是,待溯源SQL可以为MySQL,也可以为其他适当的SQL例如HiveSQL、OdpsSQL、FlinkSQL、SQLServer、SparkSQL等SQL方言。
在步骤S610中,对待溯源SQL进行解析。
在示例实施例中,通过Antlr语法分析器对待溯源SQL进行解析。Antlr语法分析器可定义识别字符流的词法规则和用于解释符号流的语法分析规则,通过.g4文件,antlr语法分析器自动生成相应的词法分析器Lexer和语法分析器Parser;通过词法分析器Lexer和语法分析器Parser可将待溯源SQL转换成AST抽象语法树(Abstract Syntax Tree)。
举例而言,设输入的待溯源SQL为“CREATE TABLE t1(id int,name varchar)”,通过Antlr语法分析器对待溯源SQL进行解析,生成图7所示的抽象语法树。
需要说明的是,虽然以Antlr语法分析器为例进行了说明,但是本领域技术人员应该理解的是,还可以采用其他适当的语法分析器例如FastSql AST或Calcite AST等对待溯源SQL进行解析,这同样在本说明书实施例的范围内。
在步骤S615中,获取解析结果中的表名以及对应的元数据。
在示例实施例中,根据抽象语法树对应的SQL语法规则,从抽象语法树中能够获取到待溯源SQL结构中的关键要素,例如表名、字段定义、Join关系等。例如,根据Antlr的g4文件中的SQL语法规则,从抽象语法树中能够获取到待溯源SQL结构中的关键要素。g4文件是Antlr的语法规则文件,包含词法规则和语法规则。
进一步地,在示例实施例中,获取数据表对应的元数据例如数据表的各个字段。通过获取数据表对应的元数据,能够用于补充反向SQL的填充要素“*”,例如适配反向SQL中的“select*”场景,通过数据表的对应字段填充该场景下的填充要素“*”。
在步骤S620中,根据语法结构对待溯源SQL进行分类。
在示例实施例中,参照上表1所示,语法结构类型为单表类型、多表类型以及多层嵌套类型中的一种类型。以待溯源SQL为MySQL数据库对应的SQL为例,根据MySQL的语法结构,对待溯源SQL进行分类。
需要说明的是,待溯源SQL可以为MySQL,也可以为其他适当的SQL例如HiveSQL、OdpsSQL、FlinkSQL、SQLServer、SparkSQL等SQL。
在步骤S625中,确定待溯源SQL是否为多层嵌套模型。
在示例实施例中,基于待溯源SQL的语法结构,确定待溯源SQL的目标要素,从待溯源SQL的抽象语法树中获取待溯源SQL的目标要素,基于获取的目标要素的数量确定待溯源SQL对应的语法结构类型。
例如,设待溯源SQL为查询SQL,基于查询SQL的语法结构,例如下文所示的查询语法结构,确定待溯源SQL的目标要素为数据表的表名和select关键字,获取待溯源SQL中的数据表的表名和select关键字,若select关键字为2个以上,则确定待溯源SQL对应的语法结构为多层嵌套类型。
在步骤S630中,构建多层嵌套类型的待溯源SQL的反向SQL。
在示例实施例中,通过下式步骤构建多层嵌套类型的待溯源SQL的反向SQL。(1)从待溯源SQL的解析结果中获取表名、字段、所属层级(最内层子查询定义层级为1,依次递加类推直到最外层)、所属层级原SQL等,从元数据中获取各表对应全部字段。(2)基于多层嵌套类型确定预定要素信息中的嵌套溯源要素,嵌套溯源要素包括要素所属层级信息;基于嵌套溯源要素,构建多层嵌套类型的待溯源SQL对应的多层嵌套溯源要素模型即TraceFactor模型。(3)从最内层开始,依次构建各个层级的反向SQL,若内层SQL子查询为单表类型SQL,则调用单表类型SQL的反向SQL生成处理逻辑,否则调用多表类型的反向SQL生成处理逻辑;构建外层时,将内层SQL子查询当作临时表,直到整个多层嵌套查询被拆分成单表查询;然后,将临时表替换成多层嵌套溯源要素模型的原层级的SQL部分。
举例而言,设设待溯源SQL为“select student.age,temp.value from student,(select value,student_id from score where score.grade=60)temp wherestudent.id=temp2.student_id”,其中,括号内为内层SQL,将该内层SQL作为临时表temp,该内层SQL对应的反向SQL为“select*from score where score.grade=60(内层)”;外层SQL对应的反向SQL为“select*from student where student.id in(select student_idfrom score where score.grade=60)(外层)”,其中,括号内为临时表对应的内层SQL。
在步骤S635中,确定待溯源SQL是否为多表类型。
在示例实施例中,若数据表的表名为2个以上并且select关键字为1个,则确定待溯源SQL对应的语法结构类型为多表类型。若数据表的表名为1个并且select关键字为1个,则确定待溯源SQL对应的语法结构类型为单表类型。
在步骤S640中,构建多表类型的待溯源SQL的反向SQL。
在示例实施例中,通过下述步骤构建多表类型的待溯源SQL的反向SQL。(1)从待溯源SQL的解析结果中获取表名、join后的表名、join条件等,从各个数据表的元数据中获取各个数据表对应的字段。(2)基于多表类型确定预定要素信息中的多表溯源要素,多表溯源要素包括多表关联要素,基于多表溯源要素,构建多表类型的待溯源SQL的多表要素模型。(3)基于待溯源SQL中的表关联条件,确定针对各个数据表的反向SQL的子查询条件。基于针对各个数据表的反向SQL的子查询条件以及多表类型的SQL语法结构,对多表溯源要素模型中各个数据表对应的溯源要素进行拼接,生成待溯源SQL对应的各个数据表的反向SQL。
例如,设待溯源SQL为“select student.name from student left join scoreon student.id=score.student_id”,针对数据表student,反向SQL的子查询条件为“select student_id from score”,则针对数据表student,拼接后生成的反向SQL为“select student.*from student where student.id in(select student_id fromscore)”;针对数据表score,反向SQL的子查询条件为“select id from student”,则针对数据表score,拼接后生成的反向SQL为“select score.*from score wherescore.student_id in(select id from student)”。
在步骤S645中,构建单表类型的待溯源SQL的反向SQL。
在示例实施例中,通过下述步骤构建单表类型的待溯源SQL的反向SQL。(1)从待溯源SQL的解析结果中获取表名、join后的表名、join条件等,从元数据中获取各表对应的字段。(2)基于单表类型确定预定要素信息中的单表溯源要素,构建待溯源SQL对应的单表溯源要素模型。(3)基于单表类型的SQL语法结构对单表溯源要素模型中的各个溯源要素进行拼接,生成待溯源SQL对应的反向SQL。
例如,设待溯源SQL为单表类型,如select id from student where name='jack',预定要素包括数据操作类型select、表名student、查询条件where、字段name,基于单表类型的SQL语法结构对预定要素信息中的各个要素进行拼接,生成该待溯源SQL对应的反向SQL即select*from student where name='jack',其中,“*”为反向SQL中的填充要素,表示可以替换为对应的数据表中的字段。
在步骤S650中,输出反向SQL。
在示例实施例中,在图形用户界面上输出反向SQL。
在步骤S655中,根据反向SQL进行SQL溯源。
在示例实施例中,反向SQL可以包括填充要素例如符号“*”,从数据表的元数据中获取数据表对应的字段;将获取的字段填充到反向SQL的填充要素;执行反向SQL,对待溯源SQL对应的执行结果进行数据溯源处理。
举例而言,设数据表为学生表student,数据表的字段包括唯一标识ID、姓名name、班级class等,设待溯源SQL为单表类型,如select id from student where name='jack',该待溯源SQL的查询结果为姓名为“jack”的唯一标识ID,反向SQL即select*fromstudent where name='jack',响应于对待溯源SQL的数据溯源请求,执行该反向SQL,得到该反向SQL的执行结果,即数据溯源处理的结果,该反向SQL的执行结果为学生表student中姓名为“jack”的一行记录。
根据图6的示例实施例中的技术方案,一方面,通过对待溯源SQL进行解析得到对应的抽象语法树,基于抽象语法树,获取待溯源SQL对应的预定要素信息,能够准确地确定待溯源SQL中的关键要素;另一方面,基于预定要素信息以及待溯源SQL的语法结构,构建待溯源SQL对应的反向SQL,基于反向SQL,对待溯源SQL对应的执行结果进行数据溯源处理,由于反向SQL能够快速准确地查询到待溯源SQL的执行结果的原始数据,从而能够快速准确地定位执行结果中的数据的来源;再一方面,由于在需要时才对执行结果中的数据进行数据溯源处理,从而能够降低数据溯源处理占用的存储空间。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。”
下面,将结合图8以及图1所示系统架构,对本说明书实施例提供的数据溯源装置进行详细介绍。需要说明的是,图8中的数据溯源装置,用于执行本说明书图2-图7所示实施例的方法,为了便于说明,仅示出了与本说明书实施例相关的部分,具体技术细节未揭示的,请参照本说明书图2-图7所示的实施例。
请参见图8,为本说明书实施例提供了一种数据溯源装置的结构示意图。如图8所示,本说明书实施例的数据溯源装置800可以包括:
解析模块810,用于对待溯源结构化查询语言SQL进行解析,得到所述待溯源SQL对应的抽象语法树;
要素获取模块820,用于基于所述抽象语法树,获取所述待溯源SQL对应的预定要素信息;
反向函数构建模块830,用于基于所述预定要素信息以及所述待溯源SQL的语法结构,构建所述待溯源SQL对应的反向SQL;
溯源处理模块840,用于基于所述反向SQL进行数据溯源处理。
在一些示例实施例中,基于上述方案,所述反向函数构建模块830,包括:
结构类型确定单元,用于基于所述待溯源SQL的语法结构,确定所述待溯源SQL对应的语法结构类型;
反向SQL确定单元,用于基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的反向SQL。
在一些示例实施例中,基于上述方案,所述语法结构类型为单表类型、多表类型以及多层嵌套类型中的一种类型。
在一些示例实施例中,基于上述方案,所述反向SQL确定单元,包括:
要素模型构建单元,用于基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型;
拼接单元,用于基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,生成所述待溯源SQL对应的反向SQL。
在一些示例实施例中,基于上述方案,所述语法结构类型为单表类型,所述要素模型构建单元被配置为:
基于所述单表类型确定所述预定要素信息中的单表溯源要素;
基于所述单表溯源要素,构建所述待溯源SQL对应的单表溯源要素模型,
所述拼接单元被配置为:
基于所述单表类型的SQL语法结构对所述单表溯源要素模型中的各个溯源要素进行拼接,生成所述待溯源SQL对应的反向SQL。
在一些示例实施例中,基于上述方案,所述语法结构类型为多表类型,所述要素模型构建单元被配置为:
基于所述多表类型确定所述预定要素信息中的多表溯源要素,所述多表溯源要素包括多表关联要素;
基于所述多表溯源要素,构建所述待溯源SQL对应的多表溯源要素模型,
所述拼接单元被配置为:
基于所述多表类型的SQL语法结构以及所述多表关联要素,对所述多表溯源要素模型中的各个溯源要素进行拼接。
在一些示例实施例中,基于上述方案,所述拼接单元还被配置为:
基于所述抽象语法树,确定所述多表关联要素对应的表关联条件;
基于所述表关联条件,确定针对多个数据表中各个数据表的反向SQL的子查询条件;
基于针对各个所述数据表的反向SQL的子查询条件以及所述多表类型的SQL语法结构,对所述多表溯源要素模型中各个所述数据表对应的溯源要素进行拼接,
所述反向SQL确定单元被配置为:
生成所述待溯源SQL对应的各个数据表的反向SQL。
在一些示例实施例中,基于上述方案,所述语法结构类型为多层嵌套类型,所述要素模型构建单元被配置为:
基于所述多层嵌套类型确定所述预定要素信息中的嵌套溯源要素,所述嵌套溯源要素包括要素所属层级信息;
基于所述嵌套溯源要素,构建所述待溯源SQL对应的多层嵌套溯源要素模型,
所述拼接单元被配置为:
基于所述多层嵌套类型的SQL语法结构以及所述要素所属层级信息,逐层对所述多层嵌套溯源要素模型中的各个溯源要素进行拼接,
所述反向SQL确定单元被配置为:
生成所述待溯源SQL对应的各个层级的反向SQL。
在一些示例实施例中,基于上述方案,所述拼接单元还被配置为:
基于所述要素所属层级信息确定所述多层嵌套溯源要素模型中的各个溯源要素的层级;
按照从内层到外层的顺序,基于各个层级的SQL的语法结构,确定各个层级的SQL的语法结构类型;
基于各个层级的SQL的语法结构类型,对各个层级对应的所述多层嵌套溯源要素模型中的溯源要素进行拼接。
在一些示例实施例中,基于上述方案,所述拼接单元还被配置为:
将内层的SQL子查询作为临时表,对外层对应的所述多层嵌套溯源要素模型中的溯源要素进行拼接;
将拼接后的反向SQL中的所述临时表替换为所述SQL子查询。
在一些示例实施例中,基于上述方案,所述反向SQL包括填充要素,所述填充要素用于替换对应的数据表中的字段,所述溯源处理模块840被配置为:
从所述数据表的元数据中获取所述数据表对应的字段;
将所述字段填充到所述反向SQL的所述填充要素;
执行所述反向SQL,对所述待溯源SQL对应的执行结果进行数据溯源处理。
在一些示例实施例中,基于上述方案,所述解析模块810被配置为:
基于SQL语言的词法规则对所述待溯源SQL进行词法分析,得到所述待溯源SQL对应的符号流;
基于所述SQL语言的语法规则对所述符号流进行语法分析,生成所述待溯源SQL对应的抽象语法树。
在一些示例实施例中,基于上述方案,所述数据溯源装置800还包括:
展示模块,用于通过数据血缘图谱的方式,对所述数据溯源处理的处理结果进行展示。
根据本说明书图8的实施例的技术方案,一方面,通过对待溯源SQL进行解析得到对应的抽象语法树,基于抽象语法树,获取待溯源SQL对应的预定要素信息,能够准确地确定待溯源SQL中的关键要素;另一方面,基于预定要素信息以及待溯源SQL的语法结构,构建待溯源SQL对应的反向SQL,基于反向SQL,对待溯源SQL对应的执行结果进行数据溯源处理,由于反向SQL能够快速准确地查询到待溯源SQL的执行结果的原始数据,从而能够快速准确地定位执行结果中的数据的来源;再一方面,由于在需要时才对执行结果中的数据进行数据溯源处理,从而能够降低数据溯源处理占用的存储空间。
上述为本说明书实施例的一种数据溯源装置的示意性方案。需要说明的是,该数据溯源装置的技术方案与上述的数据溯源方法的技术方案属于同一构思,数据溯源装置的技术方案未详细描述的细节内容,均可以参见上述数据溯源方法的技术方案的描述。
本说明书实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条程序指令,所述程序指令适于由处理器加载并执行如上述图2~图7所示实施例的方法步骤,具体执行过程可以参见图2~图7所示实施例的具体说明,在此不进行赘述。
本说明书实施例还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由处理器加载并执行如上述图2~图7所示实施例的所述数据溯源方法,具体执行过程可以参见图2~图7所示实施例的具体说明,在此不进行赘述。
请参考图9,其示出了本说明书一个示例性实施例提供的电子设备的结构示意图。本说明书中的电子设备可以包括一个或多个如下部件:处理器910、存储器920、输入装置930、输出装置940和总线950。处理器910、存储器920、输入装置930和输出装置940之间可以通过总线950连接。
处理器910可以包括一个或者多个处理核心。处理器910利用各种接口和线路连接整个电子设备内的各个部分,通过运行或执行存储在存储器920内的指令、程序、代码集或指令集,以及调用存储在存储器920内的数据,执行电子设备900的各种功能和处理数据。可选地,处理器910可以采用数字信号处理(digital signal processing,DSP)、现场可编程门阵列(field-programmable gate array,FPGA)、可编程逻辑阵列(programmable logicArray,PLA)中的至少一种硬件形式来实现。处理器910可集成中心处理器(centralprocessing unit,CPU)、图像处理器(graphics processing unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器910中,单独通过一块通信芯片进行实现。
存储器920可以包括随机存储器(random Access Memory,RAM),也可以包括只读存储器(read-only memory,ROM)。可选地,该存储器920包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器920可用于存储指令、程序、代码、代码集或指令集。存储器920可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(例如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等,该操作系统可以是安卓(Android)系统,包括基于Android系统深度开发的系统、IOS系统,包括基于IOS系统深度开发的系统或其它系统。
为了使操作系统能够区分第三方应用程序的具体应用场景,需要打通第三方应用程序与操作系统之间的数据通信,使得操作系统能够随时获取第三方应用程序当前的场景信息,进而基于当前场景进行针对性的系统资源适配。
其中,输入装置930用于接收输入的指令或数据,输入装置930包括但不限于键盘、鼠标、摄像头、麦克风或触控设备。输出装置940用于输出指令或数据,输出装置940包括但不限于显示设备和扬声器等。在一个示例中,输入装置930和输出装置940可以合设,输入装置930和输出装置940为触摸显示屏。
除此之外,本领域技术人员可以理解,上述附图所示出的电子设备的结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。比如,电子设备中还包括射频电路、输入单元、传感器、音频电路、无线保真(Wireless Fidelity,WiFi)模块、电源、蓝牙模块等部件,在此不再赘述。
在图9所示的电子设备中,处理器910可以用于调用存储器920中存储的数据溯源应用程序,并具体执行以下操作:
对待溯源结构化查询语言SQL进行解析,得到所述待溯源SQL对应的抽象语法树;
基于所述抽象语法树,获取所述待溯源SQL对应的预定要素信息;
基于所述预定要素信息以及所述待溯源SQL的语法结构,构建所述待溯源SQL对应的反向SQL;
基于所述反向SQL进行数据溯源处理。
在一些示例实施例中,处理器910在执行所述基于所述预定要素信息以及所述待溯源SQL的语法结构,构建所述待溯源SQL对应的反向SQL时,具体执行以下操作:
基于所述待溯源SQL的语法结构,确定所述待溯源SQL对应的语法结构类型;
基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的反向SQL。
在一些示例实施例中,所述语法结构类型为单表类型、多表类型以及多层嵌套类型中的一种类型。
在一些示例实施例中,处理器910在执行所述基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的反向SQL时,具体执行以下操作:
基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型;
基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,生成所述待溯源SQL对应的反向SQL。
在一些示例实施例中,所述语法结构类型为单表类型,处理器910在执行所述基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型时,具体执行以下操作:
基于所述单表类型确定所述预定要素信息中的单表溯源要素;
基于所述单表溯源要素,构建所述待溯源SQL对应的单表溯源要素模型,
所述基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,包括:
基于所述单表类型的SQL语法结构对所述单表溯源要素模型中的各个溯源要素进行拼接,生成所述待溯源SQL对应的反向SQL。
在一些示例实施例中,所述语法结构类型为多表类型,处理器910在执行所述基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型时,具体执行以下操作:
基于所述多表类型确定所述预定要素信息中的多表溯源要素,所述多表溯源要素包括多表关联要素;
基于所述多表溯源要素,构建所述待溯源SQL对应的多表溯源要素模型,
所述基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,包括:
基于所述多表类型的SQL语法结构以及所述多表关联要素,对所述多表溯源要素模型中的各个溯源要素进行拼接。
在一些示例实施例中,处理器910在执行所述基于所述多表类型的SQL语法结构以及所述多表关联要素,对所述多表溯源要素模型中的各个溯源要素进行拼接时,具体执行以下操作:
基于所述抽象语法树,确定所述多表关联要素对应的表关联条件;
基于所述表关联条件,确定针对多个数据表中各个数据表的反向SQL的子查询条件;
基于针对各个所述数据表的反向SQL的子查询条件以及所述多表类型的SQL语法结构,对所述多表溯源要素模型中各个所述数据表对应的溯源要素进行拼接,
所述生成所述待溯源SQL对应的反向SQL,包括:
生成所述待溯源SQL对应的各个数据表的反向SQL。
在一些示例实施例中,所述语法结构类型为多层嵌套类型,处理器1110在执行所述基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型时,具体执行以下操作:
基于所述多层嵌套类型确定所述预定要素信息中的嵌套溯源要素,所述嵌套溯源要素包括要素所属层级信息;
基于所述嵌套溯源要素,构建所述待溯源SQL对应的多层嵌套溯源要素模型,
所述基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,包括:
基于所述多层嵌套类型的SQL语法结构以及所述要素所属层级信息,逐层对所述多层嵌套溯源要素模型中的各个溯源要素进行拼接,
所述生成所述待溯源SQL对应的反向SQL,包括:
生成所述待溯源SQL对应的各个层级的反向SQL。
在一些示例实施例中,处理器910在执行所述基于所述多层嵌套类型的SQL语法结构以及所述要素所属层级信息,逐层对所述多层嵌套溯源要素模型中的各个溯源要素进行拼接时,具体执行以下操作:
基于所述要素所属层级信息确定所述多层嵌套溯源要素模型中的各个溯源要素的层级;
按照从内层到外层的顺序,基于各个层级的SQL的语法结构,确定各个层级的SQL的语法结构类型;
基于各个层级的SQL的语法结构类型,对各个层级对应的所述多层嵌套溯源要素模型中的溯源要素进行拼接。
在一些示例实施例中,处理器910在执行所述基于各个层级的SQL的语法结构类型,对各个层级对应的所述多层嵌套溯源要素模型中的溯源要素进行拼接时,具体执行以下操作:
将内层的SQL子查询作为临时表,对外层对应的所述多层嵌套溯源要素模型中的溯源要素进行拼接;
将拼接后的反向SQL中的所述临时表替换为所述SQL子查询。
在一些示例实施例中,所述反向SQL包括填充要素,所述填充要素用于替换对应的数据表中的字段,处理器910在执行所述基于所述反向SQL进行数据溯源处理时,具体执行以下操作:
从所述数据表的元数据中获取所述数据表对应的字段;
将所述字段填充到所述反向SQL的所述填充要素;
执行所述反向SQL,对所述待溯源SQL对应的执行结果进行数据溯源处理。
在一些示例实施例中,处理器910在执行所述对待溯源结构化查询语言SQL进行解析,得到所述待溯源SQL对应的抽象语法树时,具体执行以下操作:
基于SQL语言的词法规则对所述待溯源SQL进行词法分析,得到所述待溯源SQL对应的符号流;
基于所述SQL语言的语法规则对所述符号流进行语法分析,生成所述待溯源SQL对应的抽象语法树。
在一些示例实施例中,处理器910还执行以下操作:
通过数据血缘图谱的方式,对所述数据溯源处理的处理结果进行展示。
上述为本说明书实施例的一种电子设备的示意性方案。需要说明的是,该电子设备的技术方案与上述的数据溯源方法的技术方案属于同一构思,电子设备的技术方案未详细描述的细节内容,均可以参见上述数据溯源方法的技术方案的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,计算机程序的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本说明书较佳实施例而已,当然不能以此来限定本说明书之权利范围,因此依本说明书权利要求所作的等同变化,仍属本说明书所涵盖的范围。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
Claims (17)
1.一种数据溯源方法,包括:
对待溯源结构化查询语言SQL进行解析,得到所述待溯源SQL对应的抽象语法树;
基于所述抽象语法树,获取所述待溯源SQL对应的预定要素信息;
基于所述预定要素信息以及所述待溯源SQL的语法结构,构建所述待溯源SQL对应的反向SQL;
基于所述反向SQL进行数据溯源处理。
2.根据权利要求1所述的方法,其中,所述基于所述预定要素信息以及所述待溯源SQL的语法结构,构建所述待溯源SQL对应的反向SQL,包括:
基于所述待溯源SQL的语法结构,确定所述待溯源SQL对应的语法结构类型;
基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的反向SQL。
3.根据权利要求2所述的方法,其中,所述语法结构类型为单表类型、多表类型以及多层嵌套类型中的一种类型。
4.根据权利要求3所述的方法,其中,所述基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的反向SQL,包括:
基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型;
基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,生成所述待溯源SQL对应的反向SQL。
5.根据权利要求4所述的方法,其中,所述语法结构类型为单表类型,所述基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型,包括:
基于所述单表类型确定所述预定要素信息中的单表溯源要素;
基于所述单表溯源要素,构建所述待溯源SQL对应的单表溯源要素模型,
所述基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,包括:
基于所述单表类型的SQL语法结构对所述单表溯源要素模型中的各个溯源要素进行拼接,生成所述待溯源SQL对应的反向SQL。
6.根据权利要求4所述的方法,其中,所述语法结构类型为多表类型,所述基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型,包括:
基于所述多表类型确定所述预定要素信息中的多表溯源要素,所述多表溯源要素包括多表关联要素;
基于所述多表溯源要素,构建所述待溯源SQL对应的多表溯源要素模型,
所述基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,包括:
基于所述多表类型的SQL语法结构以及所述多表关联要素,对所述多表溯源要素模型中的各个溯源要素进行拼接。
7.根据权利要求6所述的方法,其中,所述基于所述多表类型的SQL语法结构以及所述多表关联要素,对所述多表溯源要素模型中的各个溯源要素进行拼接,包括:
基于所述抽象语法树,确定所述多表关联要素对应的表关联条件;
基于所述表关联条件,确定针对多个数据表中各个数据表的反向SQL的子查询条件;
基于针对各个所述数据表的反向SQL的子查询条件以及所述多表类型的SQL语法结构,对所述多表溯源要素模型中各个所述数据表对应的溯源要素进行拼接,
所述生成所述待溯源SQL对应的反向SQL,包括:
生成所述待溯源SQL对应的各个数据表的反向SQL。
8.根据权利要求4所述的方法,其中,所述语法结构类型为多层嵌套类型,所述基于所述语法结构类型以及所述预定要素信息,构建所述待溯源SQL对应的溯源要素模型,包括:
基于所述多层嵌套类型确定所述预定要素信息中的嵌套溯源要素,所述嵌套溯源要素包括要素所属层级信息;
基于所述嵌套溯源要素,构建所述待溯源SQL对应的多层嵌套溯源要素模型,
所述基于所述语法结构类型对应的SQL语法结构,对所述溯源要素模型中的各个溯源要素进行拼接,包括:
基于所述多层嵌套类型的SQL语法结构以及所述要素所属层级信息,逐层对所述多层嵌套溯源要素模型中的各个溯源要素进行拼接,
所述生成所述待溯源SQL对应的反向SQL,包括:
生成所述待溯源SQL对应的各个层级的反向SQL。
9.根据权利要求8所述的方法,其中,所述基于所述多层嵌套类型的SQL语法结构以及所述要素所属层级信息,逐层对所述多层嵌套溯源要素模型中的各个溯源要素进行拼接,包括:
基于所述要素所属层级信息确定所述多层嵌套溯源要素模型中的各个溯源要素的层级;
按照从内层到外层的顺序,基于各个层级的SQL的语法结构,确定各个层级的SQL的语法结构类型;
基于各个层级的SQL的语法结构类型,对各个层级对应的所述多层嵌套溯源要素模型中的溯源要素进行拼接。
10.根据权利要求9所述方法,其中,所述基于各个层级的SQL的语法结构类型,对各个层级对应的所述多层嵌套溯源要素模型中的溯源要素进行拼接,包括:
将内层的SQL子查询作为临时表,对外层对应的所述多层嵌套溯源要素模型中的溯源要素进行拼接;
将拼接后的反向SQL中的所述临时表替换为所述SQL子查询。
11.根据权利要求1至10中任一项所述的方法,其中,所述反向SQL包括填充要素,所述填充要素用于替换对应的数据表中的字段,所述基于所述反向SQL进行数据溯源处理,包括:
从所述数据表的元数据中获取所述数据表对应的字段;
将所述字段填充到所述反向SQL的所述填充要素;
执行所述反向SQL,对所述待溯源SQL对应的执行结果进行数据溯源处理。
12.根据权利要求1至10中任一项所述的方法,其中,所述对待溯源结构化查询语言SQL进行解析,得到所述待溯源SQL对应的抽象语法树,包括:
基于SQL语言的词法规则对所述待溯源SQL进行词法分析,得到所述待溯源SQL对应的符号流;
基于所述SQL语言的语法规则对所述符号流进行语法分析,生成所述待溯源SQL对应的抽象语法树。
13.根据权利要求1至10中任一项所述的方法,其中,所述方法还包括:
通过数据血缘图谱的方式,对所述数据溯源处理的处理结果进行展示。
14.一种数据溯源装置,包括:
解析模块,用于对待溯源结构化查询语言SQL进行解析,得到所述待溯源SQL对应的抽象语法树;
要素获取模块,用于基于所述抽象语法树,获取所述待溯源SQL对应的预定要素信息;
反向函数构建模块,用于基于所述预定要素信息以及所述待溯源SQL的语法结构,构建所述待溯源SQL对应的反向SQL;
溯源处理模块,用于基于所述反向SQL进行数据溯源处理。
15.一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~13中任一项所述方法的步骤。
16.一种电子设备,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~13中任一项所述方法的步骤。
17.一种包含指令的计算机程序产品,当所述计算机程序产品在计算机或处理器上运行时,使得所述计算机或处理器执行如权利要求1-13任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310096748.5A CN116127153A (zh) | 2023-01-18 | 2023-01-18 | 数据溯源方法、装置、介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310096748.5A CN116127153A (zh) | 2023-01-18 | 2023-01-18 | 数据溯源方法、装置、介质及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116127153A true CN116127153A (zh) | 2023-05-16 |
Family
ID=86302609
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310096748.5A Pending CN116127153A (zh) | 2023-01-18 | 2023-01-18 | 数据溯源方法、装置、介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116127153A (zh) |
-
2023
- 2023-01-18 CN CN202310096748.5A patent/CN116127153A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160004516A1 (en) | Code Generation Framework for Application Program Interface for Model | |
CN111666526A (zh) | 页面生成方法、装置、设备及存储介质 | |
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
US20040158820A1 (en) | System for generating an application framework and components | |
CN110968601A (zh) | 一种数据查询处理方法及装置 | |
US20160306736A1 (en) | Translation verification testing | |
CN111124379B (zh) | 页面生成方法、装置、电子设备及存储介质 | |
CN108664546B (zh) | Xml数据结构转换方法和装置 | |
CN108008947B (zh) | 一种编程语句的智能提示方法、装置、服务器及存储介质 | |
CN111488155A (zh) | 着色语言翻译方法 | |
CN111508562A (zh) | 流程描述性语言的可视化显示方法、装置、设备和介质 | |
CN108073401B (zh) | 一种业务逻辑的执行方法、装置及电子设备 | |
CN112182637A (zh) | 一种安全控制系统、方法、装置及存储介质 | |
CN110941655A (zh) | 一种数据格式转换方法及装置 | |
CN111475534B (zh) | 一种数据查询方法及相关设备 | |
CN116028062A (zh) | 目标代码的生成方法、npu指令的显示方法及装置 | |
CN116127153A (zh) | 数据溯源方法、装置、介质及设备 | |
CN113934748A (zh) | 混合型sql脚本文件生成方法、执行方法及装置 | |
CN112862334A (zh) | 基于语法分析树的指标体系构建方法、装置及计算机设备 | |
CN116756184B (zh) | 数据库实例处理方法、装置、设备、存储介质及程序产品 | |
CN117850984B (zh) | 电子设计自动化脚本预检查方法、系统、设备及存储介质 | |
CN115935946B (zh) | Hl7v3标准/fhir标准的解析映射处理方法及装置 | |
CN117033420B (zh) | 一种知识图谱同概念下实体数据可视化展示方法及装置 | |
US20240135196A1 (en) | Method and apparatus for knowledge graph construction, storage medium, and electronic device | |
CN117850984A (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 |