您的位置:首页 > 汽车 > 时评 > 360免费wifi官网_数字营销是什么专业_怎么在网上做广告宣传_地推接单正规平台

360免费wifi官网_数字营销是什么专业_怎么在网上做广告宣传_地推接单正规平台

2024/12/22 17:56:55 来源:https://blog.csdn.net/wankaimingzj/article/details/143230909  浏览:    关键词:360免费wifi官网_数字营销是什么专业_怎么在网上做广告宣传_地推接单正规平台
360免费wifi官网_数字营销是什么专业_怎么在网上做广告宣传_地推接单正规平台

简述

SAP Hana 与 PostgreSQL 已成为许多企业常用的两款重要数据库,实现这两者之间高效稳定的数据传输也是许多企业的诉求之一。本文将介绍如何使用国产数据迁移同步工具 CloudCanal 构建一条 Hana 到 PostgreSQL 的数据同步链路。

技术点

表级别 CDC 表

CloudCanal 在实现 Hana 源端增量同步时,最初采用的是单 CDC 表的模式,即所有订阅表的增量数据(插入、更新、删除)通过触发器统一写入同一张 CDC 表。这样设计的初衷是简化架构和实现方式,但是同时也带来了一些问题。

  • 触发器执行效率低:采用单个 CDC 表时,我们将订阅表的字段值拼接成 JSON 字符串。虽然这种方式统一,但增加了触发器的复杂性。当字段数量超过 300 个时,触发器效率显著下降,影响同步性能。

  • 增量数据积压:所有订阅表的变更数据集中写入单个 CDC 表,当 A 表增量数据较多而 B 表较少时,混合写入会导致无法及时处理 B 表数据,造成 B 表数据积压,影响同步及时性。

后续我们对于单 CDC 表模式进行了优化。本次优化实现了表级别的 CDC 表设计,每张源表都对应一张 CDC 表,CDC 表的结构仅在原表结构的基础上增加了几个位点字段,用于增量同步。

原表

CREATE COLUMN TABLE "SYSTEM"."TEST" ("TEST1" INTEGER NOT NULL ,"TEST2" INTEGER NOT NULL ,"TEST3" INTEGER,CONSTRAINT "TEST_KEY" PRIMARY KEY ("TEST1", "TEST2")
)

CDC 表

CREATE COLUMN TABLE "SYSTEM"."SYSTEM_TEST_CDC_TABLE" ("TEST1" INTEGER,"TEST2" INTEGER,"TEST3" INTEGER,"__$DATA_ID" BIGINT NOT NULL ,"__$TRIGGER_ID" INTEGER NOT NULL ,"__$TRANSACTION_ID" BIGINT NOT NULL ,"__$CREATE_TIME" TIMESTAMP,"__$OPERATION" INTEGER NOT NULL 
);
-- other index

触发器 (INSERT)

CREATE TRIGGER "SYSTEM"."CLOUD_CANAL_ON_I_TEST_TRIGGER_TEST" AFTER INSERT ON "SYSTEM"."TEST" REFERENCING NEW ROW NEW FOR EACH ROW 
BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END; IF 1=1 THEN INSERT INTO "SYSTEM"."SYSTEM_TEST_CDC_TABLE" ("__$DATA_ID", "__$TRIGGER_ID", "__$TRANSACTION_ID", "__$CREATE_TIME", "__$OPERATION", "TEST1", "TEST2", "TEST3") VALUES( "SYSTEM"."CC_TRIGGER_SEQ".NEXTVAL, 433, CURRENT_UPDATE_TRANSACTION(), CURRENT_UTCTIMESTAMP, 2, :NEW."TEST1" ,:NEW."TEST2" ,:NEW."TEST3"  ); END IF; 
END;

采用这种方式有以下几个好处:

  • 表级别 CDC 表更加独立,方便进行多次订阅。
  • 触发器只需要执行 INSERT 语句,因此对于字段较多的表也能够快速执行。
  • 扫描消费 CDC 数据时,不需要做额外的处理,消费更简单。

操作示例

步骤 1: 安装 CloudCanal

请参考 全新安装 (Docker Linux/MacOS),下载安装 CloudCanal 私有部署版本。

步骤 2: 添加数据源

登录 CloudCanal 控制台,点击 数据源管理 > 新增数据源

步骤 3: 创建任务

  1. 点击 同步任务 > 创建任务

  2. 配置源和目标数据源。
    a. 选择源和目标实例,并分别点击 测试连接
    b. 在目标实例下方 高级配置 中选择源端 CDC 表模式:单 CDC 表 / 表级 CDC 表

  3. 选择 数据同步 并勾选 全量初始化

  4. 选择需要同步的表。

  5. 选择表对应的列。如果需要选择同步的列,可先行在对端创建好表结构。

  6. 点击 确认创建

    任务创建过程将会进行一系列操作,点击 同步设置 > 异步任务,找到任务的创建记录并点击 详情 即可查看。

    Hana 源端的任务创建会有以下几个步骤:

    • 结构迁移
    • 初始化 Hana CDC 表以及对应触发器
    • 分配任务执行机器
    • 创建任务状态机
    • 完成任务创建
  7. 等待任务自动流转。

    当任务创建完成,CloudCanal 会自动进行任务流转,其中的步骤包括:

    • 结构迁移: Hana 源端的表定义将会迁移到对端,如果同名表在对端已经存在,则会忽略。
    • 全量数据迁移: 已存在的存量数据将会完整迁移到对端。
    • 增量数据同步: 增量数据将会持续地同步到对端数据库,并且保持实时(秒级别延迟)。

总结

本文介绍了如何使用 CloudCanal 进行 Hana 到 PostgreSQL 数据迁移同步,操作简便的同时带来高效的数据同步体验,大大加快了企业的数据流通与数据平台构建。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com