目录
3.1 ODS(Operational Data Store)
3.2 DWD(Data Warehouse Detail)
3.3 DWS(Data Warehouse Service)
1.为什么要分层
-
清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能够更方便地定位和理解。
-
提升公共指标的复用性,减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
-
降低数据口径不统一的风险。
-
屏蔽原始数据和业务影响:不必改一次业务就需要重新接入数据。
-
数据血缘追踪:能够快速准确定位到问题,并清楚它的影响范围。
2.Inmon与Kimball
在Inmon提出的CIF(Corporate Information Factory,企业信息工厂)中,他将ODS(Operational Data Store,操作型存储)、EDW(Enterprise Data Warehouse,企业数据仓库)、DM(DataMart,数据集市)区别开来,共分三层。
而Kimball的总线架构强调多个数据集市合成了数据仓库,只是他们基于统一的维度而已。因此,总线架构的分层中,从数据源接口就直接到了DM了。
根据这两种思路,又可以衍生一些不同的方法。例如IBM就提出一种CDW的概念,叫做企业数据仓库层,这一层介于EDW和DM之间,起过渡作用(因为EDW和DM两层的建模理念是不同的)。
3.CIF 层次架构
CIF 层次架构(信息工厂)通过分层将不同的建模方案引入到不同的层次中,CIF 将数据仓库分为四层,如图所示:
3.1 ODS(Operational Data Store)
操作数据存储层:ODS 层中的数据全部来自于业务数据库,ODS 层的表格与业务数据库中的表格一一对应,就是将业务数据库中的表格在数据仓库的底层重新建立一次,数据与结构于业务系统完全保持一致。
由于业务数据库(OLTP)基本按照 ER 实体模型建模,因此 ODS 层中的建模方式也是 ER 实体模型。
3.2 DWD(Data Warehouse Detail)
数据明细层:DWD 层要做的就是将数据进行 清洗、脱敏、转换、整合,在这层需要将 脏数据、状态定义不一致、命名不规范 等数据都会被处理。DWD 层应该是覆盖所有系统的、完整的、干净的、具有一致性的数据层。
在 DWD 可能会用到 ER 或者维度模型。在 DWD 层会抽取出公共维度,也就是说 DWD 层是一个非常规范的,高质量的,可信的数据明细层。
3.3 DWS(Data Warehouse Service)
服务数据层(公共汇总层):DWS 层为公共汇总层,会进行轻度汇总,粒度比明细数据稍粗,会针对度量值进行汇总,目的是避免重复计算。
往往在 DWS 层建立宽表。例如订单总金额,可能在原始数据中没有这个数据,进入 DWS 层后可以统计出订单总金额,避免重复地拿订单明细数据去计算。
DWS 层建议使用维度建模,因为数据仓库的主要应用是进行数据分析。
3.4 DM(Data Market)
数据集市层:DM 层为数据集市层,针对不同的主题进行统计报表的生成。例如订单主题、物流主题等。在 DM 完成报表或者指标的统计,DM 层已经不包含明细数据,是粗粒度的汇总数据,因此 DM 层会被当 成 BI 或者 OLAP 的底层模型。、
4、数据模型
模型是对现实事物的反映和抽象,能帮助我们更好地了解客观世界。数据模型定义了数据之间关系和结构,使得我们可以有规律地获取想要的数据。例如,在一个超市里,商品的布局都有特定的规范,商品摆放的位置是按照消费者的购买习惯以及人流走向进行摆放的。
4.1 数据模型的作用
数据模型是在业务需求分析之后,数据仓库工作开始时的第一步。良好的数据模型可以帮助我们更好地存储数据,更有效率地获取数据,保证数据间的一致性。
4.2 模型设计的基本原则
-
高内聚和低耦合:一个逻辑和物理模型由哪些记录和字段组成,应该遵循最基本的软件设计方法论中的高内聚和低耦合原则。主要从数据业务特性和访问特性两个角度来考虑:将业务相近或者相关的数据、粒度相同数据设计为一个逻辑或者物理模型;将高概率同时访问的数据放一起,将低概率同时访问的数据分开存储。
-
核心模型与扩展模型分离:建立核心模型与扩展模型体系,核心模型包括的字段支持常用核心的业务,扩展模型包括的字段支持个性化或是少量应用的需要。在必须让核心模型与扩展模型做关联时,不能让扩展字段过度侵入核心模型,以免破坏了核心模型的架构简洁性与可维护性。
-
公共处理逻辑下沉及单一 :底层公用的处理逻辑应该在数据调度依赖的底层进行封装与实现,不要让公用的处理逻辑暴露给应用层实现,不要让公共逻辑在多处同时存在。
-
成本与性能平衡:适当的数据冗余可换取查询和刷新性能,不宜过度冗余与数据复制。
-
数据可回滚:处理逻辑不变,在不同时间多次运行数据的结果需确定不变。
-
一致性:相同的字段在不同表中的字段名必须相同。
-
命名清晰可理解 :表命名规范需清晰、一致,表命名需易于下游的理解和使用。
5、补充说明
-
一个模型无法满足所有的需求,需合理选择数据模型的建模方式,通常设计顺序依次为:概念模型->逻辑模型->物理模型。