1. 业务表属性分类
事实表与维度表相结合,可以有效解决海量数据的冗余问题。
1.1. 字典表
字典表,存储的是每个字段的映射关系。
字典表特性:
- 结构简单;
- 数据规模小,数据值有限、可穷举;
- 更新频率低。
1.2. 事实表
- 描述某一事务的活动信息,数据规模大。
- 比如:账单信息表:
- 比如:账单ID、创建时间、金额、商品ID、账单状态等;
- 分类:
- 事务型事实表:一旦发生就不会改变,比如用户日志;
- 周期型事实表:比如待支付订单,在完成支付后,这条数据就会发生变更;
1.3. 维度表
- 描述实时表某一维度的特性信息,数据结构复杂;
- 商品维度表:
- 商品ID、商品名称、商品类型、商品规格、商品单价;
- 用户维度表:
- 用户ID、用户姓名、用户性别、用户年龄、用户电话。
2. 数据同步策略
2.1. 字典表
- 同步方式:全量同步;
- 同步频率:一周一次、一个月一次、一年一次;
2.2. 事实表
- 同步方式:增量更新、增量追加
- 同步频率:结合业务要求制定,实时性、准确性;
注意:事实表会涉及到更新,比如订单的支付状态,需考虑数据一致性、进行更新维护。
2.3. 维度表
- 同步方式:根据数据规模制定,规模大的增量同步,规模小的全量同步;
- 同步频率:实时同步、准实时同步、离线同步;
注意一定要结合业务考虑,比如地震数据虽然很少,但是对实时性要求特别高;
3. 数据同步方式
3.1. 全量同步
- 全量同步,对应的是【批处理】;
- 库对库,或直接对文件拉取;
- 写入目标表前先清空目标表;
- 注意来源表、目标表顺序;
- 正常情况下,来源表、目标表是有读写权限限制的,以防止出现来源表、目标表顺序颠倒问题;
- 拉链表
- TODO
3.2. 增量同步
- 增量同步,对应的是【流式处理】。
增量同步,要求表中一定要有增量字段,以判定数据是否为增量数据。
- 实时同步手段:
- binlog
- cdc
- kafka
- flink
- sparkstreaming
- 准实时同步 / 离线同步手段
- 固定变量:T+1
- 数据偏移量:记录上次同步位置
3.3. 其他信息
- 公共字段:
- 入库时间
- 更新时间
- 业务数据 MD5 值