数据仓库建模之雪花模型和星形模型

2024-01-25 09:50

本文主要是介绍数据仓库建模之雪花模型和星形模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据仓库是用来分析数据并且从现有数据中发现新的价值,主要是用来预测未来的情况。数据仓库并不是解决所有问题的通用结构。它必须集中于某一问题领域,例如航空服务、顾客收益等。

数据仓库也有有趣的一面,那就是数据库本身是稳定增长的。数据没有被删除,也不发生变更。我们不需要将冗余数据置于数据库之外(因为加入仓库中的数据经过了数据净化的过程,该过程检查了数据的正确性)来减少复杂性同时增强读取操作的性能。

为了能够对数据仓库中的数据进行分析,数据存储于一个多维结构中,叫做星型模式。如果将星型模式扩展,就会得到雪花模式。本文将会阐述如何使用IBM Rational Rose进行星型模式建模和雪花模式建模。

飞行服务数据集市的例子

为了更好地解释如何对数据仓库建模,使用一个简单数据集市的的例子(即一个数据仓库或者数据仓库的一部分),来分析旅客乘坐航班 Happy Flying and Landing(愉快飞行平安降落)的行为和满意程度。

我们将存储乘客信息和每个航班的的相关数据、选择的菜单以及乘客对飞行的满意程度。

=======预备知识

数据仓库,数据仓库是一个支持管理决策的数据集合。数据是面向主题的、集成的、不易丢失的并且是时间变量。数据仓库是所有操作环境和外部数据源的快照集合。它并不需要非常精确,因为它必须在特定的时间基础上从操作环境中提取出来。

数据集市,数据仓库只限于单个主题的区域,例如顾客、部门、地点等。数据集市在从数据仓库获取数据时可以依赖于数据仓库,或者当它们从操作系统中获取数据时就不依赖于数据仓库。

事实,事实是数据仓库中的信息单元,也是多维空间中的一个单元,受分析单元的限制。事实存储于一张表中(当使用关系数据库时)或者是多维数据库中的一个单元。每个事实包括关于事实(收入、价值、满意记录等)的基本信息,并且与维度相关。

维度,维度是绑定由坐标系定义的空间的坐标系的轴线。数据仓库中的坐标系定义了数据单元,其中包含事实。坐标系的一个例子就是带有 x 维度和 y 维度的 Cartesian(笛卡尔)坐标系。在数据仓库中,时间总是维度之一。

数据挖掘,在数据仓库的数据中发现新的有价值的信息的过程被称为数据挖掘,这些新信息不会从操作系统中获得。

分析空间,分析空间是数据仓库中一定量的数据,用于进行数据挖掘以发现新信息同时支持管理决策。

切片,一种用来在数据仓库中将一个维度中的分析空间限制为数据子集的技术。

切块,一种用来在数据仓库中将多个维度中的分析空间限制为数据子集的技术。

星型模式,一种使用关系数据库实现多维分析空间的模式,称为星型模式。

雪花模式,不管什么原因,当星型模式的维度需要进行规范化时,星型模式就演进为雪花模式。

----------------------------------------------------------------------------------------------------------------------

使用 IBM Rational Rose 进行星型模式建模

星型模式的基本形式必须实现多维空间(常常被称为方块),以使用关系数据库的基本功能。

首先,我们需要理解多维空间。

多维分析空间,几何学中的方块是指一个三维空间,其中每个维度的尺寸都相同。想象一个立方体,每个维度都有三个单元,我们即得到相同结构的33=27个单元。


图1 一个具有 x、y、z 维度的方块
图1 一个具有 x、y、z 维度的方块 

多维分析空间(或者数据仓库方块)与几何空间中的方块仅仅存在细节上的差异。维度不仅限于 3 维。不过,处理很多维度的立方体也不是件轻松的事情,这会导致大多数的实现被限制于 6 或者 7 维。不要期盼使用图形可以很好地表示超过 4 的维度

维度并不具有相同的规模和单元。规模从几个单元到几百万个单元,差别巨大。单元可以是一天、一位顾客、部门等。
单元,相当于子方块(1×1×1等),包含事实。图2 一个三维数据立方体(顾客,时间,收益)
图2 一个三维数据立方体 

数据立方体需要很大的内存以存储所有事实。无论是否包含事实,都必须要预留单元。这就是为什么使用关系数据库和星型模式的原因。使用它们能够优化存储并且保持数据结构的灵活性。

