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

  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. 快照表
    • 含义
      • 快照表是在特定时间点对数据进行全量复制而形成的表。它就像是给数据在某一时刻拍了一张照片,记录了当时的全部数据状态。快照表的生成通常是按照一定的时间周期(如每天、每周、每月等)或者特定的事件触发(如系统升级前、重大业务调整前等)。
      • 以库存管理为例,每天晚上系统会生成一个库存快照表,记录当天结束时每个仓库中各种产品的库存数量。这个快照表中的数据就是当天库存的一个静态写照,不包含库存的变化过程,只反映了当天结束时的库存状态。
    • 特点
      • 反映特定时刻的完整数据状态:提供了一个数据在特定时间点的全貌,便于进行数据对比和分析。例如,企业可以对比月初和月末的财务快照表,来分析一个月内企业的财务状况变化,包括资产、负债、利润等方面的变化情况。
      • 简单直接的查询方式:由于是全量数据,查询操作相对简单。用户在查询时不需要考虑数据的动态变化过程,只需要关注特定时间点的数据内容。例如,在查询某一天的销售快照表时,直接获取当天的销售数据,如销售总额、各产品销售数量等,不需要像拉链表那样根据日期范围进行复杂的筛选。
      • 存储成本较高:因为是全量数据存储,所以如果数据量较大,并且快照生成的频率较高,会占用大量的存储空间。例如,一个拥有海量用户数据的互联网公司,如果每天都生成用户信息快照表,那么存储这些快照表的数据量会非常庞大。
      • 数据时效性有限:快照表只能反映它所生成的特定时间点的数据情况。如果需要了解数据在两个快照时间点之间的动态变化,快照表本身无法提供这些信息,需要结合其他数据(如流水表)或者通过计算两个快照之间的差异来获取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/496914.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【玩转OCR】 | 腾讯云智能结构化OCR在多场景的实际应用与体验

文章目录 引言产品简介产品功能产品优势 API调用与场景实践图像增强API调用实例发票API调用实例其他场景 结语相关链接 引言 在数字化信息处理的时代,如何高效、精准地提取和结构化各类文档数据成为了企业和政府部门的重要需求。尤其是在面对海量票据、证件、表单和…

AEO海关认证的注意事项

AEO海关认证的注意事项繁多且至关重要,企业需细致准备,确保万无一失。 首先,企业需深入研读相关政策文件,如《中华人民共和国海关注册登记和备案企业信用管理办法》及《海关高级认证企业标准》,以政策为指引&#xff0…

使用Excel制作通达信自定义外部数据,安排!!!

Excel相信大家电脑上都有这个工具,相比敲编程代码,用这个去做自定义数据对大多数人,应该是比较友好的。自定义数据分为外部序列数据,看了一下内容理解起来比较多,分两期给大家介绍。为了照顾电脑基础薄弱的朋友&#x…

使用c#制作坐标

1、建立坐标 2、坐标系的放大缩小 3、标定刻度 4、实时显示鼠标在坐标系上的坐标 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using S…

计算属性 简写和 完整写法

计算属性渲染不加上括号 methods方法和computed属性区别: computed只计算一次,然后缓存,后续直接拿出来使用,而methods每次使用每次计算,不会缓存 计算属性完整写法: 既获取又设置 slice 截取 成绩案例 …

c++基于过程

前言: 笔记基于C黑马程序员网课视频:黑马程序员匠心之作|C教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili 在此发布笔记,只是为方便学习,不做其他用途,原作者为黑马程序员。 1. C基础 1.1 用Visual Studio写C程…

Windows配置cuda,并安装配置Pytorch-GPU版本

文章目录 1. CUDA Toolkit安装2. 安装cuDNN3. 添加环境变量配置Pytorch GPU版本 博主的电脑是Windows11,在安装cuda之前,请先查看pytorch支持的版本,cuda可以向下兼容,但是pytorch不行,请先进入:https://py…

【202】仓库管理系统

-- 基于springboot仓库管理系统设计与实现 开发技术栈: 开发语言 : Java 开发软件 : Eclipse/MyEclipse/IDEA JDK版本 : JDK8 后端技术 : SpringBoot 前端技术 : Vue、Element、HTML、JS、CsS、JQuery 服务器 : Tomcat8/9 管理包 : Maven 数据库 : MySQL5.x/8 数据库工具 : …

Debian安装配置RocketMQ

