数据仓库建模的目的是为了更好地组织和管理数据,使其更加易于查询和分析。通过数据仓库建模,企业可以更好地理解其业务数据,从而做出更准确的决策。一般主要从以下四点考虑:

1. 访问性能:能够快速查询所需的数据,减少数据I/O。

2. 数据成本:减少不必要的数据冗余,实现计算结果数据复用,降低大数据系统中的存储成本和计算成本。

3. 数据质量:保证数据的准确性、完整性、一致性和可靠性。

4. 可扩展性:能够支持不断增长的数据量和不断变化的业务需求。

访问性能:数据仓库能够快速查询所需的数据,减少数据I/O。

数据成本:数据仓库减少不必要的数据冗余,实现计算结果数据复用,降低大数据系统中的存储成本和计算成本。

使用效率:数据仓库改善用户应用体验,提高使用数据的效率。

数据质量:数据仓库改善数据统计口径的不一致性,减少数据计算错误的可能性,提供高质量的、一致的数据访问平台。

常见的建模方法包括范式建模、维度建模、Data Vault模型、Anchor模型等等。其中,目前主流还是维度建模,会夹杂着范式建模。范式建模(E-R模型)将事物抽象为“实体”、“属性”、“关系”来表示数据分析关联和事物描述;ER模型是数据库设计的理论基础,当前几乎所有的OLTP系统设计都采用ER模型建模的方式,且该建模方法需要满足3NF。但是随着企业数据的高增长、复杂化,数仓全部使用ER模型建模显得越来越不合时宜。因为其按部就班的步骤、三范式等不适合现代化复杂、多变的业务组织。

维度建模是面向分析的设计技术。Ralph Kimball提出对数据仓库维度建模,并且将数据仓库中的表划分为事实表、维度表两种类型。事实表包含所有度量值和行标识符;维度表包含所有维度值和行标识符。通过维度建模可以提高查询性能并增加数据冗余。

在ER模型中,抽象出了有实体、关系、属性三种类别。在现实世界中,每一个操作型事件,基本都是发生在实体之间的,伴随着这种操作事件的发生,会产生可度量的值,而这个过程就产生了一个事实表,存储了每一个可度量的事件。以电商行业为例:电商场景:一次购买事件,涉及主体包括客户、商品、商家,产生的可度量值 包括商品数量、金额、件数等。

事实表根据粒度的角色划分不同,可分为事务事实表、周期快照事实表、累积快照事实表。注意:这里需要值得注意的是,在事实表的设计时,一定要注意一个事实表只能有一个粒度,不能将不同粒度的事实建立在同一张事实表中。

事务事实表,用于承载事务数据,通常粒度比较低,它是面向事务的,其粒度是每一行对应一个事务。例如产品交易事务事实、ATM交易事务事实。

周期快照事实表按照一定的时间周期间隔(每天、每月)来捕捉业务活动的执行情况,一旦装入事实表就不会再去更新。它是事务事实表的补充。用来记录有规律的、固定时间间隔的业务累计数据,通常粒度比较高。例如账户月平均余额事实表。

累积快照事实表用来记录具有时间跨度的业务处理过程的整个过程的信息,每个生命周期一行。通常这类事实表比较少见。

2)维度表

维度顾名思义就是业务过程发生或分析角度。比如从颜色、尺寸的角度来比较手机外观;从CPU、内存等方面比较手机性能。维度表一般为单一主键。在ER模型中,实体为客观存在的事物会带有自己描述性属性;属性一般为文本性、描述性。这些描述被称为维度。

比如商品,单一主键:商品ID;属性包括产地、颜色、材质、尺寸、单价等。但并非属性一定是文本性;比如单价、尺寸均为数值型描述性。日常主要的维度抽象包括时间维度表、地理区域维度表等。

案例:某电商平台经常需要对订单进行分析;以某宝购物订单为例;用维度建模的方式设计该模型;涉及到事实表为订单表和订单明细表;维度包括商品维度、用户维度、商家维度、区域维度和时间维度;具体如下:

- 商品维度:商品ID、商品名称、商品种类、单价和产地等。

- 用户维度:用户ID、姓名、性别、年龄、常住地、职业和学历等。

- 时间维度:日期ID、日期周几上/中/下旬是否周末是否假期等。

维度建模按数据组织类型划分可分为星型模型、雪花模型、星座模型。其中,星型模型主要是维表和事实表,以事实表为中心,所有维度直接关联在事实表上,呈星型分布;雪花模型,在星型模型的基础上,维度表上又关联了其他维度表。这种模型维护成本高,性能方面也较差,所以一般不建议使用。尤其是基于hadoop体系构建数仓,减少join就是减少shuffle,性能差距会很大。星座模型是对星型模型的扩展延伸,多张事实表共享维度表。数仓模型建设后期,大部分维度建模都是星座模型。

星型模式的核心是一个大的中心表(事实表),一组小的附属表(维表)。而雪花模式则是在星型模式的基础上增加了更多的维属性和更多的维表。星座模式则是对星型模式的扩展延伸,多张事实表共享维度表。

Data Vault模型是由Dan Linstedt在20世纪90年代提出的,是一种数据仓库领域中广泛使用的关系型数据库的设计模型。它旨在为企业提供一个可扩展的数据仓库解决方案。Data Vault模型是将企业业务活动映射到数据仓库中的建模方法,它是一种将企业业务过程抽象为一系列业务活动,并将这些活动与数据域相关联的模型 。

Data Vault模型包含三种基本结构:中心表-Hub、链接表-Link和卫星表-Satellite。其中,中心表-Hub是唯一业务键的列表,唯一标识企业实际业务,企业的业务主体集合;链接表-Link表示中心表之间的关系,通过链接表串联整个企业的业务关联关系;卫星表-Satellite则表示历史的描述性数据,是数据仓库中数据的真正载体 。

维度建模是专门针对分析场景而设计的一种数据仓库模型,其核心目标是快速、灵活地解决分析需求,同时具备处理大规模数据的快速响应性能。这种建模方法具有很强的针对性,主要应用于构建数据仓库和OLAP引擎的低层数据模型。

相较于传统的数据仓库模型选择方法,数仓模型的选择更加灵活,不会受限于某一种特定的模型方法。同样,数仓模型的设计也可以根据实际需求场景进行调整和优化,以满足不同的业务需求。

在进行数仓模型设计时,需要充分考虑到灵活性、可扩展性和对终端用户的透明性。这意味着模型设计应该能够适应不断变化的业务需求和技术环境,同时保证用户能够方便地理解和使用模型。此外,模型设计还需要考虑到技术可靠性和实现成本,以确保模型能够在实际应用中发挥出最大的效益。

常见的建模工具包括Erwin、PowerDesigner、Visio等专业软件,以及Excel等通用办公软件。一些企业也会自主研发建模工具,或者选择使用阿里等成熟套装组件产品来辅助建模工作。

总之,维度建模是一种非常灵活且高效的数据仓库建模方法,适用于各种分析场景。通过合理选择和设计数仓模型,可以更好地满足企业的数据分析需求,提高数据挖掘和决策的准确性和效率。