news 2026/9/14 6:36:28

Apache DolphinScheduler PostgreSQL 数据源接入指南:参数配置、插件依赖与底层原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache DolphinScheduler PostgreSQL 数据源接入指南:参数配置、插件依赖与底层原理

Apache DolphinScheduler PostgreSQL 数据源接入指南:参数配置、插件依赖与底层原理

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

本指南围绕 Apache DolphinScheduler 的 PostgreSQL 数据源展开,完整讲解在 Web 界面中创建 PostgreSQL 数据源所需的每一项参数含义,说明该数据源插件为何默认不随二进制包提供、以及如何通过插件依赖安装将其激活。阅读并动手实践后,你将能够独立完成 PostgreSQL 数据源的创建、连接校验与任务使用,并理解数据源插件在源码层面的构建与连接原理。

PostgreSQL 数据源在 DolphinScheduler 中的定位

DolphinScheduler 通过「数据源中心」统一管理各类数据库连接,SQL、Procedure、DataX 等任务在执行时可以引用已创建的数据源,从而复用连接信息、避免在任务参数中重复暴露账号密码。PostgreSQL 是其中一类由独立插件承载的数据源类型,对应仓库中的插件模块为 dolphinscheduler-datasource-postgresql,其 Maven 插件标识为datasource.postgresql(见 pom.xml)。

从插件架构上看,PostgreSQL 数据源由以下几部分组成(均位于 postgresql 插件源码目录):

  • PostgreSQLDataSourceProcessor:参数 DTO 与连接参数之间的转换、JDBC 驱动与校验查询声明、真实连接的获取;
  • PostgreSQLConnectionParam:继承BaseConnectionParam,承载最终连接所需的 user、password、address、database、jdbcUrl、driverClassName、validationQuery 等字段;
  • PostgreSQLDataSourceParamDTO:承接前端表单数据,其getType()返回DbType.POSTGRESQL
  • PostgreSQLDataSourceChannel及对应的PostgrePooledSQLDataSourceClient/PostgreAdHocSQLDataSourceClient:分别提供池化连接(供执行任务使用)与临时连接(供界面测试连通性等场景使用)的创建入口。

创建 PostgreSQL 数据源:核心参数一览

在 DolphinScheduler 前端界面进入「数据源中心」,点击「创建数据源」,在类型下拉框中选择POSTGRESQL,即进入下述表单。原文档定义的核心参数及含义如下表所示:

参数(Datasource)说明(Description)
Datasource选择数据源类型为 POSTGRESQL。
Datasource name输入数据源名称,供任务引用时识别。
Description输入数据源的描述信息。
IP/Host Name输入 PostgreSQL 服务的 IP 或主机名。
Port输入 PostgreSQL 服务的端口,默认通常为 5432。
Username设置 PostgreSQL 连接用户名。
Password设置 PostgreSQL 连接密码。
Database name输入 PostgreSQL 连接的数据库名。
Jdbc connection parametersPostgreSQL 连接的参数设置,以 JSON 格式填写。

其中「IP/Host Name」「Port」「Username」「Password」「Database name」五项构成了最基本的连接三要素(地址 + 账号 + 数据库),而「Jdbc connection parameters」是进阶选项,用于追加额外的 JDBC 连接属性,详见下一节。

Jdbc connection parameters:JSON 格式的高级连接参数

在填写连接参数时,可以按 JSON 格式补充额外的 JDBC 属性。以源码实现为准,PostgreSQLDataSourceProcessor.createConnectionParams 会先拼接出基础 JDBC URL:

jdbc:postgresql://{host}:{port}/{database}

其中前缀jdbc:postgresql://定义于 DataSourceConstants。

当表单中填入了 JSON 格式的额外参数后,getJdbcUrl会调用transformOther将 JSON 的键值对转换为key1=value1&key2=value2的查询串拼接到 URL 末尾(见 PostgreSQLDataSourceProcessor.getJdbcUrl / transformOther),例如:

{ "connectTimeout": "10", "socketTimeout": "60", "stringtype": "unspecified" }

最终生成的连接 URL 形如:

jdbc:postgresql://127.0.0.1:5432/dolphinscheduler?connectTimeout=10&socketTimeout=60&stringtype=unspecified

这些参数最终会作用于 PostgreSQL JDBC 驱动的连接行为,可用于控制超时、字符类型处理、SSL 等连接属性。连接建立时,getConnection 通过JdbcDriverConnectionProvider使用声明的驱动类与上述 URL 完成真实连接的获取。

原生支持说明:为什么需要手动激活插件依赖

原文档在「Native Supported」一节明确指出:PostgreSQL 数据源默认不随二进制发行包原生提供,需要读者参考伪集群部署文档的「Download Plugins Dependencies」章节来激活该数据源。

这是因为从 3.3.0 版本起,DolphinScheduler 二进制发行包不再内置插件依赖,需要用户按需自行下载。激活 PostgreSQL 数据源的推荐方式是使用安装脚本,在发行包根目录执行:

bash ./bin/install-plugins.sh 3.3.0

脚本会将版本号作为参数,通过 Mavendependency:get拉取指定版本的插件(见 install-plugins.sh)。如果只希望安装部分插件,可以在conf/plugins_config中按需裁剪;仓库中对应配置样例为 config/plugins_config,其中--datasource-plugins--段落已包含dolphinscheduler-datasource-postgresql这一行,即表示该数据源插件属于可选的数据源插件集合:

