全面解析 Apache 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_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

未经允许不得转载:紫竹林-程序员中文网 » 全面解析 Apache DolphinScheduler 数据库模式:从表结构到调度逻辑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
关于我们 免责申明 意见反馈 隐私政策
程序员中文网:公益在线网站,帮助学习者快速成长!
关注微信 技术交流
推荐文章
每天精选资源文章推送
推荐文章
随时随地碎片化学习
推荐文章
发现有趣的