关系建模与维度建模

article/2025/9/28 10:08:13

一、OLTP与OLAP

当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-linetransaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。

OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。二者的主要区别对比如下表所示。

二、关系模型与维度模型

关系模型严格遵循第三范式(3NF),较松散零碎,物理表数量多,数据冗余程度低。由于数据分布于众多的表中,这些数据可以更为灵活地被应用,功能性较强。主要应用于OLTP系统中,保证数据的一致性以及避免冗余,所以大部分业务系统的表都遵循第三范式。

维度模型主要应用于OLAP系统中,通常以某一个事实表为中心进行表的组织,主要面向业务,特征是可能存在数据的冗余,但是能方便的得到数据。

关系模型虽然冗余少,但是在大规模数据,跨表分析统计查询过程中,会造成多表关联,这会大大降低执行效率。所以通常采用维度模型建模,把相关各种表整理成两种:事实表和维度表。

二、维度建模

在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型。

 1、星型模型

标准的星型模型维度只有一层,而雪花模型可能会涉及多级,维度层级 是雪花模型与星型模型的主要区别。

2、雪花模型

 

 雪花模型,比较接近3NF,但是无法完全遵循,因为遵循3NF的性能成本太高。

3、星座模型

星座模型与前两种情况的区别是事实表的数量,星座模型是基于多个事实表。

基本上是很多数据仓库的常态,因为很多数据仓库都是多个事实表。所以是否星座只反应是否有多个事实表,它们之间是否共享一些维度表。星座模型不和前两种模型冲突。

(4)模型的选择

星型还是雪花,取决于性能优先,还是灵活更优先。企业实际开发中,不会绝对选择一种,可以灵活组合,但整体来看,更倾向于维度更少的星型模型。尤其是Hadoop体系,减少Join就是减少Shuffle,性能差距很大。

四、维度表和事实表

(1)维度表:一般是对事实的描述信息。每一张维度表对应现实世界中的一个对象或者概念。例如:用户、商品、日期、地区等。

维度表的特征:

  • 维度表的范围很宽(具有多个属性、列比较多)
  • 跟事实表相比,行数较少,(通常小于10万条)
  • 内容相对固定

设计维表的主要步骤如下:

  1. 选择业务过程:选择感兴趣的业务线:如下单,支付,退款,活动 ;时间允许可以选择全部业务线。
  2. 声明粒度:一行代表信息:一条订单?一天的订单?一周的订单? 选择最小粒度
  3. 确认维度:维度退化:谁 。 什么时间 什么地点
  4. 确认事实:度量值:如个数,件数,金额

(2)事实表:表中的每行数据代表一个业务事件(如下单、支付、退款、收藏、评价等)。“事实”表示的是业务事件的度量值(可以统计次数、个数、金额等),例如订单事件中的支付金额。

每一个事实表的行包括:具有可加性的数值型的度量值、与维度表相连接的外键、通常具有两个及以上外键。

事实表的特征:

  • 非常的大
  • 内容相对的窄
  • 经常发生变化,每天新增很多。

五、事实表还可以被分为三种

(1)事务型事实表

以每个事务或事件为单位,例如一个销售订单记录,一笔支付记录等,作为事实表里的一行数据。一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。

(2)周期型快照事实表

周期型快照事实表中不会保留所有数据,只保留固定时间间隔的数据,以具有规律性的、可预见的时间间隔记录事实。例如每天或每月的总销售金额,或每月的账户余额等。

(3)累积型快照事实表

累积快照事实表用于跟踪业务事实的变化,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点。例如数据仓库中可能需要累积或者存储订单从下单开始,到订单商品被打包、运输、签收等各个业务阶段的时间点数据,来跟踪订单生命周期的进展情况。当这个业务过程进行时,事实表的记录也要不断更新。

 参考:数仓理论--关系建模与维度建模 - 知乎


http://chatgpt.dhexx.cn/article/B4CQIJXG.shtml

相关文章

数仓维度建模实例

简介 本文将介绍维度建模理论和基于自己经验的实施步骤 数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据....只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。一般业务…

数据仓库-基础知识(维度建模)

一、数据仓库概述 1.1 数据仓库定义 数据仓库:Data Warehouse,是为企业所决策制定过程,提供所有支持类型的数据集合。用于分析性报告和决策支持。数仓是一个面向主题、集成的、相对稳定、反应历史变化的数据集合,随着大数据技术的…

数仓:维度建模

1.背景 数据仓库的核心是展现层和提供优质的服务。ETL 及其规范、分层等所做的一切都是为了一个更清晰易用的展现层。 2.数仓架构的原则: 1、底层业务的数据驱动为导向同时结合业务需求驱动 2、便于数据分析屏蔽底层复杂业务简单、完整、集成的将数据暴露给分析层…

数仓建模(维度建模)

目录 一、什么是建模?(为什么建模) 二、模型的好处 三、建模的方法 四、维度建模 4.1 基本概念 4.2 为啥选择维度建模(优缺点) 4.2.1 优点 4.2.2 缺点 4.3 维度建模-星型模型 4.4 维度建模-维度 4.4.1 维度之…

维度建模的三种模式

