Debezium发布历史113

原文地址: https://debezium.io/blog/2021/10/27/debezium-1-8-alpha1-released/

欢迎关注留言,我是收集整理小能手,工具翻译,仅供参考,笔芯笔芯.

Debezium 1.8.0.Alpha1 Released
October 27, 2021 by Chris Cranford
releases mysql postgres sqlserver cassandra oracle db2 vitess outbox

我很荣幸地宣布德贝佐姆1.8系列的首次发行, 1.8.0.Alpha1 !

随着秋天的色彩对我们来说,团队一直在努力为这个版本画代码的线条。与德贝兹1.8.0.阿尔法带来了相当多的改进,但最值得注意的是新的本地蒙戈db4改变流支持!

蒙戈德更改流支持
单戈德 改变潮流 允许应用程序或客户端访问实时更改数据捕获事件,而不需要跟踪OPOG的复杂性。这个功能最初是由Mongodb引擎在3.6版中引入的,但功能有限。现在,更改流将捕捉数据库、副本集甚至是分叉集群中的更改。

为以下项目增加的改变流支持:

启用与MOGODB5的兼容性(尚未测试,见下文的未来工作)。

在更新事件中提供完整的文档输出(见下文)。

从OPOG格式的内部(和可能改变的)细节进行摘要,使这个新的实现成为未来OPOG阅读的潜在替代。

为了使用与Debezum相关的更改流支持,您必须使用蒙戈db4。

扶持
蒙戈数据库的脱贝兹公开了一个新的配置属性,称为capture.mode .捕获模式指定连接器应该如何从蒙戈达数据库获取更改事件。有效的选择是:

oplog
指定更改应该通过跟踪OPOLG来捕获;这是遗留行为。

change_streams
指定更改应该通过使用蒙戈达更改流来捕获。更新将不包含完整的消息;只有更改的字段是事件的一部分。

change_streams_update_full
指定更改应该通过使用蒙戈达更改流来捕获。更新将包含事件中当前记录的全部快照。这是连接器的新默认值。

新的change_streams 和change_streams_update_full 捕获模式正在孵化,格式和细节围绕这些工作如何改变在未来的释放。

事件变化
使用我们的教程 示例存储库 ,让我们来看看这些捕获模式的差异。

首先,让我们给我们的customers 收藏。使用蒙戈数据库外壳,可以通过运行以下命令来实现这一点:

db.customers.insert([
{
_id : NumberLong(“1005”),
first_name : ‘Bob’,
last_name : ‘Hopper’,
email : ‘thebob@example.com’,
unique_id : UUID() }
]);
这将生成一个更改事件,但正如您将看到是否检查主题,事件的内容在这个版本中并没有完全不同。由于事件是一个插入,所以所有字段值都是在发出的事件中提供的。

在更新过程中,我们可以看到在操作中捕获模式的差异。现在使用这个命令修改客户的名和名:

db.customers.update(
{ _id:NumberLong(“1005”) },
{ $set: {
first_name: “Bobby”,
last_name: “Copper”
} });
这将使用ID修改客户的名和姓1005 .下面的章节展示了给定捕获模式下的每个事件的样子。

奥普格
以下是使用oplog 捕捉模式。

