数据仓库【分层架构】

目录

1.为什么要分层

2.Inmon与Kimball

3.CIF 层次架构

3.1 ODS(Operational Data Store)

3.2  DWD(Data Warehouse Detail)

3.3 DWS(Data Warehouse Service)

3.4 DM(Data Market)

4、数据模型

4.1 数据模型的作用                                                

4.2 模型设计的基本原则 

5、补充说明


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、补充说明

  • 一个模型无法满足所有的需求,需合理选择数据模型的建模方式,通常设计顺序依次为:概念模型->逻辑模型->物理模型。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员学习圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值