火山引擎 DataLeap:支持万级表的数据血缘图谱,是如何实现的?
更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群
数据来源广、量级大、场景多,导致数据之间关系变得异常复杂。
经过读取、清洗、存储、计算等一系列流程之后,数据最终汇入指标、报表等服务系统中。但如何对数据溯源、跟踪变化,成为困扰数据研发工程师的难题之一。
数据血缘描述了数据的来源和去向,以及多个处理过程中的转换,是组织内使数据发挥价值的重要基础能力。通过构建数据血缘图谱,可以直接清晰地观察表之间的上、下游依赖关系,甚至是特殊场景下用户关注的表属性,更清晰查看数据链路和统计信息。
但是,要构建清晰、灵活、便利的数据血缘图谱不是易事,特别是在数据量级大的情况下,往往面临层级关系复杂、表任务混乱、分组结构不清楚的问题。
在字节跳动内部,有一套支持万级表血缘的关系展示图谱每天被近万名员工使用,已经沉淀为火山引擎 DataLeap“数据地图”能力,并对外输出。通过提供便捷的找数、理解数服务,火山引擎 DataLeap 大大节省企业内部数据沟通和建设成本。
那么。这套图谱究竟是如何设计和实现的?
首先,抽象用户使用场景和需求。经过内部场景的深度用户调研,火山引擎 DataLeap 抽象出如下需求:
表血缘关系查看:能从图中清楚浏览用户关注的表上、下游血缘关系,以及场景的表属性。
表血缘链路查看:能清晰查看某个上游/下游表到用户关注表的链路情况。
按关键指标分组查看:例如当表数据发生变更时,分组查看所有下游表的负责人以便通知变更。
筛选关键信息查看:例如用户找数据指标的时候,仅看相关的报表更高效。
其次,在技术选型上,采用 React + Canvas 的混合模式来实现血缘图谱。由于 Canvas 模拟滚动条研发成本高,与 HTML 相比,实现结构样式复杂的节点定制较复杂,但结合 React 框架渲染则可以轻松解决以上问题。因此,最终方案为:采用 Canvas 居于底部,仅负责画连线;React 负责渲染节点、响应 hover 等交互。
最后,在方案设计和实现上,主要从查看关系的效率和属性完备度两个角度出发,完善以下能力:
为了解决数据量大情况下,数据关系不清晰的问题,火山引擎 DataLeap 支持点击任意节点,则高亮该节点到主节点的链路功能,并在列表顶部增加层级信息和节点统计,让用户能同时查看每个节点细节和节点整体分布。
当用户找数、理解数或进行归因分析时,不仅要了解表的上游依赖,更需要理解表的加工逻辑。因此,火山引擎 DataLeap 在节点连线上新增任务信息,当用户 hover 连线即加粗、高亮并弹出任务信息,并匹配大数据开发平台对应的任务链接,点击即可跳转查看。
在筛选功能上,火山引擎 DataLeap 采用服务端筛选,保证符合要求的数据全量展示。
不同职能的用户在不同场景下使用血缘图谱时,关注的节点属性不相同。火山引擎 DataLeap 血缘图谱上设计了属性展示功能,用户可以勾选自己感兴趣的属性直接显示到图中。
据介绍,火山引擎 DataLeap 能帮助企业快速完成数据集成、开发、运维、治理、资产、安全等全套数据中台建设,其中数据地图主要提供数据检索、元数据详情查看、数据理解等功能,解决找数难、理解数据难的痛点,同时支持数据专题、血缘图谱、数据发现、库表管理等特色功能。
目前,火山引擎 DataLeap 的数据地图平台已接入全链路核心元数据,包括 LAS、MySQL、ByteHouse CE、ByteHouse CDW、TOS、LasFS、EMR hive 等,提供可视化的血缘关系展示能力,帮助用户全面的探查了解数据,支持表、字段级别血缘可视化查询,以及按层级、范围筛选展示,可根据用户需求灵活适配。
点击跳转 大数据研发治理套件 DataLeap 了解更多
版权声明: 本文为 InfoQ 作者【字节跳动数据平台】的原创文章。
原文链接:【http://xie.infoq.cn/article/11566ecbdc55e2ab451efd006】。文章转载请联系作者。
评论