1.星型模式 星型模式是维度模型中最简单的形式,也是数据仓库以及数据集市开发中使用最广泛的形式。 星型模式由事实表和维度表组成,一个星型模式中可以有一个或多个事实表,每个事实表引用任意数量的维度表。 星型模式的物理模型像一颗星星的形…

维度建模概述

1、维度建模 维度建模以分析决策的需求出发构建模型,构建的数据模型为数据分析服务。它重点解决如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。 因此,说白了,所谓的维度建模就是一种组织数据仓库的形式、模型…

ETL自学之路-02(维度建模)

一、维度建模的基本概念 1.1维度建模的定义 维度建模(dimensional modeling)是专门用于分析型数据库、数据仓库、数据集市建模的方法,数据集市可以理解为是一种小型的数据仓库。 1.2 维度表(dimension) 维度表示你…

维度建模

维度建模 维度模型简介 维度建模被广泛接受为数据分析的首选技术,因为它同时满足了两个需求: 1.向用户交付可以理解的数据 2.提供快速查询的性能 维度建模实体建模第三范式(3NF)建模适合表连接以及聚合计算的查询请求&#xff1…

数据模型建设-维度建模详解

5.2 维度建模 维度建模是一种将大量数据结构化的逻辑设计手段,包含维度和指标,它不像ER模型目的是消除冗余数据,维度建模是面向分析,最终目的是提高查询性能,所以会增加数据冗余,并且违反三范式。 维度建…

绘制彩色图的颜色直方图

计数直方图 在Opencv中已经集成了关于彩色图像直方图计算的函数,形式如下: import cv2cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate]])参数 images:array-like类型,要计算的图像(单张或多张)&a…

matplotlib 图像颜色直方图

参考学习 定义 cv2.calcHist(images, channels, mask, histSize, ranges[, hist[, accumulate ]]) ->hist imaes:输入的图像channels:选择图像的通道mask:掩膜,是一个大小和image一样的np数组,其中把需要处理的部分指定为1,不需要处理的…

OpenCV—python 颜色直方图与直方图均衡化

文章目录 一、颜色直方图1.1 使用opencv展示直方图1.2 使用matplotlib绘制 二、直方图均衡化2.1 全局直方图均衡化与自适应均衡化2.2 使用查找表来拉伸直方图2.3 直方图均衡化—RGB2YCrCb2.4 直方图均衡化—RGB2YUV 一、颜色直方图 1.1 使用opencv展示直方图 函数 cv2.calcHis…

颜色直方图和颜色矩

来源:http://www.xuebuyuan.com/2019161.html 1、颜色直方图 颜色直方图所描述的是不同色彩在整幅图像中所占的比例,而并不关心每种色彩所处的空间位置,即无法描述图像中的对象或物体。颜色直方图特别适于描述那些难以进行自动分割的图像。 …

颜色直方图 灰度图彩色图

1.读取照片 cv2.imread(图片路径,cv2.IMREAD_COLOR) 2.定义color变量(b,g,r) 代表三个通道 3.彩色图像为例 for i,col in enumerate(color):遍历…

基于MATLAB颜色直方图的图像检索

基于颜色直方图的图像检索 概述 在过去的十几年间,有许多知名机构都对图像检索系统进行了深入的研究,病开发出了相应的检索系统,例如IBM Almaden研究中心研制的QBIC系统,Virage公司研发的VIRAGE系统,麻省理工大学多媒体…

pyimagesearch-4 聪明的女孩:计算机视觉和图像搜索引擎使用颜色直方图的指南

原文链接 It’s…it’s a histogram. – Dr. Grant 好吧,也许这不是确切的引用。但是,如果格兰特博士知道颜色直方图的力量,我认为他会同样激动。 更重要的是,当电力耗尽时,直方图不会让游客吃东西。 那么&#xff…

OpenCV 学习笔记(颜色直方图计算 calcHist)

OpenCV 学习笔记(颜色直方图计算 calcHist) 最近在看一本OpenCV 的书,书名是 《OpenCV 3 Computer Vision Application Programming Cookbook (third edition)》,里面给了很多很实用的代码片段。最近这几篇…

Opencv绘制HSV颜色直方图

一. 使用Opencv绘制HSV颜色直方图 所用的函数 cvCvtColor 可在: 使用Opencv将RGB颜色空间转换到HSV颜色空间/灰度图 文章中查找相关介绍 所使用的结构体: CvHistogram 以及函数: cvCalcHist CvCreateHist cvGetMinMaxHistValue cv…

基于颜色直方图优化的图像增强方法

最近改图像颜色迁移的论文,审稿人要求补充基于直方图优化的方法细节。趁此机会,我重新下载了相关文献,决定重新学习下该类方法,并把一些细节记录在本篇博客中,供交流学习。 目录 1. 前言 2. 背景知识 3. 颜色变换 4. 颜…

[OpenCV实战]52 在OpenCV中使用颜色直方图

颜色直方图是一种常见的图像特征,顾名思义颜色直方图就是用来反映图像颜色组成分布的直方图。颜色直方图的横轴表示像素值或像素值范围,纵轴表示该像素值范围内像素点的个数或出现频率。颜色直方图属于计算机视觉中的基础概念,其常常被应用于…