数仓建模方法论

这篇具有很好参考价值的文章主要介绍了数仓建模方法论。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.数仓建模的理由

数据建模的主要目的是降低成本,提高数据的利用效率。尤其是大数据时代的到来,数据的多样化,巨量,更需要有效的有针对性数据建模方法。

大数据的数仓建模正是通过建模的方法,更好的组织、存储数据,以便在性能、成本、效率和数据质量之间找到最佳平衡点,一般我们会从以下面四点考虑:

  • 性能:能够快速查询所需的数据,减少数据I/O的吞吐。
  • 成本:减少不必要的数据冗余,实现计算结果的复用,降低大数据系统中的存储成本和计算成本。
  • 效率:改善用使用数据的体验,提高使用效率。
  • 质量:改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的、一致的数据访问平台。

因此,毋庸置疑,大数据系统、数据平台都需要数据模型方法来帮助更好的组织和存储数据,数据建模的工作,也正是围绕上述四个指标取得最佳的平衡而努力。

2.数据建模的方法

数据仓库本质是从数据库衍生出来的,所以数据仓库的建模也是不断衍生发展的。

从最早的借鉴关系型数据库理论的范式建模,到逐渐提出维度建模等等,越往后建模的要求越高,越需满足3NF4NF等。但是对于数据仓库来说,目前主流还是维度建模,会夹杂着范式建模。

数据仓库建模方法论可分为:E-R模型、维度模型、Data Vault模型、Anchor模型。

2.1 E-R模型

1). 简介

ER模型,全称为实体联系模型、实体关系模型或实体联系模式图(ERD)(英语:Entity-relationship model)由美籍华裔计算机科学家陈品山发明,是概念数据模型的高层描述所使用的数据模型或模式图。

ER模型常用于OLTP数据库建模,应用到构建数仓时更偏重数据整合,站在企业整体考虑,将各个系统的数据按相似性一致性、合并处理,为数据分析、决策服务,但并不便于直接用来支持分析。缺陷:需要全面梳理企业所有的业务和数据流,周期长,人员要求高。

ER模型分为实体、属性、关系三个核心部分。实体是长方形体现,而属性则是椭圆形,关系为菱形。

ER模型的实体(entity)即数据模型中的数据对象,例如人、学生、音乐都可以作为一个数据对象,用长方体来表示,每个实体都有自己的实体成员(entity member)或者说实体对象(entity instance),例如学生实体里包括张三、李四等,实体成员(entity member/实体实例(entity instance 不需要出现在ER图中。

ER模型的属性(attribute)即数据对象所具有的属性,例如学生具有姓名、学号、年级等属性,用椭圆形表示,属性分为唯一属性( unique attribute)和非唯一属性,唯一属性指的是唯一可用来标识该实体实例或者成员的属性,用下划线表示,一般来讲实体都至少有一个唯一属性。

ER模型的关系(relationship)用来表现数据对象与数据对象之间的联系,例如学生的实体和成绩表的实体之间有一定的联系,每个学生都有自己的成绩表,这就是一种关系,关系用菱形来表示。

ER模型中关联关系有三种:

111:1 11关系是指对于实体集A与实体集BA中的每一个实体至多与B中一个实体有关系;反之,在实体集B中的每个实体至多与实体集A中一个实体有关系。

1对多1:N 1对多关系是指实体集A与实体集B中至少有N(N>0)个实体有关系;并且实体集B中每一个实体至多与实体集A中一个实体有关系。

多对多M:N :多对多关系是指实体集A中的每一个实体与实体集B中至少有M(M>0)个实体有关系,并且实体集B中的每一个实体与实体集A中的至少NN>0)个实体有关系。

2). ER实体详解

ER的实体还可以分为弱实体和复合实体:

弱实体:一个实体必须依赖于另一个实体存在,那么前者是弱实体,后者是强实体,弱实体必须依赖强实体存在,例如上图的学生实体和成绩单实体,成绩单依赖于学生实体而存在,因此学生是强实体,而成绩单是弱实体。

弱实体和强实体的联系必然只有1:N或者1:1,这是由于弱实体完全依赖于强实体,强实体不存在,那么弱实体就不存在,所以弱实体是完全参与联系的,因此弱实体和强实体之间的联系也是用的双线菱形。

