实践案例 | 异构系统间千万级水平分表数据高效同步

小编推荐
由于业务的广泛性和多样性,大型企业或多业态企业往往有着多个业务系统,这就必然涉及到不同系统间的数据集成。那么,对于数据量千万级别的情况,应该如何高效同步呢?
今天这篇“异构系统间大数据量水平分表数据高效同步”为你答疑解惑。
撰稿人:金蝶伙伴—张朝天。
1 业务背景
在某医药零售项目中,客户需要即时将库存余额表8374万+条数据下发到第三方系统SAP-HANA数据库中。苍穹与HANA数据同步采取T+1模式,数据初始化时进行全量同步,初始化数据量为2433万+;后续每天同步增量(更新和新增)数据332万+。与此同时,项目实施时对“即时库存余额表”进行了水平分表,分片策略为“映射策略”。

表单及分片策略详情
此需求的初步思路是:数据集成方案实现数据同步,数据源选择余额表实体。但发现这样不能满足千万级别水平分表数据与HANA高效同步需求。

即时库存余额表的数据量

业务数据集成需求示例
2 解决方案
为了更好地满足上述需求,我们进行了头脑风暴并实验了多个可行方案,下面是比较典型的三个方案,其中方案三是被认为最优的。
2.1 方案一
使用数据集成方案,数据源使用结构方式,具体分为以下四步:
第一步:使用数据结构方式引入数据源;
第二步:从“即时库存余额表”中获取来源数据,使用query微服务对数据进行处理;
第三步:对数据与目标字段进行映射;
第四步:将字段映射好的数据,在目标数据处理进行数据表UPSERT操作。

方案一集成方案示例
总结:该方案虽然可以实现客户需求,但是不能处理千万级别数据,方案运行过程中有宕机的风险,且下发数据时间较长。使用苍穹的微服务查询会按照条件检索查询千万条数据,当大数据量查询时,数据查询可能会失败。
2.2 方案二
使用集成云平台支持的苍穹分表KDB连接工厂,然后用数据源用实体数据表或视图,具体分为以下五步:
第一步:创建KDB连接类型的连接配置,并创建对应的KDB数据源;
第二步:在KDB数据源下创建对应即时库存余额表的数据表/视图(集成对象);
第三步:在数据集成方案数据源中引入KDB数据源下的集成对象;
第四步:对数据与目标字段进行映射;
第五步:映射好数据后,对目标数据进行数据表UPSERT操作。
总结:支持苍穹分表的KDB连接工厂,可以直接对分表后的数据表进行直连库取数。相比于实体取数,极大降低数据获取时间。由于是对表层级的操作,能在启动方案进行数据分批处理。
缺点:如果需求是对相同主键的字段进行数据计算或者是逻辑处理,对于分片的表,平台ORM引擎不支持,并且在创建视图时,也不支持group by操作。
2.3 方案三
此方案结合了方案一微服务查询单批数据处理模式和方案二引入支持苍穹分表的KDB连接工厂,同时再加上一个服务流程进行整体数据分批,完美地解决了千万级水平分表数据同步需求。具体分为以下四步:
第一步:创建服务流程,查询出“
实践案例 | 异构系统间千万级水平分表数据高效同步
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



