掌桥专利:专业的专利平台
掌桥专利
首页

一种数据血缘确定方法和装置

文献发布时间:2023-06-19 09:36:59


一种数据血缘确定方法和装置

技术领域

本发明涉及数据治理技术领域,特别涉及一种数据血缘确定方法和装置。

背景技术

数据血缘(Data Lineage)是指数据产生的链路,它描述了一张表依赖哪些其他表,以及表内字段是如何依赖其他表的字段生成的。通过数据血缘可以清楚地知道数据生产的上下游依赖关系。当企业的业务种类繁多、业务体量很大的时候,支撑业务的整个数据库系统会涉及成百上千张表,表与表之间会形成非常复杂的依赖关系。如果业务变更比较频繁、开发周期短、人员流动高,随着时间流逝,表结构和表依赖关系可能会频繁发生变化,最终导致表与表之间关联关系变得复杂且难以追溯。常见的依赖关系都是数据表和生产任务之间的依赖,对于生产任务具体用到了上游数据表中的哪些字段只有在编码逻辑中才能体现,例如,数据库A或者A部门将更新的数据文件保存到指定目录,通过FTP或其他同步方式发送给数据库B,数据库B调用代码对数据文件进行解析,经过对若干字段的一系列计算,将最终计算的结果插入数据库B中,用于更新已经存在的字段或保存为新字段,具体计算过程是无法暴露给数据使用方的。拥有数据的企业请外部软件服务提供商执行数据治理任务时,往往只向外部合作方提供表头、数据字典等信息,外部合作方难以获得表格产生、变迁历史的中间过程记录,而数据库审计日志也难以体现全部中间处理流程。执行数据治理任务时首先需要理清依赖关系,以便搞清楚一个上游数据的变化会影响到哪些下游数据。如何不依赖中间处理过程记录甚至审计日志,获得精确的数据血缘,成为一个亟待解决的难题。

发明内容

本发明的实施例提供一种数据血缘确定方法和装置,利用表名和/或字段名相似关系确定数据表的数据血缘,达到不依赖审计日志或分析数据生产代码即可获得数据血缘的目的。

为达到上述目的,本发明实施例采用了如下技术方案:

第一方面,公开了一种数据血缘确定方法,包括:

接收第一数据表和第二数据表各自的表名和表结构信息,所述表结构信息包括数据表中、英文字段名,字段类型和字段长度;

计算所述第一数据表和所述第二数据表的表名相似度;

根据所述表结构信息,计算所述第一数据表的任一字段与所述第二数据表的任一字段的相似度,获得字段相似度矩阵;

根据所述表名相似度和所述字段相似度矩阵,计算所述第一数据表和所述第二数据表的血缘关系得分;

根据所述血缘关系得分和预设阈值,确定所述第一数据表和所述第二数据表是否具有血缘关系。

结合第一方面,在第一种可能的实现方式中,所述计算所述第一数据表的任一字段与所述第二数据表的任一字段的相似度,获得字段相似度矩阵,包括:

获取所述第一数据表的M个字段的中、英文字段名和所述第二数据表的N个字段的中、英文字段名;

计算所述第一数据表的每一个字段与所述第二数据表每一个字段的字段名的编辑距离,获得M乘以N个编辑距离,所述字段名是中文字段名或英文字段名;

根据所述编辑距离、字段类型相似度、字段长度相似度中的至少一个,计算所述字段的相似度;

获得所述第一数据表与所述第二数据表的字段相似度矩阵,所述字段相似度矩阵的第i行第j列元素是第一数据表第i个字段与第二数据表第j个字段的相似度。

结合第一方面或第一方面第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述表名相似度和所述字段相似度矩阵,计算所述第一数据表和所述第二数据表的血缘关系得分,包括:

从所述表名相似度和所述字段相似度矩阵中,取最大的L个值,所述L小于或等于M与N中较小的值;

根据所述L个值,计算所述第一数据表和所述第二数据表的血缘关系得分。

结合第一方面或第一方面第一种可能的实现方式,在第三种可能的实现方式中,所述根据所述表名相似度和所述字段相似度矩阵,计算所述第一数据表和所述第二数据表的血缘关系得分,包括:

从所述字段相似度矩阵中取最大的L个值求和,所述L小于或等于M与N中较小的值;

获得所述表名相似度和所述和的权值;

计算所述表名相似度和所述和的加权和,获得所述第一数据表和所述第二数据表的血缘关系得分。

结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,所述获得所述表名相似度和所述和的权值,包括:

获取数据库审计日志,从审计日志中读取SQL命令;

解析所述SQL命令,获取SQL命令中蕴含的数据血缘关系集合;

根据所述血缘关系集合,利用贪心算法计算所述表名相似度和所述和的权值。

