在数据仓库的数据模型设计过程中,经常会遇到这样的需求:
1.1 数据量比较大;
1.2 表中的部分字段会被更新,比如订单余额;
1.3 需要查看某一个时间点或者时间段的历史快照信息,比如查看某一个订单在某个时间点的订单余额
1.4 变化的比例和频率不是很大,比如,总共有1000万的会员,每天新增和发生变化的有10万左右;
如果表每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极大的浪费.如果保存所有数据的一份最新数据,又不能解决历史数据的查询问题.
综上所述: 引入"拉链表",既能满足反应数据的历史状态,又可以最大程度的节省存储;
创建订单历史信息表,每天保存全量的数据,如下所示:
--订单历史信息表
drop table t_order_history;
create table t_order_history(
day_id varchar2(10) ,
order_id varchar2(10),
balance int,
create_time varchar2(10),
modify_time varchar2(10)
);
comment on table t_order_history is '订单历史信息表';
comment on column t_order_history.day_id is '日期ID';
comment on column t_order_history.order_id is '订单ID';
comment on column t_order_history.balance is '订单余额';
comment on column t_order_history.create_time is '创建时间';
comment on column t_order_history.modify_time is '修改时间';
--插入数据
insert into t_order_his

本文介绍了数据仓库中为解决数据更新和历史快照查询问题而引入的拉链表概念。通过实例展示了如何创建订单历史信息表和订单拉链表,减少存储浪费并确保历史状态查询。最后,通过数据验证证明了拉链表的有效性和正确性。
最低0.47元/天 解锁文章
595

被折叠的 条评论
为什么被折叠?



