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

3.2.0 版本

  • 新增项目参数表和项目偏好设置表:t_ds_project_parametert_ds_project_preference
  • 流程定义表新增执行类型字段:execution_type
  • 任务表新增缓存能力字段:is_cachecache_key
  • 引入任务测试标记(task test flag)功能

功能分类的模式详情

工作流定义与执行

工作流定义表存储工作流的结构和配置,实例表跟踪执行情况。

存储在工作流定义表中的关键元数据:

  • 工作流代码(唯一标识)
  • 工作流名称和描述
  • 全局参数
  • 超时设置
  • 告警组设置
  • 执行类型(并行、串行等待、串行丢弃、串行优先)

任务定义与执行

任务定义表存储任务配置,实例表跟踪执行。

关键元数据包括:

  • 任务代码(唯一标识)
  • 任务名称和描述
  • 任务类型(SHELL、SQL、SPARK 等)
  • 任务参数(针对具体类型)
  • 资源需求(CPU、内存)
  • 超时设置
  • 重试配置
  • Worker 组分配

用户与安全管理

安全模型包括:

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

总结

DolphinScheduler 的数据库模式覆盖了工作流调度的各个环节,包括定义、执行跟踪、资源管理和安全控制。 随着版本迭代,该模式不断演进,尤其是 3.3.0 版本,将许多“process”表改为“workflow”,更准确地反映其功能。

理解这一数据库模式有助于:

  • 为 DolphinScheduler 开发新功能
  • 通过数据库排查问题
  • 构建自定义报表或集成解决方案
  • 升级版本时理解数据模型
优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/dailidong/blog/18813822

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。