multi-table Debezium 连接器是否保证跨变更跟踪 table 的排序?
Does multi-table Debezium connector guarantee the ordering across change tracking tables?
我正在尝试构建一个事件聚合解决方案,该解决方案遵循 MS 中的变更数据捕获 (CDC) 模式 SQL 服务器 + Debezium MS SQL 服务器连接器将 CDC 作为事件发布到一个 kafka 主题 + 聚合器服务,它使用 CDC 事件,聚合它们并将聚合发布到不同的主题。
目前,我正在寻找一个问题的明确答案,如果 Debezium 的 SQL 服务器连接器跟踪多个 table 并使用主题路由转换来将所有消息路由到同一主题,保证它将以“全局”顺序发布来自所有跟踪的 table 的事件(比如如果更改为 table A 发生在更改为 table B,关于table A的变更事件保证先发布)。
我已经阅读了文档 here 并做了一些测试,这似乎是 Debezium 提供的保证,但是文档中的措辞有点含糊。
The connector sorts the changes that it reads in ascending order, based on the values of their commit LSN and change LSN. This sorting order ensures that the changes are replayed by Debezium in the same order in which they occurred in the database.
简单来说,如果是在同一个事务中,则按照变化的先后顺序。如果不是,则以交易完成时间为准。
我正在尝试构建一个事件聚合解决方案,该解决方案遵循 MS 中的变更数据捕获 (CDC) 模式 SQL 服务器 + Debezium MS SQL 服务器连接器将 CDC 作为事件发布到一个 kafka 主题 + 聚合器服务,它使用 CDC 事件,聚合它们并将聚合发布到不同的主题。
目前,我正在寻找一个问题的明确答案,如果 Debezium 的 SQL 服务器连接器跟踪多个 table 并使用主题路由转换来将所有消息路由到同一主题,保证它将以“全局”顺序发布来自所有跟踪的 table 的事件(比如如果更改为 table A 发生在更改为 table B,关于table A的变更事件保证先发布)。
我已经阅读了文档 here 并做了一些测试,这似乎是 Debezium 提供的保证,但是文档中的措辞有点含糊。
The connector sorts the changes that it reads in ascending order, based on the values of their commit LSN and change LSN. This sorting order ensures that the changes are replayed by Debezium in the same order in which they occurred in the database.
简单来说,如果是在同一个事务中,则按照变化的先后顺序。如果不是,则以交易完成时间为准。