共计 3904 个字符,预计需要花费 10 分钟才能阅读完成。
近日,2022 年个推 TechDay“治数训练营”系列直播课第一期圆满举办。个推资深大数据研发工程师为大家深入浅出地介绍了数据仓库的前世今生以及数据建模的罕用办法。
本文对“治数训练营”第一期《数据仓库与维度建模》的干货内容进行了总结,同时也筛选了直播间的精彩发问做了 Q &A 梳理,带大家一起回顾首期课程。
点击观看直播回放视频 >>https://mp.weixin.qq.com/s/NK…
一、数据仓库疾速入门
数据仓库(Data Warehouse),简称“数仓”,是大数据从业者绕不开的一个概念。“数据仓库之父”Bill Inmon 最早提出数仓的概念,认为“数据仓库是一个面向主题的、集成的、绝对稳固的、反映历史变动的数据汇合,用于反对管理决策”。
此外,大数据架构专家 Ralph Kimball 在《The Data Warehouse Tookit》一书中,也对数仓进行了定义:“数据仓库是一个将源零碎数据抽取、荡涤、规格化,而后提交到维度数据存储的零碎,为决策的制订提供查问和剖析性能的撑持和实现”。
Bill Inmon 对数仓的定义更强调整体个性,Ralph Kimball 则是从施行流程角度来定义数仓。无论哪个定义,咱们都能从中看到企业建设数据仓库的意义重大。企业通过建设数仓,不仅可能将扩散在各业务零碎的数据进行集中化治理,突破数据孤岛;还能为后续高效剖析和利用数据,通过大数据赋能业务倒退奠定根底。
二、数仓建设与数据建模
那么,企业如何建设数据仓库?如何建设一个贴合业务需要的、高效、稳固、好用的数据仓库?这就须要思考数据模型的抉择和数据建模的问题。
“数据建模”是指对实体以及实体和实体之间的关系进行数据化形容和形象的过程。“数据模型”,则是指组织和存储数据的办法。
目前支流的数据建模办法有两种,别离是范式建模和维度建模:
范式建模
范式建模由 Bill Inmon 提出,指站在企业角度面向主题的形象,咱们个别应用 E - R 实体关系模型将事物形象为“实体”“属性”“关系”,来示意事物和事件关联。范式建模并非针对某个具体业务流程中实体对象关系的形象,它须要建模人员全面地、整体地理解企业的业务和数据,不仅施行周期长,对建模人员的能力要求也比拟高。
维度建模
维度建模由 Ralph Kimball 提出,主张从剖析决策的需要登程构建模型,为剖析需要服务。因而它重点关注如何使用户更疾速地实现数据分析,同时放弃较好的大规模简单查问的响应性能。相较范式建模,维度建模建设周期短,反对麻利迭代,个别不会对数仓架构做过多简单的设计。
在构建数仓时,咱们要依据具体的数据分析场景和业务解决零碎来抉择相应的数据建模办法。比方,就 OLTP 零碎(On-line Transaction Processing:联机事务处理)而言,因为其次要是面向随机读写的数据操作,关注事务的解决,因而咱们举荐应用 OLTP 零碎及传统数据库的企业通过范式建模的办法来设计数据模型,以解决在事务处理中的数据冗余和一致性问题。而 OLAP 零碎(On-line Analytical Processing:联机剖析解决)面向批量读写数据的操作,不关注事务处理一致性,次要是关注数据的整合以及大数据查问和解决中的性能,因而个别采纳维度建模的办法。
具体如何进行范式建模和维度建模呢?咱们联合案例别离来看。
三、范式建模办法及实例分析
首先来看范式建模的根本过程。
在进行范式建模时,咱们往往要听从不同的标准要求设计出正当的模型,这些不同的标准要求就是“范式”。目前行业中存在一范式、二范式、三范式等不同的模型建设标准。越高的范式带来的数据库冗余越小,然而在数据计算方面会更简单。企业大多采纳三范式建模,在保障灵便度以及数据计算速度的同时,升高数据处理的复杂度。
范式建模的过程能够被拆解为以下四步:
- 形象出主体
- 梳理主体之间的关系
- 梳理主体的属性
- 画出 E - R 关系图
比方,咱们要应用范式建模的形式设计某课程管理系统的数据模型。
该零碎次要用来治理某学校老师、学生和课程等相干数据,波及课程选修、考试成绩、老师授课、学生班级等方面。那咱们首先要梳理出实体,为老师、课程、学生、班级;其次梳理出实体之间的关系,包含老师讲授课程、学生选修课程、学生附属班级等;再次要列举出各实体和关系的属性,比方“学生”这个实体的属性有姓名、性别、年龄等,“学生选修课程”这个关系的属性有选修工夫、总课时等;第四步,则是画出 E - R 图,用矩形示意“实体”,用菱形示意“关系”,用椭圆形示意“属性”,以可视化的形式清晰展现出主体和主体之间的关系。
四、维度建模办法及实例分析
相比范式建模,维度建模稍为简单,包含事实表和维度表两块内容。
事实表
首先看事实表。事实表分三种,包含事务性事实表、周期性快照事实表、累计快照事实表。
事务性事实表通常用一条记录示意某个工夫点产生的事件或行为。比方电商业务场景中的订单领取业务,个别就采纳事务性事实表来组织和存储数据。
周期性快照事实表的一条记录形容的则是一个实体在某一段时间内的状态或现状,比方某顾客每月的积分余额就属于一条典型的周期性快照事实表记录。
累计快照事实表的一条记录则是对某业务流程中产生的多个事件的累计记录,个别是为了满足某个流程节点运行效率的统计需要。
咱们以一个事务性事实表的设计过程为例来理解事实表的设计办法:
- 抉择与数据分析需要无关的业务过程。“业务过程”是指在业务流程中不可拆分的行为事件。比方,电商业务场景下,购物的业务流程中就包含加购、下单、领取、商家发货、用户确认收货等业务过程。如果咱们要剖析销售额,那“领取”就是必选的业务过程。
- 申明粒度。咱们要尽量抉择最细粒度,准确定义事实表的每一行所示意的业务含意,以确保事实表有最大的灵活性。比方,用户可能在一个订单外面购买多个商品,那每个购买的商品就是一个子订单,咱们个别抉择将子订单作为申明粒度。
- 确定维度。维度是指业务过程所处的环境信息,比方用户在某个工夫购买了某个店铺的某个商品,那店铺所属行业、商品所在类目等均能够被认为是维度。
- 确定事实,即确定业务过程的度量指标。比方“领取”这个业务过程的度量指标为领取金额,更简单的电商业务场景下,可能还包含摊派邮费、折扣金额等指标。
须要阐明的是,每个数据仓库都蕴含一个或者多个事实表,事实表是对剖析主题的度量,它蕴含了与各维度表相关联的外键,并通过 Join 形式与维度表关联。
维度表
维度表则是用户剖析数据的窗口,记录了事实表中相干事务、事件的属性及属性含意。
维度表的设计过程,次要分为以下四步:
- 抉择维度。比方要生成一个商品维度表,那咱们抉择的维度就是商品维度。
- 确定主维表。比方要建商品维度表,那主维表就是来自于业务零碎的商品表。
- 确定相干维度表。主维表确定之后,其余的相干维度表也就随之确定。比方商品维度表的相干维度表有商品类目表、所属品牌表、商品所属行业表等。
- 确定维度属性。这些属性个别来自于主维表和相干维表。咱们将主维表和相干维表的属性集成,并对雷同属性合并(比方,商品类目表和所属品牌表中可能都会有所属行业属性,那咱们就能够对所属行业这个属性进行合并),而后将最终失去的属性放到要生成的维度表里。
此外,本期个推 TechDay“治数训练营”还对范式建模与维度建模的根本准则、建模中的常见问题(比方范式建模中的传递依赖问题、维度建模中的迟缓变动维问题等)、数仓分层等进行了具体论述。
更多精彩内容,猛戳直播回顾视频 Get 吧!
彩蛋:直播间 Q &A 精选
1. 什么样的数据仓库才算建设得比较完善?
数据仓库次要是为数据分析服务。一个欠缺的数仓首先要满足企业对业务剖析的需要。
数仓的建设是一个一直迭代和优化的过程,须要从老本、性能、效率等方面综合思考,以寻求均衡。一般来讲,在企业业务稳固倒退阶段,咱们的工作次要以保护现有数仓为主,同时做一些欠缺优化的工作;对于业务迭代比拟快的企业,针对一些摸索类的业务剖析需要,咱们须要对数仓进行新的开发投入。
2. 在数仓设计中,需求方的剖析粒度会随着工夫和人员的了解以及需要的变动产生很大的变动,如何在数仓建设初期尽可能思考到这个问题?
这就须要数仓建设团队在后期就做好需要调研、业务调研、数据调研等工作。
应用维度建模的状况下,咱们要严格遵循事实表的设计准则,在申明粒度时,要尽量抉择最新的粒度,并且保留尽可能多的数据维度信息,确保事实表有最大的灵活性。
3. 针对迟缓变动维的问题,是否能够将维度表变成拉链表来解决呢?
拉链表也是罕用的解决思路,属于插入新行的解决办法,与直播中讲到的插入新行的例子很相似。
不同的是,咱们直播中举例的是“商品 key”代理主键作为关联事实表的字段,所以能够通过批改“商品 key”实现维度变动的解决;而拉链表是通过不批改关联字段,间接在表中减少两个字段 start、end 来标记数据行的无效工夫,在应用时须要先筛选无效的数据行。
相对来说,批改代理主键的办法比拟好了解,也更不便用户应用。
4. 数据指标方面,在存在多个业务部门的状况下,如何将雷同或者近似名称的指标做对立治理?当呈现名称雷同但定义不同的指标时,如何解决?
该问题波及到数仓建设标准中的指标命名标准设计,能够在指标命名中防止该问题,比方在命名时减少部门维度等。
另外,在咱们“治数训练营”的后续课程中也会有相应的内容介绍,敬请期待。
举荐书目
当一个公司在策略上决定做云计算和大数据服务后,如何将该策略进行逐渐合成,最终落地施行?这其中波及技术构建、经营治理、组织能力建设等一系列流动,有哪些方法论和实际可供借鉴?置信本书能给您带来灵感!
** 关注个推技术实际微信公众号,
后盾回复“数仓”,
获取本期直播课件~**