基于日志的集成
基于日志的集成在集成不同的数据系统时越来越流行。通过捕获数据库中的更改并不断地将相同的更改应用于派生数据系统,只要保留更改数据流的消息顺序,派生系统中的数据就与数据库中的数据匹配。派生数据系统是更改数据流的消费者,云指,如下图所示。
实际中的派生数据系统可能是索引、缓存、分析系统等。
为了构建基于日志的集成,我们需要两个关键工具:
用于捕获数据库更改的CDC工具。在本教程中,我们将探讨如何在SAP数据智能中使用基于日志的方法实现数据库和各种其他派生数据系统之间的数据集成。
更改数据捕获(CDC)是观察写入的所有数据更改的过程一个数据库,并以一种可以复制到其他系统的形式提取它们。
SAP Data Intelligence 3.0引入了table Replicator操作符,它允许捕获不同数据库的增量更改。Table Replicator operator使用基于触发器的复制方法有效地实现了CDC。它提供每个分区内消息的总顺序。SAP Data Intelligence具有内置的Kafka操作符,允许我们使用Kafka群集。
接下来,我们将了解如何利用这两个操作符来实现具体的集成场景。
准备
我们准备一个Hana数据库表,其模式如下图所示。
表格内容如下图所示。
为简单起见,我们仅使用人为数据进行演示。表格最初包含6条记录。
场景涉及两个任务。
我们将为这两个任务创建单独的图形。
初始加载
下图显示了初始加载图形:
表格复制器操作员配置如下图所示。
重要配置参数用红色标记框
注意deltaGrapMode设置为手动。这可以确保图形在初始加载完成后立即完成其执行。否则,大数据如何处理,图形将无限期运行以跟踪进一步的增量更改。
现在运行图形,并在图形运行完成后验证目标文件是否已生成。
打开文件并验证表内容是否已成功复制。
请注意,增量记录提供了插入(I)、更新(U)、删除(D)等行类型,在图像(B)、未知(X)之前,依此类推。在初始加载的情况下,行类型是I,这意味着插入记录。消息中的行类型命名为DI_OPERATION_type.
我们的初始加载任务已经成功完成。接下来,大数据分析培训,让我们转到增量提取任务。
增量提取
下图演示了增量提取图:
让我们对数据流序列进行概述。
常量生成器操作符(1)将触发表复制器开始CDC增量跟踪。tablereplicator操作符(2)将把数据库更改复制到目标文件中,就像初始加载时发生的那样。JS操作符(3)将从目标文件路径中删除"/vrep"前缀。前缀是由Table Replicator操作符添加的,如果我们不删除它,它将阻止下游Read File操作符查找该文件。Read File操作符(4)将读取目标文件内容并将其发送给下游JS操作符。JS操作符(5)将解析接收到的文件内容,并将解析后的消息发送到Kafka主题中。Kafka生产者操作符(6)将接收传入的消息并将它们发布到Kafka集群上的指定主题中。Kafka使用者(7,8)从Kafka集群上的主题接收消息。连接的Wiretap操作符(9,10)作为派生数据系统使用并应用接收到的消息。
现在让我们看看一些操作符的配置。
其配置如下图所示。
注意deltaGrapMode设置为"轮询间隔",maxPollingInterval设置为"60"。这确保了图形将无限期地运行以跟踪增量更改,并且Table Replicator将在一分钟内轮询增量更改。
它只是从包含目标文件路径的接收消息正文中删除"/vrep"前缀。
其脚本代码如下所示。
它逐行解析接收到的文件内容。每一行代表一条消息,并将立即发送给下游操作员。
其配置如下图所示。
其配置如下图所示。
请注意,两个用户的"组ID"配置不同。这一点很重要,大数据是啥,因为我们希望实现扇出消息传递。也就是说,一个Kafka分区被多个使用者使用,每个使用者都保持自己的消息偏移量。
现在我们可以通过单击run按钮开始运行图形。接下来我们将开始通过插入、更新和删除操作写入源表,并观察更改将如何复制到派生系统中。
让我们通过运行下面的SQL语句向源表中插入一条记录。
转到数据智能本地文件系统工作空间,检查并验证目标文件是否已生成,如下图所示。
打开该文件并验证插入记录的消息是否已成功复制到目标文件,如下图所示。
最后,我们打开change consumer wiretap UI以检查其输出,如下图所示。
让我们通过运行下面的SQL语句来更新源表中的一条记录。
检查并验证目标文件是否已生成,什么是云服务器,如下图所示。
验证更新记录的消息是否已成功复制到目标文件,如下图所示。
请注意,对于Update语句,其更改由两条消息组成。它们的行类型分别在Image(B)和Update(U)之前。
更改用户wiretap UI输出如下图所示。
让我们通过运行下面的SQL语句删除源表中的一条记录。
检查并验证目标文件是否已生成,如下图所示。
验证已删除记录的更改消息是否已成功复制到目标文件,如下图所示。
更改使用者wiretap UI输出如下图所示。
摘要