我与数据仓库那些事-数据模型

大数据领域建模综述

随着数据爆发式增长,如何将这些数据进行有序、有结构地分类组织和存储是我们面临的一个挑战。数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。

典型的数据仓库建模方法论

ER模型

采用ER建模建设数据仓库模型的出发点是整合数据,将各个系统中的数据以整个企业角度按主题进行相似性组合和合并,并进行一致性处理,为数据分析决策服务,但是并不直接用于分析决策。
其建模步骤分为三个阶段。
1.高层模型:一个高度抽象的模型,描述主要的主题以及主题间的
关系,用于描述企业的业务总体概况。
2. 中层模型:在高层模型的基础上,细化主题的数据项。
3. 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存
储,同时基于性能和平台特点进行物理属性的设计,也可能做一
些表的合并、分区的设计等。

维度模型

维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。其设计分为以下几个步骤。
1.选择需要进行分析决策的业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;还可以是一系列相关业务事件组成的业务流程,具体需要看我们分析的是某些事件发生情况,还是当前状态,或是事件流转效率。
2. 选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。
3.识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。
4.选择事实。确定分析需要衡量的指标 。

Data Vault 模型

Data Vault 模型由以下几部分组成。

  1. Hub :是企业的核心业务实体,由 实体 key、数据仓库序列代理键、装载时间、数据来源组成。
  2. Link :代表 Hub 之间的 关系。这里与 ER 模型最大的区别是将关系作为一个独立的单元抽象,可以提升模型的扩展性。它可以直接描述 1 :1 、 l :n 和 n:n 的关系,而不需要做任何变更。它由 Hub的代理键、装载时间、数据来源组成。
  3. Satellite :是 Hub 的详细描述内容, 一个 Hub 可以有多个 Satellite 。它由 Hub 的代理键、装载时间、来源类型、详细的 Hub 描述信息组成。

Anchor 模型

Anchor 对 Data Vault 模型做了进一步规范化处理, Lars. Ri:innback的初衷是设计一个高度可扩展的模型,其核心思想是所有的扩展只是添加而不是修改,因此将模型规范到 6NF ,基本变成了 k-v 结构化模型。
我们看一下 Anchor 模型的组成。

  1. Anchors :类似于 Data Vault 的 Hub ,代表业务实体,且只有主键。
  2. Attributes :功能类似于 Data Vault 的 Satellite ,但是它更加规范化,将其全部 k-v 结构化, 一个表只有一个 Anchors 的属性描述。
  3. Ties :就是 Anchors 之间的关系,单独用表来描述,类似于 DataVault 的 Link ,可以提升整体模型关系的扩展能力。
  4. Knots :代表那些可能会在多个 Anchors 中公用的属性的提炼,比如性别、状态等这种枚举类型且被公用的属性。

指标体系

1 . 基本原则
( l )组成体系之间的关系
·派生指标由原子指标、时间周期修饰词、若干其他修饰词组合得到
派生指标

2 . 操作细则
( 1)派生指标的种类
派生指标可以分为三类 : 事务型指标、存量型指标和复合型指标。按照其特性不同,有些必须新建原子指标,有些可以在其他类型原子指标的基础上增加修饰词形成派生指标。
· 事务型指标 : 是指对业务活动进行衡量的指标。例如新发商品数、重发商品数、新增注册会员数、订单支付金额,这类指标需维护原子指标及修饰词,在此基础上创建派生指标。
· 存量型指标:是指对实体对象(如商品、会员)某些状态的统计。例如商品总数、注册会员总数,这类指标需维护原子指标及修饰词,在此基础上创建派生指标,对应的时间周期一般为“历史截
至当前某个时间”。
· 复合型指标:是在事务型指标和存量型指标的基础上复合而成的。例如浏览 UV-下单买家数转化率 , 有些需要创建新原子指标,有些则可以在事务型或存量型原子指标的基础上增加修饰词得到派生指标。
(2 )复合型指标的规则
· 比率型 : 创建原子指标,如 CTR、浏览 UV-下单买家数转化率、满意率等。例如,“最近 1 天店铺首页 CTR”,原子指标为“ CTR”,145 …I 大数据之路一一阿里巴巴大数据实践时间周期为“最近 l 天”,修饰类型为“页面类型”,修饰词为“店铺首页”。
· 比例型 : 创建原子指标,如百分比 、占 比。例如“ 最近 1 天无线支付金额占比”,原子指标为“支付金额占比”,修饰类型为“终端类型”,修饰词为“无线”。
·变化量型:不创建原子指标,增加修饰词,在此基础上创建派生指标。例如,“最近 l 天订单支付金额上 l 天变化量”,原子指标为“订单支付金额”,时间周期为“最近 1 天”,修饰类型为“统计方法”,修饰词为“上 l 天变化量”。
·变化率型:创建原子指标。例如,“最近 7 天海外买家支付金额上 7 天变化率”,原子指标为“支付金额变化率”,修饰类型为“ 买家地域”,修饰词为“海外买家”。
·统计型 (均值、分位数等):不创建原子指标,增加修饰词,在此基础上创建派生指标;在修饰类型 “统计方法”下增加修饰词,如人均、日均、行业平均、商品平均 、 90 分位数 、 70 分位数等。例如,“自然月日均 UV”,原子指标为“ UV”,修饰类型为“统计方法”,修饰词为“日均”。
· 排名型 : 创建原子指标, 一般为 top_xxx_xxx ,有时会同时选择rank 和 top_xxx_xxx 组合使用。创建派生指标时选择对应的修饰词如下:
〉统计方法(如降序、升序)。
》排名名次(如 TOP IO )。
》排名范围(如行业、省份、一级来源等)。
》根据什么排序(如搜索次数、 PV )。
· 对象集合型 : 主要是指数据产品和应用需要展现数据时,将一些对象以 k-v 对的方式存储在一个字段 中,方便前端展现。比如趋势图、 TOP 排名对象等。其定义方式是,创建原子指标, 一般为
xxx 串:创建派生指标时选择对应的修饰词如下:
〉统计方法(如降序、升序)。
》排名名次(如 TOPIO ) 。
〉排名范围(如行业、区域)。
3 . 其他规则
( I )上下层级派生指标同时存在时
如最近 l 天支付金额和最近 l 天 PC 端支付金额,建议使用前者,把 PC 端作为维度属性存放在物理表中体现。
(2 )父子关系原子指标存在时
当父子关系原子指标存在时,派生指标使用子原子指标创建派生指
标。如 PV 、 IPV (商品详情页 PV ),当统计商品详情页 PV 时,优先选择子原子指标。