复合实体:复合实体也称为联合实体或者桥接实体,常常用于实现两个或者多个实体间的M:N关系,它由每个关联实体的主体组成,用长方体内加一个菱形来表示。

下图就是一个典型的复合实体,因为只是举例,相对粗糙,用户和商品两个实体是M:N的关系,中间又订单这个实体联系,因此订单这个实体是一个复合实体,同时如果用户实体不存在,就没有订单实体存在,因此对于用户实体来说订单是弱实体,同理商品实体如果不存在,同样不存在订单实体,因此对商品实体而言订单是弱实体

2). ER属性补充讲解:

er图的属性还细分为复合属性、多值属性和派生属性、可选属性,同时还有用来表示联系的属性,称为联系属性。

复合属性(composite attribute)复合属性是指具有多个属性的组合,例如名字属性,它可以包含姓氏属性和名字属性

复合属性也有唯一属性,例如学生的所在班级属性,由于多个年级都有班级,所以单单班级属性是不唯一的,但是和年级组成的复合属性后则可以匹配成唯一属性。

多值属性(multivalued attribute):一个实体的某个属性可以有多个不同的取值,例如一本书的分类属性,这本书有多个分类,例如科学、医学等,这个分类就是多值属性, 用双线椭圆表示。

派生属性(derivers attribute):是非永久性存于数据库的属性。派生属性的值可以从别的属性值或其他数据(如当前日期)派生出来,用虚线椭圆表示,如下图。

下面的社团人数就是典型的派生属性,随着学生实例的参加的社团变化,社团人数属性也会变化,一般来讲派生属性不存在于数据库中,而是通过相应的公式进行计算得到,如果要放到数据库中,那么隔一段时间就要进行更新,否则会出现数据错误。

可选属性(optional attribute)并不是所有的属性都必须有值,有些属性的可以没有值,这就是可选属性,在椭圆的文字后用(O)来表示

关系属性:关系属于用户表示多个实体之间关系所具有的属性,一般来讲M:N的两个实体的关系具有关系属性,在1:11M的实体关系中关系属性并不必要。

ER实体关系模型案例

假设在电商购物系统中,对商品、用户设计ER实体关系模型图来表示商品信息、用户购买商品之间的业务联系,完成数据库逻辑模型设计。

设计ER实体关系模型图,步骤如下:

1. 抽象出实体

2. 找出实体之间的关系

3. 找出实体的属性

4. 画出E-R关系图

转化为传统数据库表:

所以,ER模型完全可以使用图数据库代替。

2.2 维度建模

1). 维度建模简介

维度模型是数据仓库领域大师Ralph Kimall所倡导,他的《数据仓库工具箱》,是数据仓库工程领域最流行的数仓建模经典。 维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能。

维度建模是专门应用于分析型数据库、数据仓库、数据集市建模的方法。数据集市可以理解为是一种"小型数据仓库"

维度建模的概念是比较少的,下面简单介绍一下。

2).事实表

发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。从最低的粒度级别来看,事实表每一行都对应于一个度量事件,反之亦然。

事实表表示对分析主题的度量。比如一次购买行为我们就可以理解为是一个事实。

图中的订单表就是一个事实表,可以理解他就是在现实中发生的一次操作型事件,每完成一个订单,就会在订单中增加一条记录。

事实表的特征:表里没有存放实际的内容,他是一堆主键的集合,这些ID分别能对应到维度表中的一条记录。事实表包含了与各维度表相关联的外键,可与维度表关联。事实表的度量通常是数值类型(//),且记录数会不断增加,表数据规模迅速增长。

3).维度表

维度表示要对数据进行分析时所用的一个量,比如你要分析产品销售情况,你可以选择按类别进行分析,或按区域分析。这区域,类别就分别就构成一个维度。上图中的用户表,商家表,时间表这些都属于维度表。这些表都有一个唯一的主键,然后在表中存放了详细的数据信息。

例如:交易金额分析

男性用户的订单金额、联想商品的订单金额、第一季度的订单金额、收集的订单金额、家里下单的订单金额。

维度表的特征:每个维度表都包含单一的主键列。维度表的主键可以作为与之关联的任何事实表的外键,当然维度表行的描述环境应与事实表行完全对应。维度表通常比较宽,是扁平型非规范表,包含大量的低粒度的文本属性。

总得来说,在数据仓库中不需要严格遵守规范化设计原则。因为数据仓库的主导功能就是面向分析的,以查询为主,不涉及数据更新操作。

