单位推广app,网站seo优化徐州百度网络,阿里云wordpress安装教程,定制网站建设在复杂的社会分工协作体系中#xff0c;我们需要明确个人定位#xff0c;才能更好的发挥价值#xff0c;数据也是一样#xff0c;于是#xff0c;数据血缘应运而生。
今天这篇文章会全方位的讲解数据血缘#xff0c;并且给出具体的落地实施方案。
一、数据血缘是什么…
在复杂的社会分工协作体系中我们需要明确个人定位才能更好的发挥价值数据也是一样于是数据血缘应运而生。
今天这篇文章会全方位的讲解数据血缘并且给出具体的落地实施方案。
一、数据血缘是什么
数据血缘是在数据的加工、流转过程产生的数据与数据之间的关系。
提供一种探查数据关系的手段用于跟踪数据流经路径。
二、数据血缘的组成
1、数据节点
数据血缘中的节点可以理解为数据流转中的一个个实体用于承载数据功能业务。例如数据库、数据表、数据字段都是数据节点从广义上来说与数据业务相关的实体都可以作为节点纳入血缘图中例如指标、报表、业务系统等。
按照血缘关系划分节点主要有以下三类流出节点-中间节点-流入节点
流出节点 数据提供方血缘关系的源端节点。
中间节点 血缘关系中类型最多的节点既承接流入数据又对外流出数据。
流入节点 血缘关系的终端节点一般为应用层例如可视化报表、仪表板或业务系统。
2、节点属性
当前节点的属性信息例如表名字段名注释说明等。 3、流转路径
数据流转路径通过表现数据流动方向、数据更新量级、数据更新频率三个维度的信息标明了数据的流入流出信息
数据流动方向 通过箭头的方式表明数据流动方向
数据更新量级 数据更新的量级越大血缘线条越粗说明数据的重要性越高。
数据更新频率 数据更新的频率越高血缘线条越短变化越频繁重要性越高。
4、流转规则-属性
流转规则体现了数据流转过程中发生的变化属性则记录了当前路径对数据的操作内容用户可通过流转路径查看该路径规则与属性规则可以是直接映射关系也可以是复杂的规则例如
数据映射 不对数据做任何变动直接抽取。
数据清洗 表现数据流转过程中的筛选标准。例如要求数据不能为空值、符合特定格式等。
数据转换 数据流转过程中流出实体的数据需要进行特殊处理才能接入到数据需求方。
数据调度 体现当前数据的调度依赖关系。
数据应用 为报表与应用提供数据。
三、我们为什么需要数据血缘
1、日益庞大的数据开发导致表间关系混乱管理成本与使用成本激增
数据血缘产生最本质的需求。大数据开发作为数据汇集与数据服务提供方庞大的数据与混乱的数据依赖导致管理成本与使用成本飙升。
2、数据价值评估数据质量难以推进
表的优先级划分计算资源的倾斜表级数据质量监控如何制定一个明确且科学的标准。
3、什么表该删什么表不能删下架无依据
业务库数仓库中间库开发库测试库等众多库表是否存在数据冗余一定存在。以及存储资源如何释放
4、动了一张表错了一堆表
你改了一张表的字段第二天醒来发现邮件里一堆任务异常告警。
5、ETL任务异常时的归因分析、影响分析、恢复
承接上个问题如果存在任务异常或者ETL故障我们如何定位异常原因并且进行影响分析以及下游受影响节点的快速恢复。
6、调度依赖混乱
数据依赖混乱必然会带来调度任务的依赖混乱如何构建一个健壮的调度依赖。
7、数据安全审计难以开展
针对银行、保险、政府等对安全关注度较高的行业数据安全-数据泄露-数据合规性需要重点关注。
由于数据存在ETL链路操作下游表的数据来源于上游表所以需要基于数据全链路来进行安全审计否则可能会出现下游数据安全等级较低导致上游部分核心数据泄露。
四、数据血缘可以做什么
1、流程定位追踪溯源
通过可视化方式将目标表的上下游依赖进行展示一目了然。
2、确定影响范围
通过当前节点的下游节点数量以及类型可以确定其影响范围可避免出现上游表的修改导致下游表的报错。
3、评估数据价值、推动数据质量
通过对所有表节点的下游节点进行汇总排序作为数据评估依据可重点关注输出数量较多的数据节点并添加数据质量监控。
4、提供数据下架依据
例如以下数据节点无任何下游输出节点且并无任何存档需求则可以考虑将其下架删除。
5、归因分析快速恢复
当某个任务出现问题时通过查看血缘上游的节点排查出造成问题的根因是什么。同时根据当前任务节点的下游节点进行任务的快速恢复。
6、梳理调度依赖
可以将血缘节点与调度节点绑定通过血缘依赖进行ETL调度。
7、数据安全审计
数据本身具有权限与安全等级下游数据的安全等级不应该低于上游的安全等级否则会有权限泄露风险。
可以基于血缘通过扫描高安全等级节点的下游查看下游节点是否与上游节点权限保持一致来排除权限泄露、数据泄露等安全合规风险。
五、数据血缘落地方案
目前业内常见的落地数据血缘系统以及应用主要有以下三种方式
1、采用开源系统
Atlas、Metacat、Datahub等 采用开源系统最大的优点是投入成本较低但是缺点主要包括
1、适配性较差开源方案无法完全匹配公司现有痛点。
2、二开成本高需要根据开源版本进行定制化开发。
2、厂商收费平台
亿信华辰网易数帆等 此类数据平台中会内置数据血缘管理系统功能较为全面使用方便。但是同样也有以下缺点
1、贵
2、需要ALL IN平台为保障数据血缘的使用数据业务需要全部迁移到厂商平台中。
3、自建
通过图数据库、后端、前端自建数据血缘管理系统此方案开发投入较大但是有以下优点
1、因地制宜可根据核心痛点定制化开发元数据及数据血缘系统。
2、技术积累对于开发人员来说从0-1开发数据血缘系统可以更深刻的理解数据业务。
3、平台解耦独立于数据平台之外数据血缘的开发不会对正常业务造成影响。
接下来我们讲讲如何自建数据血缘系统
六、如何构建数据血缘系统
1、明确需求确定边界
在进行血缘系统构建之前需要进行需求调研明确血缘系统的主要功能从而确定血缘系统的最细节点粒度实体边界范围。
例如节点粒度是否需要精确到字段级或是表级。一般来说表级粒度血缘可以解决75%左右的痛点需求 字段级血缘复杂度较表级血缘高出许多如果部门人数较少可以考虑只精确到表级粒度血缘。
常见的实体节点包括任务节点、库节点、表节点、字段节点、指标节点、报表节点、部门节点等。血缘系统可以扩展数据相关的实体节点可以从不同的场景查看数据走向例如表与指标指标与报表的血缘关系。但是实体节点的范围需要明确不可无限制的扩展下去。
明确需求确定节点粒度与范围之后才可根据痛点问题给出准确的解决方案不至于血缘系统越建越臃肿提高ROI投入产出比。
2、构建元数据管理系统
目前市面上所有的血缘系统都需要依赖于元数据管理系统而存在。
元数据作为血缘的基础一是用于构建节点间的关联关系二是用于填充节点的属性三是血缘系统的应用需要基于元数据才能发挥出最大的价值。所以构建血缘系统的前提一定是有一个较全面的元数据。
3、技术选型图数据库
目前业内通常采用图数据库进行血缘关系的存储。
对于血缘关系这种层级较深嵌套次数较多的应用场景关系型数据库必须进行表连接的操作表连接次数随着查询的深度增大而增多会极大影响查询的响应速度。
而在图数据库中应用程序不必使用外键约束实现表间的相互引用而是利用关系作为连接跳板进行查询在查询关系时性能极佳而且利用图的方式来表达血缘关系更为直接。
下图为图数据库与关系型数据库在查询人脉时的逻辑对比 4、血缘关系录入自动解析and手动登记
自动解析
获取到元数据之后首先可以根据元数据表中的SQL抽取语句通过SQL解析器可自动化获取到当前表的来源表【SQL解析器推荐jsqlparse】并进行血缘关系录入。
手动登记
如果当前表无SQL抽取语句数据来源为手动导入、代码写入、SparkRDD方式等无法通过自动化方式确定来源表的时候我们需要对来源表进行手动登记然后进行血缘关系的录入。
5、血缘可视化
血缘系统构建完成后为了能够更好的体现血缘价值量化产出需要进行血缘可视化的开发分为两步
1链路-属性展示
根据具体节点通过点击操作逐级展示血缘节点间的链路走向与涉及到的节点属性信息。 2节点操作
基于可视化的血缘节点与当前节点附带的元数据属性我们可以设想一些自动化操作例如
节点调度直接基于血缘开启当前表节点的调度任务
属性修改通过前端修改当前节点的元数据属性并保存
6、血缘统计分析
数据血缘构建完成后我们可以做一些统计分析的操作从不同层面查看数据的分布与使用情况从而支撑业务更好更快更清晰。
以我们团队举例在工作过程中我们需要以下血缘统计用于支撑数据业务例如
数据节点下游节点数量排序用于评估数据价值及其影响范围 查询当前节点的所有上游节点用于业务追踪溯源 数据节点输出报表信息详情统计用于报表的上架与更新 查询孤岛节点即无上下游节点的节点用于数据删除的依据 7、血缘驱动业务开展
数据血缘构建完成统计分析结果也有了业务痛点也明确了接下来我们即可利用数据血缘驱动业务更好更快开展。
我们团队目前落地的血缘相关业务有以下几点
1影响范围告警
将血缘关系与调度任务打通监测当前血缘节点的调度任务如果当前节点调度出现异常则对当前节点的所有下游节点进行告警。
2异常原因探查
还是将血缘关系与调度任务打通监测当前血缘节点的调度任务如果当前节点调度出现异常则会给出当前节点的直接上游节点用于探查异常原因。
3异常链路一键恢复
基于上一应用异常原因定位并且修复完成之后可以通过血缘系统一键恢复当前数据节点的所有下游节点调度任务真正实现一键操作。
4支撑数据下架
目前团队已经根据探查孤岛节点即无上下游节点的节点累计归档数据表628张节省了13%的存储空间。
5数据质量监控
对当前血缘中所有节点输出的下游节点数量进行排序可以精确的判断某张表的影响范围大小从而可以根据此对高排序表进行数据质量的监控。 6数据标准化监控
如果当前公司制定了基于库、表、字段的命名规范我们可以通过探查血缘中的所有数据节点并命名规范进行匹配得到不符合规范的库、表、字段进行整改。
当然了此业务仅基于元数据也可实现放在此处属于博主强行升华了。
7数据安全审计
团队基于用户职级、部门、操作行为等权重对目前的库表进行了数据权限等级划分权限等级越高当前表的安全级别越高。
团队基于血缘进行数据全链路的安全等级监测如果发现下游节点安全等级低于上游节点则会进行告警并提示整改。确保因为安全等级混乱导致数据泄露。
八、血缘系统评价标准
在推动数据血缘落地过程中经常会有用户询问血缘质量如何覆盖场景是否全面能否解决他们的痛点做出来好用吗
于是我也在思考市面上血缘系统方案那么多我们自建系统的核心优势在哪里血缘系统的优劣从哪些层次进行评价于是我们团队量化出了以下三个技术指标
1、准确率
定义 假设一个任务实际的输入和产出与血缘中该任务的上游和下游相符既不缺失也不多余则认为这个任务的血缘是准确的血缘准确的任务占全量任务的比例即为血缘准确率。
准确率是数据血缘中最核心的指标例如影响范围告警血缘的缺失有可能会造成重要任务没有被通知造成线上事故。
我们在实践中通过两种途径尽早发现有问题的血缘节点
人工校验 通过构造测试用例来验证其他系统一样血缘的准确性问题也可以通过构造用例来验证。实际操作时我们会从线上运行的任务中采样出一部分人工校验解析结果是否正确。
用户反馈 全量血缘集合的准确性验证是个漫长的过程但是具体到某个用户的某个业务场景问题就简化多了。实际操作中我们会与一些业务方深入的合作一起校验血缘准确性并修复问题。
2、覆盖率
定义 当有数据资产录入血缘系统时则代表数据血缘覆盖了当前数据资产。被血缘覆盖到的数据资产占所有数据资产的比例即为血缘覆盖率。
血缘覆盖率是比较粗粒度的指标。作为准确率的补充用户通过覆盖率可以知道当前已经支持的数据资产类型和任务类型以及每种覆盖的范围。
在内部我们定义覆盖率指标的目的有两个一是我方比较关注的数据资产集合二是寻找当前业务流程中尚未覆盖的数据资产集合以便于后续血缘优化。
当血缘覆盖率低时血缘系统的应用范围一定是不全面的通过关注血缘覆盖率我们可以知晓血缘的落地进度推进数据血缘的有序落地。
3、时效性
定义 从数据资产新增和任务发生修改的时间节点到最终新增或变更的血缘关系录入到血缘系统的端到端延时。
对于一些用户场景来说血缘的时效性并没有特别重要属于加分项但是有一些场景是强依赖。不同任务类型的时效性会有差异。
例如故障影响范围告警以及恢复是对血缘实时性要求很高的场景之一。如果血缘系统只能定时更新T-1的状态可能会导致严重业务事故。
提升时效性的瓶颈需要业务系统可以近实时的将任务相关的修改以通知形式发送出来并由血缘系统进行更新。