同步任务自动建表能力

最近更新时间:2024-09-04 20:44:32

我的收藏
数据集成在离线及实时场景下提供一键建表、自动建表等功能,以帮助您在同步前或同步中快速构建目标数据表,从而提高数据链路使用效率。本文主要介绍对应功能使用方式、支持的链路、核心异构数据源间类型转换关系等。

功能介绍及使用场景

数据集成提供了一键建表、批量建表、以及根据 DDL 消息自动建表三种建表方式:
功能项
功能示意
功能介绍
适用场景
一键建表



此功能可根据来源端指定的多个表对象自动完成来源至目标端的 DDL 转换,支持用户手动修改转换后的 DDL 内容,并一次性批量创建。 功能关键词:异构 DDL 自动转换、批量建表、手动建表。
本功能适合于针对来源端的存量,快速构建与来源表结构近似的目标表。针对表模型复杂,需要业务自定义的情况,用户可根据业务特性编辑自动生成的 DDL 语句,提高异构 DDL 编写效率。
批量建表



根据源端 DDL 消息自动建表



此功能可实时监控来源端是否存在新建表 DDL,一旦源端产生可识别新建表消息,目标端可自动根据来源表结构自动生成目标端表对象。
功能关键词:DDL 自动感知与响应、自动建表。
本功能适合在实时整库搬迁时,期望目标端与来源端实时保证结构一致的数据同步场景。

一键建表支持链路

离线单表任务、实时单表任务支持根据来源表一键创建目标表,主要面向新增少量库表入湖、入仓场景。

离线单表同步任务

目标序号
目标端
支持的源端
1
Doris
MySQL、TDSQL-C MySQL、PostgreSQL
2
Hive
MySQL、Oracle、SQL Server、OceanBase、PostgreSQL
3
Iceberg
MySQL、TDSQL-C MySQL、TDSQL MySQL、Oracle、SqlServer、PostgreQL、Oceanbase、达梦
4
TCHouse-P
MySQL、TDSQL-C MySQL、TDSQL MySQL、Oracle、PostgreQL、Oceanbase、达梦
5
DLC
MySQL、TDSQL-C MySQL、PostgreSQL、Elasticsearch、Kafka

实时单表同步任务

目标序号
目标端
支持的源端
1
TCHouse-P
MySQL、TDSQL-C MySQL、TDSQL MySQL、Oracle、PostgreQL、Oceanbase、达梦
2
Iceberg
MySQL、TDSQL-C MySQL、TDSQL MySQL、Oracle、PostgreQL、SQL Server、Oceanbase、达梦
3
Doris
MySQL、TDSQL-C MySQL、PostgreQL
4
DLC
MySQL、TDSQL-C MySQL、PostgreSQL、Elasticsearch、Kafka

批量建表支持链路

离线批量创建单表任务、实时整库任务支持在任务配置阶段批量根据源表创建目标表,主要面向大量存量库表入湖、入仓场景。

离线批量同步任务

目标序号
目标端
支持的源端
1
Hive
MySQL、Oracle、SQL Server、PostgreSQL
2
Iceberg
MySQL、TDSQL-C MySQL、TDSQL MySQL、Oracle、SqlServer、PostgreQL、达梦
3
TCHouse-P
MySQL、TDSQL-C MySQL、TDSQLMySQL、Oracle、PostgreQL、OceanBase、达梦
4
Doris
MySQL、TDSQL-C MySQL、PostgreSQL
5
DLC
MySQL、TDSQL-C MySQL、PostgreSQL

实时整库迁移任务

目标序号
目标端
支持的源端
1
Doris
MySQL、TDSQL-C MySQL、TDSQL MySQL
2
DLC
MySQL、TDSQL-C MySQL、TDSQL MySQL

根据源端 DDL 消息自动建表支持链路

除以下链路外,其余实时整库链路均支持根据源端 DDL 消息在任务运行阶段自动创建目标端库、表:
序号
源端
目标端
备注
1
MySQL
PostgreSQL
仅支持使用已有数据库、Schema、数据表
2
OceanBase
Doris、Iceberg
仅支持使用已有数据库、数据表
3
Kafka
Doris
仅支持使用已有数据库、数据表

核心异构数据源建表类型转换关系

MySQL 至 Doris 建表字段类型转换:


MySQL(源端)
DORIS(目标端)
补充说明

数据类型
精度说明
数据类型
精度说明


