From 96ee73090f061fca98a6ae98cb217b2ffa5c8af4 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Tue, 22 Oct 2024 16:42:49 +0800 Subject: [PATCH 1/9] Update ticdc-debezium.md --- ticdc/ticdc-debezium.md | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index 6344bd592809..2867e1edb235 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -29,7 +29,39 @@ Debezium 输出格式中包含当前行的 Schema 信息,以便下游消费者 ### DML Event -TiCDC 会把一个 DML Event 编码成如下格式: +TiCDC 会将一个 DML 事件转换为一个 kafka 事件,其中事件的 key 和 value 都按照 Debezium 协议进行编码。 + +#### Key 数据格式 + +```json +{ + "payload": { + "a": 4 + }, + "schema": { + "fields": [ + { + "field":"a", + "optional":true, + "type":"int32" + } + ], + "name": "default.test.t2.Key", + "optional": false, + "type":"struct" + } +} +``` +Key 中的 fields 只包含主键或唯一索引列。 +字段解释如下: + +| 字段 | 类型 | 说明 | +|:----------|:-------|:-------------------------------------------------------------------------| +| payload | JSON | 主键或唯一索引列的信息。每个 field 的 key 和 value 分别为列名和当前值 | +| schema.fields | JSON | payload 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息等 | + + +#### Value 数据格式 ```json { @@ -135,4 +167,4 @@ TiCDC Debezium 消息中的数据格式映射基本遵循 [Debezium 的数据类 - 对于 String-likes 的数据类型,包括 Varchar、String、VarString、TinyBlob、MediumBlob、BLOB、LongBlob 等,当该列具有 BINARY 标志时,TiCDC 会将其按照 Base64 编码后以 String 类型表示;当该列没有 BINARY 标志时,TiCDC 则直接将其编码为 String 类型。而原生的 Debezium Connector 会根据 `binary.handling.mode` 以不同的编码方式进行编码。 -- 对于 Decimal 数据类型,包括 `DECIMAL` 和 `NUMERIC`,TiCDC 均会使用 float64 类型来表示。而原生的 Debezium Connector 会根据数据类型的不同精度采用 float32 或者 float64 的方式进行编码。 \ No newline at end of file +- 对于 Decimal 数据类型,包括 `DECIMAL` 和 `NUMERIC`,TiCDC 均会使用 float64 类型来表示。而原生的 Debezium Connector 会根据数据类型的不同精度采用 float32 或者 float64 的方式进行编码。 From cf632ccaa7c71289d7a00e57a7c54ebe5393bf1e Mon Sep 17 00:00:00 2001 From: nhsmw Date: Tue, 22 Oct 2024 16:59:58 +0800 Subject: [PATCH 2/9] Update ticdc-debezium.md --- ticdc/ticdc-debezium.md | 1 - 1 file changed, 1 deletion(-) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index 2867e1edb235..bdb17f64f37c 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -60,7 +60,6 @@ Key 中的 fields 只包含主键或唯一索引列。 | payload | JSON | 主键或唯一索引列的信息。每个 field 的 key 和 value 分别为列名和当前值 | | schema.fields | JSON | payload 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息等 | - #### Value 数据格式 ```json From ba8a2b12c31c55fcf95241b1ea3143c994f1e0b6 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Tue, 22 Oct 2024 17:14:14 +0800 Subject: [PATCH 3/9] Update ticdc-debezium.md --- ticdc/ticdc-debezium.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index bdb17f64f37c..b46fe33fba9f 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -52,6 +52,7 @@ TiCDC 会将一个 DML 事件转换为一个 kafka 事件,其中事件的 key } } ``` + Key 中的 fields 只包含主键或唯一索引列。 字段解释如下: From 65697bd8f280492187f21424d73ee459593cb749 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Tue, 22 Oct 2024 17:44:15 +0800 Subject: [PATCH 4/9] Update ticdc-debezium.md --- ticdc/ticdc-debezium.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index b46fe33fba9f..6114b8051882 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -40,15 +40,15 @@ TiCDC 会将一个 DML 事件转换为一个 kafka 事件,其中事件的 key }, "schema": { "fields": [ - { - "field":"a", - "optional":true, - "type":"int32" - } - ], + { + "field": "a", + "optional": true, + "type": "int32" + } + ], "name": "default.test.t2.Key", "optional": false, - "type":"struct" + "type": "struct" } } ``` From 86012def5b629c5bfd1a13cdad4681cd4aa916af Mon Sep 17 00:00:00 2001 From: nhsmw Date: Tue, 22 Oct 2024 17:54:35 +0800 Subject: [PATCH 5/9] Update ticdc-debezium.md --- ticdc/ticdc-debezium.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index 6114b8051882..e5ed46476662 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -53,8 +53,7 @@ TiCDC 会将一个 DML 事件转换为一个 kafka 事件,其中事件的 key } ``` -Key 中的 fields 只包含主键或唯一索引列。 -字段解释如下: +Key 中的 fields 只包含主键或唯一索引列。字段解释如下: | 字段 | 类型 | 说明 | |:----------|:-------|:-------------------------------------------------------------------------| From ed437f9194e7d7de190e29638d19bcec56bd3e4f Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 8 Nov 2024 15:21:51 +0800 Subject: [PATCH 6/9] Update ticdc-debezium.md --- ticdc/ticdc-debezium.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index e5ed46476662..15a3082f9580 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -59,6 +59,9 @@ Key 中的 fields 只包含主键或唯一索引列。字段解释如下: |:----------|:-------|:-------------------------------------------------------------------------| | payload | JSON | 主键或唯一索引列的信息。每个 field 的 key 和 value 分别为列名和当前值 | | schema.fields | JSON | payload 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息等 | +| schema.name | 字符串 | schema 的名称,格式为"{cluster}.{schema}.{table}.Key" | +| schema.optional | 布尔值 | optional 为 true 时表示该 field 为选填项 | +| schema.type | 字符串 | 表示该 field 的类型 | #### Value 数据格式 @@ -157,6 +160,9 @@ Key 中的 fields 只包含主键或唯一索引列。字段解释如下: | payload.source.db | 字符串 | 事件发生的数据库的名称 | | payload.source.table | 字符串 | 事件发生的数据表的名称 | | schema.fields | JSON | payload 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息等 | +| schema.name | 字符串 | schema 的名称,格式为"{cluster}.{schema}.{table}.Envelope" | +| schema.optional | 布尔值 | optional 为 true 时表示该 field 为选填项 | +| schema.type | 字符串 | 表示该 field 的类型 | ### 数据类型映射 From 90688779abc2c9686ab3d8f137c00b0a6b03a4d1 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Fri, 8 Nov 2024 16:05:49 +0800 Subject: [PATCH 7/9] Update ticdc/ticdc-debezium.md Co-authored-by: Grace Cai --- ticdc/ticdc-debezium.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index 15a3082f9580..f6ff309f5857 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -59,9 +59,9 @@ Key 中的 fields 只包含主键或唯一索引列。字段解释如下: |:----------|:-------|:-------------------------------------------------------------------------| | payload | JSON | 主键或唯一索引列的信息。每个 field 的 key 和 value 分别为列名和当前值 | | schema.fields | JSON | payload 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息等 | -| schema.name | 字符串 | schema 的名称,格式为"{cluster}.{schema}.{table}.Key" | -| schema.optional | 布尔值 | optional 为 true 时表示该 field 为选填项 | -| schema.type | 字符串 | 表示该 field 的类型 | +| schema.name | 字符串 | schema 的名称,格式为 `"{cluster-name}.{schema-name}.{table-name}.Key"` | +| schema.optional | 布尔值 | optional 为 `true` 时表示该 field 为选填项 | +| schema.type | 字符串 | 表示该 field 的数据类型 | #### Value 数据格式 From c4c4b0a2e6141dcffc928ee36b2ace1126ab453f Mon Sep 17 00:00:00 2001 From: Grace Cai Date: Mon, 11 Nov 2024 13:40:12 +0800 Subject: [PATCH 8/9] minor format updates --- ticdc/ticdc-debezium.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index f6ff309f5857..baec58c5023a 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -160,8 +160,8 @@ Key 中的 fields 只包含主键或唯一索引列。字段解释如下: | payload.source.db | 字符串 | 事件发生的数据库的名称 | | payload.source.table | 字符串 | 事件发生的数据表的名称 | | schema.fields | JSON | payload 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息等 | -| schema.name | 字符串 | schema 的名称,格式为"{cluster}.{schema}.{table}.Envelope" | -| schema.optional | 布尔值 | optional 为 true 时表示该 field 为选填项 | +| schema.name | 字符串 | schema 的名称,格式为 `"{cluster}.{schema}.{table}.Envelope"` | +| schema.optional | 布尔值 | optional 为 `true` 时表示该 field 为选填项 | | schema.type | 字符串 | 表示该 field 的类型 | ### 数据类型映射 From 54c763a13391fc83996b267c0e6ff3ee88476926 Mon Sep 17 00:00:00 2001 From: nhsmw Date: Tue, 26 Nov 2024 15:11:08 +0800 Subject: [PATCH 9/9] Apply suggestions from code review Co-authored-by: Aolin --- ticdc/ticdc-debezium.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ticdc/ticdc-debezium.md b/ticdc/ticdc-debezium.md index baec58c5023a..e8bbdd9d5ea4 100644 --- a/ticdc/ticdc-debezium.md +++ b/ticdc/ticdc-debezium.md @@ -29,7 +29,7 @@ Debezium 输出格式中包含当前行的 Schema 信息,以便下游消费者 ### DML Event -TiCDC 会将一个 DML 事件转换为一个 kafka 事件,其中事件的 key 和 value 都按照 Debezium 协议进行编码。 +TiCDC 会将一个 DML 事件转换为一个 Kafka 事件,其中事件的 key 和 value 都按照 Debezium 协议进行编码。 #### Key 数据格式 @@ -53,15 +53,15 @@ TiCDC 会将一个 DML 事件转换为一个 kafka 事件,其中事件的 key } ``` -Key 中的 fields 只包含主键或唯一索引列。字段解释如下: +Key 中的字段只包含主键或唯一索引列。字段解释如下: | 字段 | 类型 | 说明 | |:----------|:-------|:-------------------------------------------------------------------------| -| payload | JSON | 主键或唯一索引列的信息。每个 field 的 key 和 value 分别为列名和当前值 | +| payload | JSON | 主键或唯一索引列的信息。每个字段的 key 和 value 分别为列名和当前值 | | schema.fields | JSON | payload 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息等 | | schema.name | 字符串 | schema 的名称,格式为 `"{cluster-name}.{schema-name}.{table-name}.Key"` | -| schema.optional | 布尔值 | optional 为 `true` 时表示该 field 为选填项 | -| schema.type | 字符串 | 表示该 field 的数据类型 | +| schema.optional | 布尔值 | optional 为 `true` 时表示该字段为选填项 | +| schema.type | 字符串 | 表示该字段的数据类型 | #### Value 数据格式 @@ -161,8 +161,8 @@ Key 中的 fields 只包含主键或唯一索引列。字段解释如下: | payload.source.table | 字符串 | 事件发生的数据表的名称 | | schema.fields | JSON | payload 中各个字段的类型信息,包括对应行数据变更前后 schema 的信息等 | | schema.name | 字符串 | schema 的名称,格式为 `"{cluster}.{schema}.{table}.Envelope"` | -| schema.optional | 布尔值 | optional 为 `true` 时表示该 field 为选填项 | -| schema.type | 字符串 | 表示该 field 的类型 | +| schema.optional | 布尔值 | optional 为 `true` 时表示该字段为选填项 | +| schema.type | 字符串 | 表示该字段的类型 | ### 数据类型映射