人气值 369

理论精讲,快速入门数仓建设与维度建模

数据仓库快速入门

数据仓库(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 :联机分析处理)面向批量读写数据的操作,不关注事务处理一致性,主要是关注数据的整合以及大数据查询和处理中的性能,因此一般采用维度建模的方法。