写点什么

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

作者:白鲸开源
  • 2025-11-26
    天津
  • 本文字数:1565 字

    阅读完需:约 5 分钟

本文档对 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”


关键表:



工作流实例状态:


2. 任务相关表

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


关键表:



3. 项目与资源表

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


关键表:


4. 用户管理表

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


关键表:


5. 调度表

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


关键表:



指令类型:


6. 告警表

管理告警配置及记录。


关键表:


7. 注册表

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


关键表:


表关系示意图

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


模式演化的重要变更

3.3.0 版本

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

  • t_ds_process_definitiont_ds_workflow_definition

  • t_ds_process_instancet_ds_workflow_instance

  • t_ds_process_task_relationt_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 开发新功能

  • 通过数据库排查问题

  • 构建自定义报表或集成解决方案

  • 升级版本时理解数据模型

发布于: 刚刚阅读数: 5
用户头像

白鲸开源

关注

一家开源原生的DataOps商业公司。 2022-03-18 加入

致力于打造下一代开源原生的DataOps 平台,助力企业在大数据和云时代,智能化地完成多数据源、多云及信创环境的数据集成、调度开发和治理,以提高企业解决数据问题的效率,提升企业分析洞察能力和决策能力。

评论

发布
暂无评论
全面解析 Apache DolphinScheduler 数据库模式:从表结构到调度逻辑_数据库_白鲸开源_InfoQ写作社区