中国人的家族意识比较强,很多家庭里一直保存着家谱,家谱里记录着你的父辈是谁,你父辈的父辈是谁?从而可以查找到你是哪来的,也详细记录着你的血缘关系。
大数据时代,数据的来源极其广泛,各种类型的数据在快速产生,也在爆发性增长,这导致了数据之间的关系也变得越发复杂。
因此对数据工程师来说,如何管理表之间、代码之间的复杂关系,从而更好地认识和理解业务系统与底层表的关系、底层表的表间关系,理清当前数据(字段、关键指标或者数据标签)从哪里来?到哪里去?搞清楚哪些下游系统在使用这些数据等成为一件很重要的事。
什么是数据血缘
数据血缘,又称数据血统、数据起源、数据谱系,是指数据的全生命周期中,数据从产生、处理、加工、融合、流转到最终消亡,数据之间自然形成一种关系。其记录了数据产生的链路关系,这些关系与人类的血缘关系比较相似,所以被成为数据血缘关系。
数据血缘属于数据治理中的一个概念,是在数据溯源的过程中找到相关数据之间的联系,它是一个逻辑概念。
数据治理里经常提到的一个词就是血缘分析,血缘分析是保证数据融合的一个手段,通过血缘分析实现数据融合处理的可追溯。大数据
数据血缘是指数据产生的链路,直白点说,就是我们这个数据是怎么来的,经过了哪些过程和阶段。
应用场景
在数据的处理过程中,从数据源头到最终的数据生成,每个环节都可能会导致我们出现数据质量的问题。比如我们数据源本身数据质量不高,在后续的处理环节中如果没有进行数据质量的检测和处理,那么这个数据信息最终流转到我们的目标表,它的数据质量也是不高的。也有可能在某个环节的数据处理中,我们对数据进行了一些不恰当的处理,导致后续环节的数据质量变得糟糕。因此,对于数据的血缘关系,我们要确保每个环节都要注意数据质量的检测和处理,那么我们后续数据才会有优良的基因,即有很高的数据质量。
数据溯源
溯源,指的是探寻事物的根本、源头。我们分析处理的数据,可能来源很广泛,不同来源的数据,其数据质量参差不齐,对分析处理的结果影响也不尽相同。当数据发生异常,我们需要能追踪到异常发生的原因,把风险控制在适当的水平。
换句话说,依托于数据血缘的可塑性特点,根据血缘中的数据链路关系,可实现指定数据的来源、去向的追溯,可帮助用户理解数据含义、在全流程上定位数据问题、进行数据关联影响分析等,解决多层复杂逻辑处理后的数据难以理解、难以应用、出现问题难以定位的问题。
数据价值评估
数据价值是数据管理的核心标准,不管是数据交易中的数据定价还是数据安全的保护等级,数据价值都是一个重要的参考因素。因此,如何准确地评估数据价值成为了企业面临的一大难题。
传统的数据价值评估,往往完全依靠相关法规要求和业务经验,缺少在具体应用场景中的评估依据,数据价值评估脱离了数据的应用场景和真实的业务价值。而数据血缘则提供了一种基于数据实际应用的价值评估方法:使用者越多(需求方)、使用量级越大、更新越频繁的数据往往更有价值。
- 数据受众
- 数据更新量级
- 数据更新频次
数据质量评估
数据血缘清晰的记录了数据来源以及数据流转过程中的处理方式和处理规则,能实现对各个数据节点的分析和数据质量评估。
数据归档参考
数据血缘中记录了数据的去向,可清晰的掌握数据被消费的情况,一旦数据没有消费者,那也就意味着数据已经失去价值。此时,可以对数据进行进一步评估,考虑进行归档或销毁处理。
数据血缘的特征
与人类社会中的血缘关系不同,数据的血缘关系包含4个特有的特征:
(1)归属性:数据是被特定组织或个人拥有所有权的,拥有数据的组织或个人具备数据的使用权,实现营销、风险控制等目的。
(2)多源性:这个特性与人类的血缘关系有本质的差异,同一个数据可以有多个来源。来源包括,数据是由多个数据加工生成的,或者由多种加工方式或加工步骤生成的。就像一个小孩是由爸爸妈妈两个人生的。
(3)可追溯:数据的血缘关系体现了数据的全生命周期,从数据生成到废弃的整个过程,均可追溯。
(4)层次性:数据的血缘关系是具备层级关系的,就如同传统关系型数据库中,用户是级别最高的,之后依次是数据库、表、字段,他们自上而下,一个用户拥有多个数据库,一个数据库中存储着多张表,而一张表中有多个字段。他们有机结合在一起,形成完整的数据血缘关系。
做好数据血缘关系分析的关键点
数据血缘分析作为数据血缘的应用方式,不是单纯的一种技术手段或一个工具,而是一个贯穿数据生命周期的过程,涉及流程、技术、产品等多维度的内容。在此,我们将数据血缘分析分为三大模块:数据血缘建设,数据血缘分析,数据血缘可视化。
1.数据血缘建设
数据血缘建设并不是去建设数据血缘关系,因为数据血缘关系是数据流转过程中自动产生的是生而有之的。数据血缘建设的目标是当这些生而有之的数据血缘关系产生时,能被及时、准确的记录和存储下来。因此,数据血缘建设并不是一个指定的动作,而是一种管理流程和数据意识,需要延伸到数据产生之前,从数据存储的设计开始。
数据血缘建设是数据血缘分析的前提条件,准确、完整、及时记录信息才能带来有效的血缘分析效果,考虑到部分数据源本身的数据血缘建设准备较差,在某些业务场景中需要人工介入进行梳理。
2.数据血缘分析
数据血缘分析针对数据流转过程中产生并记录的各种信息进行采集、处理和分析,对数据之间的血缘关系进行系统性梳理、关联、并将梳理完成信息进行存储。考虑到企业的数据庞杂问题,数据血缘分析往往需要借助工具或系统展开,实现血缘信息数据的自动采集、自动分析。
数据血缘分析通常会按数据血缘的层级进行,层级基于业务需求和某些数据特性可能有差别,常见的分析层级为应用(业务系统)级、数据(表/文件)级和字段级。数据血缘分析的目标是实现数据来源的精确追踪、流转过程的准确还原、数据去向的精准定位。
3.数据血缘可视化
血缘分析完成后,需要依靠可视化技术将分析结果清晰、直观地传递给用户,帮助客户进行二次分析和具体应用。数据血缘图谱是血缘分析中最常用可视化方案。
业务需求的差异将决定血缘分析层次和血缘层级的差异,进而体现在数据血缘图谱上,因此数据血缘图谱也许要基于数据血缘层级进行分层展现,直观的从应用层级、数据层级、字段层级呈现数据的血缘关系。
在具体的应用中,首先业务需求差异和可采集分析的血缘信息的影响,数据血缘图谱的呈现方式可能存在差异,但其整体形态基本一致:以某个数据为核心节点,体现该节点的数据来源、数据去向、流转路径以及路径中的处理方式和处理。因此,数据血缘可视化视图中应该当至少包含以下元素:
(1)数据节点
标记数据的具体信息,如所有者、层次信息、终端信息等,根据不同的血缘层次和业务需求,数据节点的信息有所有差异。根据数据类型的不同,数据节点又可以分为:主节点,数据流入节点、数据流出节点。
1主节点:主节点是数据血缘图谱的核心,是我们当前需要观察的数据,它只有一个,整个图谱呈现的就是它的血缘关系;主节点应该是可以且方便切换的。
2数据流入节点:数据流入节点标记主节点的数据来源,是主节点的父节点,它可能有多个甚至多层。
3数据流出节点:数据流出节点标记主节点的数据去向,是主节点的子节点,同样可能有多个或多层;在数据流出节点中有一种特殊的终端节点,数据到达终端节点后,将不再向别处流转。
(2)流转线路
标记数据的流转路径,通常从流入节点汇聚到主节点,再主节点扩散到流出节点。在流转线路中,不仅可标记出数据的流向和流转关系,还可以通过线路的粗细、长短等标记数据量级和更新频次。
(3)处理节点
标记数据流转过程中的处理方式和处理规则,通常用于数据节点之间的流转线路中。通过处理节点,可以直观地了解到数据在两个节点之间流转时,通过什么样的规则进行了怎样的处理。
数据血缘分析时的注意事项
数据血缘分析时,需要考虑以下几个方面:
1.全面性
数据处理过程实际上是程序对数据进行传递、运算演绎和归档的过程,数据的流动性和数据间的复杂关系,将导致某一数据的细微变动引起多个系统的数据发生变化。为了确保数据血缘的完整性,必须将整个系统能够作为数据血缘的分析对象,真正做到追源头溯尾。
2.及时性
数据和数据之间的关系可能是随时变动的 ,为了保证数据血缘的准确性和可用性,血缘分析必须与数据保持同步更新,确保数据血缘的分析结果面向最新的数据和数据关系。
3.适用性
血缘分析技术和实现有多种,分析的广度、深度、维度也有不同,但所有的技术都是为需求服务的,血缘分析需要在实现需求目标的前提下展开。
总结
血缘分析需要在大数据平台建设的实际使用阶段才会发现其真正的价值,很多大数据平台把血缘分析最后做或者甚至直接不做,个人认为是因为没有意识到血缘分析的重要性,或者数据平台建设的阶段还处在初级阶段,遇到问题可能只是简单做分析,然后做调整之后就结束了,而没有从方法论角度去思考这些问题的本质是什么。
当然,建设数据血缘分析的成本和技术难度也是有的。所以也建议项目建设前期直接使用开源产品例如Atlas或者采购第三方服务。
可参考字节跳动内部(火山云)对数据血缘的实践:
字节跳动数据血缘技术实现与具体用例 - 知乎 (zhihu.com)
参考:
【实战讲解】数据血缘落地实施_李奇峰1998的博客-CSDN博客
Apache Atlas – Data Governance and Metadata framework for Hadoop