BOOLEAN
0代表 false,1代表 true
BOOLEAN
0代表 false,1代表 true
-
数值类型
TINYINT
范围[-128, 127]
TINYINT
范围[-128, 127]
-
SMALLINT
范围[-32768, 32767]
SMALLINT
范围[-32768, 32767]
-
MEDIUMINT
范围[-8388608,8388607]
INT
范围[-2147483648, 2147483647]
-
INT
范围[-2147483648, 2147483647]
INT
范围[-2147483648, 2147483647]
-
BIGINT
范围[-9223372036854775808, 9223372036854775807]
BIGINT
范围[-9223372036854775808, 9223372036854775807]
-
UNSIGNED TINYINT
范围[0, 255]
SMALLINT
范围[-32768, 32767]
-
UNSIGNED MEDIUMINT
范围[0, 16777215]
INT
范围[-2147483648, 2147483647]
-
UNSIGNED INT
范围[0, 4294967295]
BIGINT
范围[-9223372036854775808, 9223372036854775807]
-
UNSIGNED BIGINT
范围[0, 18,446,744,073,709,551,615]
LARGEINT
范围[-2^127 + 1 ~ 2^127 - 1]
-
FLOAT
4字节浮点数
FLOAT
4字节浮点数
-
DOUBLE
8字节浮点数
DOUBLE
8字节浮点数
-
DECIMAL
DECIMAL(M,D),M 范围 [1, 65], D 范围是[0, 30]
DECIMALV3
DECIMAL(M,D),M 范围 [1, 38], D 范围是[0, precision]
-
日期时间类型
YEAR
范围:1901到 2155显示格式:YYYY
SMALLINT
范围[-32768, 32767]
-
TIME
范围:-838:59:59 到 838:59:59显示格式:hh:mm:ss 或 hh:mm:ss
STRING
变长字符串,最大(默认)支持1048576字节(1MB)
-
DATE
范围:1000-01-01 到9999-12-31显示格式:YYYY-MM-DD
DATEV2
范围:0000-01-01 到 9999-12-31显示格式:YYYY-MM-DD
-
DATETIME
1000-01-01 00:00:00 到 9999-12-31 23:59:59显示格式:YYYY-MM-DD HH:mm:ss
DATETIMEV2
0000-01-01 00:00:00 到 9999-12-31 23:59:59打印格式:YYYY-MM-dd HH:mm:ss.SSSSSS,可不选时间精度。
-
TIMESTAMP
UTC 1970-01-01 00:00:01 到 2038-01-19 03:14:07显示格式:YYYY-MM-DD HH:mm:ss
DATETIMEV2
显示格式:YYYY-MM-DD HH:mm:ss
TIMESTAMP 字段数据会随着系统时区而改变但 DATETIME 字段数据不会,建议根据业务场景进行时区转化
字符串类型
CHAR
0到255字符
CHAR
定长字符串,范围是1 - 255
-
VARCHAR
0到65,535字符
VARCHAR
变长字符串,范围是1 - 65533
如果 MySQL 字段长度超过65533,建议转化为string
TINYTEXT、TEXT
0到255字符
STRING
变长字符串,最大(默认)支持1048576字节(1MB)
-
MEDIUMTEXT、LONGTEXT
0到65535字符
STRING
变长字符串,最大(默认)支持1048576字节(1MB)
MySQL 字段长度超过1048576字节时可能精度丢失
二进制字符串
TINYBLOB、BLOB
二进制字符串,0 到255字节
STRING
变长字符串,最大(默认)支持1048576字节(1MB)
-
MEDIUMBLOB、LONGBLOB
二进制字符串,0 到 16,777,215字节,最大16M
STRING
变长字符串,最大(默认)支持1048576字节(1MB)
MySQL 字段长度超过1048576字节时可能精度丢失
BINARY、VARBINARY
固定长度二进制数据,最多255字节
STRING
变长字符串,最大(默认)支持1048576字节(1MB)
-
其他
JSON
JSON 数据,最大存储大小为1GB
STRING
变长字符串,最大(默认)支持1048576字节(1MB)
MySQL 字段大小超过1M时可能精度丢失
SET、BIT
字符串集合,最多64个成员
STRING
变长字符串,最大(默认)支持1048576字节(1MB)
-
ENUM
枚举对象,最多65535个成员
UNSUPPORTED
-
暂不支持

MySQL 至 DLC iceberg 表建表字段类型转换:

Mysql 类型(源端)
DLC Iceberg 表 (目标端)
说明
tinyint(1)
int
-
smallint
smallint
-
int
int
-
mediumint
int
-
bigint
bigint
-
float
float
-
double
double
-
decimal
decimal
-
datetime
timestamp
-
timestamp
timestamp
-
date
date
-
time
time
-
tinytext
string
-
text
string
-
mediumtext
string
-
longtext
string
-
varchar
string
-
char
string
-
bool
boolean
-
tinyblob
binary
-
mediumblob
binary
-
blob
binary
-
longblob
binary
-
varbinary
binary
-
binary
binary
-
decimal unsigned(p,x)
decimal(p+1, x)
说明:decimal(p+1, x)/string(超长后改为string)
decimal unsigned(p,x)
decimal(p+1, x)
说明:decimal(p+1, x)/string(超长后改为string)
int unsigned
bigint
-
int unsigned zerofill
bigint
-
smallint unsigned
int
-
smallint unsigned zerofill
int
-
mediumint unsigned
bigint
-
mediumint unsigned zerofill
bigint
-
float unsigned
double
-
float unsigned zerofill
double
-
double unsigned
decimal(20,0)
-
double unsigned zerofill
decimal(20,0)
-
bigint unsigned
decimal(20,0)
-