模型层次

阿里巴巴的数据团队把表数据模型分为三层 :操作数据层( ODS )、公共维度模型层( CDM )和应用数据层( ADS ), 其中公共维度模型层包括明细数据层( DWD )和汇总数据层( DWS )。

业界常用的模型实施过程

1 . Kimball 模型实施过程
Kimball 维度建模主要探讨需求分析、高层模型、详细模型和模型审查整个过程。构建维度模型一般要经历三个阶段:第一个阶段是高层设计时期 ,定义业务过程维度模型的范围,提供每种星形模式的技术和功能描述;第二个阶段是详细模型设计时期,对每个星形模型添加属性和度量信息;第三个阶段是进行模型的审查、再设计和验证等工作,第四个阶段是产生详细设计文档,提交 ETL 设计和开发。
( 1)高层模型
高层模型设计阶段的直接产出目标是创建高层维度模型图,它是对业务过程中的维表和事实表的图形描述。确定维表创建初始属性列表,为每个事实表创建提议度量。
(2 )详细模型
详细的维度建模过程是为高层模型填补缺失的信息,解决设计问题,并不断测试模型能否满足业务需求,确保模型的完备性。确定每个维表的属性和每个事实表的度量,并确定信息来源的位置、定义,确定属性和度量如何填人模型的初步业务规则。
(3 )模型审查、再设计和验证
本阶段主要召集相关人员进行模型的审查和验证,根据审查结果对详细维度进行再设计。
(4 )提交 ETL 设计和开发
最后,完成模型详细设计文档,提交 ETL 开发人员,进入 ETL 设计和开发阶段,由 ETL 人员完成物理模型的设计和开发。上述内容主要引用自 Ralph Kimball 等的 The Data 肋rehouseLifecycle Toolkit,具体细节请参考原著作。
2. Inmon 模型实施过程
Inmon 对数据模型的定位是:扮演着通往数据仓库其他部分的智能路线图的角色。由于数据仓库的建设不是一蹦而就的,为了协调不同人员的工作以及适应不同类型的用户,非常有必要建立一个路线图一一-数据模型,描述数据仓库各部分是如何结合在一起的。
Inmon 将模型划分为三个层次,分别是 ERD (Entity RelationshipDiagram ,实体关系图)层、 DIS ( Data Item Set , 数据项集)层和物理层( Physical Model ,物理模型)。ERD 层是数据模型的最高层,该层描述了公司业务中的实体或主题域以及它们之间的关系; ERD 层是中间层,该层描述了数据模型中的关键字、属性以及细节数据之间的关系;物理层是数据建模的最底层 ,该层描述了数据模型的物理特性。
Inmon 对于构建数据仓库模型建议采用螺旋式开发方法,采用迭代方式完成多次需求。但需要采用统一的 ERD 模型,才能够将每次迭代的结果整合在一起。 ERD 模型是高度抽象的数据模型,描述了企业完整的数据。而每次迭代则是完成 ERD 模型的子集,通过 DIS 和物理数据模型实现。
上述内容主要引用自 Inmon 的 Building the Data 肋rehouse , 具体细节请参考原著作。
3 . 其他模型实施过程
在实践中经常会用到如下数据仓库模型层次的划分,和 Kimball 、Inmon 的模型实施理论有一定的相通性,但不涉及具体的模型表达。·业务建模,生成业务模型,主要解决业务层面的分解和程序化。
3. 领域建模,生成领域模型,主要是对业务模型进行抽象处理, 生成领域概念模型。
4. 逻辑建模,生成逻辑模型,主要是将领域模型的概念实体以及实体之间的关系进行数据库层次的逻辑化。
5. 物理建模,生成物理模型,主要解决逻辑模型针对不同关系数据库的物理化以及性能等一些具体的技术问题。

维表设计

第一步:选择维度或新建维度。作为维度建模的核心,在企业级数据仓库中必须保证维度的唯一性。以淘宝商品维度为例,有且只允许有一个维度定义。
第二步:确定主维表。此处的主维表一般是 ODS 表,直接与业务系统同步。以淘宝商品维度s_auction_auctions 是与前台商品中心系统同步的商品表,此表即是主维表。
第三步:确定相关维表。数据仓库是业务源系统的数据整合,不同业务系统或者同 一业务系统中的表之间存在关联性。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成
维度属性。以淘宝商品维度为例,根据对业务逻辑的梳理,可以得到商品与类目、 SPU 、 卖家、店铺等维度存在关联关系。
第四步 :确定维度属性。本步骤主要包括两个阶段,其中第一个阶段是从主维表 中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。以淘宝商品维度为例,从主维表 (s_auction_auctions )和类目、 SPU、卖家、店铺等相关维表中选择维度属性或生成新的维度属性。

高级话题

水平拆分和垂直拆分
维度变化
特殊维度
		层次递归维度
		行为维度
		多值维度
		杂项维度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值