数据仓库Data Warehouse

news2024/11/19 3:35:41

数据仓库Data Warehouse

数仓是一种思想,数仓是一种规范,数仓是一种解决方案

1. 数据处理方式

  • 数据处理大致可以分成两大类:
    • 联机事务处理OLTP(on-line transaction processing)
    • 联机分析处理OLAP(On-Line Analytical Processing)

在这里插入图片描述

1.1. OLTP

  • OLTP的全称是On-line Transaction Processing,中文名称是联机事务处理。其特点是会有高并发
    且数据量级不大的查询,是主要用于管理事务(transaction-oriented)的系统。此类系统专注于
    short on-line-tansactions 如INSERT, UPDATE, DELETE操作。通常存在此类系统中的数据都是以
    实体对象模型来存储数据,并满足3NF(数据库第三范式)。
  • 由于OLTP主要是为了操作数据而设计(操作系统),用于处理已知的任务和负载:常见的优化在
    于主码索引和散列,检索特定的记录。去优化某一些特定的查询语句。

1.2. OLAP

  • OLAP的全称是 On-line Analytical Processing,中文名称是联机分析处理。其特点是查询频率较
    OLTP系统更低,但通常会涉及到非常复杂的聚合计算。 OLAP系统以维度模型来存储历史数据,其
    主要存储描述性的数据并且在结构上都是同质的。
  • OLAP则是为了分析数据而设计(数据仓库),其查询的方式往往是复杂且未知的,通常会涉及大量
    数据在汇总后的计算,这种需要基于多维视图的数据操作在OLTP上执行的时候性能将是非常差
    的,并且是也是极其危险的。

在这里插入图片描述

  • OLAP基本操作
    • 上卷:roll-up drill-up
      • 通过一个维的概念分层向上攀升或者通过维归约在数据立方体上进行聚集。
      • 比如城市统计数据维度到省级统计数据维度。
    • 下钻:drill-down
      • 下钻是上卷的逆操作,由不太详细的数据到更详细的数据。
      • 下钻可以通过沿维的概念分层向下或引入附加的维来实现。
    • 切片:slice
      • 在给定的立方体的一个维上进行选择,从而定义一个子立方体。
    • 切块 dice
      • 通过两个或多个维上进行选择,定义一个子立方体。
    • 转轴:pivot
      • 是一种目视操作,就像是一个二维表的行列转换,两个维度的互换。
    • 钻过:drill-across
      • 其执行会涉及多个事实表的查询
    • 钻透:drill-through
      • 下钻透过多维数据立方直达RDMS表

在这里插入图片描述

2. 数据建模

数据建模指的是对现实世界各类数据的抽象组织,确定数据库需管辖的范围、数据的组织形式等直至转
化成现实的数据库。

  • 性能:良好的模型能帮我们快速查询需要的数据,减少数据的IO吞吐
  • 成本:减少数据冗余、计算结果复用、从而降低存储和计算成本
  • 效率:改善用户使用数据的体验,提高使用数据的效率
  • 改善统计口径的不一致性,减少数据计算错误的可能性

在这里插入图片描述

2.1. 关系建模

在这里插入图片描述

  • 数据仓库之父Bill Inmon推崇
  • 从全企业的高度设计一个3NF模型的方法,用实体加关系描述的数据模型描述企业业务架构,在范
    式理论上符合3NF,站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系
    抽象。
  • 它更多是面向数据的整合和一致性治理,正如Inmon所希望达到的“single version of the truth”。
  • 优缺点
    - 优点:规范性较好,冗余小,数据集成和数据一致性方面得到重视
    - 缺点:需要全面了解企业业务、数据和关系;实施周期非常长,成本昂贵;对建模人员的能力
    要求也非常高,容易烂尾。

在这里插入图片描述

2.2. 维度建模

在这里插入图片描述

  • 数据仓库领域大师Ralph Kimball 倡导
  • 维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户
    如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能,更直接面向业务。
  • 优缺点
    - 优点:技术要求不高,快速上手,敏捷迭代,快速交付;更快速完成分析需求,较好的大规模
    复杂查询的响应性能
    - 缺点:维度表的冗余会较多,视野狭窄

在这里插入图片描述

3. 维度表分类

在维度建模中,将度量称为“事实” , 将环境描述为“维度”。
在这里插入图片描述

