新记录状态提取
开云体育官方注册网址Debezium连接器排放数据变化信息来表示每个操作,他们捕捉从源数据库。开云体育电动老虎机Apache卡夫卡的连接器发送的消息有一个复杂的结构,忠实地代表原始数据库事件的细节。开云体育电动老虎机
虽然这个复杂的消息格式准确详细的信息系统中发生变化,格式可能不适合一些下游的消费者。水槽连接器,卡夫卡或其他地区的生态系统可能需要格式化的消息字段名称和值提出了一个简化的,扁平的结构。
简化的格式Debezium连接器生产的事件记录,您可以使用Debezium事件压扁单一消息转换(SMT)。开云体育官方注册网址配置转换支持消费者需要在卡夫卡的记录格式,比默认格式简单,连接器生产。根据您的特定用例,您可以应用SMT Debezium连接器,或水槽连接器使用Debezium连接器生产的消息。开云体育官方注册网址使Apache卡夫卡保留Debezium改变原来的格式的事件消息,配置的S开云体育官方注册网址MT水槽连接器。
是一个事件压扁转换卡夫卡连接贴片。
本章描述了事件中的信息扁平化单一消息转换(SMT) Debezium基于sql的数据库连接器。开云体育官方注册网址开云体育电动老虎机为一个等价的SMT信息Debezium MongoDB连接器,明白了开云体育官方注册网址MongoDB新文档状态提取。 |
改变事件结构
开云体育官方注册网址Debezium生成数据更改事件,有一个复杂的结构。每个事件包括三个部分:
元数据,包括但不限于:
改变数据类型的操作。
源信息,例如数据库和表的名称发生了变化。开云体育电动老虎机
时间戳来标识更改时间。
可选的事务信息。
行数据的变化
行数据后的变化
下面的示例显示了一个消息结构的一部分更新
更改事件:
{“人事处”:“u”,“源”:{…}," ts_ms”:“……”“之前”:{“field1”:“oldvalue1”、“field2”:“oldvalue2”},“后”:{“field1”:“newvalue1”、“field2”:“newvalue2}}
更多的信息更改事件结构连接器,明白了连接器的文档。
事后压扁SMT流程信息在前面的例子中,它简化了消息格式,导致信息在以下例子:
{“field1”:“newvalue1”、“field2”:“newvalue2”}
行为
事件压扁SMT提取后
场从Debezium卡夫卡开云体育官方注册网址记录更改事件。SMT取代原来的更改事件只有它后
卡夫卡字段创建一个简单的记录。
您可以配置的事件压扁SMT Debezium连接器或水槽连接器使用消息发出Debezium连接器。开云体育官方注册网址配置事件压扁一个水槽连接器的优势是,记录存储在Apache卡夫卡包含整个Debezium更改事件。开云体育官方注册网址决定应用SMT的源或汇连接器取决于您的特定的用例。
您可以配置转换做下列:
添加元数据的更改事件简化卡夫卡记录。默认行为是SMT不添加元数据。
保持卡夫卡记录包含更改事件
删除
操作流。默认行为是SMT滴卡夫卡记录删除
操作更改事件,因为大多数消费者还不能处理它们。
一个开云体育电动老虎机数据库删除
操作导致Debezium生成两个卡开云体育官方注册网址夫卡记录:
一个记录包含
“人事处”:“d”,
的之前
行数据,和其他一些领域。墓碑记录有相同的键删除的行和一个值
零
。这个记录是Apache卡夫卡的标志。它表明,日志压实这个键可以删除所有记录。
而不是放弃记录包含之前
行数据,您可以配置事件压扁SMT做下列之一:
保持记录的只有流和编辑它
“价值”:“零”
字段。保持记录和编辑它
价值
字段包含的键/值对之前
字段的添加“__deleted”:“真正的”
条目。
类似地,而不是放弃墓碑记录,您可以配置压扁SMT保持墓碑记录的事件流。
配置
配置Debezium事件压扁开云体育官方注册网址SMT卡夫卡连接源或汇连接器通过添加SMT配置连接器的配置细节。例如,获得的默认行为转换,将其添加到连接器配置不指定任何选项,如以下示例:
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.ExtractNewRecordState
与任何卡夫卡连接连接器配置,您可以设置变换=
多个,用逗号分隔,SMT别名的顺序要卡夫卡连接到应用SMT。
以下. properties
示例设置若干个事件压扁SMT选项:
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.ExtractNewRecordState transforms.unwrap.drop。来mbstones=false transforms.unwrap.delete.handling.mode=rewrite transforms.unwrap.add.fields=table,lsn
-
drop.tombstones = false
-
保持墓碑记录
删除
事件流的操作。 -
delete.handling.mode =重写
-
为
删除
操作,编辑卡夫卡记录压扁了价值
字段的更改事件。的价值
字段直接包含的键/值对之前
字段。SMT补充说__deleted
并集真正的
,例如:“价值”:{“pk”: 2,“可乐”:空,“__deleted”:“true”}
-
add.fields =表,lsn
-
增加了改变事件元数据
表
和lsn
字段来简化卡夫卡的记录。
连接器会发出许多类型的事件消息(心跳消息,墓碑消息或元数据信息交易或模式变化)。转换应用于事件的一个子集,您可以定义SMT谓词选择性地应用转换的语句特定事件。
添加元数据
您可以配置事件压扁SMT原始更改事件元数据添加到简化卡夫卡记录。例如,您可能想要简化记录的标题或价值包含下列:
的操作的类型做出了改变
数据库或表的名称发生了变化开云体育电动老虎机
连接器特有Postgres LSN领域等领域
可以看到更多的信息每个连接器的文档。
添加元数据来简化卡夫卡记录的头,指定add.headers
选择。添加元数据来简化卡夫卡记录的值,指定add.fields
选择。这些选项需要更改事件的逗号分隔列表字段名称。没有指定空间。当有重复的字段名称,添加元数据的字段,指定结构以及该领域。例如:
变换=打开……transforms.unwrap.type = i开云体育官方注册网址o.debezium.transforms.ExtractNewRecordState transforms.unwrap.add.fields = op,表,lsn、源。ts_ms transforms.unwrap.add。头= db transforms.unwrap.delete.handling.mode =重写
配置,简化卡夫卡记录将包含类似下面的:
{…“__op”:“c”,“__table”:“MY_TABLE”、“__lsn”:“123456789”,“__source_ts_ms”:“123456789”,……}
同时,简化卡夫卡会有记录__db
头。
在SMT简化卡夫卡记录,以双下划线前缀的元数据字段名。当你指定一个结构体,结构体之间的SMT也插入一个下划线名和字段名。
将元数据添加到一个简化的卡夫卡的记录删除
操作,您还必须配置delete.handling.mode =重写
。
选择应用event-flattening转换选择性
除了改变事件消息,Debezium连接器排放数据库变化发生时,连接器还散发出其他类型的消息,包括开云体育官方注册网址心跳消息,和元数据信息模式变化和事务。开云体育电动老虎机因为这些消息的结构不同于SMT的改变事件消息的结构设计过程,最好配置连接器有选择地应用SMT,这样流程只有预期的数据变化信息。
为更多的信息关于如何有选择地应用SMT,明白了配置一个SMT谓词转换。
配置选项
下表描述了选项,您可以指定配置事件压扁SMT。
选项 | 默认的 | 描述 |
---|---|---|
|
开云体育官方注册网址为每个Debezium生成一个墓碑记录 |
|
|
开云体育官方注册网址为每个Debezium生成一个更改事件记录 |
|
使用行数据来确定主题路线记录,设置这个选项 |
||
__(双下划线) |
这个可选的字符串字段前缀。 |
|
这个选项设置为一个以逗号分隔,没有空间,简化卡夫卡的元数据字段添加记录的值。当有重复的字段名称,添加元数据的字段,指定结构的领域,例如 |
||
__(双下划线) |
这个可选字符串前缀头。 |
|
这个选项设置为一个以逗号分隔,没有空间,元数据字段添加到标题的简化卡夫卡记录。当有重复的字段名称,添加元数据的字段,指定结构的领域,例如 |
||
卡夫卡消息头名称用于清单源消息中的字段名称,你想从输出消息。 |
||
|
指定是否你想要的SMT删除字段中列出 |
|
|
指定您希望SMT删除是否可选的字段中包含 |