首页 > 其他分享 >拉链表,流⽔表以及快照表的含义和特点

拉链表,流⽔表以及快照表的含义和特点

时间:2024-12-29 10:59:03浏览次数:3  
标签:01 快照 记录 含义 拉链 2024 日期 数据

  1. 拉链表
    • 含义
      • 拉链表主要用于记录数据的历史变化情况。从数据结构角度看,它的每条记录都包含了一个实体(如客户、产品等)的关键信息以及两个时间戳字段,即起始日期(Start_Date)和结束日期(End_Date)。起始日期表示这条记录开始生效的时间,结束日期表示这条记录失效的时间。当数据初次录入时,起始日期为数据产生的日期,结束日期通常会被设定为一个极大值(如 '9999 - 12 - 31'),代表当前记录处于有效状态。
      • 以客户信息为例,假设初始有客户 A 的记录,姓名为张三,地址为北京,起始日期是 '2024 - 01 - 01',结束日期是 '9999 - 12 - 31'。如果在 '2024 - 02 - 01' 这一天,客户 A 的地址变更为上海,那么在拉链表中会更新原来记录的结束日期为 '2024 - 01 - 31',同时插入一条新的记录,姓名依然是张三,地址为上海,起始日期为 '2024 - 02 - 01',结束日期为 '9999 - 12 - 31'。
    • 特点
      • 高效存储历史数据:它不是简单地存储每个时间点的全量数据,而是仅存储数据变化部分。这种存储方式在数据变化频率相对较低的情况下,能够显著节省存储空间。例如,一个包含大量用户信息的系统,只有少部分用户信息会频繁变化,采用拉链表就可以避免每次都存储全部用户信息,大大减少存储成本。
      • 支持历史数据回溯和查询:可以通过起始日期和结束日期字段方便地查询任意时间点的数据状态。例如,企业需要查询在某个促销活动期间('2024 - 03 - 01' - '2024 - 03 - 31')有效的客户信息,就可以通过筛选起始日期小于等于 '2024 - 03 - 31' 且结束日期大于等于 '2024 - 03 - 01' 的记录来获取当时的客户信息,从而准确分析促销活动的目标客户群体等情况。
      • 数据更新操作复杂:相比普通表,拉链表在数据更新时需要同时处理两条记录(更新旧记录的结束日期和插入新记录)。这就要求在数据处理逻辑上更加谨慎,以确保数据的一致性和准确性。而且,在查询数据时,需要考虑日期范围的筛选条件,这也增加了查询的复杂性。
      • 适合缓慢变化维度数据:对于像客户信息、产品属性等变化相对缓慢的数据维度,拉链表是一种非常理想的数据存储方式。它能够很好地适应这类数据在长时间内的少量变化情况,完整地保留数据的变化历史。
  2. 流水表
    • 含义
      • 流水表是一种记录业务操作流水的表,也称为事务表。它是对业务系统中发生的所有操作事件的详细记录。表中的每一条记录都代表了一个独立的业务操作,包含了操作发生的时间(Transaction_Time)、操作类型(Transaction_Type)、涉及的实体(如客户 ID、产品 ID 等)以及操作的具体内容(如交易金额、库存变更数量等)等关键信息。
      • 例如,在银行系统的交易流水表中,每一笔交易都会记录下来。如果客户 A 在 '2024 - 01 - 01 10:00:00' 进行了一笔 1000 元的取款操作,流水表中就会有一条记录,包含交易时间 '2024 - 01 - 01 10:00:00'、操作类型 ' 取款 '、客户 ID(客户 A 的 ID)以及交易金额 - 1000 元等信息。
    • 特点
      • 完整记录业务过程:能够提供业务操作的完整历史记录,对于业务流程的追溯和审计非常有用。企业可以通过流水表查看每一个业务环节的详细信息,比如在财务审计中,审计人员可以通过交易流水表查看每一笔资金的进出情况,确保财务数据的真实性和合规性。
      • 数据实时性强:按照业务操作的实际发生顺序记录,数据具有很强的实时性。这使得它可以用于实时监控业务活动。例如,电商平台可以通过订单流水表实时监控订单的生成、支付、发货等状态,及时发现异常订单并进行处理。
      • 数据量增长迅速:随着业务的持续开展,流水表的数据量会不断增加。如果业务量较大,可能会导致存储和查询性能问题。例如,一个大型电商平台每天会产生海量的订单交易记录,这些记录都会存入流水表,如果不进行合理的分区或者索引优化,查询特定类型交易(如退款交易)可能会变得非常缓慢。
      • 简单的数据结构和易于理解:流水表的结构通常比较简单,主要是记录业务操作的基本信息。这种简单的结构使得开发人员和业务人员都能够比较容易地理解和使用。例如,业务人员可以通过查看流水表来统计每天的销售订单数量,而不需要复杂的数据分析知识。
  3. 快照表
    • 含义
      • 快照表是在特定时间点对数据进行全量复制而形成的表。它就像是给数据在某一时刻拍了一张照片,记录了当时的全部数据状态。快照表的生成通常是按照一定的时间周期(如每天、每周、每月等)或者特定的事件触发(如系统升级前、重大业务调整前等)。
      • 以库存管理为例,每天晚上系统会生成一个库存快照表,记录当天结束时每个仓库中各种产品的库存数量。这个快照表中的数据就是当天库存的一个静态写照,不包含库存的变化过程,只反映了当天结束时的库存状态。
    • 特点
      • 反映特定时刻的完整数据状态:提供了一个数据在特定时间点的全貌,便于进行数据对比和分析。例如,企业可以对比月初和月末的财务快照表,来分析一个月内企业的财务状况变化,包括资产、负债、利润等方面的变化情况。
      • 简单直接的查询方式:由于是全量数据,查询操作相对简单。用户在查询时不需要考虑数据的动态变化过程,只需要关注特定时间点的数据内容。例如,在查询某一天的销售快照表时,直接获取当天的销售数据,如销售总额、各产品销售数量等,不需要像拉链表那样根据日期范围进行复杂的筛选。
      • 存储成本较高:因为是全量数据存储,所以如果数据量较大,并且快照生成的频率较高,会占用大量的存储空间。例如,一个拥有海量用户数据的互联网公司,如果每天都生成用户信息快照表,那么存储这些快照表的数据量会非常庞大。
      • 数据时效性有限:快照表只能反映它所生成的特定时间点的数据情况。如果需要了解数据在两个快照时间点之间的动态变化,快照表本身无法提供这些信息,需要结合其他数据(如流水表)或者通过计算两个快照之间的差异来获取。

