大数跨境

全面解析 Apache DolphinScheduler 数据库模式:从表结构到调度逻辑

全面解析 Apache DolphinScheduler 数据库模式:从表结构到调度逻辑 海豚调度
2025-11-26
0
导读:本文档对DolphinScheduler的数据库模式进行了系统介绍,涵盖存储工作流定义、任务配置、调度信等。



点击蓝字 关注我们



本文档对 Apache DolphinScheduler 的数据库模式进行了系统介绍,涵盖存储工作流定义、任务配置、调度信息、用户数据及其他核心系统组件的各类表的结构、相互关系和功能,帮助用户深入理解 DolphinScheduler 的运行机制。


目的

与范围


在 DolphinScheduler 中,数据库模式是整个工作流调度系统的持久化基础。它用于存储所有配置信息、执行记录、用户数据以及系统运行所需的元数据。系统官方支持 MySQL、PostgreSQL 和 H2 三种数据库,并为每种数据库提供了对应的 SQL 脚本。


支持的数

据库系统


DolphinScheduler 提供了以下数据库的初始化脚本:

  • MySQL
  • PostgreSQL
  • H2(主要用于测试)

脚本文件位置如下:

  • MySQL: dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql
  • PostgreSQL: dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sql
  • H2: dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_h2.sql


架构

总览


数据库模式可按功能分为以下几组:

  1. 工作流(Workflow)相关表
  2. 任务(Task)相关表
  3. 项目(Project)与资源(Resource)相关表
  4. 用户管理表
  5. 调度(Scheduling)表
  6. 告警(Alerting)表
  7. 注册(Registry)表(3.3.0 版本新增)


模式结

构详解

1. 工作流相关表

工作流相关表用于存储工作流定义、实例及其与任务的关系。在 3.3.0 版本中,所有“process”前缀的表均重命名为“workflow”

关键表:

表名
描述
t_ds_workflow_definition
存储工作流定义,包括代码、名称、描述及其他元数据。
t_ds_workflow_definition_log
保存工作流定义变更历史。
t_ds_workflow_instance
记录运行中及已完成的工作流实例。
t_ds_workflow_task_relation
映射工作流内部任务之间的关系。
t_ds_workflow_task_relation_log
保存任务关系变更历史。

工作流实例状态:

2. 任务相关表

任务相关表用于存储任务定义、执行实例及参数。

关键表:

表名
描述
t_ds_task_definition
存储任务定义,包括类型、参数及其他配置。
t_ds_task_definition_log
保存任务定义变更历史。
t_ds_task_instance
记录运行中及已完成的任务实例。
t_ds_task_group
定义任务组,用于资源隔离和优先级管理。
t_ds_task_instance_context
存储任务执行上下文数据。

3. 项目与资源表

用于管理项目及其相关资源(文件、UDF、自定义数据源等)。

关键表:

表名
描述
t_ds_project
存储项目定义,包括名称和描述。
t_ds_project_parameter
存储项目级参数。
t_ds_project_preference
存储项目偏好设置及配置。
t_ds_resources
管理资源文件(已弃用)。
t_ds_udfs
存储用户自定义函数(UDF)。
t_ds_datasource
管理数据源连接信息。

4. 用户管理表

用于用户认证、授权、租户管理等功能。

关键表:

表名
描述
t_ds_user
存储用户信息,包括用户名、密码和邮箱。
t_ds_tenant
管理租户信息。
t_ds_access_token
存储 API 访问令牌。
t_ds_session
管理用户会话。
t_ds_relation_project_user
映射用户与项目的关系及权限级别。
t_ds_relation_datasource_user
映射用户与数据源的关系及权限级别。

5. 调度表

管理调度命令、定时配置及任务调度记录。

关键表:

表名
描述
t_ds_command
存储用于执行工作流的命令。
t_ds_error_command
存储执行失败的命令。
t_ds_schedules
存储工作流的调度配置。
QRTZ_*
Quartz 调度器表,用于作业调度。

指令类型:

类型值
描述
0
启动作业流
1
从当前节点开始执行
2
恢复容错工作流
3
恢复已暂停的工作流
4
从失败节点开始执行
5
补数(Backfill)
6
调度执行
7
重跑(Rerun)
8
暂停
9
停止
10
恢复等待线程

6. 告警表

管理告警配置及记录。

关键表:

表名
描述
t_ds_alert
存储告警消息。
t_ds_alertgroup
管理告警分组及通知路由。
t_ds_alert_plugin_instance
配置告警插件(如 Email、Slack 等)。

7. 注册表

从 3.3.0 版本起,增加了基于 JDBC 的注册实现,替代 ZooKeeper。

关键表:

表名
描述
t_ds_jdbc_registry_data
存储注册中心数据。
t_ds_jdbc_registry_lock
管理分布式锁。
t_ds_jdbc_registry_client_heartbeat
记录客户端心跳信息。
t_ds_jdbc_registry_data_change_event
记录数据变更事件。


表关系

示意图


下图展示了关键表之间的关系:


模式演化的

