距离 Debezium 2.5 最终版本发布只有一步之遥,我很高兴地宣布 Debezium 2.5.0.CR1 现已发布。此版本包含多项改进,如 Debezium Server 的 AWS SQS sink、用于增量快照水位标记的 INSERT/DELETE 语义、ReselectColumnsPostProcessor、统一的 Oracle LOB 行为。
此外,此版本还包含各种错误修复和一些重大更改。
让我们更详细地了解 Debezium 2.5.0.CR1 中包含的所有这些更改和改进;一如既往,您可以在 发行说明中找到此版本的完整更改列表。请记住,请特别注意任何可能影响您升级路径的重大更改。
重大变更
新功能和改进
Debezium 2.5 还引入了更多改进和功能,让我们逐一了解。
重新选择列
在某些情况下,由于某些源数据库的工作方式,当 Debezium 连接器发出变更事件时,该事件可能不包含特定列类型的值。例如,PostgreSQL 中的 TOAST 列、Oracle 中的 LOB 列或 Oracle Exadata 中的 Extended String 列的值都可能被排除。
Debezium 2.5 引入了 ReselectColumnsPostProcessor,提供了一种从数据库表中重新选择一个或多个列并获取当前状态的方法。您可以配置后处理器来重新选择以下列类型:
-
null 列。
-
包含
unavailable.value.placeholder占位符值 的列。
配置 PostProcessor 与配置 CustomConverter 或 Transformation 类似,不同之处在于它操作的是可变 payload 的 Struct,而不是 SourceRecord。
Debezium Server - Apache Kafka sink 的 StreamNameMapper
Kafka sink 的行为现在可以通过自定义逻辑来修改,提供特定功能的替代实现。当替代实现不可用时,将使用默认实现。
有关更多详细信息,请参阅 Apache Kafka Injection points。
增量快照水印的 INSERT/DELETE 语义
引入了 incremental.snapshot.watermarking.strategy 属性,允许用户选择在增量快照期间使用的水印策略。
insert_insert(旧行为)方法允许 Debezium 为快照期间的每个块在信号数据集合中创建两个条目,一个用于标记快照窗口的开始,另一个用于标记其结束。
另一方面,使用 insert_delete 选项,每个块的开始窗口在信号数据集合中只写入一个条目。完成后,此条目将被删除,并且不会添加相应的条目来表示快照窗口的结束。此方法有助于更有效地管理信号数据集合。
有关更多详细信息,请参阅您感兴趣的连接器的“连接器属性”部分。
Debezium Server - AWS SQS sink
Amazon Simple Queue Service (Amazon SQS) 是一种分布式消息队列服务。它支持通过 Web 服务应用程序以编程方式发送消息,作为通过 Internet 进行通信的一种方式。SQS 旨在提供高度可扩展的托管消息队列,以解决常见的生产者-消费者问题或生产者和消费者之间的连接问题。
Debezium 2.5 提供了将事件发送到 Amazon SQS 的可能性。
Oracle LOB 行为
Debezium 2.5 在快照和流式传输中统一了 LOB 行为。当 lob.enabled 设置为 false 时,将在快照期间显式包含不可用值占位符,以匹配流式传输的行为。
其他修复
此外,此版本还包含相当多的稳定性修复和 bug 修复。其中包括:
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。