跳到主要内容

元数据结构说明

描述

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可选元素)
KafkaTopic

topic(topic名)
topicPattern(topic表达式,未使用)
partitions(分区数,整数类型)
partitionKeys(分区字段列表)
RocketMQTopic

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