今天,我很高兴地宣布2.2发布流中的第三个alpha版本Debezium开云体育官方注册网址2.2.0.Alpha3.
这个版本包含了大量的错误修复、改进、突破性的更改,以及许多新特性,包括但不限于可选的并行快照、服务器端MongoDB更改流过滤、增量快照的代理键、Cassandra Enterprise的新Cassandra连接器等等。
让我们花点时间来深入研究这些新特性、改进和突破性变化。
突发的变化
我们通常会尽量避免任何破坏性的更改,即使是在像这样的小版本中;然而,在特定的环境下,有时突破性的变化是不可避免的。开云体育官方注册网址Debezium 2.2.0。Alpha3包含一个突破性的变化:
PostgreSQL分区日期时间数据类型被截断
它被确认为(dbz - 6163),即PostgreSQL基于时区的列值为0 (0
),因为基于时区的列的毫秒和微秒部分被不正确地序列化,其中字符串既不包括时间的毫秒部分,也不包括使用零的微秒部分。
这不创建任何数据丢失! |
值得注意的是,在此版本之前,在计算这些列的值时,使用者必须准备好在没有毫秒或微秒值的情况下解析这些基于字符串的时间值。实际上,这意味着事件具有不一致的模式,如果源值为0毫秒或0微秒,则有些事件具有毫秒和微秒部分,而其他事件可能没有。
这些基于字符串的时间值将以一致的方式发出,并用零填充(0
)用于基于字符串的时间的毫秒和微秒部分,即使源值既没有毫秒也没有微秒。
可选的并行快照
开云体育官方注册网址Debezium的关系数开云体育电动老虎机据库初始快照进程一直是单线程的。这种限制主要源于确保跨多个事务的数据一致性的复杂性。
从Debezium 2.开云体育官方注册网址2开始,我们添加了一种新的、最初可选的方法来利用多线程为连接器执行一致的数据库快照。开云体育电动老虎机这个实现使用这些多线程并行执行表级快照。
为了利用这个新特性,请指定snapshot.max.threads
在连接器的配置中,当此属性的值大于1
,将使用并行快照。
snapshot.max.threads = 4
在上面的例子中,如果连接器需要对4个以上的表进行快照,那么最多只能同时对4个表进行快照。当一个线程完成对一个表的处理后,它将从队列中获取一个要快照的新表,该过程将继续,直到所有表都被快照完成。
考虑到这个特性孵化,但是我们强烈建议新的连接器部署可以尝试一下这个特性。我们欢迎任何关于如何改进这一问题的反馈。 |
MongoDB服务器端变更流过滤
开云体育官方注册网址Debezium目前订阅MongoDB更改流,并评估一个事件在连接器端是否相关。从表面上看,这种方法在技术上没有任何问题,它运行得很好;然而,最近一位贡献者解释了这一决定对他们的影响。
总的来说,当前进程有效地在网络上序列化从MongoDB到连接器的所有更改。如果您的更改量较小,您可能不会发现这种方法有任何问题;然而,在一个大容量的场景中,特别是当您只对变更流生成的数据子集感兴趣时,您很快就会发现这种方法是多么的低效。此外,如果您在AWS这样的云环境中运行连接器,那么您可能会看到使用成本可能受到影响的大容量场景。
通过将包含/排除列表过滤器的评估位置从连接器移动到MongoDB服务器的更改流订阅,这为所有MongoDB连接器用户增加了许多优势。
通过减少连接器看到的事件数量,这将影响网络和CPU利用率。当连接器由于包含/排除过滤器而直接丢弃事件时,这将导致可以避免的网络使用。当连接器配置了完整的文档或预图像设置时,这甚至增加了完全不必要的网络利用率。此外,通过接收比连接器配置感兴趣的事件更多的事件,这将导致连接器执行更多的处理,从而提高CPU利用率。
尽管网络和CPU利用率在任何环境下都很重要,但在运行基于云的环境时,这两个指标通常会更加仔细,因为这两个指标直接影响运营预算。使用Debezium MongoDB 2.2连接器,用户应该会看到网络和CPU利用率总体上有所降低。开云体育官方注册网址
我们希望在未来的博客文章中分享更多关于这一变化的好处的细节,敬请期待!
增量快照代理键支持
开云体育官方注册网址Debezium的增量快照功能取得了巨大的成功。它提供了一种高效的方式来执行可恢复的数据快照,当快照包含大量数据时,这是至关重要的。
但是,在使用增量快照特性之前,必须满足特定的要求。其中一个要求是所有被快照的表都必须使用主键。你可能会问,为什么表没有主键,我们今天不讨论这个问题;然而,我只想说,这种情况发生的频率比你想象的要高。
使用Deb开云体育官方注册网址ezium 2.2,可以在无键表上执行增量快照,只要有一个列是唯一的,并且可以被视为增量快照目的的“代理键”。
MongoDB不支持代理键特性;只有关系连接器。 |
要在增量快照信号中提供代理键列数据,信号的有效负载必须包括新的代理键属性,代理键
.
{"data-collections": ["public. "Mytab "], " proxy -key": "customer_ref"}
在上面的例子中,将为表启动增量快照public.mytab
增量快照将使用customer_ref
列作为生成快照窗口的主键。
不能使用多个列定义代理键,只能使用单列。 |
但是,代理键特性不仅适用于没有主键的表。对于有主键的表使用此特性有一系列优点:
一个明显的优势是当表的主键由多列组成时。查询为主键中的每一列生成一个分离谓词,它的性能高度依赖于环境。将列数减少到单个列通常是通用的。
另一个优点是代理键基于数值数据类型,而主键列基于基于字符的数据类型。关系数据库通常使用数字开云体育电动老虎机比较比字符比较更有效地执行谓词计算。在这种情况下,通过调整查询以使用数值数据类型,可以提高查询性能。
其他修复
在这个版本中有相当多的其他改进,bug修复和稳定性更改,一些值得注意的是:
当使用
snapshot.collection.include.list
,关系模式没有正确填充dbz - 3594开云体育官方注册网址Debezium UI应该在Quarkus 2.x中再次使用fast-jardbz - 4621
基于Cassandra连接器创建Datastax连接器dbz - 5951
在升级后的更改流中增加了对MongoDB读优先级的支持dbz - 5953
为所有Debezium服务器接收器添加头的支持开云体育官方注册网址dbz - 6017
当一个列上有多个索引时,GCP扳手连接器开始失效dbz - 6101
MongoDB重新连接案例的剩余尝试为阴性dbz - 6113
支持Mongo增量快照中的键为字符串类型dbz - 6116
名称中含有空格或非ascii字符的表不会被Oracle捕获,因为它们必须加引号。dbz - 6120
在对PDB进行低频率更改的CDB部署中,偏移量并不先进dbz - 6125
允许TestContainers测试框架将ConnectorConfiguration公开为JSONdbz - 6136
Oracle TIMESTAMP WITH TIME ZONE在快照期间作为GMT发出,而不是指定的TZdbz - 6143
将import -maven-plugin从1.7.0升级到1.8.0dbz - 6144
开云体育官方注册网址Debezium UI E2E前端构建失败随机破坏节点16 tar文件dbz - 6146
开云体育官方注册网址由于代理启动缓慢,Debezium UI SQL Server测试随机失败dbz - 6149
将Quarkus依赖升级到2.16.3.Finaldbz - 6150
删除更改流不需要的系统数据库排除项的硬编码列表开云体育电动老虎机dbz - 6152
RelationalSnapshotChangeEventSource吞咽快照期间产生的异常dbz - 6179
为MySQL连接器的集成测试创建SSL场景dbz - 6184
总而言之,33个问题修复了此版本。非常感谢社区中为这个版本工作的所有贡献者:伽柏安德拉斯,莫汉蒂Anisha,鲍勃Roldan称,鲍比Tiernay,克里斯克兰福德,尤金Abramchuk,伽柏安德拉斯,贡纳Morling,哈维曰,Jakub Cechacek,杰里米·福特,雅罗西克Pechanec,Mehmet Firat Komurcu,Plugaru都铎,Stefan Miklosovic,苏博德·康德·查图维迪,Vojtech Juranek,Xinbin黄!
展望&下一步是什么?
此外,我们正在接近Debezium 2.2开发周期的尾声。开云体育官方注册网址假设没有意外的问题,我们打算在下周发布Beta1,然后在两周后发布候选版本。我们的目标是最迟在3月底或4月初完成Debezium 2开云体育官方注册网址.2发行版。
此外,DevNexus 2023会议将于4月初在亚特兰大举行,我有幸成为讨论Debezium和CDC模式的客座发言人。开云体育官方注册网址如果有机会,一定要亲自去看看!
最后,请关注本月晚些时候我们2023年通讯的第一期。我还将结束博客系列“Debezium for Oracle”,在该系列中,我将介绍性能、调开云体育官方注册网址试和有关Oracle连接器的常见问题。
下次见…
关于Debe开云体育官方注册网址zium
开云体育官方注册网址Debezium是一个开源的分布式平台,它将现有数据库转换为事件流,因此应用程序几乎可以立即看到并响应数据库中提交的每一个行级更改。开云体育电动老虎机开云体育官方注册网址Debezium是建立在卡夫卡并提供卡夫卡连接监控特定数据库管理系统的兼容连接器。开云体育电动老虎机开云体育官方注册网址Debezium在Kafka日志中记录了数据更改的历史,所以你的应用程序可以在任何时候停止和重新启动,并且可以很容易地使用它没有运行时错过的所有事件,确保所有事件都被正确和完整地处理。开云体育官方注册网址Debezium是开源下Apache许可证,版本2.0.
参与
我们希望您觉得Debezium有趣开云体育官方注册网址且有用,并愿意尝试一下。在Twitter上关注我们@开云体育官方注册网址debezium,在Zulip上和我们聊天,或加入我们的邮件列表与社区对话。所有的代码都是开源的GitHub上,因此在本地构建代码并帮助我们改进现有连接器并添加更多连接器。如果您发现了问题或对我们如何改进Debezium有想法,请告诉我们开云体育官方注册网址记录问题.