基于DAG模型的血缘管理平台

为解决公司数据资产管理及血缘追踪难题,采用DAG模型和海豚调度架构,自行开发了一个集数据源管理、血缘探测等功能于一体的血缘管理平台。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

● 公司数据源多种多样,互相依赖也多,全靠文档(文档搜索能力极差)以及大脑记忆
● 强依赖经验(老员工),对新人极度不友好
● 不知道本部门的数据走向 下游有哪些数据引用,比如 ogg/redis/es/mq/数据同步任务等

以上问题,导致发版时经常遗漏脚本(比如mysql新增了字段 es或者oracle表没有加等)

基于以上原因,决定做一个系统,将所有数据源以及数据流向进行维护,方便查看血缘关系,但是苦于无人理解这个项目要做什么,以及要怎么做,导致没人支持去做,也就意味着没有对应的开发资源给我

最后决定自己去做一个,做出来了,如果觉得还行,再进行推广;反之,就当是自己学习的一个项目

技术选型

前面也提到了,没有人支持,以及对应的开发资源给我,但是本人又非常想尝试一下,决定前后端自己做(java后端开发,不会前端,海豚的前端还是有些深度的)

之前一直有在了解dolphinscheduler(海豚调度)项目,看过一部分源码,并且在阿里云搭建过集群,将其中一部分功能用到之前做过的项目中(比如基于mysql的注册中心/调度/DAG等等)

在想做这个项目之前,就决定参考dolphinscheduler(海豚调度)的任务形式去做,前端可拖拽,并且形成DAG图 ,可以使数据流向一目了然,也是我认为最适合的方式

该项目非常依赖前端,前端体验差,也就意味着没人愿意用

最后决定前后端都参考dolphinscheduler的架构,进行开发

前端

  • vite
  • vue3
  • jsx
  • AntV X6(图编辑)
  • echarts
  • naive-ui
  • pinia
  • vue-router
  • axios
  • typescript

海豚调度的前端确实很有深度,看懂还是有点困难的,特别是没做过前端的,但是结构设计很不错,我很喜欢,扩展性很强

后端

  • jdk17(新项目采用17先做出基础功能,后续准备尝试jdk21)
  • springBoot(单体架构足够)
  • mybatis/mybaits-plus

规划

采用海豚调度的架构,先做第一版

首页

汇总维护的信息 进行数据资产/血缘大盘展示

安全中心

维护租户/用户/告警组等基础信息

监控中心

  • 监控服务器/数据库指标信息
  • 审计日志

数据源中心

  • 维护数据源信息(mysql/oracle等)
  • 可以根据源信息 获取数据库schema信息
  • 进行后续的字段级展示/探测/分析/

项目管理

  • 以项目为维度进行维护(一个部门可以是一个或多个项目,只有管理员可以创建项目(防止维护的到处都是,不知道采用哪一个))
  • 创建血缘基本信息
  • DAG图展示/图谱展示

血缘探测

  • 探测所有项目维护的信息,进行探测,分析
  • 未维护的信息 比如触发器/存储过程等
  • 告警

DBMS管理

为什么希望有DBMS功能?

  • 每次都需要开发手写DDL语句,繁琐 浪费时间 规范不统一,比如强制要求有创建时间,创建人等字段以及注释
  • 测试环境创建完脚本后 可能N天/N月后才会发布到生产,目前是开发自己记录脚本信息(记事本/语雀/飞书文档等)
  • 手动记录,血缘系统无法自动感知到数据变更

虽然99.99%的概率会被老板否决,但是还是决定做一个,自己尝试一下,自己用,用来记录自己开发的脚本,减少自己漏发脚本可能导致的生产事故

SQL血缘解析(还没考虑好要不要做)

可以先看下下面的开源项目
SQLLineage
在这里插入图片描述

● sqlflow
在这里插入图片描述

openAPI

● 对外提供查询接口 输入目标表 ,返回所有依赖的任务 发布时校验脚本
● …

演示

采用海豚调度的架构

在这里插入图片描述

创建节点

mysql

在这里插入图片描述

oracle

在这里插入图片描述

redis

在这里插入图片描述

es

在这里插入图片描述

其他

  • 触发器
  • 存储过程
  • link
  • clickhouse
  • doris
  • spark
  • flink
  • cdc
  • http
  • shell
  • 数据同步任务(datax/sqoop/seatunnel)
  • xxlJob
  • kafka
  • rabbitmq
    ● …

总结

主要希望解决公司数据资产维护以及数据血缘问题,当然最后大概率成为自己学习的一个项目

### 如何使用 Apache DolphinScheduler 进行数据血缘分析 #### 背景介绍 Apache DolphinScheduler 是一款强大的分布式任务调度系统,支持多种类型的作业调度,并提供了丰富的功能来简化复杂的数据处理流程[^1]。其中,数据血缘分析是一个重要的特性,它可以帮助用户追踪数据的流动路径、依赖关系以及变更历史。 #### 数据血缘分析实现方法 在 Apache DolphinScheduler 中,数据血缘分析主要通过以下方式实现: 1. **基于 DAG 的任务建模** - Apache DolphinScheduler 使用有向无环图 (Directed Acyclic Graph, DAG) 来表示任务之间的依赖关系。这种模型天然适合描述数据流和任务间的因果关系[^3]。 - 用户可以通过定义任务节点及其上下游依赖关系,自动生成数据血缘信息。 2. **元数据采集与解析** - 需要配置元数据采集插件,用于捕获数据库表结构变化、SQL 执行计划以及其他相关的信息[^2]。 - 插件可以集成到不同的数据源(如 MySQL、PostgreSQL、Hive 等),并将其转换为标准化的血缘格式。 3. **自动化血缘生成** - 当前版本中,DolphinScheduler 提供了部分内置机制来自动生成简单的数据血缘关系。例如,在 SQL 类型的任务执行过程中,会尝试提取涉及的表名及操作类型(INSERT/UPDATE/DELETE)。 - 对于更复杂的场景,则可能需要借助外部工具或扩展 API 接口完成高级血缘计算逻辑。 4. **可视化展示** - 结果通常以图形化界面的形式呈现给最终用户查看。这一步骤有助于直观理解整个系统的运作原理以及各组件间的关系网状结构[^3]。 #### 官方文档与教程资源推荐 对于想要深入了解如何利用该框架开展具体工作的开发者来说,可以从以下几个方面入手学习: - 访问官方 GitHub 仓库获取最新版 README 文件说明; - 查阅 Wiki 页面中的专门章节讨论关于 lineage management 的相关内容; - 关注定期举办的 Meetup 活动分享经验案例研究材料; 以下是几个具体的链接地址供参考查阅: - [https://dolphinscheduler.apache.org](https://dolphinscheduler.apache.org) - [https://github.com/apache/dolphinscheduler/wiki/Data-Lineage-in-DolphinScheduler](https://github.com/apache/dolphinscheduler/wiki/Data-Lineage-in-DolphinScheduler) 另外还有一篇博文详细介绍了从零搭建一套完整的解决方案思路可供进一步探索阅读价值较高值得收藏备用! ```bash git clone https://github.com/apache/dolphinscheduler.git cd dolphinscheduler/docs/en_US/user_doc/ open DataLineage.md ``` 以上命令可以直接打开本地克隆后的英文版用户手册中有关数据血缘的部分进行深入学习。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值