点击蓝字 关注我们
本文档对 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 |
|
| t_ds_datasource |
|
4. 用户管理表
用于用户认证、授权、租户管理等功能。
关键表:
|
|
|
|---|---|
| t_ds_user |
|
| t_ds_tenant |
|
| t_ds_access_token |
|
| 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_* |
|
指令类型:
|
|
|
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6. 告警表
管理告警配置及记录。
关键表:
|
|
|
|---|---|
| t_ds_alert |
|
| t_ds_alertgroup |
|
| t_ds_alert_plugin_instance |
|
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
3.2.0 版本
-
新增项目参数表和项目偏好设置表: 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 开发新功能 -
通过数据库排查问题 -
构建自定义报表或集成解决方案 -
升级版本时理解数据模型
用户案例
迁移实战
发版消息
加入社区
关注社区的方式有很多:
-
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;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。
你的好友秀秀子拍了拍你
并请你帮她点一下“分享”