星型模式:星型模式的基本思想就是保持立方体的多维功能,同时也增加了小规模数据存储的灵活性。


图3 一个星型模式 (乘客信息,飞行的菜单,航班信息,时间)
图3 一个星型模式 

在图3中,星型模式使用事实 Flight 表示了一个 4 维方块(Passenger、Menu、Flight Schedulet 和 Time)。基本上,事实必须指定一个维度,以将其放入立方体的单元中。

我们的例子中的维度是:
1.Passenger,描述了飞行航程中的每位乘客,由经常飞行号(frequent flyer number)指定。不是经常乘坐飞机的乘客不是数据仓库的一部分。
2. Flight Schedule,是指所有常规飞行的日程。
3. Menu,是用于飞行的菜单。只有对菜单进行基本的分类才会对数据挖掘有重要意义。
4. Time,是指飞行的时间。
       事实 Flight 描述了乘客在唯一的 Time 的单程飞行上选择 Menu。

分析空间可以是完整的方块,或者我们可以根据维度将分析空间分割成小片。

每个维度根据一个对象进行描述,对象可以用类表示,这些类就是有关业务主题的名称。这一点对于成功建立数据仓库来说是很重要的,因为仓库的用户(经理、分析员、市场)对于信息技术的术语并不是很熟悉。

事实本身就是商业智能的另一个对象,仍然通过类进行表示。

事实指每个维度。事实与维度的关联常常是一对任意(一个事实对应多个维度),这也就意味着每个事实都与单个维度的一个单元准确对应,而维度的每个单元(每个Passenger、Time等)可以与任意数量的事实发生关联(包括0个事实)。

使用 Rational Rose 将对象模型转换为数据模型即完成了星型模式的实现。这里我们可以看到转换后的结果。


图4 使用Rational Rose实现星型模式
图4 使用Rational Rose实现星型模式 

在图4中,没有显示自动创建的主键和外键约束。

星型模式的维度是独立的表。当对象模型转换为数据模型时,Rational Rose 可以生成维度的主键。

事实表指从维度表中使用键迁移的维度,当生成数据模型时 Rational Rose 可以生成外键。

在星型模式中切片和切块是对维度的限制(选择)。这是一个运行时问题,而不是建模问题,但是模型必须分辨其需要。

雪花模式

基本的星型模式并不能满足数据挖掘的所有需要。我们需要更复杂的维度,例如时间。分析员希望根据周、月、季度等识别模式。维度必须进行规范化。我们不需要冗余的维度表,这只会使数据切片变得更加复杂。这种过程中我们得到的模式被称为雪花模式。

我们来看一个简单的雪花模式例子。我们将时间维度规范化为:周、月和季度。


图5 规范化的 Time 维度
图5 规范化的 Time 维度 

我们希望能够使用附加的规范化维度将立方体切片:周、月和季度。在本例中,我们假定季度是月的平行层次,这也就意味着我们不能将季度假定为若干月的聚合。由于这个原因,我们将使用一张范化表(是对 OLAP 查询的一项简单附加)预先选择时间维度。

最终雪花模式添加了规范化维度。


图6 带有范化维度的 Time 和事实 Flight 的雪花模式
图6 带有范化维度的 Time 和事实 Flight 的雪花模式 

当然,所有的维度都可以像时间例子那样进行规范化,这就导致了比较复杂的数据集市模式的出现。

由 Rational Rose 从雪花模式中开发的实现模式(数据模型)是完善的。


图7 带有范化 Time 维度的雪花模式的数据模型
图7 带有范化 Time 维度的雪花模式的数据模型 

雪花模式中可以存在切片,不仅仅在基本的 Time 维度上,也可以在规范化的 Week、Month 和 Quarter 维度上。

多对多关系

在一次飞行中,我们不仅仅只吃一顿饭。在长途飞行中可能要多次用餐。在这种情况下,我们认为事实 Flight 和 Menu 维度不是一对多的关联。我们必须使用多对多关联。不过,这种关联不可能在星型模式中实现。

雪花模式的一种特殊形式是使用一种必要的数据结构以满足这项要求。

首先,我们将模型变更为事实和维度间的多对多关联。使用 Rational Rose,这只是关联基数的变更。
图8 Menu 的多对多维度的星型模式
图8 Menu 的多对多维度的星型模式 

