老规矩,先看是什么,再说怎么做。

一、什么是数据仓库?

其实很多企业做数据仓库的时候,都忽略了数仓与BI、数据库的差异,只去搞底层数据,不去做数据服务和应用,其实就是把数据仓库给狭义化了。其实数据仓库可以看成是BI的基础版本、数据库的升级版本,我们可以把公司里的数据都想象成一个个文件夹,数据库就是这一个个文件柜,这个文件柜存放着非常多的数据,无论这个数据是什么、或者是如何组织的。而当我们的文件非常多、种类非常复杂的时候,我们的就想要寻找某个文件夹的时候,如果每个文件柜每个文件柜的去找,实际上是非常耗费成本的,因此我们不妨建立一个档案室,对不同的文件柜进行编号、归类、分组,方便我们快速定位数据源,这个档案室就是数据仓库。所以这时候我们需要更为庞大的数据仓库,帮助我们去对多个数据源的数据库数据进行抓取,而抓取数据源的过程就可以理解为ETL的工作,这样去理解一个企业的数据架构就会简单很多。
因此数据仓库的本质,其实就是整合多个数据源的历史数据进行细粒度的、多维的分析
帮助高层管理者或者业务分析人员做出商业战略决策或商业报表。
这里面就涉及到了数据仓库的架构,简单来说数据仓库分为四个层次:

  • ODS层:存放原始数据,直接加载原始日志、数据,数据保存原貌不做处理。
  • DWD层:结构与粒度原始表保持一致,对ODS层数据进行清洗DWS层:以DWD为基础,进行轻度汇总
  • ADS层:为各种统计报表提供数据这里要注意数据仓库的架构当中,各个系统的元数据通过ETL同步到操作性数据仓库ODS中,对ODS数据进行面向主题域建模形成DW(数据仓库),DM是针对某一个业务领域建立模型,具体用户(决策层)查看DM生成的报表。

也就是说,我们所看到的数据不是直接从数据底层抽取的,相当于我们访问数据仓库的时候,是让图书管理员帮你找一个文件柜,那么怎么更高效低去找,就是数据仓库建设中很重要的一部分工作——数据建模,包括数据的存储模型、逻辑模型、概念模型等等。

二、数据仓库的建模方式

建设数据模型既然是整个数据仓库建设中一个非常重要的关键部分,那么,怎么建设我们的数据仓库模型就是我们需要解决的一个问题。这里我们将要详细介绍如何创建适合自己的数据模型。
(1)数据仓库数据模型架构数据仓库的数据模型的架构和数据仓库的整体架构是紧密关联在一起的,我们首先来了解一下整个数据仓库的数据模型应该包含的几个部分。从下图我们可以很清楚地看到,整个数据模型的架构分成5 大部分,每个部分其实都有其独特的功能。从上图我们可以看出,整个数据仓库的数据模型可以分为大概5 大部分:系统记录域:这部分是主要的数据仓库业务数据存储区,数据模型在这里保证了数据的一致性。内部管理域:这部分主要存储数据仓库用于内部管理的元数据,数据模型在这里能够帮助进行统一的元数据的管理。汇总域:这部分数据来自于系统记录域的汇总,数据模型在这里保证了分析域的主题分析的性能,满足了部分的报表查询。分析域:这部分数据模型主要用于各个业务部分的具体的主题业务分析。这部分数据模型可以单独存储在相应的数据集市中。反馈域:可选项,这部分数据模型主要用于相应前端的反馈数据,数据仓库可以视业务的需要设置这一区域。通过对整个数据仓库模型的数据区域的划分,我们可以了解到,一个好的数据模型,不仅仅是对业务进行抽象划分,而且对实现技术也进行具体的指导,它应该涵盖了从业务到实现技术的各个部分。
(2)数据仓库建模阶段划分我们前面介绍了数据仓库模型的几个层次,下面我们讲一下,针对这几个层次的不同阶段的数据建模的工作的主要内容:从上图我们可以清楚地看出,数据仓库的数据建模大致分为四个阶段:业务建模,这部分建模工作,主要包含划分整个单位的业务等等领域概念建模,这部分得建模工作,主要包含抽取关键业务概念,分组,细化分组概念,形成完整的领域概念模型逻辑建模,这部分的建模工作,主要包含业务概念实体化,事件实体化,说明实体化物理建模从我们上面对数据仓库的数据建模阶段的各个阶段的划分,我们能够了解到整个数据仓库建模的主要工作和工作量,希望能够对我们在实际的项目建设能够有所帮助。
(3)数据仓库建模方法范式建模法范式建模法其实是我们在构建数据模型常用的一个方法,该方法的主要由Inmon 所提倡,主要解决关系型数据库得数据存储,利用的一种技术层面上的方法。目前,我们在关系型数据库中的建模方法,大部分采用的是三范式建模法。范式建模法的最大优点就是从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模。但其缺点也是明显的,由于建模方法限定在关系型数据库之上,在某些时候反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑到数据仓库的底层数据向数据集市的数据进行汇总时,需要进行一定的变通才能满足相应的需求。维度建模法维度建模法,Kimball 最先提出这一概念。其最简单的描述就是,按照事实表,维表来构建数据仓库,数据集市。这种方法的最被人广泛知晓的名字就是星型模式(Star-schema)。上图的这个架构中是典型的星型架构。星型模式之所以广泛被使用,在于针对各个维作了大量的预处理,如按照维进行预先的统计、分类、排序等。通过这些预处理,能够极大的提升数据仓库的处理能力。特别是针对3NF 的建模方法,星型模式在性能上占据明显的优势实体建模法上图表述的是一个抽象的含义,如果我们描述一个简单的事实:“小明开车去学校上学”。以这个业务事实为例,我们可以把“小明”,“学校”看成是一个实体,“上学”描述的是一个业务过程,我们在这里可以抽象为一个具体“事件”,而“开车去”则可以看成是事件“上学”的一个说明。

三、数据仓库的建设流程

1、模板调研:
信息调研是逻辑模型设计、物 理模型设计以及数据映射的基 础,在模型设计阶段贯穿始终决定了数据仓库的质量。这一步我们主要的工作是找出实际存在的业务问题,领导的KPI问题,现在没有提出未来可能出现的问题,这是数据仓库建立的核心所在。方法就是调研,包括业务人员、领导方不断沟通,不断调研,输出问题清单。
2、主题域模型设计:
主题域的界定、每个主题主实体的准入原 则、数据处理规范、核心的分类决定了数 据模型的主体框架,保持主体框架的稳定 性确保了仓库的稳定性。
3、概念模型设计:
详细的实体属性的设计,大量数据分析业务规则验证的工作,模型设计的同时完成到逻辑 数据模型的简要数据映射
4、逻辑模型数据设计:
提供与生产一致版本的数据结构,准 确完善的数据字典,符合分析需求的 样本数据;并能对样本数据分析中的 问题进行及时准确的回复跟踪
5、物理存储模型设计:
协调仓库数据的相关方达成共 识,既包容当前数据满足现有 需求,又具备一定的前瞻性便 于扩展,还必须具备操作性
6、模型优化设计回顾:
模型设计是多人协同的团队工作,是一项持续不断地扩展演化完善的 过程,遵循模型设计规范、沿用一致的模型客户化方式是至关重要的。