缓慢渐变维

一、目的

解决历史数据变更是否需要存储的问题

二、为什么有时候需要维护历史变化

  • 原因:由于需求计算的操作,如果我们不去维护历史变更行为,可能会导致分析出现不精确情况
  • 例如:

    假设有两个客户,张三和李四,张三居住在北京,李四住在三亚,这两个人每个人今年都花费100w用于购物。
    统计每个人在各个地区的消费额?张三在北京消费了100w,李四在三亚消费了100w
    但是后来张三从北京迁移到了三亚,如果不去维护这个历史变化,这个时候,我们数据库中只记录最新的三亚的数据,此时再次统计张三在各个地区的消费额的时候,变更为张三在三亚消费了100w,但是明显这个结果是不对的

三、如何维护历史变化

  • scd1:
    • 直接覆盖,不保留、不维护历史版本数据,一半适用于错误数据处理
  • scd2(拉链表):
    • 当数据发送变更的时候,首先将之前的数据设置一个截止时间,表示过期了,然后新增一条新的数据即可,新的记录的起始时间就是上一条记录截止时间,通过像链条一样的方案,将变更数据串联在一起
    • 优点:
      • 利于维护(实现便利性,后续查询便利性)
      • 可以保留更多的历史版本
    • 缺点
      • 存在数据冗余情况
  • scd3:当数据发送变更的时候,首先新增一个新的字段,记录下其更改的信息即可
    • 优点:
      • 尽最大可能性,减少数据冗余发生
    • 缺点
      • 不利于维护操作
      • 不能保存更多历史版本

你可能感兴趣的:(大数据,big,data,spark,hdfs)