将SQL Server数据实时传输到Kafka [英] SQL Server Data to Kafka in real time

查看:28
本文介绍了将SQL Server数据实时传输到Kafka的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想将实时数据从SQL SERVER直接添加到Kafka,我发现有https://debezium.io/docs/connectors/sqlserver/

提供的SQL SERVER连接器

在文档中,它说将为每个表创建一个主题。我正在努力了解体系结构,因为我有500个客户端,这意味着我有500个数据库,每个数据库都有500个表。这是否意味着它将创建250000个主题,或者我是否需要为每个客户端和每个集群/节点创建250000个主题,这取决于数据库中的表数?

这是向Kafka发送SQL数据的最佳方式,还是应该在表上有INSERT/UPDATE/DELETE操作时通过代码将事件发送到Kafka队列?

推荐答案

使用debezium时,您只能使用一个表到一个主题的映射。然而,有一些创造性的方法可以绕过它。

根据描述,您似乎有某种产品具有SQL Server后端,并且有500个表。500个或更多客户端正在使用此产品,每个人都有自己的数据库实例。

您可以为一个客户端创建一个连接器,然后读取所有500个表并将其发布到Kafka。在这一点上,你将有500个卡夫卡主题。通过为每个客户端/数据库实例创建单独的连接器,可以将数据从所有其他数据库实例路由到相同的500个主题。我假设这是一个产品的后端数据库,表名、模式名等都是相同的,debezium连接器将为这些表生成相同的主题名称。如果不是这样,您可以使用topic routing SMT

您可以通过在主题中添加几个元数据列来区分Kafka中的数据。这可以通过添加SMT在连接器中轻松完成。元数据列可以是CLIENT_ID、CLIENT_NAME或其他。

关于您的另一个问题,

这是向Kafka发送SQL数据的最佳方式,还是应该在表上有INSERT/UPDATE/DELETE操作时通过代码将事件发送到Kafka队列?

答案是";视情况而定!";。 如果它是一个简单的事务性应用程序,我会简单地将数据写入数据库,而不担心其他任何事情。

答案还取决于您为什么要向Kafka交付数据。如果您希望将数据/业务事件传递给Kafka以执行一些需要事务完整性和严格的SLA的下游业务处理,那么从应用程序写入数据可能是有意义的。但是,如果您将数据发布到Kafka以供其他人出于分析或任何其他原因使用,则使用K-Connect方法是有意义的。

有一种经过许可的替代方案,Qlik复制,它能够执行非常类似的操作。

这篇关于将SQL Server数据实时传输到Kafka的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