我非常激动地宣布 Debezium 0.8.0.Beta1 发布!
此版本带来了许多令人兴奋的新功能以及错误修复,例如:我们新的 Oracle 连接器的第一个版本,MySQL 连接器的一个全新 DDL 解析器,对 MySQL 默认值的支持,以及升级到 Apache Kafka 1.1。
由于更改数量庞大(总共42 个问题),我们决定稍微调整版本方案:今后,我们可能会进行一个或多个 Beta 和 CR(“候选发布”)版本,然后再发布最终版本。这将使我们能够及早获得社区的反馈,同时仍能完成和完善特定功能。最终(稳定)版本将命名为 0.8.0.Final 等。
本次发布离不开我们杰出的社区贡献;非常感谢以下开源爱好者为新版本做出的贡献:Echo Xu, Ivan Vucina, Listman Gamboa, Omar Al-Safi, Peter Goransson, Roman Kuchar(他在新的 DDL 解析器实现方面做得非常出色!), Sagar Rao, Saulius Valatka, Sairam Polavarapu, Stephen Powis 和 WenZe Hu。
非常感谢大家的帮助!
现在让我们仔细看看 Debezium 0.8.0.Beta1 的一些新功能;与往常一样,您可以在变更日志中找到此版本的所有更改。请特别关注破坏性更改和升级说明。
基于 XStream 的 Oracle 连接器 (技术预览)
Debezium Oracle 连接器的支持一直是大家长期以来最期待的功能之一(其原始 issue 号为DBZ-20!)。因此,我们非常高兴终于能发布该连接器的第一个仍在开发中的版本。目前,此代码仍处于非常活跃的开发阶段,因此应视为一个初步的技术预览。这意味着它尚未实现所有功能(最值得注意的是,目前还不支持初始快照),并且发出的消息格式仍可能发生变化。因此,虽然我们目前不建议在生产环境中使用它,但您绝对应该尝试一下并分享您的使用体验。
Oracle 连接器的一个挑战是如何从数据库中提取实际的变更事件。与 MySQL 和 Postgres 不同,遗憾的是,Oracle 没有一个免费且易于使用的 API 来实现同样的功能。经过一些探索,我们决定基于Oracle XStream API 来构建此连接器的第一个版本。虽然这(在某种程度上)满足了“易于使用”的要求,但它不满足“免费使用”的要求:使用此 API 需要您拥有 Oracle 独立 GoldenGate 产品的许可证。我们充分意识到这并不理想,但我们决定将其作为第一步,这样我们就可以积累一些 Oracle 使用经验,并让拥有所需许可证的用户能够使用该连接器。未来,我们将探索替代方法。我们已经有一些想法和讨论,敬请关注(跟踪 issue 为DBZ-137)。
Oracle 连接器将在接下来的 0.8.x 版本中不断演进。要了解更多关于它的信息,请查看其连接器文档页面。
基于 Antlr 的 MySQL DDL 解析器
为了构建捕获数据库结构的内部元模型,Debezium MySQL 连接器需要解析所有发出的 DDL 语句(例如 `CREATE TABLE`)。这以前是通过手工编写的 DDL 解析器完成的,该解析器工作得相当不错,但随着时间的推移也暴露出一些不足之处;由于 DDL 语言非常广泛,我们反复收到关于某些特定 DDL 构造无法解析的 bug 报告。
因此,我们决定重新设计并提出了全新的解析器设计。感谢 Roman Kuchar 的出色工作,我们现在有了一个全新的 DDL 解析器,它基于成熟且非常稳定的Antlr 解析器生成器(幸运的是,Antlr 项目提供了完整的 MySQL 语法)。因此,预计未来与 DDL 解析相关的 issue 报告将大大减少。
目前,旧的解析器仍然保留,并且仍然是 Debezium 0.8.x 的默认解析器。我们强烈建议您通过将连接器选项 `ddl.parser.mode` 设置为 `antlr` 来测试新实现,并在遇到任何问题时及时反馈。我们计划在 0.8.x 版本系列中改进和完善 Antlr 解析器(特别是我们将衡量其性能并进行优化),并将其作为 Debezium 0.9 的默认设置。最终,旧的解析器将在之后的一个版本中被移除。
MySQL 连接器的其他更改
Postgres 连接器
MongoDB 连接器
下一步是什么?
根据新的 Beta/CR/Final 发布计划,我们希望获得社区(也就是您 :))对此 Beta 版本的反馈。根据报告的 issue 数量,我们将在下一个版本中发布另一个 Beta 版本或直接发布 CR1。0.8.0.Final 版本将在几周内发布。请注意,Oracle 连接器在最终版本中仍将是“技术预览”组件。
在此之后,我们计划发布一些主要包含 bug 修复的 0.8.x 版本,同时将并行开始 Debezium 0.9 的开发。对于 0.9,我们计划开发一个 SQL Server 连接器(见DBZ-40)。我们还希望探索基于原始事务 ID,从多个表的 CDC 流创建一致连接体(materializations of joins)的方法。另外,还有一个想法和初步原型,即将 Debezium 变更事件作为响应式事件流(DBZ-566)暴露出来,这可能会被最终发布。
请查看路线图以了解更多长期想法,如果您有相关想法,请与我们联系。
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。