1. 概述
1.1 版本
FineDataLink版本 | 功能变动 |
---|---|
4.1.11.1 | 新增表事件调度表: fine_dp_exec_record_trigger fine_dp_schedule fine_dp_task_map_group fine_dp_task_group fine_dp_task_group_relation 新增血缘分析表: fine_dp_lineage_nodefine_dp_lineage_edge fine_dp_lineage_sql |
历史版本更新 | |||||||||||
|
1.2 功能说明
本文主要介绍 FDL 相关的 FineDB 表结构,平台相关的 FineDB 表结构请参见:FineDB 表结构
注1:由于外接数据库的类型不同,字段的数据类型不完全一致,本文以工程内置数据库为例,用户需自行匹配。
注2:FineDB 配置库用于存放工程配置信息,各表之间存在关联关系,随意改动可能导致工程无法启动等严重后果。
请勿手动增!删!改!FineDB 数据库内的任何数据!有可能造成不可修复的 BUG,需自行承担后果。
2. 数据开发模块
2.1 数据开发 ER 图
表间关系如下所示:
2.2 fine_dp_dev_global_param
全局参数定义表:定义和存储全局参数配置。
字段名 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
createTime | varchar | 参数创建时间 「时间戳格式」 |
creator | varchar | 参数创建用户 |
name | varchar | 参数名 |
updateDetail | longtext | 修改用户和修改时间列表 |
value | varchar | 参数的值:静态参数的值,动态参数的调试值 |
datatype | varchar | 静态参数的类型,包含日期(DATE)、文本(STRING)、布尔(BOOLEAN)、数值(NUMBER)四类 动态参数的该值为空 |
config | longtext | 动态参数的配置,包括reader和output,4.1.8.1版本新增该字段 |
param_type | varchar | 参数类型,值域为{"DYNAMIC", "STATIC"},4.1.8.1版本新增该字段 |
2.3 fine_dp_conf_entity_x
4.1.7.3 之前版本,为数据开发任务配置表,包括当前版本、任务目录、任务路径、消息通知配置、超时重试配置、优先级配置、任务检测状态等配置(以子表形式存在)。
4.1.7.3 及之后版本,移除 namespace 为DPFileEntityStore、DPTimeoutRetryStore、DPNoticeStore、DPWorkPriorityStore、DPStrategyStore、BiTableEntityStore、DPBIAttributeStore 的派生表。数据开发任务配置信息记录到 fine_dp_data_dev_work 表中。
这张表的表结构比较特殊,在这张物理表内存储了多个子表,每个子表通过 namespace 来进行区分。子表的具体内容,存储在 entity_value 字段中。
字段名 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
entity_key | varchar | 版本+任务id作为key,在子表空间内是唯一的 示例值:"#4.1.5.5_2f91cf4b-a82b-4641-8b39-db82ed3fc17c" |
namespace | varchar | 命名空间,用来区分子表 |
value_class | varchar | 子表对应的序列化实体类 |
entity_value | longtext | 不同实体的具体 json 配置 |
timestamp | bigint | 记录生成的时间戳 该字段目前不被使用 |
values_index | longtext | 该字段目前不被使用 |
values_length | int | 该字段目前不被使用 |
is_deleted | int | 该字段目前不被使用 |
is_segment | int | 该字段目前不被使用 |
key_class | varchar | 该字段目前不被使用 |
segment_length | int | 该字段目前不被使用 |
不同 namespace 的 entity_value 的格式及含义
4.0.25 之前版本:
namespace | 子表存储的内容 | 子表字段 | 含义 |
---|---|---|---|
DPFileEntityStore | 定时任务文件相关配置 | fileId | 文件id,用来唯一标识文件 |
envPath | 文件路径 | ||
createTime | 文件创建时间 |
4.0.25 及之后版本-4.1.7.3 版本:
namespace | entity_value 字段存储的内容 | entity_value json字段内的键名 | 键名的含义 |
---|---|---|---|
DPFineDBVersionStore | 定时任务文件版本号 | version | 当前定时任务文件版本号 |
DPFileEntityStore | 定时任务文件相关配置:任务文件夹 | id | 当前节点id |
pid | 父节点id 若在根路径下,pid为_DP_ROOT_CATALOG_,用于构建任务和目录树结构 | ||
createTime | 创建时间 | ||
creatorId | 创建用户id | ||
type | 节点类型,文件夹为PACKAGE | ||
nextNodeId | 下一个兄弟节点Id 4.1.6.5 及之后版本存在该字段 | ||
定时任务文件相关配置:任务实体 | id | 当前节点id | |
pid | 父节点id,若不在根路径下,pid为uuid,用于构建任务和目录树结构 | ||
name | 定时任务名称 | ||
createTime | 创建时间 | ||
publishTime | 上线时间 4.1.6.5 及之后版本存在该字段 | ||
describe | 描述 4.1.6.5 及之后版本存在该字段 | ||
checkState | 任务校验状态 4.1.6.5 及之后版本存在该字段 | ||
publishState | 任务上线状态 4.1.6.5 及之后版本存在该字段 | ||
creatorId | 创建用户id | ||
type | 节点类型,任务实体为ENTIT | ||
nextNodeId | 下一个兄弟节点Id 4.1.6.5 及之后版本存在该字段 | ||
DPTimeoutRetryStore | 超时限制配置 失败重试配置 脏数据容忍配置 | 值示例: { "id": "2f91cf4b-a82b-4641-8b39-db82ed3fc17c", //任务id
"hour": 1, "minute": 0, "enabled": true //是否开启:true 为开启,fasle 为未开启 }, "retryConfig": { //失败重试配置 "max": 3, //重跑次数 "delayMinute": 2, //间隔时间 "enabled": true //是否开启:true 为开启,fasle 为未开启 }, "errorLimitConfig": { //脏数据容忍配置 "enable": true, //是否开启:true 为开启,fasle 为未开启 "limit": 1000 //脏数据阈值 } } | |
DPNoticeStore | 记录 结果通知 数据 | 值示例: {
"notice": { "notification": true, //结果通知按钮是否开启 "noticeConfig": { //结果通知 "notify": true, //任务异常通知、任务失败提醒是否勾选,这两项默认勾选,且无法修改 "notifyInDetail": true, //具体报错信息是否勾选 "notifyDirtyData": true, //脏数据通知是否勾选 "notifyDirtyDataInDetail": true, //脏数据汇总信息是否勾选 "notifyDDLChangeEvent": true //源表结构变化通知是否勾选 }, "userGroup": { //平台用户组 "users": [ //用户 "1(1)" ], "depts": null, //部门 "roles": null, //角色 "roleStr": null //角色的 id,为前端开发逻辑,不涉及业务逻辑 }, "noticeChannels": [ //通知渠道 { "type": "sms", //sms:短信;platform:平台;email:邮件;client:客户端 "toUserGroup": false, //平台用户组 "smsReceiver": [ //收件人
], "smsNotify": false }, ] } } | |
DPWorkPriorityStore | 记录 任务属性 数据 | 值示例: { "id": "2f91cf4b-a82b-4641-8b39-db82ed3fc17c", //任务id "taskPriority": 2, //任务优先级。最低:-2;低:-1;中:0;高:1;最高:2 "customLogLevel": true, //日志等级是否打开true/false "logLevel": "ERROR" //日志级别:包括ERROR、WARN、INFO } |
注:由于 FDL 需要支持版本的升级和回退,因此不同的文件版本会对应不同的记录。是以 文件版本号 + 文件ID 作为entity_key的值的。
历史版本的记录也保留在这个表中,如果需要过滤当前版本的信息,需要对 entity_key 的值先进行筛选。
4.1.7.3 及之后版本:
1)fine_dp_conf_entity_x 表移除 namespace 为DPFileEntityStore、DPTimeoutRetryStore、DPNoticeStore、DPWorkPriorityStore、DPStrategyStore、BiTableEntityStore、DPBIAttributeStore 的派生表,数据开发任务配置信息记录到 fine_dp_data_dev_work 表中。
2)新增 namespace:DPFineBackupStore,含义为是否回退到某个版本的配置。值为:"true"/"false"
2.4 fine_dp_work_last_record
FDL4.0.30.2 版本新增。
最近一次运行记录表,只记录每个任务最近一次运行记录,新的运行记录会对旧的运行记录做覆盖。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid,实例id |
dirtyDataNum | bigint | 脏数据条数 |
finishTime | bigint | 任务完成时间 |
lastModifiedTime | bigint | 最近修改时间 |
path | varchar | 运行实例统计信息和任务快照存储路径。值示例:dpworks/record/2024-03-13/04c51446-0053-48f3-b507-bad1bdf46592.log |
sourceExecuteId | varchar | 被重试的实例id,重试时有值,否则为null |
startTime | bigint | 任务开始时间 |
taskId | varchar | 任务id |
taskStatus | varchar | 任务运行状态,包括初始状态(INITIAL)、构建失败(BUILD_FAIL)、排队中(QUEUING)、运行中(RUNNING)、任务成功(SUCCESS)、任务执行报错(ERROR)、任务失效(INVALID)、任务中断(INTERRUPT) |
triggerBy | varchar | 触发者,手动触发为用户名;调度触发则为调度计划id |
triggerMethod | varchar | 任务触发类型,包括定时触发(FIX_TIME)、手动触发(MANUAL)、手动重试(MANUAL_RETRY)、时间触发(EVENT) |
triggerTime | bigint | 触发时间 |
lastRecord | bool | 是否是最后一条记录 示例:true |
2.5 fine_dp_work_exec_record
4.1.7.3 以及之后的版本,迁移到 LogDB 中,表名不变。
历史运行记录表,新的运行记录直接进行插入。
表结构同 fine_dp_work_last_record(本文 2.4 节内容)。
注:定时任务每执行一次,都会生成一条执行记录。
2.6 fine_dp_work_delete
4.0.17 版本新增。
任务删除备份表,被删除的任务需要记录删除时的任务id和任务名。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid,任务id |
taskName | varchar | 任务名称 |
2.7 fine_dp_plan_calendar
调度日历 表,保存用户上传的调度日历。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid,实例id |
name | varchar | 日历名字 |
filename | varchar | 导入日历时文件名 |
dates | longtext | 日历日期 |
startTime | bigint | 日历开始时间 |
endTime | bigint | 日历结束时间 |
quartz_calendar_name | varchar | QUARTZ_CALENDAR表中的日历名 |
timezone_id | varchar | 时区 |
2.8 fine_dp_plan_calendar_cata
日历目录表,记录用户创建的调度日历保存的目录结构。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid,实例id |
entity_key | varchar | 对应日历id |
namespace | varchar | 命名空间 |
value_class | varchar | 目录条目对应的DO类型 |
entity_value | longtext | 目录条目名字、所在位置、创建时间、所在树位置 |
2.9 fine_dp_plan_schedule
定时/事件调度、单一/批量调度表,包括四种情况,简单说明:
plan_detail 列的 type 字段 | schedule_type 列的 TIME 值 | schedule_type 列的 EVENT 值 |
---|---|---|
WORK_SCHEDULE_PLAN | 单任务定时调度 | 单任务事件调度 |
SCHEDULE_PLAN | 批量任务定时调度 | 批量任务事件调度 |
fine_dp_plan_schedule 表结构如下表所示:
字段 | 类型 | 说明 | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | varchar | 主键字段uuid | ||||||||||||||||||||||||||||||||||||||||
add_time | varchar | 创建时间 | ||||||||||||||||||||||||||||||||||||||||
plan_detail | varchar | 值示例: { "id": "82606bf6-4ccf-4ba9-907a-3b417334511e", //计划id "name": "调度1-定时B", //计划名 "type": "WORK_SCHEDULE_PLAN" //计划类型:单任务计划:WORK_SCHEDULE_PLAN;批量计划:SCHEDULE_PLAN } | ||||||||||||||||||||||||||||||||||||||||
plan_id | varchar | 计划id | ||||||||||||||||||||||||||||||||||||||||
schedule | longtext | 调度配置-定时调度:
| ||||||||||||||||||||||||||||||||||||||||
schedule_id | varchar | 调度id | ||||||||||||||||||||||||||||||||||||||||
schedule_type | varchar | 调度类型,包括定时调度(TIME)、事件调度(EVENT) |
2.10 fine_dp_plan_work
计划(不区分定时调度和事件调度)和任务的对应关系表,一个计划可以对应多个任务。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
plan_id | varchar | 执行计划id |
work_id | varchar | 任务id |
work_type | varchar | 任务类型,比如定时任务(TIMING) |
2.11 fine_dp_data_dev_backup
4.1.7.3 版本,新增该表。数据开发任务配置表的备份表,value的数据与fine_dp_data_dev_work一致
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
work_id | varchar | 任务id作为key |
version | varchar | 任务的版本号 |
project_version | varchar | 配置的版本号 |
backup_version | varchar | 备份的版本号 |
namespace | varchar | 命名空间,用来区分子表的 |
value | longtext | 不同实体的具体json配置 |
create_time | long | 创建时间 |
update_time | long | 更新时间 |
2.12 fine_dp_data_dev_work
4.1.7.3 版本,新增该表。为数据开发任务配置表,包含信息:任务目录、消息通知配置、超时重试配置、优先级配置、集群策略配置、输出到BI配置。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
work_id | varchar | 任务id作为key |
version | varchar | 任务的版本号 |
project_version | varchar | 配置的版本号(懒升级使用) |
namespace | varchar | 命名空间,用来区分子表的 |
value | longtext | 不同实体的具体json配置 |
create_time | long | 创建时间 |
update_time | long | 更新时间 |
recycleBinDO 4.1.9.3 及之后版本,新增该字段 | varchar | 回收站信息;值格式示例: { "paths":["文件夹","子文件"] "deleteTime":1709544579557 // 删除时间 "deleter":删除者 "deleted":是否被删除 } |
不同 namespace 值及其含义:
namespace | entity_value 字段存储的内容 | entity_value json字段内的键名 | 键名的含义 |
---|---|---|---|
DPFileEntityStore | 定时任务文件相关配置:任务文件夹 | id | 当前节点id |
pid | 父节点id 若在根路径下,pid为_DP_ROOT_CATALOG_,用于构建任务和目录树结构 | ||
createTime | 创建时间 | ||
creatorId | 创建用户id | ||
type | 节点类型,文件夹为PACKAGE | ||
nextNodeId | 下一个兄弟节点Id | ||
recycleBinDO 4.1.9.3 及之后版本,新增该字段 | 回收站信息 | ||
定时任务文件相关配置:任务实体 | id | 当前节点id | |
pid | 父节点id,若不在根路径下,pid为uuid,用于构建任务和目录树结构 | ||
name | 定时任务名称 | ||
createTime | 创建时间 | ||
publishTime | 上线时间 | ||
describe | 描述 | ||
checkState | 任务校验状态 | ||
publishState | 任务上线状态 | ||
creatorId | 创建用户id | ||
type | 节点类型,任务实体为ENTIT | ||
nextNodeId | 下一个兄弟节点Id | ||
DPTimeoutRetryStore | 超时限制配置 失败重试配置 脏数据容忍配置 | 值示例: { "id": "2f91cf4b-a82b-4641-8b39-db82ed3fc17c", //任务id
"hour": 1, "minute": 0, "enabled": true //是否开启:true 为开启,fasle 为未开启 }, "retryConfig": { //失败重试配置 "max": 3, //重跑次数 "delayMinute": 2, //间隔时间 "enabled": true //是否开启:true 为开启,fasle 为未开启 }, "errorLimitConfig": { //脏数据容忍配置 "enable": true, //是否开启:true 为开启,fasle 为未开启 "limit": 1000 //脏数据阈值 } } | |
DPNoticeStore | 记录 结果通知 数据 | 值示例: {
"notice": { "notification": true, //结果通知按钮是否开启 "noticeConfig": { //结果通知 "notify": true, //任务异常通知、任务失败提醒是否勾选,这两项默认勾选,且无法修改 "notifyInDetail": true, //具体报错信息是否勾选 "notifyDirtyData": true, //脏数据通知是否勾选 "notifyDirtyDataInDetail": true, //脏数据汇总信息是否勾选 "notifyDDLChangeEvent": true //源表结构变化通知是否勾选 }, "userGroup": { //平台用户组 "users": [ //用户 "1(1)" ], "depts": null, //部门 "roles": null, //角色 "roleStr": null //角色的 id,为前端开发逻辑,不涉及业务逻辑 }, "noticeChannels": [ //通知渠道 { "type": "sms", //sms:短信;platform:平台;email:邮件;client:客户端 "toUserGroup": false, //平台用户组 "smsReceiver": [ //收件人
], "smsNotify": false }, ] } } | |
DPWorkPriorityStore | 记录 任务属性 数据 | 值示例: { "id": "2f91cf4b-a82b-4641-8b39-db82ed3fc17c", //任务id "taskPriority": 2, //任务优先级。最低:-2;低:-1;中:0;高:1;最高:2 "customLogLevel": true, //日志等级是否打开true/false "logLevel": "ERROR" //日志级别:包括ERROR、WARN、INFO } | |
DPStrategyStore | 集群调度策略 | id | 任务id |
dispatchType | 集群调度策略 | ||
DPBIAttributeStore | 输出到BI配置 | {
"workName": "任务7", "stepNameMap": { "fc23a871-0136-40e4-b364-0667b31b5faa": { "stepId": "fc23a871-0136-40e4-b364-0667b31b5faa", "nodeId": "774323fc-6a23-4a69-ab3d-9bd1cb32d22b", "stepName": "writer" } }, "nodeNameMap": { "774323fc-6a23-4a69-ab3d-9bd1cb32d22b": "数据同步" }, "stepTableMap": { "fc23a871-0136-40e4-b364-0667b31b5faa": "gbase_1011_01" }, "id": "585fab47-4fa5-4a22-8bc2-899b75a70ede" } | |
BiTableEntityStore | 输出到BI配置 | { "connName": "gbase", "tableName": "fdl.1011_01", "type": null, "biConnName": null, "tableNameInBI": "gbase_1011_01", "valid": true, "catalogId": "eaa72e612e9b4ab78110744738a809d7", "engineType": 1, "createUserId": "b5f0c2ee-640f-4039-a4d4-918b55354898", "pathInBi": null, "nameInBi": "gbase_1011_01", "dbTableName": "fdl.1011_01" } |
2.13 fine_dp_exec_record_trigger
能触发 事件调度 的记录表。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 记录id |
task_id | varchar | 任务id |
task_status | varchar | 任务状态(必须是完成状态) 示例数据:SUCCESS |
last_modified_time | long | 最后修改时间 示例数据:1721704150000 |
task_group_list | varchar | 已经触发的任务组列表 |
2.14 fine_dp_schedule
事件调度基础信息表。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 计划id |
name | varchar | 计划名 |
add_time | long | 添加时间;可根据添加时间排序 |
description | varchar | 描述 |
status | varchar | 调度状态;有三种状态:OPEN/CLOSE/ABNORMAL |
2.15 fine_dp_task_map_group
任务和任务组的映射表。任务组说明请参见:事件调度
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 任务id |
group_id | varchar | 任务组id |
2.16 fine_dp_task_group
事件调度任务组表。详情请参见:事件调度
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 任务组id |
plan_id | varchar | 计划id |
name | varchar | 任务组名 |
judgement | varchar | 判断条件 示例数据: {
"condition": { "type":"judge", "conditionCompareType":"DATE_AFTER", "valueType":"DATE", "source": { "type":"field", "value":"taskFinishTime", }, "target":{ "type": "DATE_INTERVAL", "value": { "num": 1, "unit": "DAY" } } } "timing":{ "id": "0f3c2bb9-498a-4bf0-991b-545aa13a41d3", //实际为任务组id "scheduleOpen": true, //是否开启调度;默认为true "startTime": { //调度开始时间 "value": "2024-03-13 18:22:19" }, "frequency": { //调度的执行频率配置 "type": 1, "value": null }, "endTime": { //调度结束时间 "type": 1, "value": null }, "type": "TIME", //调度的类型,TIME代表定时调度 "calendar": { "open": false, "calendarId": "" } } once:true,//是否只使用一次 status:"SUCCESS" //可以触发下游任务组的任务状态;SUCCESS/FINISHED } |
2.17 fine_dp_task_group_relation
任务组之间的关系表。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 关系id |
from_id | varchar | 任务组关系的来源端 |
to_id | varchar | 任务组关系的目标端 |
plan_id | varchar | 计划id |
3. 数据管道
3.1 数据管道 ER 图
表间关系如下所示:
3.2 fine_dp_pipeline_task
管道任务配置表。
表内存储了多个子表,每个子表通过 namespace 来进行区分。子表的具体内容,存储在 entity_value 字段中。
注:fine_dp_pipeline_task 表中,entity_key+namespace可确定数据唯一。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
entity_key | varchar | 子表逻辑id,在子表空间内是唯一的 |
namespace | varchar | 命名空间,用来区分entity_value 中的内容 |
value_class | varchar | 反序列化的class;已不再使用 |
entity_value | longtext | 子表的具体内容,为json格式。可以理解为正常表一行的内容,现在被压缩为一个字段了,json的key就是表的字段名,value就是字段值 |
create_time | bigint | 创建时间 |
update_time | bigint | 修改时间 |
4.1.8.1 及之后版本说明:
1)新增 namespace 为PipelineGroup、PipelineMapConfig、PipelineTable2Group 的派生表。
2)namespace 为 PipelineSourceTable 的派生表升级为了 PipelineSourceTableV1,并移除了 reSync 字段。
3)namespace 为 PipelineTargetTable 的派生表升级为了 PipelineTargetTableV1,并移除了 sourceTableId 和 mapType 字段。
4)namesapce 为 PipelineTaskV1 的派生表升级为了 PipelineTaskV2 ,并移除了 sourceTypeName 和 targetTypeName 字段
不同 Namespace 的 entity_value 的格式及含义
namespace | entity_value | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DPPipelineFileEntityStore(目录树节点) | //文件夹的配置 { "id": "048c2506-ddcb-4781-95d2-bcc3daf2c978", //文件夹id "pid": "_PIPELINE_ROOT_CATALOG_", "name": "管道测试", //文件夹名称 "createTime": 1710585997109, //文件夹创建时间 "type": "PACKAGE" //文件夹 } //管道任务 { "id":"ed392335-442a-4714-a6db-1f9f2dfbbc20", //管道任务id "pid":"048c2506-ddcb-4781-95d2-bcc3daf2c978", //上层节点id "name":"管道任务测试", //管道任务名称 "createTime":1710586066979, //创建时间 "type":"ENTITY" //节点类型 "recycleBinDO":{"paths":["文件夹","子文件"],"deleteTime":1709544579557, "deleter":删除者, "deleted":true} }} | ||||||||||||||||||||||||||||||||||||||||||
PipelineTaskV2(任务实体) | 任务文件夹: {
"status": "RUNNING", //管道任务状态,详见PipelineTaskStatus类 "syncType": "FULL_AND_INCREMENTAL", //同步类型,全量加增量还是仅增量 "sourceType": "mysql", //源端目标端数据连接 "sourceTypeName": "MySQL", //4.1.7.3 及之后版本删除该字段 "sourceConnectionName": "mysqlpf", //来源端数据连接名称 "targetType": "postgresql", "targetTypeName": "PostgreSQL", //4.1.7.3 及之后版本删除该字段 "targetConnectionName": "pg", //目标端数据连接名称 "firstStartTime": 1710586067545, //初次启动时间 "createTime": 1710586066923, //创建时间 "updateTime": null, "workerNodeId": "IN_MEMORY_VIRTUAL_NODE" //在集群中运行的节点id,单机模式为IN_MEMORY_VIRTUAL_NODE } | ||||||||||||||||||||||||||||||||||||||||||
PipelineConfigV1(任务配置) |
值示例:
"id": "ed392335-442a-4714-a6db-1f9f2dfbbc20", //源端配置,只有选择仅增量时才能选择startPoint "sourceConfig": { "connectionType": "mysql", "connectionName": "mysqlpf", //源端数据连接名称 "readMode": { //读取方式 "name": "Binlog", "startPoint": "", //增量同步起点 "format": "", "schemaRegistryUrl": "" }, "syncType": "FULL_AND_INCREMENTAL", "incrementalSyncPoint": null }, //目标端配置 "targetConfig": { "connectionType": "postgresql", "connectionName": "pg", //目标端数据连接名称 "database": "", "schema": "test", //模式 "sourceChangeStrategy": { "sourceDeleteData": "PHYSICAL_DELETE" }, "addUpdateTimestampColumn": false, "applyDdl": false, "enableHighSpeedLoad": false, "enableNoPrimary": false }, "controlConfig": { //脏数据阈值 "errorQueueConfig": { "limitNum": 1000 }, //通知配置 "notifyConfig": { "notification": false, "notifyContent": { "taskError": true, "syncingSourceTableDeleted": false, "notifyInDetail": false, "ddl": false }, "userGroup": { "users": null, "depts": null, "roles": null, "roleStr": null }, "noticeChannels": [] }, //重试配置 "retry": { "max": 3, "delayMinute": 2, "enabled": true }, //日志配置 "logConfig": { "customLogLevel": false, "logLevel": "WARN" } } } | ||||||||||||||||||||||||||||||||||||||||||
PipelineSourceTableV1(源表信息) PipelineTargetTableV1(目标表信息) |
PipelineSourceTableV1(源表信息):
PipelineTargetTableV1(目标表信息):
| ||||||||||||||||||||||||||||||||||||||||||
PipelineGroup | 分组表: { "id": "ed392335-442a-4714-a6db-1f9f2dfbbc20_14f6d8b29044f9094b49932790dd0888", //分组id "name": "test_group", //分组名称 "columns": [{ "name": "id", "type": 12, "typeName": "varchar", "size": 10, "scale": 0, "dialectTypeName": "varchar(10)", "label": "id", "editable": false, "nullable": false, "logicalPk": false, "comment": null, "level": 0, "sourceColumnName": "id", "deleted": false, "invalid": false, "columnDelete": false, "partitioned": false, "pk": true }, { "name": "timecolumn", "type": 93, "typeName": "timestamp", "size": 29, "scale": 6, "dialectTypeName": "timestamp", "label": "timecolumn", "editable": false, "nullable": true, "logicalPk": false, "comment": null, "level": 0, "sourceColumnName": "timecolumn", "deleted": false, "invalid": false, "columnDelete": false, "partitioned": false, "pk": false }, { "name": "mysql_update_time", "type": -5, "typeName": "int8", "size": 19, "scale": 0, "dialectTypeName": "int8", "label": "mysql_update_time", "editable": false, "nullable": true, "logicalPk": false, "comment": null, "level": 0, "sourceColumnName": "mysql_update_time", "deleted": false, "invalid": false, "columnDelete": false, "partitioned": false, "pk": false }] } | ||||||||||||||||||||||||||||||||||||||||||
PipelineMapConfig | 分组表映射: { "id": "ed392335-442a-4714-a6db-1f9f2dfbbc20_2324345354694b49932790dd0888", //映射id "sourceId": "ed392335-442a-4714-a6db-1f9f2dfbbc20_14f6d8b29044f9094b49932790dd0888", //来源id "targetId": "ed392335-442a-4714-a6db-1f9f2dfbbc20_14f6d8b29044f9094b49932790dd0888", // 目标id "columnTypeName": "NAME", // 字段映射方式 "tableMapType": "GROUP_TO_TABLE" // 表映射方式,分组表-普通表(GROUP_TO_TABLE)。普通表-普通表(TABLE_TO_TABLE) } | ||||||||||||||||||||||||||||||||||||||||||
PipelineTable2Group | 子表和分组表的映射: { "id": "ed392335-442a-4714-a6db-1f9f2dfbbc20_fsefe35354694b49932790dwerfw4wef8", //子表id "groupId": "ed392335-442a-4714-a6db-1f9f2dfbbc20_14f6d8b29044f9094b49932790dd0888", // 分组id "columnNameMap": { // 子表到分组表的字段名称映射 "id": "id", "col1": "col1", "col2": "col2" } } |
3.3 fine_dp_pipeline_schema
源表结构与断点之间的关系。用来处理 ddl 事件 sql 解析相关逻辑。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 管道任务中源表的id |
commit_time | bigint | 记录创建的时间 |
position | varchar | 断点位置 |
schema_value | longtext | 表结构记录 |
table_charset | varchar | 表的编码 |
table_full_name | varchar | 表名 |
task_id | varchar | 管道任务id |
3.4 fine_dp_pipeline_savepoint
管道任务断点记录,用来断点续传。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 记录ID |
create_time | bigint | 记录创建的时间;暂未用到 |
table_id | varchar | 源表id |
task_id | varchar | 任务id |
type | varchar | 断点类型 |
update_time | bigint | 更新时间;暂未用到 |
value | longtext | JSON 格式,实际断点保存的值,不同类型的断点保存的值不同 |
3.5 fine_dp_pipeline_execute
管道任务执行记录与统计表
部分是表级的记录(下表中字段名为绿色),任务级别的记录由表级汇总得到。部分是任务级别的(下表中字段名为灰色)。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 任务id或源表id |
delete_record_count | bigint | 删除行数(表级) |
delete_traffic | bigint | 删除数据量(单位Byte) |
error_record_count | bigint | 失败行数 |
insert_record_count | bigint | 插入行数 |
insert_traffic | bigint | 插入数据量(单位Byte) |
last_log_time | bigint | 上一次任务记录时间 |
last_read_time | bigint | 上次读取时FDL服务器的时间 |
last_start_time | bigint | 上一次任务启动时间 |
last_write_time | bigint | 上次写入时FDL服务器的时间 |
read_record_count | bigint | 读取行数 |
read_total_traffic | bigint | 读取数据量(单位Byte) |
table_full_name | varchar | 来源表的完整名称 |
task_id | varchar | 任务id |
to_sync_record_count | bigint | 待同步行数 |
to_sync_traffic | bigint | 待同步数据量(单位Byte) |
type | varchar | 记录的类型,是表还是任务 |
update_record_count | bigint | 更新行数 |
update_traffic | bigint | 更新数据量(单位Byte) |
work_duration | bigint | 任务实际工作时长(若任务中途有中断,则中断时间不会统计在内) |
last_massage_read_time | bigint | 上次读取时对应的日志在数据库中的时间 |
last_massage_write_time | bigint | 上次写入时对应的日志在数据库中的时间 |
3.6 fine_dp_pipeline_dirty
管道任务中如果捕获到脏数据后,会将脏数据的基本信息存储在这个表中。
4.0.29 及之后版本,表名称(fine_dp_pipeline_dirty):
字段名称 | 类型 | 说明 |
---|---|---|
id | varchar | 脏数据id,唯一标识一条脏数据 |
error_params | varchar | 不再使用 |
error_type | varchar | 脏数据的异常类型 enum 的名字 |
fdl_offset | bigint | 脏数据在指定topic的offset |
primary_key | varchar | 主键信息,一个json字符串。 例子: { "before": "更新前主键", "after": "更新后主键" } |
task_id | varchar | 任务id |
task_table_id | bigint | 表id |
timestamp | bigint | 脏数据捕获时间 |
fdl_topic | varchar | 脏数据所在的topic |
fdl_code | int | 该字段用来记录脏数据的一些标志位,长度为32位,也就可以标记32个不同状态 目前从右往左的前三位按序用来标记,插入、删除、更新 其中主键更新的脏数据会被视为删除+插入,对应的code二进制code就是11 |
error_message | varchar | 报错java堆栈异常的errormessage |
fdl_extra | longtext | 额外的信息,比如错误堆栈,当前数据对应的断点信息等等,通过json格式进行存储 |
4.0.27、4.0.28版本,表名称(fine_dp_pipeline_dirty_data):
字段名称 | 描述 |
---|---|
id | 脏数据id,唯一标识一条脏数据 |
task_id | 任务id |
task_table_id | 表id |
timestamp | 脏数据捕获时间 |
primary_key | 主键信息,一个json字符串。 例子: { "before": "更新前主键", "after": "更新后主键" } |
error_type | 异常类型 |
error_params | 异常信息 |
topic | 业务数据所在的topic |
offset | 改脏数据在指定topic的offset |
4. 数据服务
4.1 数据服务 ER 图
表间关系如下:
4.2 fine_dp_service_app
数据服务应用配置表。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid;无实际作用 |
appId | varchar | 应用id |
authInfo | longtext | 认证信息 示例数据: { "authType": "EmptyAuth", // 当前生效的认证类型 "authConfig": [ //认证的具体配置 { "type": "EmptyAuth" // 无认证 }, { "code": "AppCode a25787ba-fd6c-4f23-b46a-8b148c2ab1a9", "type": "AppCodeAuth" // APPCode认证 }, { "secret": "", "type": "DigestSignatureAuth" // 摘要认真 } ], "type": "Auth" } |
creator | varchar | 创建用户名 |
description | varchar | 应用描述 |
version | varchar | 版本 |
4.3 fine_dp_service_catalog
数据服务的目录表,具体结构和fine_dp_conf_entity_x类似。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid;无实际作用 |
entity_key | varchar | 版本+任务id作为key,在子表空间内是唯一的 |
namespace | varchar | 命名空间 DataServiceAppCatalogDO // 应用 DataServiceAPICatalogDO // API |
value_class | varchar | entity_value序列化对应的实体类 |
entity_value | longtext | json格式的配置信息 |
不同 namespace 对应的明细:
namespace | 说明 | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DataServiceAPICatalogDO(API目录) 4.0.27 及之后版本 |
| ||||||||||||||
DataServiceAppCatalogDO(应用目录) |
|
4.4 fine_dp_service_mapping
应用和API的关联表。
字段 | 类型 | 说明 | ||||||
---|---|---|---|---|---|---|---|---|
id | varchar | 主键字段uuid;无实际作用 | ||||||
apiId | varchar | API的ID | ||||||
appId | varchar | 应用ID | ||||||
expireTime | bigint | 有效期:
| ||||||
rateLimit | varchar | 访问限制:
{ "limitCount": 100, // 单位时间最大访问次数 "timeUnit": "HOURS", // 时间单位 "type": "RateLimit" } |
4.5 fine_dp_service_task
API配置表。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid;无实际作用 |
taskId | varchar | API的ID |
taskType | varchar | 冗余字段;目前未实际使用 |
taskDetail | longtext | API配置信息 |
requestPath | varchar | api路径 |
requestMethod | varchar | 请求方法:post、get |
isOnline | bit | 是否上线:1-上线,0-下线 |
isAuthActive | bit | 目前未实际使用 |
description | varchar | API描述 |
timeout | bigint | 超时时间 |
version | varchar | 版本 |
requestContentType | varchar | 请求体类型 |
5. 库表管理
5.1 库表管理ER图
5.2 fine_datacenter_sql_script
SQL 脚本管理表:存储用户保存的 SQL 脚本数据。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
connection | varchar | 所属数据连接 |
last_log | longtext | 最近一次日志,内容是日志对象json序列化后的字符串 |
content | longtext | 脚本内容 |
create_time | bigint | 脚本创建时间戳 |
name | varchar | 脚本名称 |
last_modified_time | bigint | 脚本更新时间戳 |
5.3 fine_datacenter_updatelog
SQL脚本管理表:存储用户保存的sql脚本数据
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
script_id | varchar | 这条更新记录对应的脚本id |
editor | varchar | 更新人 |
modified_time | bigint | 更新时间 |
6. 公共模块
6.1 公共模块 ER 图
表间关系如下:
6.2 fine_dp_general_config
通用配置 表:定义和存储通用配置(基于数据连接,定义大小写转换规则)。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
config | longtext | 数据连接名和对应的大小写转换规则,目前 transformation 包含全部转大写(UPPER_CASE)、全部转小写(LOWER_CASE) 示例数据: {"transformation":"UPPER_CASE","connections":["local_fdl_data"]} |
create_time | bigint | 配置创建时间 |
type | varchar | 通用配置类型,暂时只有AUTO_CREATE_TABLE_CASE |
update_time | varchar | 配置修改时间 |
6.3 fine_dp_operate_history
最近编辑记录表:包括数据开发、数据管道模块的最近标记记录。
字段 | 类型 | 说明 |
---|---|---|
id | varchar | 主键字段uuid |
operate_time | bigint | 编辑时间 |
operate_type | varchar | 编辑类型,包括创建(CREATE)、删除(DELETE)、修改(EDIT) |
operate_user | varchar | 编辑用户 |
task_id | varchar | 任务id |
task_name | varchar | 任务名 |
task_path | varchar | 任务路径 |
task_type | varchar | 任务类型,包括数据开发(DATA_DEVELOP)、数据管道(PIPELINE_DEVELOP) |
6.4 fine_dp_lineage_node
血缘节点表:
字段名 | 说明 |
---|---|
id | 主键 |
graph_id | 图id |
resource_id | 对应的业务资源id |
group_id | 节点分组id |
resource_info | 对应的业务资源信息 |
6.5 fine_dp_lineage_edge
血缘节点关系表:
字段名 | 说明 |
---|---|
id | 主键 |
source_id | 父节点id,外键,对应于fine_dp_lineage_node的id |
target_id | 子节点id,对应于fine_dp_lineage_node的id |
graph_id | 图id |
6.6 fine_dp_lineage_sql
解析失败的SQL记录表,当SQL解析失败时,记录在当前表里,目前仅做记录。
7. fine_conf_entity
具体表结构说明请参见:配置信息存储表
本章节只记录 FDL 相关字段:
4.1.9.3 及之后版本,fine_conf_entity 表新增字段 FDLIntegrationConfig.previewCache,值默认为 false;为 true 时代表开启算子/节点的预览缓存,下一次预览直接展示上次缓存结果。