1. 概述
1.1 版本
| FineDataLink 版本 | 功能变动 |
|---|---|
| 4.2.15.1 | 定时任务支持读取和写入 Hologres 实时任务支持读取和写入 Hologres 实时管道支持写入 Hologres |
1.2 功能简介
FineDataLink 支持连接 Hologres 数据源,适配功能:
定时任务读取和写入。
实时任务读取和写入。
实时管道写入。
2. 配置数据连接
2.1 前提条件
详情请参见:前提条件
2.2 版本和驱动
1)确认数据库版本,下载驱动文件。
| 支持的数据源版本 | 驱动下载 |
|---|---|
| 1.3.36 及之后版本 |
2)FineDataLink独立部署 工程,驱动文件下载后,放置到%FDL_home%\webapps\webroot\WEB-INF\lib下;
OPS 部署的 FineDataLink 工程,驱动放置在 FDL 工程外挂目录的 customlib 文件夹下。如忘记工程外挂目录位置,请参考文档查询:导出项目部署信息
若为集群工程,每个集群节点都需要上传一遍驱动文件。
3)重启 FineDataLink工程。
2.3 收集连接信息
在连接数据库之前,请收集以下信息:
主机和端口号。
数据库的名称。
数据库的用户名和密码。
2.4 具体连接步骤
创建数据连接步骤请参见:创建并管理数据源

部分设置项说明如下表所示:
| 设置项 | 说明 |
|---|---|
| 主机&端口 | 进入 Hologres管理控制台 ,选择左侧导航栏实例列表,单击目标实例,在实例详情页网络信息中获取网络地址和端口 |
| 用户 | 用户必须是管理员 |
3. 使用数据源
提示:1)支持的字段类型:INTEGER、BIGINT、SMALLINT、TEXT、CHAR(n)、VARCHAR(n)、DOUBLE PRECISION、BOOLEAN、NUMERIC(38,8)、DATE、TIME、TIMETZ、TIMESTAMP、TIMESTAMPTZ、JSON、int4[]、int8[]、float4[]、float8[]、boolean[]、text[]、JSONB
2)Hologres 分区表官方说明请参见:分区表介绍
3.1 定时任务
3.1.1 数据来源
定时任务中,支持选择 Hologres 作为数据来源。如下图所示:

1)不支持并行取数功能。
2)不支持读取存储过程。
3.1.2 数据去向与映射
定时任务中,支持选择 Hologres 作为目标端。

1)Hologres 作为定时任务目标端时,自动创建分区表以及同步至分区表功能仅支持逻辑分区表,配置页面中不会检测分区类型,但运行时如果为物理分区会执行报错。
2)定时任务支持写入 Hologres 数据库的分区表:
目标表若为自动建表,支持选择不超过两列的分区键;分区键支持的字段类型为:INT、TEXT、VARCHAR、DATE、TIMESTAMP、TIMESTAMPTZ。
分区表如果有主键,则分区键(Partition Key)必须是主键的子集。

3)未支持 Hologres 所有的字段类型,当来源端存在不支持的字段类型时,在字段映射处置灰处理。
3.1.3 写入方式
写入方式中,支持两种装载方式:COPY装载、普通装载。

| 装载方式 | 说明 |
|---|---|
| 普通装载 | 应用场景: 数据写入量小时推荐使用;或无法提供 COPY 方案所需用户权限时,选择普通装载方式 功能简介: 默认为普通装载 以 JDBC 做串行装载 |
| COPY装载 | 应用场景: 数据写入量较大时推荐使用,目前建议用户使用 COPY 装载,写入速度较快 前提条件: 若选择 COPY 装载方式,需要在目标数据库先创建 fdl_temp 模式用来存放临时表,需要用户有建表、建指定模式的权限(如果已由 DBA 建好模式并赋权,数据库用户可不需要建schema的权限) |
3.2 实时管道
1)实时管道任务中,Hologres 支持作为目标端。
2)不支持 同步源表结构变化 功能。
3)实时管道支持写入逻辑分区表
3.3 实时任务
3.3.1 读取
前提条件:
1)建表时开启 binlog 。

推荐使用hologres的控制台建表,直观且显示的信息更多。对于不是自己账号下的 hologres 实例,通过 hologres 控制台连接前需要原实例所有者打开配置。
| 步骤 | 说明 |
|---|---|
| 第一步 | 为当前账号(假设为账号 A)中的目标实例开启 HoloWeb 跨主账号登录功能,具体操作如下:
|
| 第二步 | 在控制台的左上角点击连接实例,填入连接信息即可
|
2)创建 publication 。
CREATE publication commoncolumntypetest_real_01_publication FOR TABLE public.commoncolumntypetest_real_01; //记得替换表名
通过以下语句来查询存量publication :SELECT * FROM pg_publication_tables;

3)创建slot。
CALL hg_create_logical_replication_slot('commoncolumntypetest_real_01_slot', 'hgoutput', 'commoncolumntypetest_real_01_publication'); //记得替换表名
通过以下语句来查询存量slot :SELECT * FROM hologres.hg_replication_slot_properties;

4)V2.1 以下版本的 Hologres,会要求创建hg_binlog extension。
作为实时任务源端:
注1:不支持读取分区表。
注2:用户使用 Hologres 作为源端,更多内容说明请参见 订阅Hologres Binlog 文档。
1)「维度表输入」算子支持选择 Hologres 作为来源端。如下图所示:

2)实例类型为计算组型、通用型时,支持在「CDC输入」算子中读取 Hologres 。

3.3.2 写入
Hologres 支持作为实时任务的写入端。如下图所示:
支持写入逻辑分区表。

