数据仓库中经常使用到的拉链表是什么?他的使用场景有哪些?

提问者:帅平 问题分类:面试刷题
数据仓库中经常使用到的拉链表是什么?他的使用场景有哪些?
2 个回答
心已打烊
心已打烊
拉链表是一种数据存储和处理的技术方式,可以记录数据的历史信息,记录数据从开始一直到当前所有变化的信息。使用拉链表的原因:
拉链表专门用于解决在数据仓库中数据发生变化如何实现数据存储的问题, 如果直接覆盖历史状态, 会导致无法查询历史状态, 如果将所有数据单独切片存储, 会导致存储大量非更新数据的问题。拉链表的设计是将更新的数据进行状态记录,没有发生更新的数据不进行状态存储,用于存储所有数据在不同时间上的所有状态,通过时间进行标记每个状态的生命周期,查询时,根据需求可以获取指定时间范围状态的数据,默认用9999-12-31等最大值来表示最新状态。
使用场景:
1、有一些表的数据量很大,比如一张用户表,大约10亿条记录,50个字段,这种表,即使使用ORC压缩,单张表的存储也会超过100G,在HDFS使用双备份或者三备份的话就更大一些。
2、表中的部分字段会被update更新操作,如用户联系方式,产品的描述信息,订单的状态等等。
3、需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态。
4、表中的记录变化的比例和频率不是很大,比如,总共有10亿的用户,每天新增和发生变化的有200万左右,变化的比例占的很小。
发布于:1个月前 (02-08) IP属地:四川省
你深入我心
你深入我心
拉链表:鉴于全量表、快照表的缺点,为了在保留所有状态的情况下,有效节省存储空间,引入了拉链表。
1、记录一个事物从开始,一直到当前状态的所有变化的信息;
2、拉链表每次上报的都是历史记录的最终状态,是记录在当前时刻的历史总量;
3、拉链表通常是对账户信息的历史变动进行处理保留的结果;
4、拉链表和增量表的共同点:表结构基本一样。
5、拉链表的封链时间可以是2999,3000,9999等等比较大的年份;拉链表到期时数据要报0;
推荐使用场景:
当数据量较大,表中某些字段有变化,但变化频率不是很高,而业务需求又需要统计这种变化状态,如果每天存储一份全量数据,不仅浪费存储空间,且不便于业务统计;这时,拉链表的作用就体现出来了,既节省空间,又满足需求。
发布于:1个月前 (02-08) IP属地:四川省
我来回答