如何使用 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
(在其上构建了ASE
和Repserver
产品)可用于设计一个从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 值 [重复]