本文档对 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
架构总览
数据库模式可按功能分为以下几组:

- 工作流(Workflow)相关表
- 任务(Task)相关表
- 项目(Project)与资源(Resource)相关表
- 用户管理表
- 调度(Scheduling)表
- 告警(Alerting)表
- 注册(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_definitiont_ds_process_instance→t_ds_workflow_instancet_ds_process_task_relation→t_ds_workflow_task_relation及对应 log 表
-
新增 JDBC 注册表:
t_ds_jdbc_registry_data、t_ds_jdbc_registry_lock、t_ds_jdbc_registry_client_heartbeat、t_ds_jdbc_registry_data_change_event -
新增任务血缘表:
t_ds_workflow_task_lineage -
任务类型
SUB_PROCESS改为SUB_WORKFLOW