标签:01,快照,记录,含义,拉链,2024,日期,数据
From: https://blog.csdn.net/pxyxyxy/article/details/144778108

相关文章

  • 解释下`(~~(Math.random()*(1<<24)))`的含义
    这段代码(~~(Math.random()*(1<<24)))在前端开发中可能用于生成一个随机整数。下面我们来分解这段代码,以更好地理解其含义:Math.random():这个函数返回一个[0,1)之间的随机浮点数,也就是说,它会返回一个大于等于0且小于1的随机小数。1<<24:这是一个位移运算。1左移24位,等......
  • StyleShot任意风格快照
    ✨✨欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨......
  • 在域控(Domain Controller,DC)上做快照是一种用于备份和恢复的常见操作,尤其是在 Active D
    在域控(DomainController,DC)上做快照是一种用于备份和恢复的常见操作,尤其是在ActiveDirectory环境中。通过创建域控的快照,可以在发生故障时快速恢复到快照时的状态。下面是如何在WindowsServer上创建域控的快照的步骤:1.使用 WindowsServer快照功能在WindowsServer上......
  • 28. Object 有哪些常用方法?大致说一下每个方法的含义
    java.lang.Object下面是对应方法的含义。clone方法保护方法,实现对象的浅复制,只有实现了Cloneable接口才可以调用该方法,否则抛出CloneNotSupportedException异常深拷贝也需要实现Cloneable,同时其成员变量为引用类型的也需要实现Cloneable,然后重写clone方法。finalize......
  • 时点表、快照表
    在数据仓库中,时点表(SnapshotTable)是一种用于记录某个特定时间点数据快照的表。它通常用于反映数据在某个时间点的状态,便于进行历史数据分析或业务状态追踪。时点表的定义时点表是将数据按照某个时间点或周期进行全量备份或截取的表,用于记录在某一时刻的数据状态。它和事实表不同......
  • Python中的zip/unzip:像拉拉链一样组合数据的艺术
    今天让我们一起探讨Python中一个优雅而强大的内置功能:zip和unzip。听名字就知道,它就像我们衣服上的拉链一样,能把两边的数据完美地咬合在一起。从一个有趣的例子开始想象你正在开发一个班级管理系统。每个学生都有名字、成绩和评语:names=["小明","小红","小华"]scores......
  • Android Systrace的部分Tag含义
    systrace的一些tag标签的含义和作用。1.CPU*(0-7)Kernel内核模块,可以查看各个CPU执行了什么进程任务。cpu信息的目录是/sys/devices/system/cpu,例如我的一加六老设备:OnePlus6:/sys/devices/system/cpu$lscore_ctl_isolatedcpu4cpuidleisolatedposs......
  • Delphi:含义、用途、过程和应用
    ​什么是德尔菲法?德尔菲法是一种用于预测和决策的结构化通信方法,涉及专家小组。该过程包括多轮问卷,专家提供匿名回答。这些回复被汇总并与小组共享,允许根据集体意见进行调整以达成共识。从选择专家开始,该方法通过多轮评论进行,直到达成共识。虽然它提供了一些优势,例如无......
  • 说说你对abbr标签的理解,它有什么含义?
    abbr标签,是HTML中用于表示缩写的标签,它有两个主要含义和作用:语义化:abbr标签明确告诉浏览器以及其他程序(例如屏幕阅读器)括起来的文本是一个缩写。这对于提升网页的可访问性和SEO都很有帮助。屏幕阅读器可以根据这个标签,以不同的方式朗读缩写,例如拼出完整的单词或提供预......
  • ntp-service unicast-server命令的含义
    ntp-serviceunicast-server 是网络时间协议(NTP)配置中的一项,用于在设备(如路由器或交换机)上设置NTP服务,以单播模式与特定时间服务器进行同步。以下是相关概念和配置说明:1.什么是单播模式(UnicastMode)单播模式是NTP的一种通信方式,设备直接向指定的NTP服务器发送时......