如何构建数据血缘系统

1、明确需求,确定边界

在进行血缘系统构建之前,需要进行需求调研,明确血缘系统的主要功能,从而确定血缘系统的最细节点粒度,实体边界范围。

例如节点粒度是否需要精确到字段级,或是表级。一般来说,表级粒度血缘可以解决75%左右的痛点需求, 字段级血缘复杂度较表级血缘高出许多,如果部门人数较少,可以考虑只精确到表级粒度血缘。

常见的实体节点包括:任务节点、库节点、表节点、字段节点、指标节点、报表节点、部门节点等。血缘系统可以扩展数据相关的实体节点,可以从不同的场景查看数据走向,例如表与指标,指标与报表的血缘关系。但是实体节点的范围需要明确,不可无限制的扩展下去。

明确需求,确定节点粒度与范围之后,才可根据痛点问题给出准确的解决方案,不至于血缘系统越建越臃肿,提高ROI(投入产出比)

2、构建元数据管理系统

目前市面上所有的血缘系统都需要依赖于元数据管理系统而存在。

元数据作为血缘的基础,一是用于构建节点间的关联关系,二是用于填充节点的属性,三是血缘系统的应用需要基于元数据才能发挥出最大的价值。所以构建血缘系统的前提一定是有一个较全面的元数据。

3、技术选型:图数据库

目前业内通常采用图数据库进行血缘关系的存储。

对于血缘关系这种层级较深,嵌套次数较多的应用场景,关系型数据库必须进行表连接的操作,表连接次数随着查询的深度增大而增多,会极大影响查询的响应速度。

而在图数据库中,应用程序不必使用外键约束实现表间的相互引用,而是利用关系作为连接跳板进行查询,在查询关系时性能极佳,而且利用图的方式来表达血缘关系更为直接。

4、血缘关系录入:自动解析and手动登记

自动解析:

获取到元数据之后,首先可以根据元数据表中的SQL抽取语句,通过SQL解析器可自动化获取到当前表的来源表【SQL解析器推荐jsqlparse】,并进行血缘关系录入。

手动登记:

如果当前表无SQL抽取语句,数据来源为手动导入、代码写入、SparkRDD方式等无法通过自动化方式确定来源表的时候,我们需要对来源表进行手动登记,然后进行血缘关系的录入。

5、血缘可视化

血缘系统构建完成后,为了能够更好的体现血缘价值,量化产出,需要进行血缘可视化的开发,分为两步:

1)链路-属性展示:

根据具体节点,通过点击操作,逐级展示血缘节点间的链路走向与涉及到的节点属性信息。

2)节点操作:

基于可视化的血缘节点与当前节点附带的元数据属性,我们可以设想一些自动化操作例如:

节点调度:直接基于血缘开启当前表节点的调度任务 

属性修改:通过前端修改当前节点的元数据属性并保存

6、血缘统计分析

数据血缘构建完成后,我们可以做一些统计分析的操作,从不同层面查看数据的分布与使用情况,从而支撑业务更好更快更清晰。

以我们团队举例,在工作过程中,我们需要以下血缘统计用于支撑数据业务,例如:

数据节点下游节点数量排序,用于评估数据价值及其影响范围

查询当前节点的所有上游节点,用于业务追踪溯源

数据节点输出报表信息详情统计,用于报表的上架与更新

查询孤岛节点,即无上下游节点的节点,用于数据删除的依据

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jane9872

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值