我很高兴地宣布 Debezium 0.9.0.Alpha2 的发布!
虽然 SQL Server 和 Oracle 连接器的开发仍在继续,但我们决定进行另一次 Alpha 版本发布,因为已经积累了大量的修复和新功能——其中许多是由社区成员贡献的,我们希望尽快将它们交给您。
此版本支持 Apache Kafka 2.0,支持 Postgres 的 HSTORE 列类型,允许重命名和过滤 MongoDB 变更数据消息中的字段,并包含多项错误修复和性能改进。总体而言,此版本包含55 项修复(请注意,其中一些已合并到 0.8.x 中,并且也包含在早期的 0.8 版本中)。
非常感谢社区成员 Andrey Pustovetov、Artiship Artiship、Cliff Wheadon、Deepak Barr、Ian Axelrod、Liu Hanlin、Maciej Bryński、Ori Popowski、Peng Lyu、Philip Sanetra、Sagar Rao 和 Syed Muhammad Sufyian 对此版本的贡献。我们向您致敬!
Kafka 升级
支持 Postgres 的 HSTORE 列
Postgres 是一个极其强大且灵活的关系型数据库,这很大程度上归功于其广泛的列类型,远超 SQL 标准的定义。其中一种类型是 HSTORE,本质上它是一个字符串到字符串的映射。
Debezium 现在可以捕获此类型列的更改了(DBZ-898)。默认情况下,字段值将使用 Kafka Connect 的 map 数据类型表示。由于并非所有 sink 连接器都支持这一点,您也可以通过将新的 hstore.handling.mode 连接器选项设置为 json 来将其表示为字符串化的 JSON。在这种情况下,您将在更改消息中看到 HSTORE 列表示为类似如下的值:{ "key1" : "val1", "key2" : "val2" }。
MongoDB 的字段过滤和重命名
与 MySQL 和 Postgres 的连接器不同,Debezium MongoDB 连接器到目前为止还不允许将捕获集合的单个字段排除在 CDC 消息之外。例如,通过 Kafka 的 ReplaceField SMT 也不支持重命名它们。原因是 MongoDB 不强制要求给定集合文档具有固定模式,因此文档在更改消息中以单个字符串化的 JSON 字段表示。
感谢社区成员 Andrey Pustovetov 的出色工作,这种情况终于得到了改变,也就是说,您现在可以从给定集合的 CDC 消息中删除指定字段(DBZ-633)或者对它们进行重命名(DBZ-881)。请参阅 MongoDB 连接器文档 中关于新的连接器选项 field.blacklist 和 field.renames 的说明以了解更多信息。
扩展的源信息
Andrey 的另一项贡献是 CDC 消息源信息块中新增了一个可选的 connector 字段(DBZ-918)。这可以指示生成消息的源连接器的类型("mysql", "postgres" 等),这在需要根据源数据库类型在消费者端应用特定语义的情况下会很有用。
Bug 修复和版本升级
新版本包含大量 bug 修复和其他小型改进。其中有:
社区成员 Ian Axelrod 提供了一个关于潜在性能问题的修复。在 Postgres 中,对带有 TOAST 列的表进行更改会导致连接器的内部 schema 元数据反复更新,这可能是一项昂贵的操作(DBZ-911)。请参阅 Postgres 连接器文档 中关于处理此问题的新 schema.refresh.mode 选项的详细信息。
在版本升级方面,我们迁移到了最新的 MySQL (DBZ-763, DBZ-764) 和 Postgres 驱动程序(DBZ-912)。前者是朝着支持 MySQL 8 的长期工作的一部分,该工作应在接下来的 Debezium 版本中完成。对于 Postgres,我们现在提供基于 Alpine 的 Debezium 支持的逻辑解码插件的 Docker 镜像,这对于关注容器大小的用户可能很有吸引力(DBZ-705)。
有关已修复问题的完整列表,请参阅更改日志。
下一步是什么?
Debezium 0.9 的开发工作仍在继续,我们将主要专注于改进 SQL Server 和 Oracle 连接器。其他潜在主题包括对 MySQL 8 和 Postgres 10 中引入的原生逻辑解码的支持,这将极大地帮助在 Amazon RDS 等云环境中使用 Debezium Postgres 连接器。
我们还将在以下会议上讨论 Debezium:
-
Kafka Summit;加利福尼亚州旧金山;10 月 17 日
-
VoxxedDays Microservices;法国巴黎;10 月 29 日 - 31 日
-
Devoxx Morocco;摩洛哥马拉喀什;11 月 27 日 - 29 日
上周,我已有机会在 JUG Saxony Day 上展示 Debezium。如果您有兴趣,可以在 Speaker Deck 上找到该讲座的(德语)幻灯片。
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。