第二方面,公开了一种数据血缘确定装置,包括:

接收模块,用于接收第一数据表和第二数据表各自的表名和表结构信息,所述表结构信息包括数据表中、英文字段名,字段类型和字段长度;

第一计算模块,用于计算所述第一数据表和所述第二数据表的表名相似度;

第二计算模块,用于根据所述表结构信息,计算所述第一数据表的任一字段与所述第二数据表的任一字段的相似度,获得字段相似度矩阵;

第三计算模块,用于根据所述表名相似度和所述字段相似度矩阵,计算所述第一数据表和所述第二数据表的血缘关系得分;

确定模块,用于根据所述血缘关系得分和预设阈值,确定所述第一数据表和所述第二数据表是否具有血缘关系。

结合第二方面,在第一种可能的实现方式中,所述第二计算模块,具体用于:获取所述第一数据表的M个字段的中、英文字段名和所述第二数据表的N个字段的中、英文字段名;

计算所述第一数据表的每一个字段与所述第二数据表每一个字段的字段名的编辑距离,获得M乘以N个编辑距离,所述字段名是中文字段名或英文字段名;

根据所述编辑距离、字段类型相似度、字段长度相似度中的至少一个,计算所述字段的相似度;

获得所述第一数据表与所述第二数据表的字段相似度矩阵,所述字段相似度矩阵的第i行第j列元素是第一数据表第i个字段与第二数据表第j个字段的相似度。

结合第二方面或第二方面第一种可能的实现方式,在第二种可能的实现方式中,所述第三计算模块,具体用于:

从所述表名相似度和所述字段相似度矩阵中,取最大的L个值,所述L小于或等于M与N中较小的值;

根据所述L个值,计算所述第一数据表和所述第二数据表的血缘关系得分;

结合第二方面或第二方面第一种可能的实现方式,在第三种可能的实现方式中,所述第三计算模块,具体用于:

从所述字段相似度矩阵中取最大的L个值求和,所述L小于或等于M与N中较小的值;

获得所述表名相似度和所述和的权值;

计算所述表名相似度和所述和的加权和,获得所述第一数据表和所述第二数据表的血缘关系得分。

结合第二方面第三种可能的实现方式,在第四种可能的实现方式中,所述第三计算模块,具体用于:获取数据库审计日志,从审计日志中读取SQL命令;

解析所述SQL命令,获取SQL命令中蕴含的数据血缘关系集合;

根据所述血缘关系集合,利用贪心算法计算所述表名相似度和所述和的权值。

上述技术方案提供的数据血缘确定方法,利用数据表表名和表结构信息计算相似度,进而获得数据表血缘关系得分,并确定数据表之间的数据血缘,该方法不依赖审计日志,无需分析业务系统代码,大大降低了确定数据血缘的难度,有助于理清数据依赖关系,为数据治理工作奠定良好的基础。

附图说明

图1为本发明提供的一种数据血缘确定方法流程图;

图2为本发明提供的另一种数据血缘确定方法的流程图;

图3为本发明提供的另一种数据血缘确定方法的流程图;

图4为本发明提供的一种数据血缘确定装置的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例一

本发明实施例提供了一种数据血缘确定方法,如图1所示,所述方法包括以下步骤:

S101、接收第一数据表和第二数据表各自的表名和表结构信息。所述数据表是关系数据库中的表,所述第一数据表和第二数据表可以是不同数据库乃至不同系统中的表,也可以是同一系统乃至同一个数据库中的表;所述表名可以是中文表名或英文表名,所述表结构信息包括数据表全部字段或部分字段的中文、英文字段名,字段类型和字段长度等。

S102、计算第一数据表和第二数据表表名的相似度。第一数据表和第二数据表的表名为有限长度的中文或英文字符串,以英文表名为例,通过计算表名的编辑距离来获得表名的相似度。两字符串的编辑距离即Damerau-Levenshtein距离,定义为将一个单词转换为另一个单词所需的单字符编辑动作(插入、删除、替换或相邻字符转换)的最小数量,记为:

