如何使用 Kafka Connect for Sybase ASE 数据库实现变更数据捕获 (CDC)?

Posted

技术标签:

【中文标题】如何使用 Kafka Connect for Sybase ASE 数据库实现变更数据捕获 (CDC)?【英文标题】:How to implement change data capture (CDC) using Kafka Connect for Sybase ASE database? 【发布时间】:2021-03-07 13:15:35 【问题描述】:

我有一个要求,我必须将实时数据库更新流式传输到 KAFKA 主题中。所以基本上,每当在数据库中添加、更新或删除某些内容时,我都希望将该更新推送到 kafka 主题中。我看到了一些关于我们如何使用 debezium 为 mysql 和 postgresql 做到这一点的文章。但是我要监控的数据库是 Sybase ASE。 debezium 是否支持 sybase ASE?

如果是,有人可以给我很好的文档吗?我在互联网上找不到任何东西。

如果不是,我可以通过什么其他方式为 sybase ASE 数据库实现此更改数据捕获 (CDC) 功能?

【问题讨论】:

【参考方案1】:

理想情况下,CDC 应该通过读取数据库日志(即 Oracle 的重做日志、MySQL 的 binlog、Cassandra 的 SSTable 等)来完成。

对于专有数据库,通常供应商会提供 API 或工具来读取日志。例如甲骨文提供金门。我还没有从 Sybase 看到类似的东西。

使用 Sybase 的一个可能选项是 JDBC。如果您使用的是 Kafka Connect,则可以查看 JDBC 连接器。但是,如果数据量很大,我认为这可能不是一个好的解决方案。

另一种选择可能是写入数据库的进程也会向 Kafka 主题生成消息。这不是真正意义上的 CDC,但它可能是一个可行的解决方案。但是您需要处理写入 DB 成功但向 Kafka 生成消息失败的情况。

【讨论】:

是的。我已经研究过 JDBC Connect。但我面临的问题是更新的推送延迟很大(将单个更新推送到 KAFKA 主题大约需要 5-6 小时的延迟)。我为此使用了 jtds 驱动程序。不确定问题出在 deiver 还是我的 kafka 连接上。正如您所指出的,JDBC 连接不可扩展。所以我想尽可能地避免。【参考方案2】:

注意:虽然我对Sybase(SAP) ASE and Repserver 产品有一些经验,但我对SQL Server 的经验很少,对debezium 没有经验,所以fwiw .. .

根据debezium documentation: connectors,不支持Sybase (SAP) ASE

虽然 ASE(MS)SQL Server 有共同的历史,但 2x 产品似乎并没有提供相同的日志读取能力(这并不奇怪,因为 2x 产品在 Sybase Repserver 产品成为可用的);根据debezium 文档:

SQL Server 提供debezium 从中读取的CDC“表”;跳转到SQL Server CDC explanation,看起来日志已被读取(在幕后),并且 DML 操作被转储到这些 CDC“表”中 ASE 有一个未记录的 API 用于读取日志;此 API 将日志条目转换为 Log Transfer Language (LTL) 记录,然后将其传递给 (Sybase/SAP) Repserver(或其他能够模仿 Repserver 的软件)

没有联系debezium 支持团队并请求他们添加对Sybase (SAP) ASE 的支持,(在我看来)您可能需要寻找其他产品。


虽然看看您是否可以模拟SQL Server's CDC 表可能是一个“有趣”的小项目,但这将是一项重大任务,例如,

您会考虑必须向所有感兴趣的 (ASE) 表添加触发器 触发器需要将大部分(全部?)DML 操作复制到新的“CDC”表中 那些“CDC”表上的卷可能会变得非常大(与基础表的大小相比),这... 需要良好的基础架构来管理(和修剪)上述“CDC”表 您需要弄清楚如何模拟SQL Server 提供的用于管理“CDC”表的过程 即使你走到了这一步,你是否可以让debezium 连接到ASE 也是个问题

另一个想法是:推出自己的解决方案......

Sybase(SAP) ASE SDK(在其上构建了ASERepserver 产品)可用于设计一个从Repserver 连接到Kafka 的模块,但这是一个完整的“另一个(冗长)讨论更适合喜欢SDK 编程的人...


至于“其他产品”……谷歌先生在这一点上可能是一个好的开始。

我熟悉的唯一使用(未记录的)API 来读取ASE's 日志并声称与Kafka 交互的产品是Qlik Replicate product。

【讨论】:

以上是关于如何使用 Kafka Connect for Sybase ASE 数据库实现变更数据捕获 (CDC)?的主要内容,如果未能解决你的问题,请参考以下文章

使用JsonConverter的Kafka Connect HDFS Sink for JSON格式

使用 Jmx Exporter for Prometheus 缺少 Kafka Connect 指标

Kafka Connect vs Streams for Sinks [关闭]

在Kafka Connect中,如何连接多个kafka集群?

如何从 Kafka JSON 消息中获取 org.apache.kafka.connect.data.Decimal 值 [重复]

Kafka Connect 如何安装 Connect 插件