我很荣幸宣布 Debezium 0.7.4 发布!
作为 0.7 系列的延续,这个新版本带来了多个错误修复和一些新功能。我们建议所有用户进行升级。从早期版本升级时,请查看您当前版本和 0.7.4 之间的所有版本的发行说明,以了解任何可能需要的升级步骤。
新功能
在新增功能方面,Postgres 和 MySQL 有一种处理 decimal 列的新模式(DBZ-611)。通过将 decimal.handling.mode 连接器选项设置为 string,Debezium 将以字符串形式发出 decimal 和 numeric 列。这对于消费者来说通常比默认使用的基于字节数组的表示更容易处理,同时又能保持完整的精度。作为奖励,string 模式还允许表示 Postgres 支持的特殊数值 NaN 和 Infinity。请注意,此功能需要更新 Debezium 运行在 Postgres 数据库服务器内的逻辑解码插件。在升级 Debezium Postgres 连接器之前必须先升级此插件。
说到字节数组,Postgres 的 BYTEA 列类型现在也得到了支持(DBZ-605)。
对于 MySQL 连接器,快照例程有一个新选项:snapshot.locking.mode(DBZ-602)。将其设置为 NONE 时,此选项允许在快照期间跳过任何表锁。只有在您绝对确定表在快照过程中不会发生结构性更改(添加、删除列等)时才应使用此选项。但如果可以保证这一点,则新模式可以作为提高整体系统性能的有用工具,因为并发进程的写入不会被阻塞。这在 Amazon RDS 等环境中尤其有用,因为连接器否则需要为整个快照保留锁。新选项取代了现有的 snapshot.minimal.locks 选项。有关详细信息,请参阅连接器文档。此功能由我们的社区成员Stephen Powis贡献;非常感谢!
Bug 修复
0.7.4 带来了多项与数字列处理相关的修复。例如,在 binlog 读取期间,MySQL 连接器无法正确处理没有小数部分的列(DBZ-615)。现在已修复。在使用 Postgres 连接器时,任意精度列值现在可以正确转换为更改数据消息字段(DBZ-351)。
我们还注意到 Debezium 0.6 中引入了一个回归:NUMERIC 列的字段模式总是被标记为可选,即使该列实际上声明为 NOT NULL。同样的情况也影响了 Debezium 0.7 支持的 Postgres 上的地理空间数组类型。这已通过DBZ-635修复。我们不认为此更改会对消费者产生任何影响(与之前一样,他们将始终获得该字段的值,只是其模式不再被错误地标记为可选)。
有关更多详细信息和 Debezium 0.7.4 中修复的所有问题的完整列表,请参阅完整更改日志。
下一步是什么?
按照我们三周一次的发布周期,下一个 Debezium 发布计划在 3 月 28 日。我们为此准备了一些令人兴奋的更改:如果一切顺利,我们将发布我们的 Oracle 连接器的第一个版本(DBZ-20)。第一版将基于 Oracle XStream API,尚不支持快照。但我们认为逐步推出此连接器很有意义,可以及早发布新功能并收集反馈。我们还计划在未来的版本中探索 XStream API 的替代方案。
另一个很棒的新功能将是Reactive Streams支持(DBZ-566)。基于现有的嵌入式模式,这将使使用 RxJava 2、Java 9 Flow API 等 Reactive Streams 实现消费更改数据事件变得非常容易。它对于在 Vert.x 等响应式框架中消费更改事件也很有用。我们非常期待发布此功能,并且已经有一个待处理的拉取请求。如果您愿意,可以查看并告知我们您的反馈!
此外,请查看我们关于 Debezium 未来几个月开发计划的路线图。这是我们当前的工作计划,但并非一成不变,所以请通过发送消息给我们发送您的功能请求。我们期待您的反馈!
关于 Debezium
Debezium 是一个开源的分布式平台,可以将现有数据库转变为事件流,使应用程序能够几乎即时地看到并响应数据库中已提交的每个行级更改。Debezium 构建在 Kafka 之上,并提供了 Kafka Connect 兼容的连接器,用于监控特定的数据库管理系统。Debezium 将数据更改的历史记录在 Kafka 日志中,这样您的应用程序可以随时停止和重新启动,并可以轻松地消费在未运行时错过的所有事件,确保所有事件都被正确且完整地处理。Debezium 在 Apache 许可证 2.0 下是 开源 的。