DLD(str

其中,str

len(str

S103、计算第一数据表的任一字段与第二数据表的任一字段的相似度,获得字段相似度矩阵。根据第一数据表的表结构可获得第一数据表每一个字段的中文字段名和/或英文字段名,及字段类型和长度;根据第二数据表的表结构可获得第二数据表每一个字段的中文字段名和/或英文字段名,及字段类型和长度。根据第一数据表任一字段的英文字段名和第二数据表任一字段的英文字段名,可按照如下方法计算字段相似度:

假定第一数据表包含M个字段,第二数据表包含N个字段,M、N均为正整数,将两数据表字段名依照其长度进行升序排列,令s

其中t_a_ColName_i表示第一数据表第i个字段的字段名,t_b_ColName_j表示第二数据表第j个字段的字段名,t_a_ColName_i和t_b_ColName_j同为英文字段名,或者同为中文字段名;DLD(*,*)是两个字段名的Damerau-Levenshtein距离,max(len(t_a_ColName_i),len(t_b_ColName_j))表示两个字段长度中较长的一个。与表名相似度类似,字段名相似度取值范围也是s

其中,矩阵的全部元素可以全部都是基于中文字段名或英文字段名计算获得,也可以部分元素用英文字段名计算获得,其余元素用中文字段名计算获得,具体的,可以分别计算两个字段中文字段名相似度与英文字段名相似度,取:

其中

优选地,可以利用数据表字段名相似度、字段类型相似度和字段长度相似度中的至少一个,计算字段相似度,进而获得字段相似度矩阵。具体的,可以利用第一数据表任一字段的字段名、字段类型和长度,与第二数据表任一字段的字段名、字段类型和长度,计算第一数据表和第二数据表的字段相似度矩阵,假定第一数据表包含M个字段,第二数据表包含N个字段,令s

s

其中str

S104、根据表名相似度和字段相似度矩阵,计算第一数据表和第二数据表的血缘关系得分。从表名相似度和字段相似度矩阵中,选择L个最大值求和,作为第一数据表和第二数据表的血缘关系得分,其中L等于M和N两个数的较小值。

优选地,首先取字段相似度矩阵S最大的元素

获得血缘关系得分的同时,还可以保存L个最大相似度值对应的第一数据表和第二数据表的字段名,即第一数据表的第x

优选地,首先取字段相似度矩阵S最大的元素

即第一数据表与第二数据表的血缘关系得分是表名相似度与字段名相似度的加权和,其中权值w可以根据专家经验预先确定并保存备用,也可利用贪心算法计算获得。因数据库设计人员命名数据库字段时可能会参考该字段数据来源,因此依照表名相似和/或字段名相似计算得到的血缘关系得分可以反应数据表的数据血缘。

S105、根据血缘关系得分和预设阈值,确定第一数据表和第二数据表是否具有血缘关系。预设阈值L

S106a、当血缘关系得分高于阈值即L

S106b、当血缘关系得分不高于阈值即L

此外,无论根据血缘关系得分判定两数据表是否具有数据血缘,均可将不收S104中保存的L个最大相似度值对应的第一数据表和第二数据表的字段名输出,作为数据血缘输出结果的一部分,即数据血缘关系包括一个得分值(或一个评价结论)和一组具有最大相似度的字段名。

本发明实施例提供的数据血缘确定方法,利用数据表表名和表结构信息计算相似度,进而获得数据表血缘关系得分,并确定数据表之间的数据血缘,该方法不依赖审计日志,无需分析业务系统代码,大大降低了确定数据血缘的难度,有助于理清数据依赖关系,为数据治理工作奠定良好的基础。

实施例二

本发明实施例提供了一种数据血缘确定方法,如图2所示,该方法包括以下步骤:

S201、接收第一数据表和第二数据表各自的表名和表结构信息。所述数据表是关系数据库中的表,所述第一数据表和第二数据表可以是不同数据库乃至不同系统中的表,也可以是同一系统乃至同一个数据库中的表;所述表名可以是中文表名或英文表名,所述表结构信息包括数据表全部字段或部分字段的中文、英文字段名、字段类型和字段长度等。

S202、计算第一数据表和第二数据表表名的相似度。可根据第一数据表英文表名与第二数据表英文表名的编辑距离(Damerau-Levenshtein距离)计算表名的相似度s

S203、计算第一数据表的任一字段与第二数据表的任一字段的相似度,获得字段相似度矩阵。可根据第一数据表的任一字段的字段名、字段类型和字段长度,以及第二数据表任一字段的字段名、字段类型和字段长度,逐一计算第一数据表任一字段与第二数据表任一字段的相似度s

具体方法如实施例一步骤S103所述,这里不再赘述。

S204、获取权值,根据表名相似度、字段相似度矩阵和权值,计算第一数据表和第二数据表的血缘关系得分。所述权值可根据经验指定,也可以利用贪心算法计算获得,如图3所示,具体包括如下的步骤:

S2041、通过审计日志或其他方式,获取生成数据库的SQL文件,从SQL中获取数据库表名和表结构。假定要确定数据血缘的第一数据表属于数据库A,第二数据表属于数据库B,则获取生成和修改数据库A和数据库B的全部SQL文件或SQL操作指令。从SQL中获取表名,进而根据表名获取对应的表结构;

S2042、根据SQL,获取数据库中数据表的血缘关系。通过解析SQL,找到SQL文件或SQL指令集合中所有的SELECT、INSERT等操作,这些指令相关的操作引入血缘关系,如:

INSERT INTO table_b(col_a,col_b,…)SELECT*FROM table_a;则table_a与table_b存在血缘关系;

找到SQL揭示的、两个数据库中表的全部血缘关系,假定找到了K个,则获得了K个数据表对;

S2043、根据血缘关系、表名相似度和字段相似度矩阵,利用贪心算法计算最优权值。令表名相似度权值为w,则第k对具有血缘关系的数据表的血缘关系得分可定义为:

其中L等于两个数据表的字段数中较小的一个,

其中

然后,求解:

即使得E

然后,利用上述最优权值,以及第一数据表和第二数据表的字段名的相似度、字段相似度矩阵,计算第一数据表和第二数据表的血缘关系得分;

S205、根据血缘关系得分和阈值,确定第一数据表和第二数据表是否具有血缘关系。其中所述阈值是步骤S2041~S2043中利用贪心算法计算获得的;

S206a、当血缘关系得分高于阈值即

S206b、当血缘关系得分不高于阈值即

本发明实施例提供的数据血缘确定方法,利用数据表表名和表结构信息计算相似度,利用已知的血缘关系获得最优判断阈值和权值,进而获得数据表血缘关系得分,确定数据表之间的数据血缘,该方法无需分析业务系统代码,大大降低了确定数据血缘的难度,具有相当高的准度,有助于理清数据依赖关系,为数据治理工作奠定良好的基础。

实施例三

本发明实施例提供一种数据血缘确定装置,该装置包括如下模块:

401、接收模块。所述接收模块用于接收第一数据表和第二数据表各自的表名和表结构信息。所述数据表是关系数据库中的表,所述第一数据表和第二数据表可以是不同数据库乃至不同系统中的表,也可以是同一系统乃至同一个数据库中的表;所述表名可以是中文表名或英文表名,所述表结构信息包括数据表全部字段的中文、英文字段名,字段类型和字段长度等。

优选的,所述接收模块,还用来获取生成数据库的SQL文件或SQL操作指令集合,并获取数据库表名和表结构。假定第一数据表属于数据库A,第二数据表属于数据库B,则获取生成和修改数据库A和数据库B的全部SQL文件或SQL操作指令。从SQL中获取表名,进而根据表名获取对应的表结构信息。

402、第一计算模块。所述第一计算模块用于计算所述第一数据表和所述第二数据表的表名相似度。所述表名相似度s

403、第二计算模块。所述第二计算模块用于根据第一数据表的表结构信息和第二数据表的表结构信息,计算所述第一数据表的任一字段与所述第二数据表的任一字段的相似度s

具体方法如实施例一步骤S103所述,这里不再赘述。

404、第三计算模块。所述第三计算模块,用于根据所述表名相似度和所述字段相似度矩阵,计算所述第一数据表和所述第二数据表的血缘关系得分L

优选的,所述第三计算模块还用于根据SQL,获取数据库中数据表的血缘关系。通过解析SQL,找到SQL文件或SQL指令集合中所有的SELECT、INSERT等操作,这些指令相关的操作引入血缘关系,如:

INSERT INTO table_b(col_a,col_b,…)SELECT*FROM table_a;则table_a与table_b存在血缘关系;

找到SQL揭示的、两个数据库中表的全部血缘关系,假定找到了K个,则获得了K个数据表对;所述第三计算模块还用于根据血缘关系、表名相似度和字段相似度矩阵,利用贪心算法计算最优权值。令表名相似度权值为w,则第一数据表和第二数据表的血缘关系得分可定义为:

其中L等于两个数据表的字段数中较小的那个,

其中

然后,求解:

即使得E

405、确定模块。所述确定模块,用于根据所述血缘关系得分和预设阈值,确定所述第一数据表和所述第二数据表是否具有血缘关系,具体的,当所述血缘关系得分L

优选的,所述确定模块,用于根据所述血缘关系得分和计算出的最优阈值,确定所述第一数据表和所述第二数据表是否具有血缘关系,具体的,当所述血缘关系得分

本发明实施例提供的数据血缘确定装置,利用数据表表名和表结构信息计算相似度,进而获得数据表血缘关系得分,并确定数据表之间的数据血缘,该方法不依赖审计日志,无需分析业务系统代码,大大降低了确定数据血缘的难度,有助于理清数据依赖关系,为数据治理工作奠定良好的基础。

应当理解的是,上述针对实施实例的描述较为具体,并不能因此而认为是对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。

相关技术
  • 基于结构数据的数据血缘确定方法及装置
  • 基于知识图谱的字段级的数据血缘确定方法及装置
技术分类

06120112229100