3.1. 维度表

  • 一般是对事实的描述信息。每一张维度表对应现实世界中的一个对象或者概念。
  • 维度表特征
    • 维度表的范围很宽(具有多个属性、列比较多)
    • 跟事实表相比,行数较少,(通常小于10万条)
    • 内容相对固定
  • 维度建模四部曲
    • 选择业务处理过程 > 定义粒度 > 选择维度 > 确定事实
    • 选择业务:选择感兴趣的业务线,如下单,支付,退款,活动 。
    • 声明粒度:一行代表信息:一条订单?一天的订单?一周的订单? 选择最小粒度
    • 确认维度:维度退化:谁 。 什么时间 什么地点
    • 确认事实:度量值:如个数,件数,金额
  • 设计原则
    • 维度属性尽量丰富,为数据使用打下基础
      比如淘宝商品维度有近百个维度属性,为下游的数据统计、分析、探查提供了良好的基
      础。
    • 给出详实的、富有意义的文字描述
      • 属性不应该是编码,而应该是真正的文字。在间里巴巴维度建模中, 一般是编码和文字
        同时存在,比如商品维度中的商品 ID 和商品标题、 类目 ID 和 类目名称等。 ID 一 般用
        于不同表之间的关联,而名称一般用 于报表标签
    • 区分数值型属性和事实
      • 数值型宇段是作为事实还是维度属性,可以参考字段的一般用途。 如果通常用于查询约
        束条件或分组统计,则是作为维度属性;如果通常 用于参与度量的计算, 则是作为事
        实。比如商品价格,可以用于查询约 束条件或统计价格区间 的商品数量,此时是作为维
        度属性使用的;也可 以用于统计某类目 下商品的平均价格,此时是作为事实使用的。另
        外, 如果数值型字段是离散值,则作为维度属性存在的可能性较大;如果数 值型宇段是
        连续值 ,则作为度量存在的可能性较大,但并不绝对,需要 同时参考宇段的具体用途。
    • 沉淀出通用的维度属性,为建立一致性维度做好铺垫
      • 有些维度属性获取需要进行比较复杂的逻辑处理,有些需要通过多表关联得到,或者通
        过单表 的不同宇段混合处理得到,或者通过对单表 的某个字段进行解析得到。此时,需
        要将尽可能多的通用的维度属性进 行沉淀。一方 面,可以提高下游使用的方便性,减少
        复杂度;另一方面,可以避免下游使用解析时由于各自逻辑不同而导致口径不 一致。
    • 退化维度(DegenerateDimension)
      • 在维度类型中,有一种重要的维度称作为退化维度。这种维度指的是直接把一些简单的
        维度放在事实表中。退化维度是维度建模领域中的一个非常重要的概念,它对理解维度
        建模有着非常重要的作用,退化维度一般在分析中可以用来做分组使用。
    • 缓慢变化维(Slowly Changing Dimensions)
      • 维度的属性并不是始终不变的,它会随着时间的流逝发生缓慢的变化,这种随时间发生
        变化的维度我们一般称之为缓慢变化维(SCD),缓慢变化维一般使用代理健作为维度
        表的主健。

在这里插入图片描述

*冗余维度:为了提升效率,把常用的维度冗余到事实表

3.2. 事实表

  • 表中的每行数据代表一个业务事件。“事实”表示的是业务事件的度量值(可以统计次数、个数、金额等)
  • 事实表特征
    • 非常的大
    • 内容相对的窄
    • 经常发生变化,每天新增很多。
  • 事实表分类
    • 事务型事实表
      • 以每个事务或事件为单位,例如一个销售订单记录,一笔支付记录等,作为事实表里的
        一行数据。
      • 一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。
    • 周期型快照事实表
      • 周期型快照事实表中不会保留所有数据,只保留固定时间间隔的数据,以具有规律性
        的、可预见的时间间隔记录事实。
      • 例如每天或每月的总销售金额,或每月的账户余额等。
    • 累积型快照事实表
      • 累积快照事实表用于跟踪业务事实的变化,覆盖过程的整个生命周期,通常具有多个日
        期字段来记录关键时间点。
      • 例如数据仓库中可能需要累积或者存储订单从下单开始,到订单商品被打包、运输、签
        收等各个业务阶段的时间点数据,来跟踪订单生

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity添加证件

目录 1.问题描述:2.解决方法:小结: 1.问题描述: 2.解决方法: 登录后跳转打开 添加证件 选择个人证件 小结: 关注我给大家分享更多有趣的知识,以下是个人公众号,提供 ||代码兼职||…

基于 React 的图形验证码插件

