全面解析 Apache DolphinScheduler 数据库模式:从表结构到调度逻辑
本文档对 Apache DolphinScheduler 的数据库模式进行了系统介绍,涵盖存储工作流定义、任务配置、调度信息、用户数据及其他核心系统组件的各类表的结构、相互关系和功能,帮助用户深入理解 DolphinScheduler 的运行机制。
目的与范围
在 DolphinScheduler 中,数据库模式是整个工作流调度系统的持久化基础。它用于存储所有配置信息、执行记录、用户数据以及系统运行所需的元数据。系统官方支持 MySQL、PostgreSQL 和 H2 三种数据库,并为每种数据库提供了对应的 SQL 脚本。
支持的数据库系统
DolphinScheduler 提供了以下数据库的初始化脚本:
MySQL
PostgreSQL (
H2(主要用于测试)
脚本文件位置如下:
MySQL:
dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sqlPostgreSQL:
dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler_postgresql.sqlH2:
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”。
关键表:
工作流实例状态:
2. 任务相关表
任务相关表用于存储任务定义、执行实例及参数。
关键表:
3. 项目与资源表
用于管理项目及其相关资源(文件、UDF、自定义数据源等)。
关键表:
4. 用户管理表
用于用户认证、授权、租户管理等功能。
关键表:
5. 调度表
管理调度命令、定时配置及任务调度记录。
关键表:
指令类型:
6. 告警表
管理告警配置及记录。
关键表:
7. 注册表
从 3.3.0 版本起,增加了基于 JDBC 的注册实现,替代 ZooKeeper。
关键表:
表关系示意图
下图展示了关键表之间的关系:
模式演化的重要变更
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 开发新功能
通过数据库排查问题
构建自定义报表或集成解决方案
升级版本时理解数据模型
版权声明: 本文为 InfoQ 作者【白鲸开源】的原创文章。
原文链接:【http://xie.infoq.cn/article/bdbd96a82017c10f7b6e60da8】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。







评论