需要强调的是:

  • 事实表的设计是以能够正确记录历史信息为准则。
  • 维度表的设计是以能够以适合的角度来聚合主题内容为准则。

4).维度模型

a.星型模型

星型模型(star schema)是最常用的维度建模方式。星型模型是以事实表为中心,所有的维度表直接连接在事实表上,像星星一样。

星型模型的维度建模是由一个事实表和一组维表组成,且具备以下特点:

  • 维表只和事实表关联,维表之间没有关联;
  • 每个维表主键为单例,且该主键放置在事实表中,作为两边连接的外键;
  • 以事实表为核心,维度表围绕核心呈星型分布;

b.雪花模型

雪花模型(snowflake schema)是对星型模型的扩展。雪花模型的维表可以拥有其他维度表,虽然这种模型相比星型更加规范一些,但是由于这种模型不太容易理解,维护成本比较高,而且性能方面需要关联多层维表,性能也比 星型模型要低。所以一般不是很常用。

c.星座模型

星座模型是星型模型延伸而来,星型模型是基于一张事实表的,而星座模型是基于多张事实表的,而且共享维度信息。前面的两种维度建模方法都是多维表对应于单事实表,但是在很多时候维度空间内的事实表不止一个,而一个维表也可能被多个事实表用到。在业务发展的后期,绝大部分维度建模都采样这种星座模式。

5). 维度变化

你的应用必须反映出移植到仓库中的数据源所发生的数据变化。维表中的数据特别容易变化。但你怎么维护记录的历史变化呢?

  • 第一个也是最简单的方法是重写现有的记录而不跟踪变动。幸运的是,这个方法被许多维度所接受。例如,如果一个部门名称从“财务”变为“财务和会计”,你很可能并不需要记录这种历史变化。但是,从客户和学生的角度看,常常有必要保持跟踪姓名、婚姻状态、教育程度和其它属性的变化——你的应用必要能够获得当前的以及历史的数值。拉链表最常用。
  • 管理维度慢慢改变的第二个方法是数值发生变化时创建一个新的记录,并将旧的记录标记为旧记录。
  • 第三个也是最后的一个方法是维护在维表的同一行中不同列的变化域的历史数值。

6). 事实变化。

通常人们认为事实表中的记录是静态的——一旦这条记录录入到了仓库中你的工作就结束了,是吗?不幸的是这个回答是它取决于。在某些情况下像在一个数据仓库跟踪病人的住院情况,所有的记录通常都是静态的。如果你从11日到25日住院,那这条记录不太可能改变。

但是考虑到零售行业,所有的销售都不是最终的——我肯定你知道有些人经常将它们购买的货物因为各种原因而退回商店。一些公司管理这种交易为一系列信用和负债来结算每笔交易。但在其它的情况下你必须更新或删除事实表记录,甚至在它们添加到了数据仓库之后。例如,如果一个股票交易记录不正确,用一个相反的交易来结算是不能接受的。还有另一个问题要考虑:你可能不希望你的客户知道你的交易系统中存在的问题。甚至你希望他们只在数据被修正后才看到数据。

处理方法一:

将数据放在暂存区域直到它经过了质量检查,然后将其移植到仓库中。然而有时甚至是最全面的测试也无法捕获数据源中的所有错误,你可能需要通过处理这些包含错误数据的部分来更新多维数据集。这就是为什么有必要保持你的分析服务部分尽可能的小以便处理可以相对快一些。

处理方法二:

采用一个回写分区。采用多维数据集回写,你没有真的改变关系数据仓库中的数据;而是在一个单独的分区中添加了一条记录。当用户查询一个特殊的测量值组时,分析服务将只读分区的数据和回写分区的数据结合起来,然后显示结果。当然,执行这样的查询计算会额外增加分析服务器的执行时间,并会造成性能下降。

2.3 Data Vault建模

Data Vault是一种由Dan Linstedt提出的数据仓库建模方法,主要应用于企业级数据仓库建模。

不同于三范式数据仓库模型、维度模型,Data Vault模型主要用于存储来自多个业务系统的完整历史数据。它不区分数据在业务层面的准确与否,装在数据也不做验证和清洗,因此,Data Vault模型可用于跟踪所有数据的来源。

它的每一行数据都需要包含来源系统和装在时间,用于审计和跟踪数据来源系统。