react-captcha-code NPM 地址 : react-captcha-code - npm npm install react-captcha-code --save 如下我自己的封装: import Captcha from "react-captcha-code";type CaptchaType {captchaChange: (captchaInfo: string) > void;code…

利用大型语言模型提升数字产品创新:提示,微调,检索增强生成和代理的应用

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

【漏洞复现】科达 MTS转码服务器 任意文件读取漏洞

0x01 产品简介 科达 MTS转码服务器是一款专业的视频转码设备,采用了高性能的硬件配置和先进的转码技术,能够实现高效、高质量的视频转码。 0x02 漏洞概述 科达 MTS转码服务器存在任意文件读取漏洞,攻击可以通过该漏洞读取服务器任意敏感信…

ChatGPT向付费用户推“记忆”功能,可记住用户喜好 | 最新快讯

4月30日消息,人工智能巨头OpenAI宣布,其开发的聊天机器人ChatGPT将在除欧洲和韩国以外的市场全面上线“记忆”功能。这使得聊天机器人能够“记住”ChatGPT Plus付费订阅用户的详细信息,从而提供更个性化的服务。 OpenAI早在今年2月就已经宣布…

java同步大量数据到本地数据库方法总结

最近在做一个需求,就是我需要对三方接口调用的数据存放到本地的数据库里的数据表里面。那么一开始我就是直接一条一条save,结果发现耗时非常严重,后面我就进行了改进。就是分批次去同步或者分批次去异步。 现在我直接贴出我写的代码&#xf…

PG后台进程个人解读和与oracle 的比较

1.background writer (后台写进程) 与OracleDBWR进程工作原理类似,都是负责把缓冲区里面的脏块写到数据文件中,写的目的有两个: 1.为了保存数据。 2.为了释放内存空间。 触发background writer 写的条件&#xff1a…

Virtualbox--下载指定版本

一、前言 下载Virtualbox7.0.10,可参考《Virtualbox–下载指定版本》 Virtualbox7.0.10具体安装步骤,可参考《Virtualbox7.0.10的安装步骤》 Virtualbox7.0.10创建虚拟机,可参考《Virtualbox7.0.10–创建虚拟机》 Virtualbox7.0.10安装Ubuntu…

GPT3 终极指南(二)

原文:zh.annas-archive.org/md5/6de8906c86a2711a5a84c839bec7e073 译者:飞龙 协议:CC BY-NC-SA 4.0 第五章:GPT-3 作为企业创新的下一步 当一个新的创新或技术转变发生时,大公司通常是最后一个采纳的。它们的等级结构…

Linux 文件管理命令Lawk wc comm join fmt

文章目录 2.Linux 文件管理命令2.44 awk:模式匹配语言1.变量2.运算符3.awk 的正则4.字符串函数5.数学函数案例练习 2.45 wc:输出文件中的行数、单词数、字节数案例练习2.46 comm:比较…

Qwen-Audio:推动通用音频理解的统一大规模音频-语言模型(开源)

随着人工智能技术的不断进步,音频语言模型(Audio-Language Models)在人机交互领域变得越来越重要。然而,由于缺乏能够处理多样化音频类型和任务的预训练模型,该领域的进展受到了限制。为了克服这一挑战,研究…

Spring Data Redis简单使用

Spring Data Redis是一个用于简化应用程序与Redis交互的开发框架。它提供了简单的配置和方便的操作API,使得与Redis的集成变得更加容易。下面是一个快速入门使用Spring Data Redis的步骤: 步骤 1:添加依赖 在您的项目中添加Spring Data Redi…

掌握未来:打造高效、可靠系统的终极指南—RESTful API 设计详解

RESTful API 是一种软件架构风格和开发规范,它基于 Representational State Transfer(REST)原则。RESTful API 使用 HTTP 协议的标准方法,如 GET、POST、PUT、DELETE 等,来进行资源的创建、读取、更新和删除操作。这种…

四川易点慧电子商务抖音小店:创新引领,开启电商新篇章

随着互联网的快速发展,电子商务行业日新月异,抖音小店作为新兴的电商模式,正逐渐崭露头角。四川易点慧电子商务有限公司紧跟时代步伐,以创新思维引领抖音小店发展,成为了行业的佼佼者。 易点慧电子商务位于风景秀丽的四…

FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流

OBS是一个开源的直播录制软件,英文全称叫做Open Broadcaster Software,广泛用于视频录制、实时直播等领域。OBS不但开源,而且跨平台,兼容Windows、Mac OS、Linux等操作系统。 OBS的官网是https://obsproject.com/,录制…

如何安全可控的进行跨区域数据交换,提高数据价值?

跨区域数据交换指的是在不同地理位置或不同网络环境下的数据传输和共享。随着数字化转型的加速,企业及组织越来越依赖于数据的流动来优化业务流程、增强决策制定和推动创新。然而,跨区域数据交换也带来了一系列的挑战和风险,主要包括&#xf…

DFT(三)Yield

DFT(三)Yield 在集成电路(IC)设计和制造领域,特别是在数字全流程(Digital Full Flow,简称DFT)中,“Yield”(产量)是一个衡量从设计到最终产品过程…

【antd + vue】InputNumber 数字输入框 输入限制

一、需求说明 只能输入数字和小数点,保留小数点后两位;最多输入6位;删除所有内容时,默认为0; 二、问题说明 问题1:使用 precision 数值精度 时,超出规定小数位数时会自动四舍五入;…

python 基础语句

python 基础语句 1. import 语句 用于导入相应的包以供后面的代码使用 import xxx -将xxx包导入import pandas as pd - 导入 pandas 包并且将其所有的对象、方法、属性赋予 pd 对象from xxx1 import xxx2 - 从xxx1 包中导入 xxx2 方法 2. 输入输出语句 input,pr…

Java 基础重点知识-(Java 语言特性、数据类型、常见类、异常)

文章目录 Java 语言特性形参和实参的区别是什么?值传递和引用传递的区别?Java 是值传递还是引用传递?final 的作用是什么?final finally finalize 有什么不同?static 的作用是什么?static 和 final 的区别是什么? Java 数据类型Java基本数据类型有几种? 各占多少位?基…