重要变更

3.3.0 版本

      • 将“process”前缀表重命名为“workflow”:

        • t_ds_process_definition`→`t_ds_workflow_definition
        • t_ds_process_instance`→`t_ds_workflow_instance
        • t_ds_process_task_relation`→`t_ds_workflow_task_relation及对应 log 表
      • 新增 JDBC 注册表:t_ds_jdbc_registry_datat_ds_jdbc_registry_lockt_ds_jdbc_registry_client_heartbeatt_ds_jdbc_registry_data_change_event

      • 新增任务血缘表:t_ds_workflow_task_lineage

      • 任务类型SUB_PROCESS改为SUB_WORKFLOW

      3.2.0 版本

      • 新增项目参数表和项目偏好设置表:t_ds_project_parametert_ds_project_preference
      • 流程定义表新增执行类型字段:execution_type
      • 任务表新增缓存能力字段:is_cachecache_key
      • 引入任务测试标记(task test flag)功能


      功能分类的

      模式详情

      工作流定义与执行

      工作流定义表存储工作流的结构和配置,实例表跟踪执行情况。

      存储在工作流定义表中的关键元数据:

      • 工作流代码(唯一标识)
      • 工作流名称和描述
      • 全局参数
      • 超时设置
      • 告警组设置
      • 执行类型(并行、串行等待、串行丢弃、串行优先)

      任务定义与执行

      任务定义表存储任务配置,实例表跟踪执行。

      关键元数据包括:

      • 任务代码(唯一标识)
      • 任务名称和描述
      • 任务类型(SHELL、SQL、SPARK 等)
      • 任务参数(针对具体类型)
      • 资源需求(CPU、内存)
      • 超时设置
      • 重试配置
      • Worker 组分配

      用户与安全管理

      安全模型包括:

      • 用户密码认证
      • 会话管理
      • 基于访问令牌的 API 认证
      • 通过租户系统实现多租户
      • 资源级权限控制



      DolphinScheduler 的数据库模式覆盖了工作流调度的各个环节,包括定义、执行跟踪、资源管理和安全控制。
      随着版本迭代,该模式不断演进,尤其是 3.3.0 版本,将许多“process”表改为“workflow”,更准确地反映其功能。

      理解这一数据库模式有助于:

      • 为 DolphinScheduler 开发新功能
      • 通过数据库排查问题
      • 构建自定义报表或集成解决方案
      • 升级版本时理解数据模型





      用户案例



      天翼云Zoom网易邮箱 
      每日互动 惠生工程  作业帮 
      博世智驾 蔚来汽车 长城汽车
      集度长安汽车思科网讯
      食行生鲜联通医疗联想
      新网银行唯品富邦消费金融 
      自如有赞伊利当贝大数据
      珍岛集团传智教育Bigo
      YY直播  拈花云科太美医疗
      Cisco Webex兴业证券




      迁移实战



      Azkaban   Ooize(当贝迁移案例)
      Airflow (有赞迁移案例)
      Air2phin(迁移工具)
      Airflow迁移实践



      发版消息




      Apache DolphinScheduler 3.2.2版本正式发布!
      Apache DolphinScheduler 3.2.1 版本发布:增强功能与安全性的全面升级
      Apache DolphinScheduler 3.3.0 Alpha发布,功能增强与性能优化大升级!




      加入社区



      关注社区的方式有很多:

      • GitHub: https://github.com/apache/dolphinscheduler
      • 官网:https://dolphinscheduler.apache.org/en-us
      • 订阅开发者邮件:dev@dolphinscheduler@apache.org(向邮箱发送任意内容,收到邮件后回复同意订阅即可)
      • X.com:@DolphinSchedule
      • YouTube:https://www.youtube.com/@apachedolphinscheduler
      • Slack:https://join.slack.com/t/asf-dolphinscheduler/shared_invite/zt-1cmrxsio1-nJHxRJa44jfkrNL_Nsy9Qg

      同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。

      📂非代码方式包括:

      完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。

      👩‍💻代码方式包括:

      查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。

      贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

      社区汇总了以下适合新手的问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3A%22first+time+contributor%22

      优先级问题列表https://github.com/apache/dolphinscheduler/pulls?q=is%3Apr+is%3Aopen+label%3Apriority%3Ahigh

      如何参与贡献链接https://dolphinscheduler.apache.org/zh-cn/docs/3.2.2/%E8%B4%A1%E7%8C%AE%E6%8C%87%E5%8D%97_menu/%E5%A6%82%E4%BD%95%E5%8F%82%E4%B8%8E_menu

      如果你❤️小海豚,就来为我点亮Star吧!

      https://github.com/apache/dolphinscheduler


      你的好友秀秀子拍了拍你

      并请你帮她点一下“分享”

      【声明】内容源于网络
      0
      0
      海豚调度
      Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
      内容 0
      粉丝 0
      海豚调度 Apache DolphinScheduler是一个分布式、去中心化、易扩展的可视化DAG工作流任务调度系统,其致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
      总阅读0
      粉丝0
      内容0