2.3.1 Data Vault模型定义

按照Dan Linstedt的定义,Data Vault模型是面向细节的、可追踪历史的、一组有链接关系的规范化的表的集合。它综合了三范式建模和星型模型的优点,其设计理念是满足企业对数据模型灵活性、可扩展性、一致性和对需求的适应性要求,是专门针对企业级数据仓库需要的一套建模方法。

Data Vault模型只按照业务数据的原始状态存储数据,不做任何过滤、清洗、转换,比如:同一个客户在不同系统有不同地址,Data Vault模型会存储多个不同版本的客户地址数据。

该模型的主要特点:

  • 与源系统完成独立。
  • 所有数据基于时间戳,即便数据质量很低,也不能清洗掉数据。
  • 可以适应源数据的各种变化,并可以灵活的实现模型扩展。
  • 数据的来源可以完全追踪,并且数据处理作业可以支持重载。

2.3.2 Data Vault模型体系

Data Vault模型由中心表(hub)、链接表(link)、附属表(satellite)三部分组成,其核心是中心表,用于存储业务主键,链接表用于存储业务关系,附属表用于存储业务描述。

a. 中心表

中心表用于存储企业每个业务实体的业务主键,业务主键需要能够唯一标识一个业务实体。按照此定义,中心表与源系统无关,即无论业务主键是否用于多个业务系统,其在Data Vault模型中也只有一份数据。处于设计上的考虑,中心表一般由主键,业务主键,装载时间戳,数据来源系统四个字段构成,其中主键根据业务主键唯一分配,一般是与业务无关的序列数值。

b. link

链接表是不同中心表之间的关系链接,链接表一般由一组外键字段构成,表示一种业务关系,比如:交易表、客户关联账户等。链接表主要包括主键、外键1...、外键n、装载时间戳、数据来源等字段构成,其中主键对应多个外键的唯一组合,一般是与业务无关的序列数值。

c. satellite

附属表用于保存中心表和链接表的描述属性,包含了所有历史变化数据,附属表有且仅有一个唯一外键关联到中心表或者链接表。附属表主要包括主键、外键、属性1 ... 、属性n 、是否失效、失效时间戳、装载时间戳、数据来源系统,主键用于唯一标识附属表中的一行记录,一般是与业务无关的序列数值。

2.3.3 Data Vault 模型设计

根据Data Vault模型体系构成,Data Vault模型设计也由此分为三大部分。

a.中心表设计

1) 明确模型需要覆盖的业务范围。 

2) 按业务范围划分若干原子业务实体,比如:客户、产品、投资品种等。

3) 从业务实体中抽象业务主键,业务主键必须是可唯一标识业务实体且不会发生变化。

4) 按照业务主键生成中心表。

b. 链接表设计

1) 分析业务实体间的业务关系,并识别对应的中心表,这些业务关系可以是一对一、一对多、多对多多种关系。

2) 按业务关系涉及的中心表,提取中心表主键,组成构成链接表的外键,并确定链接表的主键。

说明:链接表内可以保存交易数据,也可以用附属表描述交易数据。

c. 附属表设计

附属表的设计相对比较简单,主要是从中心表、链接表出发,提取与中心表、链接表相关的上下文描述信息。由于同一业务实体的各类描述信息可能会经常变化、变化频率也不尽相同,因此需要按变化频率将不同属性信息分割,建立多个附属表。

为了访问数据的方便,可能需要设计PIT表,PIT表不是必须的,但是如果一个中心表有多个附属表,就有可能用到PIT表。PIT表的主键是有附属表关联的中心表提取而来,有几个附属表就会有几个字段用于记录附属表的变化时间戳。

Data Vault案例

2.4 Anchor模型

Anchor模型是Data Vault模型的进一步规范化,核心思想是所有的扩展只是添加而不会修改,因此将模型规范到6NF,基本变成了k-v结构化模型。
我们看一下Anchor模型的组成。
1.Anchors:类型于Data VaultHub,代表业务实体,且只有主键。
2.Attributes:功能类型于Data VaultSatellite,但是它更加规范化,将其全部k-v结构化,一个表只有一个Anchors的属性描述。
3.Ties:就是Anchors之间的关系,单独用表来描述,类似于Data VaultLink,可以提升整体模型关系的扩展能力。
4.Knots:代表那些可能会在多个Anchors中公用的属性的提炼,比如性别、状态等这种枚举类型且被公用的属性。文章来源地址https://www.toymoban.com/news/detail-451512.html

