在 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 版本新增)
工作流相关表用于存储工作流定义、实例及其与任务的关系。在 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 | 保存任务关系变更历史。 |
工作流实例状态:

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

用于管理项目及其相关资源(文件、UDF、自定义数据源等)。
关键表:
| 表名 | 描述 |
|---|---|
| t_ds_project | 存储项目定义,包括名称和描述。 |
| t_ds_project_parameter | 存储项目级参数。 |
| t_ds_project_preference | 存储项目偏好设置及配置。 |
| t_ds_resources | 管理资源文件(已弃用)。 |
| t_ds_udfs | 存储用户自定义函数(UDF)。 |
| t_ds_datasource | 管理数据源连接信息。 |
用于用户认证、授权、租户管理等功能。
关键表:
| 表名 | 描述 |
|---|---|
| t_ds_user | 存储用户信息,包括用户名、密码和邮箱。 |
| t_ds_tenant | 管理租户信息。 |
| t_ds_access_token | 存储 API 访问令牌。 |
| t_ds_session | 管理用户会话。 |
| t_ds_relation_project_user | 映射用户与项目的关系及权限级别。 |
| t_ds_relation_datasource_user | 映射用户与数据源的关系及权限级别。 |
管理调度命令、定时配置及任务调度记录。
关键表:
| 表名 | 描述 |
|---|---|
| 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 | 恢复等待线程 |
管理告警配置及记录。
关键表:
| 表名 | 描述 |
|---|---|
| t_ds_alert | 存储告警消息。 |
| t_ds_alertgroup | 管理告警分组及通知路由。 |
| t_ds_alert_plugin_instance | 配置告警插件(如 Email、Slack 等)。 |
从 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 | 记录数据变更事件。 |
下图展示了关键表之间的关系:

将“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_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
新增项目参数表和项目偏好设置表:t_ds_project_parameter、t_ds_project_preference
流程定义表新增执行类型字段:execution_type
任务表新增缓存能力字段:is_cache、cache_key
引入任务测试标记(task test flag)功能
工作流定义表存储工作流的结构和配置,实例表跟踪执行情况。
存储在工作流定义表中的关键元数据:
工作流代码(唯一标识)
工作流名称和描述
全局参数
超时设置
告警组设置
执行类型(并行、串行等待、串行丢弃、串行优先)

任务定义表存储任务配置,实例表跟踪执行。
关键元数据包括:
任务代码(唯一标识)
任务名称和描述
任务类型(SHELL、SQL、SPARK 等)
任务参数(针对具体类型)
资源需求(CPU、内存)
超时设置
重试配置
Worker 组分配

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

DolphinScheduler 的数据库模式覆盖了工作流调度的各个环节,包括定义、执行跟踪、资源管理和安全控制。
随着版本迭代,该模式不断演进,尤其是 3.3.0 版本,将许多“process”表改为“workflow”,更准确地反映其功能。
理解这一数据库模式有助于:
为 DolphinScheduler 开发新功能
通过数据库排查问题
构建自定义报表或集成解决方案
升级版本时理解数据模型
