我很荣幸地宣布 Debezium 0.7.2 发布!
新功能包括对地理空间类型的支持,MySQL 连接器用于恢复丢失的 DB 历史 topic 的新快照模式,以及一个用于将 MongoDB 更改事件转换为更多下游连接器可以消费的结构的消息转换。当然,我们也修复了大量错误。
Debezium 0.7.2 是先前 0.7.x 版本的直接替换版本。从 0.7.0 之前的版本升级时,请查看所有 0.7.x 版本的发行说明,以了解任何可能需要的升级步骤。
非常感谢我们出色的社区成员为此版本付出的辛勤工作:Andrey Pustovetov,Denis Mikhaylov,Peter Goransson,Robert Coup,Sairam Polavarapu 和 Tom Bentley。
现在让我们仔细看看一些新功能。
MySQL 连接器
MySQL 连接器最大的变化是支持地理空间列类型,如 GEOMETRY、POLYGON、MULTIPOINT 等。
新增了两种逻辑字段类型 — io.debezium.data.geometry.Geometry 和 io.debezium.data.geometry.Geography — 用于在变更数据消息中表示地理空间列。这些类型通过 WKB(“well-known binary”)和 SRID(坐标参照系统标识符)表示地理空间数据,使下游消费者可以使用任何支持解析 WKB 的现有库来解释变更事件。稍后将发布一篇详细介绍此内容的博文。
当出于某种原因丢失了 MySQL 连接器使用的 DB 历史主题(部分或全部)时,新的快照模式 schema_only_recovery 会非常有用。如果您想通过重新创建该主题来压缩它,此模式也很有用。请参阅连接器文档了解此模式的详细信息,特别是何时(何时不)可以安全地使用它。
另一个与管理 DB 历史主题大小相关的新功能是选项,用于控制是否包含所有 DDL 事件,还是仅包含根据白名单/黑名单配置捕获的表的相关 DDL 事件。同样,请查看连接器文档以了解此设置的更多具体信息。
PostgreSQL 连接器
与 MySQL 连接器类似,现在对 Postgres 中的地理空间列的支持有了很大改进。更具体地说,现在可以在变更数据事件中表示 PostGIS 列类型。非常感谢 Robert Coup 贡献了此功能!
如果您只想将捕获表的行中的一部分包含在快照中,您可能会喜欢指定专用 SELECT 语句来做到这一点。例如,这可用于从快照中排除任何逻辑上已删除的记录 — 您可以根据该表中的某个标志来识别这些记录。
MongoDB 连接器
如果您曾比较过 Debezium RDBMS 连接器(MySQL、Postgres)和 MongoDB 连接器发出的变更事件的结构,您会知道后者的消息结构与前者的略有不同。由于 MongoDB 的无模式特性,变更事件实际上包含一个字符串,其中是所应用的插入或补丁的 JSON 表示。此结构无法被现有的 Sink 连接器(如 Confluent 的 JDBC 或 Elasticsearch 连接器)使用。
现在可以通过新添加的单消息转换 (SMT) 来实现这一点,该 SMT 解析这些 JSON 字符串并从中创建结构化的 Kafka Connect 记录(感谢 Sairam Polavarapu!)。当将此 SMT 应用于 JDBC Sink 连接器时,您现在可以从 MongoDB 流式传输数据更改到任何受支持的关系数据库。
请注意,此 SMT 尚在开发中,其发出的消息结构细节可能仍会发生变化。此外,使用 SMT 会有一些固有的局限性,例如,如果您的 MongoDB 文档中包含数组,此 SMT 创建的记录将相应地进行结构化,但许多 Sink 连接器无法处理这种结构。
我们对进一步开发有一些想法,例如,可以提供一个选项来展平(非数组)嵌套结构,这样例如 { "address" { "street" : "..." } } 将表示为 address_street,然后 Sink 连接器可以消费这种结构,因为它们期望的是扁平结构。
新 SMT 的详细描述请参见我们的文档。
下一步是什么?
有关 Debezium 0.7.2 中修复的更多详细信息和完整问题列表,请参见完整的更改日志。
0.7.3 版本计划于 2 月 14 日发布。
我们将重点处理一些错误修复,并且我们正在努力让 Debezium 定期向专用主题发出心跳消息。这对于诊断目的非常有用,也有助于定期触发 Kafka Connect 中的偏移量提交。这在捕获很少更改的表的某些情况下非常有益。
我们还制定了路线图,其中描述了我们对 Debezium 未来工作的想法,超越了下一个 bugfix 版本。虽然没有一成不变,但这是我们对未来几个月将要添加的功能的设想。如果您在路线图中遗漏了任何重要内容,请在下面的评论中告诉我们,或向我们的 Google 群组发送消息。期待您的反馈!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。