到了这里,关于数仓建模方法论的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数仓工程师理解复杂业务的思考方法论

    模型设计框架(业务过程驱动)还是在经典的三层数据模型架构下去进行,概念模型、逻辑模型、物理模型 首先概念模型其实是业务过程(流程图),其中需要考虑到几个方面: 1.数据 业务覆盖 业务感知、全业务流程图 2.过程 建模过程 实操       3.服务 服务流程 流程把

    2024年02月10日
    浏览(23)
  • 领域建模的体系化思维与6种方法论

    背景 软件工程师做的核心事情就是对现实世界的问题进行抽象然后用计算机的语言对其进行重新刻画,在通过信息化来提高生产力。而这其中一个关键环节就是如何对问题域进行建模,在过去的工作中经常遇到一个问题是前期因为业务比较简单所以设计的模型在支撑时没有发

    2024年02月10日
    浏览(30)
  • 收藏:不错的数据中台建设方法论

    数据中台建设方法论体系,需要从 组织、保障、准则、内容、步骤5个层面 全面考虑,以确保数据中台建设和实施能如期完成。 1种战略行动 ,把用数据中台驱动业务发展定位为企业级战略,全局谋划 2项保障条件 ,通过宣贯统一组织间的数据认知,通过流程加速组织变革

    2024年02月12日
    浏览(32)
  • 数据仓库性能测试方法论与工具集

    目录 目录 数据仓库 v.s. 传统数据库 数据仓库性能测试案例 性能指标 测试方案 测试场景 测试数据集 测试用例 性能指标 测试脚本工具 基准环境准备 硬件环境 软件环境 测试操作步骤 Cloudwave 执行步骤 导入数据集 TestCase 1. 执行 13 条标准 SQL 测试语句 TestCase 2. 执行多表联合

    2024年02月12日
    浏览(30)
  • MySQL数据库IO性能优化方法论

    作者:禅与计算机程序设计艺术 随着互联网信息化的发展,网站日益繁荣,用户对网站访问速度要求越来越高。如何提升网站数据库IO性能从而实现快速响应?本文将从数据库的优化角度出发,结合实际应用场景,进行系统地剖析、归纳和总结,为读者提供一个系统性、完整

    2024年02月06日
    浏览(37)
  • 构建数据中台的三要素:方法论、组织和技术

    知道要转型,要建设数据中台,却不知咋做,咋办? 现在有很多讲“如何建设数据中台”文章,观点各不相同: 数据中台是数据建设方法论,按照数据中台设计方法和规范实施就可建成数据中台 数据中台背后是数据部门组织架构变更,把原先分散的组织架构形成一个统一中

    2024年02月16日
    浏览(26)
  • 什么是主数据管理?企业主数据管理方法论

    主数据又被称为黄金数据,其价值高也非常重要。对企业来说,主数据的重要性如何强调都不为过,主数据治理是企业数据治理中最为重要的一环。主数据管理的内容包括  主数据管理标准、主数据应用标准  和  主数据集成服务标准  三大类。 主数据管理的作用和意义主要

    2024年02月13日
    浏览(23)
  • MATLAB实战应用-【数据处理篇】数据清洗(从方法论到实战应用)

    目录 前言 数据清洗需要达到什么要求 如何规范数据 一、解决数据的完整性问题:

    2023年04月08日
    浏览(31)
  • 二蛋赠书七期:《云原生数据中台:架构、方法论与实践》

    大家好!我是二蛋,一个热爱技术、乐于分享的工程师。在过去的几年里,我一直通过各种渠道与大家分享技术知识和经验。我深知,每一位技术人员都对自己的技能提升和职业发展有着热切的期待。因此,我非常感激大家一直以来对我的关注和支持。 为了回馈大家的厚爱,

    2024年02月05日
    浏览(33)
  • 分布式数据存储建设方法论——从HDFS架构优化与实践分析

    作者:禅与计算机程序设计艺术 随着互联网、云计算、大数据等新一代信息技术的出现和普及,数据量的激增、数据安全性的需求以及数据的分布式储存需求日益成为各大公司和组织面临的难题。传统的单体架构模式已经无法应付如此复杂的业务场景,因此,分布式数据存储

    2024年02月11日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包