一、全量同步策略
- 解释:每日全量,就是每天都将业务数据库中的全部数据同步一份到数据仓库,是保证两侧数据同步的最简单的方式
- 适用:表数据量不大,且每天即会有新数据插入,也会有旧的数据修改
- 例如:编码字典表、品牌表、商品三级分类表、商品二级分类表、商品一级分类表、优惠规则表、活动表、活动参与商品表、加购表、商品收藏表、优惠券表、SKU商品表、SPU商品表
二、增量同步策略
- 解释:每日增量,就是每天只将业务数据中的新增及变化的数据同步到数据仓库中,
- 适用:表数据量大,且每天只会有新的数据插入的场景,
- 特点:采用每日增量的表,通常会在首日先进行一个全量同步。
- 例如:退单表、订单状态表、支付流水表、订单详情表、活动与订单关联表、商品评论表
三、数据同步策略的选择
两种策略都能保证数据仓库和业务数据库的数据同步,那应该选择哪个呢?
同步策略 | 优点 | 缺点 |
全量同步 | 逻辑简单 | 某些情况下效率低下 |
增量同步 | 效率高,无需同步和存储重复的数据 | 逻辑复杂,需要将每日的新增及变化数据同原来的数据进行整合,才能使用 |
结论:
若业务表数据量比较大,且每天的数据变化比例还比较低,这时应采用增量同步,否则采用全量同步。
四、同步工具概述
1.种类繁多的数据同步工具中,大致可以分为两大类:
① 基于Select查询的离线、批量同步工具,代表:DataX、Sqoop;
② 基于数据库数据变更日志(mysql的binlog)的实时流式同步工具,代表:Maxwell、Canal;
2.上述同步工具的全量或增量同步适用如下:
同步类型 | DataX、Sqoop | Maxwell、Canal |
全量同步 | Ö | |
增量同步 | Ö | Ö |
3.同步工具之间对增量同步不同方案的对比
对比 增量同步方案 | DataX、Sqoop | Maxwell、Canal |
对数据库的要求 | 基于查询,需要数据中存在判别数据产生和修改的时间标记,如:create_time、update_time字段。 | 要求数据库记录变更操作,如:Mysql开启binlog |
中间状态 | 离线批量同步,若数据在一天中多次修改,该方案只会保留最后一个状态,中间状态如法获取。 | 由于是实时获取所有的数据变更操作,所以可以获取变更数据的所有中间状态。 |
推荐:全量同步采用DataX,增量同步采用Maxwell