• 一文搞懂数据仓库分层模型


    一、分层逻辑

    数据仓库、数据湖的业务目的就在于集中数据、标准化、形成数据产品、面向业务场景开放数据。通俗地讲就是把各个分散的、不易读的、杂乱的、封闭的业务系统数据,归集收编、分门别类、整齐划一、规范管理,让业务便捷获取、使用,最大可能大挖掘和发挥数据价值。和餐厅点菜上菜类似,生活中类似场景也非常多。其中就涉及比较多的、相互关联的细分步骤。

    二、分层目的

    本质上是封装与解耦。封装下层,让上层感知不到变化和影响;解耦,降低上层对下层的依赖,有个中间商来做润滑剂。

    • 复杂问题简化:将一个复杂的任务拆解为多个步骤,每个步骤只解决特定的问题
    • 减少重复开发:规范数据分层,提炼抽象公共环节,增加数据复用性
    • 构建数据资产:统一标准的数据结构,根据业务属性划分业务领域、子领域,无差别呈现给业务

    三、分层适用

    数据仓库的概念虽然历史久远,但它的作用或者理念与数据湖形成映射,甚至二者结合形成湖仓一体,都还在发挥着重要作用。数据湖在数据的来源范围、数据类型、数据数量、实时性、技术手段、数据质量、数据标准、使用人群、数据用途等方面有所扩展和增强,但在数据的全生命周期的各个阶段中,个人理解没有什么本质区别。非要说个先后、强弱或者渐进的关系,数据湖以及湖仓一体,是在大数据、物联网、人工智能时代对数据仓库的进一步迭代,外加数据治理领域的配套措施。

    我不纠结它是单纯的数据仓库、数据湖还是湖仓一体还是什么,市面上的解决方案、服务、产品等要么肢解各个解耦层形成独立的产品,要么综合尽量多的功能,形成在业务看来大而全的一套方案。从实际操作上、产品呈现上,不同层面的功能时而独立销售/使用、时而集成汇聚。关键是看业务需要什么,通过怎么样的产品和产品组合来达成业务目的、方便管理和演进,细分下去就是功能区域的划分和协作,这就回到了核心的数据仓库分层模型上。

    四、分层划分

    这个分层目前没有找到国家标准、行业标准之类的权威参考,数据管理领域权威DMBOK、国家标准DCMM也没有把这些术语拿来讲解。这两者更多讲的是理论/业务完整性,而下面要讲的分层更多的在于具体技术实现。当前的分层,中英文初看比较杂论,不同厂家也有不同的叫法。

    序号英文简写英文全称中文(本文倾向)其他词汇分层功能
    1BufferBuffer缓冲层接口层、Stage常规理解的数据缓冲
    2ODS
    SDI
    Operational Data Store
    Source Data Integration
    贴源数据层操作数据层、原始数据层、数据运营层、
    数据引入层、数据基础层
    ETL之后业务原始数据存储,
    尽量原汁原味
    3DWD
    DWI
    Data WareHouse Detail
    Data Warehouse Integration
    明细数据层数据细节层、数据整合层、明细事实表ODS数据的简单清洗、
    维度退化、数据脱敏、格式统一
    4DWB
    DWM
    MID
    Data Warehouse Base
    Data Warehouse Middle
    Middle
    轻度汇总层基础数据层、数据中间层对核心维度进行指标统计,
    减少重复计算
    5DWS
    DWR
    DWT
    Data Warehouse Service
    Data Warehouse Report
    Data Warehouse Topic
    主题数据层服务数据层、数据服务层、数据报告层、
    宽表层、汇总数据层
    按主题汇聚多字段为宽表,
    简化查询
    6ADS
    DM
    App
    Application Data Service
    Data Mart
    数据集市层数据应用层、数据产品层、专题数据层统计汇总数据,
    供业务应用直接使用
    7DIMDimension维表码表、维度表DWD及之上数据层共用,
    比如国家编码、机场编码、商品类型
    8DW
    CDW
    Data Warehouse
    Common Dimenions Model
    数据仓库层数据公共层包含DWD、DWM、DWS、DIM

    从上表看出,大体分层固定,不同厂家或者方案都有不同的叫法,但是表达的分层意思几乎一样,具体分层所承载的数据功能也大同小异。命名格式上,有xx数据层,也有数据xx层,还有xx层。只要保持分层清晰,逻辑表达连贯完整,我想就无所谓用哪个名字。

    五、分层组合

    DM数据仓库层,包含DWD、DWB和DWS。至于DIM严格来说不算是一个层次,而是DWD及其之上层次的一个共享部分。而上述的分层不一定非要全部构建,而是根据组织、业务的实际需求及其变化频率、大小,实现难度、投入产出比来综合选定。个人的实践总结是适量前瞻性设计、能有多简单就多简单,并且设计的分层还会根据业务和环节变化不停迭代。另外,从DWD开始往上的每一层都可以直接提供给上层业务使用,而从业务系统中ETL之后的数据一定是先存放在ODS之中,尽量杜绝其他分层重复地直接从业务系统抽取数据,减少数据同步对业务系统的影响,达到一次抽取,多次利用。
    数据仓库分层模型

    六、参考资料

  • 相关阅读:
    Node.js的介绍与使用(附聊天案例)
    SpringBoot 学习笔记
    Creating Higher-level Constructs with ZooKeeper: A Comprehensive Guide
    cmake编译opencv的cuda库的注意事项
    ClientDataSet运行中出现“ClientDataSet:dataset not in edit or insert mode”(二)
    Docker in docker 实现
    Typora图床上传配置:PicGo+Gitee 不完全指南
    牛客题目——判断一个链表是否为回文结构、数据流中的中位数、PriorityQueue的常用方法
    RTOS那些你得知道的事儿(一)
    经典伴读_GOF设计模式_行为模式(上)
  • 原文地址:https://blog.csdn.net/evandeng2009/article/details/125388033