安装配置 本次安装在/tools/rocket目录下 下载 wget https://dist.apache.org/repos/dist/release/rocketmq/5.3.1/rocketmq-all-5.3.1-bin-release.zip 解压缩 unzip rocketmq-all-5.3.1-bin-release.zip 如果出现以下报错 -bash: unzip: command not found可安装unzip工具后执…

php的zip扩展 先装libzip

【宝塔面板】php7.4 安装 zip 扩展 - PHP笔记网 在CentOS 7系统中,通过【宝塔Linux】安装了PHP7.4,运行业务系统时,报错: 1 it is missing from your system. Install or enable PHPs zip extension. 提示需要php的zip扩展&…

【Java-tesseract】OCR图片文本识别

文章目录 一、需求二、概述三、部署安装四、技术细节五、总结 一、需求 场景需求:是对识别常见的PNG,JPEG,TIFF,GIF图片识别,环境为离线内网。组件要求开源免费,并且可以集成Java生成接口服务。 二、概述 我不做选型对比了,我筛选测试了下Tesseract(v…

【RabbitMQ的死信队列】

死信队列 什么是死信队列死信队列的配置方式死信消息结构 什么是死信队列 消息被消费者确认拒绝。消费者把requeue参数设置为true(false),并且在消费后,向RabbitMQ返回拒绝。channel.basicReject或者channel.basicNack。消息达到预设的TTL时限还一直没有…

使用 Three.js 创建一个 3D 人形机器人仿真系统

引言 在这篇文章中,我们将探讨如何使用 Three.js 创建一个简单但有趣的 3D 人形机器人仿真系统。这个机器人可以通过键盘控制进行行走和转向,并具有基本的动画效果。 技术栈 HTML5Three.jsJavaScript 实现步骤 1. 基础设置 首先,我们需要…

Python大数据可视化:基于python大数据的电脑硬件推荐系统_flask+Hadoop+spider

开发语言:Python框架:flaskPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 价格区间界面 用户信息界面 品牌管理 笔记本管理 电脑主机…

修改vue-element-admin,如何连接我们的后端

改哪几个文件就可以连接我们后端 ​​​​​​​ 主要就这四个 main.js,屏蔽这个或者删除 vue-config 最后两个文件改下端口即可 这样基本就能发了,但是还要改下 改成api 然后还要修改request.js 这里改成我们返回的状态码 我讲一个东西很容易就懂了&…

uniapp实现为微信小程序扫一扫的功能

引言 随着微信小程序的快速发展,越来越多的开发者开始关注和学习微信小程序的开发。其中,微信小程序的扫一扫功能是非常常用且实用的功能之一。通过扫描二维码,用户可以获取到相关的信息或者实现特定的功能。 正文 在过去,开发者需要使用微信开发者工具以及相关的开发文档…

UE(虚幻)学习(四) 第一个C++类来控制小球移动来理解蓝图和脚本如何工作

UE5视频看了不少,但基本都是蓝图如何搞,或者改一下属性,理解UE系统现有组件使用的。一直对C脚本和蓝图之间的关系不是很理解,看到一个视频讲的很好,我也做笔记记录一下。 我的环境是UE5.3.2. 创建UE空项目 我们创建…

【Redis】Redis 安装与启动

在实际工作中,大多数企业选择基于 Linux 服务器来部署项目。本文演示如何使用 MobaXterm 远程连接工具,在 CentOS 7 上安装和启动 Redis 服务(三种启动方式,包括默认启动、指定配置启动和开机自启)。在安装之前&#x…

SpringCloudAlibaba实战入门之路由网关Gateway初体验(十一)

Spring Cloud 原先整合 Zuul 作为网关组件,Zuul 由 Netflix 公司提供的,现在已经不维护了。后面 Netflix 公司又出来了一个 Zuul2.0 网关,但由于一直没有发布稳定版本,所以 Spring Cloud 等不及了就自己推出一个网关,已经不打算整合 zuul2.0 了。 一、什么是网关 1、顾明…

【unity c#】深入理解string,以及不同方式构造类与反射的性能测试(基于BenchmarkDotNet)

出这篇文章的主要一个原因就是ai回答的性能差异和实际测试完全不同,比如说是先获取构造函数再构造比Activator.CreateInstance(type)快,实际却相反 对测试结果的评价基于5.0,因为找不到unity6确切使用的net版本,根据c#9推测是net5…