{
“schema”: {

},
“payload”: {
“after”: null,
“patch”: “{“KaTeX parse error: Can't use function '\"' in math mode at position 2: v\̲"̲: 1, \"set”: { “first_name”: “Bobby”, “last_name”: “Copper”}}”,
“filter”: “{”_id": {"$numberLong": “1005”}}",
“updateDescription”: null,
“source”: {
“version”: “1.8.0.Alpha1”,
“connector”: “mongodb”,
“name”: “dbserver1”,
“ts_ms”: 1635291250000,
“snapshot”: “false”,
“db”: “inventory”,
“sequence”: null,
“rs”: “rs0”,
“collection”: “customers”,
“ord”: 1,
“h”: 3510217852938498600,
“tord”: null,
“stxnid”: null
},
“op”: “u”,
“ts_ms”: 1635291250803,
“transaction”: null
}
}
发射事件的后字段没有值。相反,事件为补丁和过滤器提供了值,这些值描述了源文档中更改的有限细节。由于事件只提供关于哪些字段已经更改的细节,而不提供未更改字段的值,因此对于某些需要了解完整文档的用户来说,这可能不太理想。

改变潮流
以下是使用change_streams 捕捉模式。

{
“schema”: {

},
“payload”: {
“after”: null,
“patch”: null,
“filter”: null,
“updateDescription”: {
“removedFields”: null,
“updatedFields”: “{“first_name”: “Bobby”, “last_name”: “Copper”}”,
“truncatedArrays”: null
},
“source”: {
“version”: “1.8.0.Alpha1”,
“connector”: “mongodb”,
“name”: “dbserver1”,
“ts_ms”: 1635292448000,
“snapshot”: “false”,
“db”: “inventory”,
“sequence”: null,
“rs”: “rs0”,
“collection”: “customers”,
“ord”: 1,
“h”: null,
“tord”: null,
“stxnid”: null
},
“op”: “u”,
“ts_ms”: 1635292448736,
“transaction”: null
}
}
发出事件与遗留的OPOG输出有一个略有不同的值集。如上所示,事件在后面、补丁或筛选字段中没有值。相反,事件依赖于描述文档字段中的更改。updateDescription 结构。虽然这提供了可能由于更新而已设置甚至未设置的值的更多细节,但对于一些需要源文件所有字段的值的消费者来说,这可能仍然不太理想。

更改流程
以下是使用change_streams_update_full 捕捉模式。

{
“schema”: {

},
“payload”: {
“after”: “{”_id": {“KaTeX parse error: Can't use function '\"' in math mode at position 11: numberLong\̲"̲: \"1005\"},\"f…binary”: “KRywzYp5RneNu8DUmhQHAQ==”,"$type": “04”}}",
“patch”: null,
“filter”: null,
“updateDescription”: {
“removedFields”: null,
“updatedFields”: “{“first_name”: “Bobby”, “last_name”: “Copper”}”,
“truncatedArrays”: null
},
“source”: {
“version”: “1.8.0.Alpha1”,
“connector”: “mongodb”,
“name”: “dbserver1”,
“ts_ms”: 1635292878000,
“snapshot”: “false”,
“db”: “inventory”,
“sequence”: null,
“rs”: “rs0”,
“collection”: “customers”,
“ord”: 1,
“h”: null,
“tord”: null,
“stxnid”: null
},
“op”: “u”,
“ts_ms”: 1635292878244,
“transaction”: null
}
}
这种捕捉方式几乎与change_streams 但有一个关键的区别after 字段中填充了一个完整的文档快照。对于依赖于在源文档中拥有所有字段的用户来说,这种模式是很好的。

请看 蒙戈德文件 有关完整文档模式语义的详细信息.

整个文档模式是基于重新选择源文档时,蒙戈数据库提供改变流到连接器的更改事件。如果同一文档的多次更改发生在彼此非常接近的地方,每个事件可能具有相同的完整文档表示形式。

今后的工作
结合已经完成的蒙戈德变更流工作,我们认识到还有很多工作要做,包括用蒙戈德5测试新的变更流实现,并更新连接器文档以反映这些新的变更。您可以期待这个和更多的作为下一个预览版本的一部分。根据更新后的德贝佐姆1.8 路线图 我们还计划将增量快照的支持添加到蒙戈德的Debezum连接器,以及支持这个连接器的事件格式的外发箱事件路由器的一个变体。

其他补救措施
在这个版本中出现了相当多的缺陷和稳定性变化,值得注意的是:

在无法区分语句行的日志程序查询中的行哈希( DBZ-3834 )

对于增量快照中的组合主键,块选择语句是不正确的( DBZ-3860 )

有…的…的。当使用此功能时,会出现数据损坏( DBZ-4033 )

无限SPI抛出具有多个配置到相同甲骨文数据库的连接器的NPE( DBZ-4064 )

一起来, 82个问题 已经做好了准备。非常感谢所有参与这个版本的社区的贡献者: 克里斯多夫·伯奇 , 克劳斯·古特森 , 费边·马丁内斯 , 盖·科兰 , , 侯赛因托拉比 , 胡安菲亚略 , 犹大兰德 , 劳伦特·布鲁杜克斯 , 普卢格卢都铎 , 谢尔盖·莫罗佐夫 , 光宏 , 金雀鸟 , 沃桑 , 朱威利 , 李宗文 ,以及 陆杰 .

展望
由于年底即将来临,我们打算以同样的活力向前推进。我们已经开始 公开讨论 关于邮件列表中的Debez2.0。你的反馈是无价之宝,所以让我们知道你希望看到的添加、更改或改进!与此同时,你也可以期待一个小的布格菲斯特发布的德贝齐姆1.7系列下周,以及另一个预展的德贝齐姆1.8系列在几个星期后。快乐流线!

相关推荐

  1. Debezium发布历史113

    2024-02-07 17:38:03       26 阅读
  2. Debezium发布历史117

    2024-02-07 17:38:03       29 阅读
  3. Debezium发布历史08

    2024-02-07 17:38:03       51 阅读
  4. Debezium发布历史36

    2024-02-07 17:38:03       27 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-07 17:38:03       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-07 17:38:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-07 17:38:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-07 17:38:03       18 阅读

热门阅读

  1. git命令

    git命令

    2024-02-07 17:38:03      27 阅读
  2. Ubuntu23.04编译VLC3.0.20的各种错误处理

    2024-02-07 17:38:03       34 阅读
  3. 计算机网络相关题目及答案(第三章)

    2024-02-07 17:38:03       33 阅读
  4. 多个Nginx虚拟主机部署脚本

    2024-02-07 17:38:03       24 阅读
  5. NCCL源码解析: P2P 连接的建立

    2024-02-07 17:38:03       34 阅读
  6. OpenCV 入门教程

    2024-02-07 17:38:03       24 阅读
  7. 排队论——不同实体的到达过程组合问题

    2024-02-07 17:38:03       29 阅读
  8. 代码随想录算法训练营29期Day43|LeetCode 1049,494,474

    2024-02-07 17:38:03       26 阅读