Hana 到 Starrocks 数据同步
简述
SAP HANA 是由 SAP 开发的一款内存列式数据库, 具有预测分析、空间数据处理、文本分析、文本搜索、流分析、图形数据处理等高级分析功能。
HANA 内存列式数据库特性,即启动后可以把所有数据载入内存,相比传统基于硬盘的数据库,性能提升10~10,000倍。
HANA 一般内置在 SAP ERP 系统中提供服务,在制造业应用广泛。
现如今企业尝试建立统一数据分析平台,SAP HANA 保存了ERP相关数据,如何实时同步 HANA 数据到数据平台成为困扰企业的一个难题。
CloudCanal 最新版本已支持 HANA 作为源端迁移同步数据到 StarRocks 来构建实时数仓, 本文简要介绍使用 CloudCanal 快速构建一个 HANA 到 StarRocks 数据迁移同步任务。
技术要点
数据同步整体流程
CloudCanal 实现 HANA 增量数据同步主要使用其触发器捕获变更事件,整体流程如下:

- 安装触发器,通过触发器捕获增量变更数据
- 记录位点,记录增量数据数据同步的起点
- 执行全量数据迁移
- 执行增量数据同步
数据捕获触发器
触发器是一种自动触发执行的存储过程,它可以在数据变更前执行也可以在数据变更后执行,因为本质也是存储过程,所以存储过程支持的操作触发器均支持。
不同数据库对触发器的支持程度不同,HANA 的触发器支持监听 I(新增)/U(更新)/D(删除) 三种事件,因此数据的所有变更都可以通过触发器捕获。
安装触发器的方式与创建存储过程类似,即通过执行 SQL 创建触发器。
通过触发器实现增量数据同步,需要触发器捕获数据的I/U/D变更事件并写入增量 CDC 数据表,数据的变更事件最终都会写到增量 CDC 数据表,执行流程如下:

其他 HANA 同步方案
目前支持同步 HANA 数据的产品还有 Informatica、Qlik 等,实现方案也是通过触发器。
因为 HANA 的触发器不能监听 DDL 变更,因此 CloudCanal 与 Informatica、Qlik 一样,都不支持DDL同步。
