数据仓库|数据模型该如何设计

数据仓库数据模型设计是构建数据仓库的核心过程之一。其目的是将多个数据源中的数据整合到一个统一的数据模型中,以支持业务分析和决策。然而,在数仓建设的过程中,由于未能完全按照规范操作, 从而导致数据仓库建设比较混乱,常见以下问题:


本文主要探讨关于数仓数据模型建设的一些方法论和经验,通过此篇文章你可以收获:

  • 应用层和公共层模型设计的方法


  • 如何定位各个分层之间的边界
  • 各个分层模型设计该注意什么



数仓分层标准


ODS :操作型数据(Operational Data Store),指结构与源系统基本保持一致的增量或者全量数据。作为DW数据的一个数据准备区,同时又承担基础数据记录历史变化,之所以保留原始数据和线上原始数据保持一致,方便后期数据核对需要


CDM :通用数据模型,又称为数

据中间层(Common Data Model),包含DWD、DWS、DIM层。

  • DWD:数据仓库明细层数据(Data Warehouse Detail)。对ODS层数据进行清洗转化,以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细事实表。可以结合企业的数据使用特点,基于维度建模思想,将明细事实表的某些重要属性字段做适当冗余,也即宽表化处理,构建明细宽表。


  • DWS:数据仓库汇总层数据(Data Warehouse Summary),基于指标需求,构建初步汇总事实表,一般是宽表。基于上层的应用和产品的指标需求,构建公共粒度的汇总指标表。以宽表化手段物理化模型,构建命名规范、口径一致的统计指标,为上层提供公共指标。
  • DIM:建立一致数据分析维表,可以降低数据计算口径不统一的风险,同时可以方便进行交叉探查。以维度作为建模驱动,基于每个维度的业务含义,通过添加维度属性、关联维度等定义计算逻辑,完成属性定义的过程并建立一致的数据分析维表。

ADS :面向应用的数据服务层(Application Data Service)。整合汇总成分析某一个主题域的服务数据,面向应用逻辑的数据加工。该层主要存放数据产品个性化的统计指标数据,这一层的数据直接对接数据的消费者,是产品、运营等角色可以直接感知理解的一层,大多数这一层的表都可以直接在BI上通过图表的形式直接透出。


模型设计基本原则


一个逻辑和物理模型由哪些记录和字段组成,应该遵循最基本的软件设计方法论的高内聚和低耦合原则。主要从数据业务特性和访问特性两个角度来考虑:


  • 业务相近或者相关的数据、粒度相同数据设计为一个逻辑或者物理模型;
  • 将高概率同时访问的数据放一起,将低概率同时访问的数据分开存储。


将高概率同时访问的数据放一起,将低概率同时访问的数据分开存储。


  • 公共处理逻辑下沉

越是底层公用的处理逻辑更应该在数据调度依赖的底层进行封装与实现,不要让公共的处理逻辑暴露给应用层实现,不要让公共逻辑在多处同时存在。

  • 成本与性能平衡

适当的数据冗余换取查询和刷新性能,不宜过度冗余与数据复制。

    • 数据可回滚

    • 处理逻辑不变,在不同时间多次运行数据结果确定不变。


    • 如何设计ODS层

    关于ODS层的处理很简单,基本上是将业务系统数据原封不动的回流即可,一般采用增全量的方式。


    一般情况下,一个比较好的公共层遵循一下几个原则:

    减少直接引用ODS表,降低源系统变更带来的改造成本,架构合理上考虑,公共层针对复用性的场景进行模型沉淀,当源系统变更时,通过公共层适应性改造屏蔽下游变更。


    参考资料:

    http://blog.itpub.net/70027827/viewspace-2958020/













    请使用浏览器的分享功能分享到微信等