ETL

ETL方法论:数据读取

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 值

4. 数据读取技术

4.1. ODBC

4.2. JDBC