sql拉链表

1、定义:维护历史状态以及最新数据的一种表(拉链表会增加两个字段,开链时间,闭链时间)

2、使用场景

1、有一些表的数据量很大,比如一张用户表,大约1亿条记录,50个字段,这种表
2.表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的状态等等。
3.需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态。
4.表中的记录变化的比例和频率不是很大,比如,总共有1亿的用户,每天新增和发生变化的有200万左右,变化的比例占的很小。

3、主要优点

维护历史状态:能够记录数据的历史变化,提供数据的完整视图。
优化存储:通过去除不变的记录,减少存储需求,同时允许快速还原历史状态。
处理缓慢变化数据:是处理缓慢变化数据(SCD2)的一种常见方式,适用于需要跟踪数据缓慢变化的应用场景。
然而,拉链表也存在一些挑战和限制,例如需要额外的字段来存储生效日期和失效日期,这可能会增加表结构的复杂性。此外,对于频繁更新的数据,拉链表可能需要更频繁的维护和更新操作。

4、orcal里面拉链表的四种获取数据的方式

4.1.更新删除数据,需要将闭链时间修改成昨天,etl时间修改成今天

4.2.更新新增数据,需要将开链时间修改成昨天,闭链时间修改成‘9999-12-31’,etl时间修改成今天

4.3.更新修改前数据,需要将闭链时间修改成昨天,etl时间修改成今天

4.4.更新修改后数据,需要将开链时间修改成今天,闭链时间修改成‘9999-12-31’,etl时间修改成今天

ps:4.3闭链时间何4.4的开链闭链时间需要形成一个闭合时间

5、hive里面拉链表获取数据的方式

5.1.创建一个临时表,表结构和拉链表保持一致

5.2.从拉链表里将昨天没有变化的数据追加到临时表里(通过id不等于业务表的id)

5.3.删除的数据,将闭链时间修改成昨天,etl时间修改成今天,追加到拉链表里

5.4.新增的数据,增加开链的时间为创建时间,闭链时间为‘9999-12-31’,etl时间修改成今天,追加到拉链表里

5.5.修改前的数据,将闭链时间修改成昨天,etl时间修改成今天,追加到拉链表里

5.6.修改后的数据,将开链时间修改成今天,闭链时间为‘9999-12-31’,etl时间修改成今天,追加到拉链表里

5.7最后将临时表的数据 覆盖原拉链表的数据

相关推荐

  1. Oracle拉链

    2024-07-11 00:46:03       29 阅读
  2. 数据仓库之拉链

    2024-07-11 00:46:03       24 阅读
  3. Hive 拉链详解及实例

    2024-07-11 00:46:03       44 阅读
  4. 拉链的概念设计与实现

    2024-07-11 00:46:03       47 阅读
  5. 缓慢渐变维与拉链

    2024-07-11 00:46:03       28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 00:46:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 00:46:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 00:46:03       58 阅读
  4. Python语言-面向对象

    2024-07-11 00:46:03       69 阅读

热门阅读

  1. SQL的时间格式和文本灵活转换

    2024-07-11 00:46:03       28 阅读
  2. ubuntu22 设置开机直接登录桌面

    2024-07-11 00:46:03       23 阅读
  3. Sqlmap中文使用手册 - Options模块参数使用

    2024-07-11 00:46:03       18 阅读
  4. GIT基本概念以及简单使用方法

    2024-07-11 00:46:03       23 阅读
  5. SQL注入如何判断数据库类型

    2024-07-11 00:46:03       26 阅读
  6. 什么是引用

    2024-07-11 00:46:03       24 阅读
  7. 如何从Git仓库中删除大文件并解决推送错误方案

    2024-07-11 00:46:03       23 阅读
  8. Git删除了文件拉取时失败

    2024-07-11 00:46:03       23 阅读
  9. 学习测试练习题

    2024-07-11 00:46:03       24 阅读
  10. QT log日志

    2024-07-11 00:46:03       29 阅读
  11. Angular页面项目以HTTPS方式启动调试

    2024-07-11 00:46:03       22 阅读
  12. ArduPilot开源飞控之AP_VisualOdom

    2024-07-11 00:46:03       20 阅读
  13. 如何实现跨域

    2024-07-11 00:46:03       19 阅读
  14. centos7yum-mysql-community-server安装流程步骤

    2024-07-11 00:46:03       24 阅读
  15. toFixed 四舍五入问题

    2024-07-11 00:46:03       21 阅读