什么是拉链表_女表拉链的

什么是拉链表_女表拉链的原文地址:https://blog.csdn.net/xiepeifeng/article/details/42431027在数据仓库的数据模型设计过程中,经常会遇到这样的需求:1.数据量比较大;2.表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等;3.需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态,  比如,查看某一…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

原文地址:https://blog.csdn.net/xiepeifeng/article/details/42431027

在数据仓库的数据模型设计过程中,经常会遇到这样的需求:

1. 数据量比较大;
2. 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等;
3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态,
   比如,查看某一个用户在过去某一段时间内,更新过几次等等;
4. 变化的比例和频率不是很大,比如,总共有1000万的会员,每天新增和发生变化的有10万左右;
5. 如果对这边表每天都保留一份全量,那么每次全量中会保存很多不变的信息,对存储是极大的浪费;

拉链历史表,既能满足反应数据的历史状态,又可以最大程度的节省存储;

举个简单例子,比如有一张订单表,6月20号有3条记录:

什么是拉链表_女表拉链的

到6月21日,表中有5条记录:

什么是拉链表_女表拉链的

到6月22日,表中有6条记录:

什么是拉链表_女表拉链的

数据仓库中对该表的保留方法:

 

1. 只保留一份全量,则数据和6月22日的记录一样,如果需要查看6月21日订单001的状态,则无法满足;

2. 每天都保留一份全量,则数据仓库中的该表共有14条记录,但好多记录都是重复保存,没有任务变化,如订单002,004,数据量大了,会造成很大的存储浪费;

 

如果在数据仓库中设计成历史拉链表保存该表,则会有下面这样一张表:什么是拉链表_女表拉链的

说明:

 

1. dw_begin_date表示该条记录的生命周期开始时间,dw_end_date表示该条记录的生命周期结束时间;

2. dw_end_date = ‘9999-12-31’表示该条记录目前处于有效状态;

3. 如果查询当前所有有效的记录,则select * from order_his where dw_end_date = ‘9999-12-31’

4. 如果查询2012-06-21的历史快照,则select * from order_his where dw_begin_date <= ‘2012-06-21’ and end_date >= ‘2012-06-21’,这条语句会查询到以下记录:什么是拉链表_女表拉链的

和源表在6月21日的记录完全一致:

什么是拉链表_女表拉链的

可以看出,这样的历史拉链表,既能满足对历史数据的需求,又能很大程度的节省存储资源;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/181314.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【7万字干货】2021Java实习必看面试两百题解析「建议收藏」

    JavaSE基础语法Q1:floatnumber=3.4;有没有问题?为什么?答:有问题,因为3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于向下转型,可能会造成精度损失,所以必须进行强制类型转换,正确的写法是floatnumber=(float)3.4;/floatnumber=3.4F;。Q2:字符串拼接的方式以及效率?答:①使用+直接拼接,S…

  • 【docker安装RabbitMQ详细步骤】

    【docker安装RabbitMQ详细步骤】docker安装RabbitMQ详细步骤1.启动rabbitmqcd/opt/rabbitmqmkdirdata#拉取镜像dockerpullrabbitmq#查看镜像dockerimages#拉取镜像到本地仓库,这里是直接安装最新的,#如果需要安装其他版本在rabbitmq后面跟上版本号即可#dockerpullrabbitmq#启动rabbitMqdockerrun-d\-v/opt/rabbitmq/data:/var/lib/rabbit

  • mysql将yyyy转换_Mysql时间格式转换

    mysql将yyyy转换_Mysql时间格式转换对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6日期和时间类型。这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:mysql>SELECTsomethingFROMtableWHERETO_DAYS(NOW())-TO_DAYS(date_col)<=30;DAYOFWEEK(date)返回…

  • 条件运算符嵌套_条件运算符(?:)的运算过程是什么

    条件运算符嵌套_条件运算符(?:)的运算过程是什么条件运算符(?:)都知道就不细说了,最简单也是最常用的例子:n=(a>b)?a:b;    在C++primerplus第六版180页看到了一个例子,如下所示:    constcharx[2][20]={“Jason”,”atyourservices\n”}    constchar*y=”Quillstone”;

  • 小米5 MIUI 10系统完全Root教程 (Root思想通用所有机型)

    小米5 MIUI 10系统完全Root教程 (Root思想通用所有机型)WrittenbyQingXiaonan2018-8-251.摘要  虽然手机在完全root后存在一定风险,但是可以从事一些具有探索性的工作如修改手机游戏、修改APP权限要求、编写按键脚本等。此外,完全root非常适合那些拥有两个手机的人。这篇帖子以小米5最新MIUI10开发版系统完全root过程为例,介绍了一种通用的小米机型完全Root办法。2.重要概念…

  • Codeforces 235B Let&#39;s Play Osu! 概率dp(水

    Codeforces 235B Let&#39;s Play Osu! 概率dp(水

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号