增量加载方案

一、增量加载的分类
  1. 更新、插入:Overwrite
  2. 删除、更新、插入:Delete and Overwrite
二、删除情况下的更新策略
  1. 在数据块中包含需要删除的数据。
  2. 指定删除条件,独立处理,需要考虑参数如何计算、存储。
    2.1. 比较符:>= > = < <= in like 等。
    2.2 值类型:数组、基础类型。
三、一些心得和经验

最早的时候,初步接触增量加载是通过SSIS接触的,使用过一个方案,流程如下:

  1. 将本次执行时间定义为时间戳,从数据库读入上次时间戳
  2. 加载上次时间戳到本次时间戳的数据,使用merge into语句来处理insert、update、delete
  3. 本次时间戳改为上次时间戳,存入数据库

这个方案其实是存在问题的,主要有两种情况:

  1. 异常管控比较低级,出现问题只能自己手动去处理失败的ETL,无法保证异常情况下的数据一致性,异常发生下一次执行数据不出问题才是重要的。
  2. ETL对生产的影响。

一个好的增量方案,应该能够做数据处理时保证不影响生产,且能有异常发生下较好的数据一致性保证策略,这才是重要的事情。

  1. 尽量使用备表替换的策略。
  2. 增量尽量不要使用数据库存储的时间戳,而要依靠入库的数据进行开始节点判断的策略。
  3. 在前两者的基础上对最终进行生产替换的异常做详细分类,并做相应的处理方案。
  4. 所有的目标都是数据一致性、增量加载方法化。

你可能感兴趣的:(增量加载方案)