新记录状态提取

开云体育官方注册网址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。

表1。对事件的描述压扁SMT配置选项
选项 默认的 描述

真正的

开云体育官方注册网址为每个Debezium生成一个墓碑记录删除操作。默认行为是该事件压扁SMT从流中删除墓碑记录。保持墓碑记录在流,指定drop.tombstones = false

下降

开云体育官方注册网址为每个Debezium生成一个更改事件记录删除操作。默认行为是该事件压扁SMT从流中删除这些记录。卡夫卡的记录删除操作流,集delete.handling.mode没有一个重写

指定没有一个流中的更改事件记录。记录只包含“价值”:“零”

指定重写保持更改事件记录流和编辑记录价值字段包含的键/值对之前字段并添加__deleted:真价值。这是另一种方式,表明记录已被删除。

当你指定重写,更新后的简化的记录删除操作可能是所有您需要跟踪记录删除。你可以考虑接受默认行为的墓碑记录Debezium连接器创建。开云体育官方注册网址

使用行数据来确定主题路线记录,设置这个选项字段属性。SMT路线记录的主题名称匹配指定的值字段属性。对于一个删除一个操作,设置这个选项之前字段属性。

例如,配置route.by.field =目标路线记录主题的值是他的名字after.destination。Debezium连接器发送的默认行为是每个更改事件记录到一个话开云体育官方注册网址题,他的名字叫的名称由数据库和表的名称的改变。开云体育电动老虎机

如果你配置事件压扁SMT水槽连接器,设置这个选项可能是有用的,目的地主题名称指示数据库表的名称将被更新的简化更改事件记录。开云体育电动老虎机如果你的主题名称是不正确的用例中,您可以配置route.by.field,重新路由事件。

__(双下划线)

这个可选的字符串字段前缀。

这个选项设置为一个以逗号分隔,没有空间,简化卡夫卡的元数据字段添加记录的值。当有重复的字段名称,添加元数据的字段,指定结构的领域,例如source.ts_ms

可选地,您可以重写字段名<字段名称>:<新领域名称>,例如像:新字段名版本:版本,连接器:连接器,source.ts_ms: EVENT_TIMESTAMP。请注意新字段名是区分大小写的。

当SMT将元数据字段添加到简化记录的值,它以双下划线前缀每个元数据字段名称。结构规范,SMT也插入一个下划线之间的结构体名和字段名。

如果你指定一个字段更改事件记录,SMT还添加了字段记录的值。

__(双下划线)

这个可选字符串前缀头。

这个选项设置为一个以逗号分隔,没有空间,元数据字段添加到标题的简化卡夫卡记录。当有重复的字段名称,添加元数据的字段,指定结构的领域,例如source.ts_ms

可选地,您可以重写字段名<字段名称>:<新领域名称>,例如像:新字段名版本:版本,连接器:连接器,source.ts_ms: EVENT_TIMESTAMP。请注意新字段名是区分大小写的。

当SMT将元数据字段添加到简化记录的标题,它以双下划线前缀每个元数据字段名称。结构规范,SMT也插入一个下划线之间的结构体名和字段名。

如果你指定一个字段更改事件记录,SMT不添加字段标题。

卡夫卡消息头名称用于清单源消息中的字段名称,你想从输出消息。

指定是否你想要的SMT删除字段中列出drop.fields.header.name从事件的关键。

真正的

指定您希望SMT删除是否可选的字段中包含drop.fields.header.name配置属性。

默认情况下,SMT只删除字段标记可选