--datasource-plugins-- ... dolphinscheduler-datasource-postgresql ... --end--

提示:插件依赖包通常不包含在二进制发行包内。如果启动服务或使用数据源时出现ClassNotFoundException,请先检查对应插件类型的依赖是否缺失。PostgreSQL 数据源插件的驱动依赖为org.postgresql:postgresql(见 pom.xml),即 PostgreSQL JDBC Driver。

源码级的连接细节与行为说明

驱动与校验查询

PostgreSQL 数据源插件声明的 JDBC 驱动类与连接校验查询均定义在数据源 API 常量中:

  • 驱动类:org.postgresql.Driver(DataSourceConstants.ORG_POSTGRESQL_DRIVER);
  • 校验查询:select version()(DataSourceConstants.POSTGRESQL_VALIDATION_QUERY),用于连接池健康检查。

密码加密存储

创建数据源时,密码不会以明文写入数据库:createConnectionParams中通过PasswordUtils.encodePassword对密码进行加密后再存入连接参数(见 PostgreSQLDataSourceProcessor.createConnectionParams),获取连接时再使用PasswordUtils.decodePassword解密(见 PostgreSQLDataSourceProcessor.getConnection),保证凭据的落盘安全。

两种连接获取方式

PostgreSQLDataSourceChannel定义了两种客户端创建入口(见 PostgreSQLDataSourceChannel.java):

  • createAdHocDataSourceClient:创建PostgreAdHocSQLDataSourceClient,用于一次性/临时的查询场景;
  • createPooledDataSourceClient:创建PostgrePooledSQLDataSourceClient,用于任务执行等高频率使用场景,通过连接池复用连接、降低建连开销。

兼容 PostgreSQL 特性的 SQL 拆分

PostgreSQL 支持以$tag$ ... $tag$形式书写的美元引用(dollar-quoted)字符串,函数体、存储过程等内容常依赖该语法。PostgreSQLDataSourceProcessor.splitAndRemoveComment在按分号拆分多条 SQL 时,会先借助 Druid 解析器去除注释,再通过splitSqlRespectingDollarQuotes识别$...$包裹的块,确保美元引用内的分号不会被误判为语句分隔符(见 PostgreSQLDataSourceProcessor.splitAndRemoveComment)。这意味着在使用 SQL 任务执行含函数定义等多语句脚本时,拆分结果能保持 PostgreSQL 语义正确。

实践建议与常见问题

  1. 创建前先确认插件已激活:若界面「数据源中心」的创建列表中找不到 POSTGRESQL 类型,说明插件依赖尚未安装,请先按上文「原生支持说明」执行install-plugins.sh并重启相关服务。
  2. 连通性测试:创建数据源时界面提供的连通性测试走临时连接通道(PostgreAdHocSQLDataSourceClient),而任务执行走池化连接通道(PostgrePooledSQLDataSourceClient),两者都应保证目标主机与端口在网络层面可达。
  3. 连接参数的使用场景:当需要设置超时、SSL 或特殊类型映射等驱动级属性时,优先通过「Jdbc connection parameters」的 JSON 配置完成,无需修改任务脚本。
  4. 密码安全:数据源密码在落库前会经过加密处理,任务侧引用数据源时无需也无法直接读取明文密码。

小结

通过本文,你已经掌握了 Apache DolphinScheduler 中 PostgreSQL 数据源从「界面参数填写」到「插件依赖激活」再到「源码级连接原理」的完整链路:核心参数(类型、名称、主机、端口、账号、密码、数据库、JSON 连接参数)决定了连接的基础信息;install-plugins.shplugins_config决定了插件能否被加载;而 PostgreSQLDataSourceProcessor 在幕后负责 JDBC URL 组装、密码加解密、驱动加载、校验查询与兼容 PostgreSQL 的 SQL 拆分。据此即可在实际环境中顺利接入 PostgreSQL,并让 SQL 等任务安全复用该数据源。

【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/GitHub_Trending/dol/dolphinscheduler

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/14 6:31:35

回文链表怎么判断?快慢指针+反转链表实现O(1)空间解法

1. 题目理解与第一性原理拆解回文链表这道题,几乎每个刷LeetCode的人都绕不过去。它出现在Hot100的第23位,面试出镜率极高,尤其是在字节、微软这类喜欢考链表操作的厂子,基本属于必背题。先看题目本身:给定一个单链表的…

作者头像 李华
网站建设 2026/9/14 6:30:19

腾讯Agent Suite办公智能体套件深度解析与企业落地实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/14 6:27:34

Context-Mode:基于SQLite+FTS5+BM25的轻量级上下文调度实践

1. 项目概述:Context-Mode 不是玄学,而是可落地的上下文调度机制 “Context-mode”这个词最近在开发者社区里频繁出现,尤其和 MCP、SQLite、FTS5、BM25 这几个关键词绑在一起。它不是某个开源库的官方命名,也不是某家大厂刚发布的…

作者头像 李华
网站建设 2026/9/14 6:27:09

Vector 0.16 升级指南:五大破坏性变更的完整迁移实操

Vector 0.16 升级指南:五大破坏性变更的完整迁移实操 【免费下载链接】vector A high-performance observability data pipeline. 项目地址: https://gitcode.com/GitHub_Trending/vect/vector 本文聚焦 Vector 0.16.0 版本的 5 项破坏性变更(bre…

作者头像 李华