通俗易懂:什么是拉链表

这篇具有很好参考价值的文章主要介绍了通俗易懂:什么是拉链表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

拉链表是数据仓库中一种重要的模型,相信很多数据工作者都接触过,面试也是经常考察的点。

但是很多人第一次接触“拉链表”这个词,难免会产生疑惑:拉链表是什么?

什么是拉链表

按照度娘的解释:“拉链表是一种针对数据仓库设计中表存储数据的方式而定义的数据模型,它有点类似于快照,用于维护历史状态及最新状态数据。”

这么看还是有点难理解,既然如此,那我们先不管,先来看以下场景:

  • 假如有张表如表1-1所示,每天的数据量大概有50w
  • 表中有些字段会被 update,如表1-2,且每天更新的数据量很小,大约只有5k
  • 有些报表需要查看历史某个日期的数据
  • 存储空间有限,需要尽可能的节约存储空间

问:你会怎么将其装入数仓中?

表1-1:

id name phone
1 Agnes 123
2 Max 456
3 Tony 789

表1-2:

id name phone
1 Agnes 123
2 Max 456
3 Tony 321

每天追加一份全量数据

这种方式比较简单粗暴,如表1-3,不仅操作方便,还可以反映历史变化。但是弊端也很明显:存在数据冗余、浪费存储空间。

每天50w,一个月就有1500w了,时间越长,数据量越多,然而实际变化的数据每天只有5k,剩下的数据几乎都是重复存储的,极大浪费存储空间。

表1-3

id name phone
1 Agnes 123
2 Max 456
3 Tony 789
1 Agnes 123
2 Max 456
3 Tony 321

直接覆盖原来的数据

这种方式也很简单,直接全表 truncate 再 insert,虽然空间节省了,但缺点也很明显,会把历史数据覆盖掉,没办法反映历史数据的变化。

使用拉链表

在原表结构的基础上,加两个字段:start_date 和 end_date,第一次抽取数据的时候,将 start_date 初始化为抽取日期,end_date 初始化为永久日期,如表1-4所示

表1-4:

id name phone start_date end_date
1 Agnes 123 20230328 99999999
2 Max 456 20230328 99999999
3 Tony 789 20230328 99999999

之后的每一次抽取,则需要对比当日数据以及历史数据,将有变化的历史数据的 end_date 改成当日抽取日期;

将新抽取的有变化的数据按照初始化的方式设置 start_date 和 end_date。如表1-5所示

表1-5:

id name phone start_date end_date
1 Agnes 123 20230328 99999999
2 Max 456 20230328 99999999
3 Tony 789 20230328 20230329
3 Tony 321 20230329 99999999

这种数据模型就是拉链表,它既能反映历史变化,又能节省空间,岂不美哉?

如何实现拉链表

既然理解了什么是拉链表,那么应该如何实现呢?

方式一

(1)获取当日数据;

(2)比较当日数据及历史数据,找出新增和变化的数据,存到临时表,并将开始日期置为当前日期,结束日期置为最大日期;

(3)将历史数据表中的变化数据的结束日期更新为当前日期,即闭链;

(4)将临时表的新增和变化数据插入历史数据表中,即开链。

方式二

(1)获取当日数据;

(2)比较当日数据和昨日数据,找出新增数据和变化后数据;

(3)比较昨日数据和当日数据,找出删除数据和变化前数据;

(4)删除历史数据表中的删除数据和变化前数据;

(5)将新增数据和变化后数据插入历史数据表中,把开始日期置为当前日期,结束日期置为最大日期;

(6)将删除数据和变化前数据插入历史数据表中,把结束日期置为当前日期。

方式一比较简洁;在数据量比较大的情况下,方式二效率比较高,因为用删除插入的操作替代更新的操作,当然,这是对于传统数据库而言,具体的方式应根据实际数据量和数据库来制定。

小结

本文用一个案例简单介绍了拉链表的含义以及实现拉链表的方式,如果有什么错误,欢迎大家指正;如果对大家有帮助,希望大家能给个赞给予肯定支持,谢谢。

持续关注不迷路,转载请注明出处:大数据的奇妙冒险文章来源地址https://www.toymoban.com/news/detail-478558.html