我们无法在关系数据库中实现多对多关联。实现多对多关联需要使用另一种雪花模式。

在下图中,我们关注一下已经开发的雪花模式的一部分,该部分处理多对多维度。


图9 雪花模式解决了 Menu 的多维度
图9 雪花模式解决了 Menu 的多维度 

Rational Rose 生成了附加的维度表 FlightMenu,它是指 Menu 维度和 Flight 事实。

确定关系用于解决多对多关联。对于雪花模式的架构师来说,最重要的一点就是识别多对多关系。简单对象视图可能会使设计员理解概念,而生成的数据视图有助于进一步深入有关实现的问题。

层次

数据挖掘可以从隐藏在操作系统表面下的数据中发现信息。我们想了解的一个问题就是选定菜单与乘客统计资料之间的依赖关系。

乘客统计资料数据可以在 Passenger 维度的层次上构建。乘客可以根据邮政编码分组,然后再按国家进行分组。


图10 乘客的层次
图10 乘客的层次 

层次通过使用聚合来指定。聚合定义了所包括的内容。Country 包含了 ZIP 编码,ZIP 编码包含了多名 Passenger 信息。

最终通过使用外键实现了聚合。


图11 雪花模式实现了 Passenger 维度的聚合
图11 雪花模式实现了 Passenger 维度的聚合 

生成的约束仍然没有在图中表示出来。

使用聚合,维度可以在任何定义的级别上使用。分析空间可以通过 Passenger、ZIP Code或者 Country 进行切片。

一致的维度

随着数据仓库架构师不断地添加细节内容,雪花模式变得越来越复杂。因此设计过程必须在到达某种程度后停止以保持数据仓库运行良好。

星型或者雪花模式仍然仅仅关注于一个事实--在本例中就是Flight。那么复杂关系又是什么情况呢?

对于每个事实我们都必须设计其各自的模式。如果我们想要进行复杂查询的话,它们就必须具有共同的维度--我们称其为一致的维度。

让我们使用 Pilot 作为一个维度,PilotFlight 作为一个事实来定义第二个星型模式。我们还要使用附加的 Flight Schedule 维度和 Time 维度。


图12 Pilot 星型模式
图12 Pilot 星型模式 

第二个模式可以单独使用或者与 Passenger 模式结合使用,从而根据使用一致维度的飞行员维度来查询 Passenger 的满意程度。


图13 一致维度Time 和 Flight Schedule
图13 一致维度Time 和 Flight Schedule 

即使在使用一致维度的数据仓库的简单结构中,Pilot 与 Passenger 之间的关系也是简单的。

在开发数据模型时,数据仓库将大量小型星型模式与雪花模式相结合形成了大型的数据仓库模式。

事实与维度的数据

我们想要评估乘客对于飞行的满意率。可以使用不满意到很满意几个级别进行评定。评定记录存放在事实表 Flight 中作为一个属性(列)。

如果我们想要得出一个平均记录,那么就必须为记录定义值以进行计算。我们可以将记录分为 0 到 10 级。这样就可以得到一个平均记录。平均值应该存储在维度表中,以用于简单的切片,其中我们只想进行一维切片。

Rational Rose 根据目标数据库的数据类型生成了实现属性。对象模型是用来定义数据库的数据源的。

这篇关于数据仓库建模之雪花模型和星形模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642896

相关文章

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

透彻!驯服大型语言模型(LLMs)的五种方法,及具体方法选择思路

引言 随着时间的发展,大型语言模型不再停留在演示阶段而是逐步面向生产系统的应用,随着人们期望的不断增加,目标也发生了巨大的变化。在短短的几个月的时间里,人们对大模型的认识已经从对其zero-shot能力感到惊讶,转变为考虑改进模型质量、提高模型可用性。 「大语言模型(LLMs)其实就是利用高容量的模型架构(例如Transformer)对海量的、多种多样的数据分布进行建模得到,它包含了大量的先验

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

AI Toolkit + H100 GPU,一小时内微调最新热门文生图模型 FLUX

上个月,FLUX 席卷了互联网,这并非没有原因。他们声称优于 DALLE 3、Ideogram 和 Stable Diffusion 3 等模型,而这一点已被证明是有依据的。随着越来越多的流行图像生成工具(如 Stable Diffusion Web UI Forge 和 ComyUI)开始支持这些模型,FLUX 在 Stable Diffusion 领域的扩展将会持续下去。 自 FLU

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者