跳转到主要内容
Chinese, Simplified

维度建模、数据仓库建模

什么是数据建模

在软件行业,信息表示(数字、文本、图片、声音、电影、关系)是关键。最后,它关系到我们存储、处理和移动信息的效率。同样,数据表示在数据项目中更为重要。一般来说,在数据分析世界中,我们有数据湖和数据仓库(另一个链接)来存储、处理数据。今天,我们将重点讨论数据仓库数据建模。

实体关系模型

数据仓库通常用于数据可视化、BI和数据分析的用例。这些工具通常使用SQL查询数据,并且通常显示一些聚合(例如sum、average、min、max)。我们通常使用实体关系模型(或表格模型,绝对不是图形模型),它与SQL一起表示数据。

OLTP与OLAP

在进行数据仓库数据建模之前,我们需要注意OLTP和OLAP之间的区别,它们都使用实体关系模型。然而,用例是不同的:OLTP用于事务性工作负载,它侧重于单个记录的读/写;而OLAP是用于分析工作负载的,它侧重于处理大量数据。尽管它们通常都使用实体关系模型,但也有重要的区别:OLTP通常使用规范化表,OLAP通常使用非规范化表。因为规范化设计有助于减少存储冗余,而非规范化设计则有助于降低联接和查询性能。

OLTP->3NF,快速写入,更新密钥级联到孩子挑战;OLAP->维度建模:快速读取,低粒度挑战

维度建模与数据仓库(data vault)

数据仓库通常专注于OLAP,为分析工作负载提供服务。数据建模方法通常包括Inmon方法、Kimball/dimensional方法、数据仓库甚至宽表。在BI/Reporting时代,Kimball方法论盖过了Inmon方法,因为它能更顺利地满足最终用户的需求,而宽表更像是在拥有单个数据集后的性能增强。我们将在本文中介绍Kimball/dimensional和data vault。

维度建模

数据集市

尺寸建模具有以下通用工作流程:

  • 识别业务流程:关注业务用户的需求
  • 确定粒度:决定要存储在主事实表中的数据级别
  • 确定维度和属性:业务流程事件的上下文,例如谁(例如客户)、什么(例如产品)、在哪里(例如地点)、何时(例如销售日期);属性是维度的各种特征,例如位置、大陆/国家/地区/州/城市/邮政编码
  • 识别事实和数字衡量:数据集市正在回答什么问题,例如销售额、交易量

数据保管库

当数据集市结构相对固定时(例如,不不断添加新的源,添加新的属性。当这种情况发生时,通常意味着刷新数据集市或使用雪花模式,这对数据集市来说太复杂了),维度建模非常有效。当您构建企业数据仓库时,当您希望集中所有分析数据时,通常情况并非如此。您将不断添加新的数据源,当前的数据源可能会不断添加新列,因为企业数据仓库是所有其他分析工作负载的基础,因此最好将重点放在灵活性上,这是数据保管库的主要好处。Data vault主要有三个组成部分:

  • Hub:核心业务实体,如客户、产品、订单等。Hub只存储关键信息,如业务实体ID、来源(保持沿袭)、时间戳
  • 链接:Hub实体之间的关系,仅包含联接键
  • 卫星:集线器或链接中实体的属性

添加新列时,只需将新的附属表添加到Hub或Link,然后添加新的ETL管道(不修改当前管道逻辑)。然而,权衡的结果是,当发生大量更改时,数据模型将变得越来越复杂,而当需要联接这些表时,查询将变得复杂。

以上文章的TLDR:数据仓库和数据仓库关系(可用于实现银层),金层的维度模型(数据集市和报告)

维度建模仍然最适合分析和报告,并且是业务用户最能理解的可见模型。Data Vault更适合大型企业数据仓库,Bill Inmon也建议使用,但不太适合分析和报告。

Data Vault更灵活,更容易添加新的源,更易于审核,并始终保留所有数据,因此您将能够始终重新创建DM。

理想的情况可能是将Data Vault用于企业数据仓库,将Dimensional Modeling用于数据集市。

data vault上的高级读取

何时不使用Data Vault?

  • 原因2:您只有一个源系统和/或相对静态的数据。一般不正确
  • 原因1:您需要将数据直接加载到报告工具中。可能是未构建EDW的小公司的用例

实际的数据vault建模示例

原文地址
https://blog.devgenius.io/data-warehousing-data-modeling-5a18c85943c3
本文地址
Article

微信

知识星球

微信公众号

视频号