元数据结构说明
描述
CloudCanal 任务配置中,比较难理解的包含两部分内容,一是描述数据源库表列等元数据的结构,二是源和目标元数据映射关系。
本文档主要介绍如何理解描述数据源库表列等元数据的结构。
举个例子
如下结构一般出现在 DataJob 配置 srcSchema 或者 dstSchema 中,表示一个数据源库表列等信息。这个结构有几个特点
- 结构内容嵌套展现了数据源元信息的层次结构
- 不同数据源类型具有差异的层次结构
- 不同数据源类型存在一些差异的元素
- 每一层描述的信息包含通用的 targetAutoCreate 和 inBlackList 属性,前者表示对端对应的结构是否自动创建,后者表示是否在黑名单中
[
{
"db": "dingtax",
"dbPattern": "",
"tables": [
{
"table": "access_table_111112222222333333333333344444444444444",
"tablePattern": "",
"columns": [
{
"column": "id",
"targetAutoCreate": true,
"inBlackList": false
},
{
"column": "guid",
"targetAutoCreate": true,
"inBlackList": false
}
],
"actions": [
"INSERT",
"UPDATE",
"DELETE"
],
"inBlackList": false,
"targetAutoCreate": true,
"specifiedPks": []
},
{
"table": "kbs_no_pk_have_uniq",
"tablePattern": "",
"columns": [
{
"column": "name",
"targetAutoCreate": false,
"inBlackList": false
},
{
"column": "uniq_id",
"targetAutoCreate": false,
"inBlackList": false
}
],
"actions": [
"INSERT"
],
"inBlackList": false,
"targetAutoCreate": false,
"specifiedPks": [
"uniq_id"
]
}
],
"targetAutoCreate": false,
"inBlackList": false
}
]
常用数据源层次结构和特殊属性
数据源名称 | 第一层元素和属性 | 第二层元素和属性 | 第三层元素和属性 | 第四层元素和属性 |
---|---|---|---|---|
MySQL | 数据库 db(数据库名) dbPattern(数据库名表达式,未使用) tables (表信息列表,见第二层描述) | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) specifiedPks(指定主键列表) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) columns(列列表,见第三层描述) | 列 column(列名) | 无 |
PolarDbMySQL | 数据库 db(数据库名) dbPattern(数据库名表达式,未使用) tables (表信息列表,见第二层描述) | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) specifiedPks(指定主键列表) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) columns(列列表,见第三层描述) | 列 column(列名) | 无 |
PostgreSQL | 数据库 db(数据库名) schemas(pg schema列表,见第二层描述) | schema schema(schema名) schemaPattern(schema表达式,未使用) tables (表信息列表,见第三层描述) | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) columns(列列表,见第四层描述) | 列 column(列名) |
Greenplum | 数据库 db(数据库名) schemas(pg schema列表,见第二层描述) | schema schema(schema名) schemaPattern(schema表达式,未使用) tables (表信息列表,见第三层描述) | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) columns(列列表,见第四层描述) | 列 column(列名) |
Oracle | 数据库 db(数据库名) tableSpaces(oracle schema列表,见第二层描述) | schema tableSpace(schema名) tableSpacePattern(schema表达式,未使用) tables (表信息列表,见第三层描述) | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) columns(列列表,见第四层描述) | 列 column(列名) |
SQLServer | 暂未开放 | 暂未开放 | 暂未开放 | 暂未开放 |
Redis | 缓存key命名空间 prefix(缓存key命名前缀) suffixFields(缓存key命名空间属性列表) | 无 | 无 | 无 |
ElasticSearch | 索引 indexName(索引名称) idFieldNames(构建ES主键的属性列表) numberOfShards(分片数量,int类型) numberOfReplicas(副本数量,int类型) globalTimeZone(时区字符串) fields(列信息列表,见第二层描述) | 列 fieldName(列名) fieldTypeName(Es中列类型) needIndex(是否需要索引,boolean类型) timeFormat(时间格式) esAnalyzerType(分词器类型,见esAnalyzerType说明) needAutoCreated(是否自动创建,boolean类型) | ||
AdbForMySQL | 数据库 db(数据库名) dbPattern(数据库名表达式,未使用) tables (表信息列表,见第二层描述) | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) columns(列列表,见第三层描述) | 列 column(列名) | 无 |
TiDB | 数据库 db(数据库名) dbPattern(数据库名表达式,未使用) tables (表信息列表,见第二层描述) | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) columns(列列表,见第三层描述) | 列 column(列名) | 无 |
ClickHouse | 数据库 db(数据库名) dbPattern(数据库名表达式,未使用) tables (表信息列表,见第二层描述) | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) columns(列列表,见第三层描述) | 列 column(列名) | 无 |
Kudu | 表 table(表名) tablePattern(表名表达式,未使用) dataFilter(json 结构,见下方dataFilter结构说明) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) partitions(分区列表,见第二层描述) columns(列列表,见第二层描述) | 分区 columns(分区的列) partitionType(分区类型,可选值Range,Hash) 列 column(列名) | 无 | 无 |
MongoDB | 数据库 db(数据库名) collections(集合列表,见第二层描述) | 集合 collection(集合名) actions(操作列表,目前包含INSERT,UPDATE,DELETE可选元素) | 无 | 无 |
Kafka | Topic topic(topic名) topicPattern(topic表达式,未使用) partitions(分区数,整数类型) partitionKeys(分区字段列表) | 无 | 无 | 无 |
RocketMQ | Topic topic(topic名) topicPattern(topic表达式,未使用) partitions(分区数,整数类型) partitionKeys(分区字段列表) | 无 | 无 | 无 |
RabbitMQ | 队列 queue(队列名) queuePattern(队列表达式,未使用) | 无 | 无 | 无 |
Hive | 数据库 db(数据库名) dbPattern(数据库名表达式,未使用) tables (表信息列表,见第二层描述) | 表 table(表名) tablePattern(表名表达式,未使用) partitionKeys(分区键列表,详见partitionKeys结构说明) columns(列列表,见第三层描述) | 列 column(列名) | 无 |
dataFilter结构说明
属性名称 | 属性说明 |
---|---|
type | 数据过滤器类型 SQL_WHERE JAVA_CODE(未实现) REGULAR_EXPRESSION(未实现) AVIATOR_EXPRESSION(未实现) |
expression | 对应类型的数据过滤表达式 |
partitionKeys结构说明
属性名称 | 属性说明 |
---|---|
keyName | 分区键名称 |
originCol | 数据来源字段 |
partitionFunction | 分区方式 EQUAL YEAR_FORMAT MONTH_FORMAT DAY_FORMAT HOUR_FORMAT MINUTE_FORMAT |
esAnalyzerType说明
可选值包含以下几种,其中CUSTOM_A
,CUSTOM_B
,CUSTOM_C
,CUSTOM_D
,CUSTOM_E
比较特殊,表示用户自定义分词器,对应 ElasticSearch 中分词器需要命名为对应小写字符串,即 custom_a
,custom_b
,custom_c
,custom_d
,custom_e
,(后续修改成更加优雅的方式)
STANDARD
SIMPLE
WHITESPACE
STOP
KEYWORD
PATTERN
ENGLISH
FINGERPRINT
ALIWS
QQ_SMART
QQ_MAX
QQ_SMART_NER
QQ_MAX_NER
IK_SMART
IK_MAX_WORD
SMARTCN
CUSTOM_A
CUSTOM_B
CUSTOM_C
CUSTOM_D
CUSTOM_E