2.1离线数仓—业务数据数据同步规划

本文详细介绍了业务数据在离线数仓中的同步规划,包括全量同步和增量同步策略。对于数据量大但变化比例低的表,采用增量同步;反之则采用全量同步。此外,还提到了数据同步工具如DataX和Maxwell的使用场景。

前言

要进行业务数据采集,就要确定采用什么样的同步方式,因为业务数据中有些变化的快,有些变化的慢,有些表数据量大,有些表数据量小,针对不同类型的表,要采用不同的数据同步策略。

一、业务数据同步概述

1.数据同步策略概述

业务数据在离线数仓项目中是一个非常重要的数据来源,我们需要每天定时从业务数据库中抽取数据,然后将数据传输到数据仓库中,才能对这些数据进行统计分析。
因为离线数仓通常计算周期为一天,所以数据同步周期按一天进行,每天同步一次即可。

2.数据同步策略

数据同步策略有全量同步增量同步

1)全量同步

全量同步,就是每天都将业务数据库中的全部数据同步一份到数据仓库,这是保证两侧数据同步的最简单的方式。在拉取数据的时候,拉取最新一天的数据即可获得所有的数据,使用起来非常方便。
在这里插入图片描述

2)增量同步

增量同步,就是每天只将业务数据中的新增及变化数据同步到数据仓库。采用每日增量同步的表,通常需要在首日先进行一次全量同步(因为业务数据库通常会留有一定的数据)。
增量同步的优点是每天只需要拉去很少量的数据,缺点是在使用数据时非常麻烦,需要多表join,在数据冲突时要获取最新日期里的数据。
在这里插入图片描述

3.数据同步策略选择

两种同步策略对比:

同步策略优点缺点适用场景
全量同步逻辑简单在某些情况下效率较低。例如某张表数据量较大,但是每天数据的变化比例很低,若对其采用每日全量同步,则会重复同步和存储大量相同的数据。适用于表的数据量不大,表中数据变化频率较高的情况
增量同步效率高,无需同步和存储重复数据逻辑复杂,需要将每日的新增及变化数据同原来的数据进行整合,才能使用适用于表中数据量较大,表中数据变化频率较低,或者是全是新增数据

综上所述,若业务表数据量比较大,且每天数据变化的比例比较低,这时应采用增量同步,否则可采用全量同步。

4.各表同步策略规划

针对每张表的特点,确定了各表的同步策略:
在这里插入图片描述
从上图看,全量表中的表基本上数据量都不大。例如商品表,就算有20w条数据,每年的变化也都很少,所以放在全量表。
增量表中的表数据量基本上都很大,或者是新增数据较多。至于用户表,出于希望用户表中用户数量多的目的,将这张表放在了增量表中。
而cart_info比较特殊,需要同时进行全量同步和增量同步,这是由于后续数仓建模的需要,在后面再进行说明。

5.数据同步工具概述

数据同步工具种类繁多,大致可分为两类,一类是以DataX、Sqoop为代表的基于Select查询的离线、批量同步工具,另一类是以Maxwell、Canal为代表的基于数据库数据变更日志(例如MySQL的binlog,其会实时记录所有的insert、update以及delete操作)的实时流式同步工具
全量同步通常使用DataX、Sqoop等基于查询的离线同步工具。而增量同步既可以使用DataX、Sqoop等工具(暂时没用过DataX做增量同步),也可使用Maxwell、Canal等工具,下面对增量同步不同方案进行简要对比。

增量同步方案DataX/SqoopMaxwell/canal
对数据库的要求原理是基于查询,故若想通过select查询获取新增及变化数据,就要求数据表中存在create_time、update_time等字段,然后根据这些字段获取变更数据。要求数据库记录变更操作,例如MySQL需开启binlog。
数据的中间状态由于是离线批量同步,故若一条数据在一天中变化多次,该方案只能获取最后一个状态,中间状态无法获取。由于是实时获取所有的数据变更操作,所以可以获取变更数据的所有中间状态。

根据不同工具的特点,确定本项目全量同步采用DataX,增量同步采用Maxwell。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值