到了这里,关于通俗易懂:什么是拉链表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 三、数据仓库实践-拉链表设计

         拉链表,学名叫缓慢变化维(Slowly Changing Dimensions),简称渐变维(SCD),俗称拉链表,是为了记录段的历史变化而设计出来的一种数据存储模型,常见于维度表设计,在数据仓库相关的面试中,也经常有被问到。但是在工程实践中,拉链表真是太麻烦了,而且是

    2024年02月05日
    浏览(43)
  • 什么是poe交换机?通俗易懂的介绍

    交换机端口支持输出功率达15.4W,符合IEEE802.3af标准,通过网线供电的方式为标准的POE终端设备供电,免去额外的电源布线。经调研研华推出的符合IEEE802.3aT 标准的POE交换机,端口输出功率可以达到25-30W .通俗的说 ,POE交换机就是支持网线供电的交换机,其不但可以实现普通交

    2024年02月06日
    浏览(49)
  • 数据仓库保存历史数据方法之拉链表

    数据仓库是一个面向主题的、集成的、相对稳定的、反应历史变化的数据集合,用于支持管理决策。 面向主题:传统的数据库是面向事务处理的,而数据仓库是面向某一领域而组织的数据集合,主题是指用户关心的某一联系紧密的集合。 集成:数据仓库中数据来源于各个离

    2024年03月13日
    浏览(55)
  • Nginx到底能干嘛?!Nginx是做什么用的?通俗易懂,前端必看!

            Nginx是一个 轻量级/高性能的反向代理Web服务器,它是由C语言写的,所以速度非常快、性能非常优秀。它的主要功能就是反向代理、负载均衡、配置SSL证书、防盗链、解决跨域问题、缓存、限流、动静资源分离等等。         上面介绍了Nginx是一台Web服务器,实际

    2023年04月11日
    浏览(42)
  • 漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现

    本文将会谈一谈在数据仓库中拉链表相关的内容,包括它的原理、设计、以及在我们大数据场景下的实现方式。 全文由下面几个部分组成: 先分享一下拉链表的用途、什么是拉链表。 通过一些小的使用场景来对拉链表做近一步的阐释,以及拉链表和常用的切片表的区别。

    2024年04月12日
    浏览(37)
  • 详解数据仓库之拉链表(原理、设计以及在Hive中的实现)

    最近发现一本好书,读完感觉讲的非常好,首先安利给大家,国内第一本系统讲解数据血缘的书!点赞!近几天也会安排朋友圈点赞赠书活动(ง•̀_•́)ง 0x00 前言 本文将会谈一谈在数据仓库中拉链表相关的内容,包括它的原理、设计、以及在我们大数据场景下的实现方式

    2024年02月05日
    浏览(54)
  • 数据结构:Mysql索引原理(通俗易懂)

    在工作中如果经常写业务代码,说白了就是CURD,比如做一个查询功能,我们会将前端参数传递到后端后拼接SQL查询数据,那为了提高用户体验,查询速度肯定是越快越好,这就要求我们能够对SQL调优,让查询速度更快。 由于数据需要持久化,且数据量庞大,所以只能将数据

    2024年02月11日
    浏览(51)
  • TDengine时序数据库通俗易懂教程

    1.1产品简介 TDengine 是一款开源、高性能、云原生的时序数据库,且针对物联网、车联网、工业互联网、金融、IT运维等场景进行了优化。TDengine的代码,包括集群功能,都在 GNU AGPL v3.0 下开源。除核心的时序数据库功能外,TDengine还提供缓存、数据订阅、流式计算等其它功能以

    2024年02月07日
    浏览(81)
  • 通俗易懂地解释OpenAI Sora视频生成的特点有哪些?与Runway Gen2、Pika有什么区别?缺点是什么?

    OpenAI的Sora模型是最近两天最火热的模型。它生成的视频无论是清晰度、连贯性和时间上都有非常好的结果。在Sora之前,业界已经有了很多视频生成工具和平台。但为什么Sora可以引起如此大的关注?Sora生成的视频与此前其它平台生成的视频到底有哪些区别?有很多童鞋似乎对

    2024年02月19日
    浏览(49)
  • 大数据之Hadoop3简单入门(一)(通俗易懂)

    目录 一. 大数据基础概论 1.1 何为大数据 2.1 大数据特点(4V) 2.1.1 Volume(大量) 2.2.2 Velocity(高速) 2.2.3 Varity(多样) 2.2.4 Value(低价值密度) 二. hadoop入门概述 2.1 什么是hadoop 2.1.1 概念 2.1.2 hadoop优势 2.1.3 hadoop不同版本区别 2.2  HDFS架构概述 2.3  Yarn架构概述 2.4 MapReduce架

    2024年02月02日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包