作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群。持续系统化给大家分享一下关于数据仓库建设的经验总结。本系列既有数据仓库的形而上学理论体系,也有结合公司业务的实践,既有大厂如阿里巴巴,京东,头条的分享交流,也有小公司数仓迭代案例的建设分析。感兴趣的小伙伴可以私信交流。

0.历史系列篇章回顾

  先见森林:数据仓库的前世今生与体系框架

1.什么是数仓建模本质?

所谓的数据仓库建模,听着很高大,我们要透过现象看本质。其实本质就是解决如何管理组织企业中数据,并将其用于业务用户的决策制定过程中的方法体系;从企业来说就是数据如何更好地商业智能(BI),从技术角度来说就是如何合理化管理企业数据的存储和计算。

       因为对于企业来说,数据规模可能是MB,GB,TB,PB等。不同数据体量数仓的管理模式是不一样,数据规模越大,场景越复杂,管理起来的细节越丰富,需要考虑的问题也就越多,数仓建设管理也就越规范。故对于企业来说,会因为如数据规模,业务场景,成本,决策战略等各种原因选择不同的数据仓库架构与建设方式。所以数据仓库的数据组织建设方法其实有很多种方式,只是主流的,大家通用的就那么几种,更常用的就是Killball的维度建模。这就好比android,ios是移动操作系统的标杆,你可以搞一个其他的出来,但是没人用,影响力有限。

要知道Kimball的数据仓库工具书1996就出版了,维度建模方法思想上个世纪就提出来了。截止到当前,唯一没变的是其数据仓库维度建模的思想,而很多最早Kimball提出来的数仓维度建模的细节已经跟实际脱节了,不过有些概念通过新的技术和实践被逐渐完。企业实际数仓建设过程中都是用其维度建模思想方法体系,具体细节要结合实际去优化,所以如果你看数据仓库工具书这本书时发现其中有很多想法跟实操都不一样,请不要惊讶。

2.数据仓库建模有哪些方法体系?

        编程大家都是从基础语法学习,然后不断细节深入,最后技术高阶后都要看一本编程思想的书。其实数仓建设也是这样,要有数仓建设的思想转变。数据仓库建模本质就是组织管理企业数据,为企业数据商业智能服务。条条大路通罗马,所以他的方法体系也不是唯一的。但是要抓住数仓的本质,企业付出成本搜集数据,存储数据目的是为了挖掘数据价值。

         所以数据仓库的建设要能给用户以简单可理解的方式建设管理数据,同时给企业提供高效的数据查询性能。一句话不能太复杂,建设不能太麻烦,成本太高,得不偿失。后面大家发现还是用维度建模的方法体系建设数据仓库的性价比最高,简单高效。其他方法体系了解即可,一般面试时候会问下,重点了解其思想体系,以及之间的区别。

        其他方法体系介绍参考博客:数据仓库常见建模方法与建模实例演示

3.基于维度建模的数仓架构方案有哪些?

3.1 数据仓库的架构有哪些?

在数据仓库技术演化过程中,产生了几种主要的架构方法,主要包括数据集市架构、 Inmon 企业信息工厂架构、 Kimball 数据仓库架构和混合型数据仓库架构。重点关注Killball的数据架构。

既然说数据仓库的建设,是历史和经验让我们选择了维度建模方法体系。那么什么是维度建模,维度建模实施起来的的架构怎么样?既然维度建模只是一个数据仓库建设的方法体系,是方法体系那么不同的公司实施起来也有不同的架构方案,实施样式。注意区别维度建模和数据仓库架构的关系,维度建模只是数仓架构的环节的一部分应用,数仓架构是维度建模的实施方案。

3.2独立的数据集市架构

       这种数仓架构最简单。大企业,各个部门子公司每个部门都直接从源数据获取数据ETL,然后创建属于自己部门的独立数据集市。这些数据集市采用维度建模方法,实现简单快速建设,高效查询的功能。但是这种架构不利于企业数据的融合,容易形成数据孤岛,对企业数据的挖掘价值降低,存储计算浪费等。好处就是各搞各的,不用考虑跨组织的数据控制和协调管理。不建议使用,大公司也很少使用了,当然也有公司还在使用,比如国企。

3.3Killball大佬的数仓架构(主流)

       Killball的数仓架构核心是数据隔离。整个后端从ETL开始关注数据质量,数据从不同的源系统获取后,进行统一的数据ETL(转换,清洗),划分维度和事实的同时关注数据的完整性,一致性。最终将数据加载到展示区域里的目标维度模型中。

3.4 Inmon的数仓架构

这个Inmon的架构是比较有影响力的,采用CIF模式(Corparate Information factiory企业信息工厂模式),主要和killball区别是规范化ETL数据处理,采用数据库3NF,其次数据架构建设理念也不同,双方都有支持者。

 注意:Kimball 与 Inmon 两种架构的主要区别在于核心数据仓库的设计和建立。 Kimball 的数据仓库包含高粒度的企业数据,使用多维模型设计,这也意味着数据仓库由星型(雪花)模式的维度表和事实表构成。分析系统或报表工具可以直接访问多维数据仓库里的数据。在此架构中的数据集市也与 Inmon 中的不同。这里的数据集市是一个逻辑概念,只是多维数据仓库中的主题域划分,并没有自己的物理存储,也可以说是虚拟的数据集市。

关于具体Killball 和Inmon数仓建设都推荐维度建模,但是两者数据架构建设理念不同,有所区别。小伙伴可以参考这篇博客了解下,没必须纠结过多的细节。而且随着发展,架构的区别也越来越小: 数据仓库 Inmon与Kimball数仓理论对比

3.5混合数据架构

所谓的混合型结构,其实就是同时综合使用 Inmon 和 Kimball 两种架构,择其善者而从之。从上面我们可以看到,这种架构将 Inmon 方法中的数据集市部分替换成了一个多维数据仓库,而数据集市则是多维数据仓库上的逻辑视图。

这样既可以利用规范化设计消除数据冗余,保证数据的粒度足够细;又可以利用多维结构更灵活地在企业级实现报表和分析。但是主流还是killball架构。

4.维度建模概述与步骤

4.1 维度建模是什么?

  1. 维度建模是数据仓库大师Ralph Kimball提出的,是数据仓库工程领域最流行的数仓建模经典。
  2. 维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务。因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能
  3. 维度建模是面向分析的,为了提高查询性能可以增加数据冗余,反规范化的设计技术。
  4. 维度建模是一种抽象出来的企业数据仓库中数据组织与管理的方法体系。直白点说就是组织管理数据仓库中各种业务数据表的,如何基于业务场景,业务过程,业务需求组织创建表,最终提供高效的查询性能。

尖叫总结一下:换一种方式来解释什么是维度建模。学过数据库的小伙伴都应该都知道数据库表之间关系:星型模型,一个业务表通过外挂了很多维表,这就是一个典型的维度模型。我们在进行维度建模的时候会建一张事实表,这个事实表就是星型模型的中心,然后会有一堆维度表,这些维度表就是向外发散的星星,而实际开发中维度表也不是那么严格,又可以有自己的维度表,维度表上可以挂维度表,这样就像雪花一样叫雪花模型。

4.2数仓采用维度建模的好处和坏处

4.2.1  数据仓库采用使用维度建模的好处

  1. 简单易理解、构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,属于业务决策需求性。所以相比数据库的3NF等规范要求的不高,规范也不那么严格。
  2. 查询的高性能、较好的大规模复杂查询的响应,基于技术框架实现,后面再说。
  3. 修改的灵活性和可扩充性。维度建模是一个可不断扩充添加的过程。比如1.在现有的事实表中增加维度。2.在事实表中增加事实。3.在维度表中增加属性。

4.2.2 维度建模的“坏处”:
       有好处就是弊端,维度建模的坏处体现在,比如对于公共层,一致性维度规划建设,数据模型的建设需要花费很大人天,这样就没有直接把结果搞出来的省事。

4.3 维度建模的步骤

       所谓维度建模抽象出来其实就4个步骤,基于这四个步骤组织管理企业的数据,其他所有的展开都是围绕和丰富这四个步骤细节的,以应对不同的业务场景。举个例子,怎么把大象装进冰箱?抽象完就三步,第一打开冰箱门,第二步把大象放进去,第三步关上冰箱门。

1.维度模式设计主要四个步骤过程:

  1. 选择业务过程
  2. 声明粒度
  3. 确认维度(也有叫标识维度)
  4. 确认事实(也有叫标识事实)

 先这样了解这些概念,胸有成竹,先见森林,再去结合实践,先不要太关注细节。就像盖房子一样,你把沙子,石头,水泥,钢筋摸牌的再熟练,掌握的再熟悉,没有建设过大楼,在应用实践中操作过对你来说还是一堆零散的东西。学习掌握细节的最好的过程就是应用中。

4.3 维度建模里术语与概念

4.3.1 表分为:维度表和事实表

数仓基于维度建模,那么数仓里的表按这种分类只有两种,一种是事实表,一种是维度表。所谓事实表简单理解就是存放业务数据,业务事务过程的表。当然从各种业务源的数据中如何抽象出事实表,哪些字段算是事实而不是维度,事实表有分哪些?所以这些会基于业务场景去详细介绍。

同理维度表也是存放用户分析维度的表。但维度表如何抽象出维度,维度缓慢变化的如何处理,有哪些处理方式?维表的存储分类等等?这些只所以分的那么细,是因为有业务应用场景。后面详细介绍。

4.3.2维度建模数据之间关系

  维度建模按数据组织类型划分可分为

  1.  星型模型
  2.  雪花模型
  3. (星座模型),这个非主流认证

       后续几乎所有关于数仓维度建模的所以细节都是围绕上面两大模块,表是维度表和事实表。表之间的组织关系则是为星型模型、雪花模型、星座模型

数仓建模本质到底是什么?为什么维度建能模脱颖而出?相关推荐

  1. 数据仓库(3)数仓建模之星型模型与维度建模

      维度建模是一种将数据结构化的逻辑设计方法,也是一种广泛应用的数仓建模方式,它将客观世界划分为度量和上下文.度量是常常是以数值形式出现,事实周围有上下文包围着,这种上下文被直观地分成独立的逻辑块,称 ...

  2. 老司机带带我:数仓建模架构|维度建模剖析与案例演示

           作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群.持续系统化给大家分享一下关于数据仓库建设的经验总结.本系列既有数据仓库的形而上学理论体系,也有结合公司 ...

  3. 数仓建模—增量数据处理

    增量数据处理 这一节我们不讲技术,讲一个故事,关于数据同步这一块的落地方案可以参考我们之前的文章 数仓建模-数据集成 数仓建模-数据同步方案设计 数仓建模-美团DB数据同步到数据仓库的架构与实践 因为 ...

  4. 大数据数仓建模(3)

    大数据数仓建模(3) 2.2.6 人员配置参考 1.旁敲侧击的问你到底做过没有 2.你们大概规模,数据量 1整体架构 属于研发部/技术部/数据部/基础平台部,我们属于大数据组,其他还有后端项目组,前端 ...

  5. 数仓建模—数仓架构发展史(02)

    发展史 时代的变迁,生死的轮回,历史长河滔滔,没有什么是永恒的,只有变化才是不变的,技术亦是如此,当你选择互联网的那一刻,你就相当于乘坐了一个滚滚向前的时代列车,开往未知的方向,不论什么样的技术架构只 ...

  6. 数仓建模(维度建模)

    目录 一.什么是建模?(为什么建模) 二.模型的好处 三.建模的方法 四.维度建模 4.1 基本概念 4.2 为啥选择维度建模(优缺点) 4.2.1 优点 4.2.2 缺点 4.3 维度建模-星型模型 ...

  7. 【数仓建模】传统建模与宽表建模有何差异?基于宽表建模实践

    [数仓建模]传统建模与宽表建模有何差异?基于宽表建模实践 一.业务背景 1.1 数据建模现状: 1.2 当前业务特性与趋势 二.面临的问题 2.1 在数据驱动业务越来越重要的大趋势下,面临的问题 2. ...

  8. 数仓建模,宽表是什么?如何设计?

    数仓建模,宽表是什么?如何设计? 宽表的设计 为什么要建设宽表 宽表的好处和不足 如何设计宽表 总结 宽表的设计 其实宽表是数仓里面非常重要的一块,宽表主要出现在dwd 层和报表层,当然有的人说dws ...

  9. 数仓建模 项目_音乐数据项目火力全开,技能双倍提升!

    ↑ 点击上方"尚学堂"关注我们 音乐数据中心数仓综合项目 1项目介绍 音乐数据中心项目是大型企业级综合数仓项目,此项目针对音乐数据进行分析,构建数据仓库,建立用户.机器.内容等主题 ...

最新文章

  1. 实践教程 | TensorRT部署深度学习模型
  2. matlab柱状斜线_Matlab:柱状图饼状图填充不同条纹
  3. cant find module express
  4. 重磅!专硕学制改为三年,多所高校发文!
  5. mysql change column_Modify column Vs change column
  6. mysql5.6.31安装及配置
  7. 使用多个框架导致多个jar包包含同样的文件
  8. c语言双重for循环流程图_c++ c语言 概述
  9. 影院售票系统-----一个让你有成就感的小项目,只有一丢丢哦
  10. 你好2019,我是全新的CPDA数据分析师课程
  11. Paper Reading:BigGAN
  12. 程序员必备的英语词汇表-持续更新
  13. 50部巅峰玄幻小说 手机中有几本???你又看过几部???下哦!
  14. 字节辟谣被裁员工与 HR 互殴;苹果头显多个新功能曝光;谷歌希望 RISC-V 成为 T1 级 Android 架构|极客头条...
  15. c语言推箱子游戏实习报告,用C语言编写推箱子游戏
  16. 力扣(13.278)补8.23
  17. “68道 Redis+168道 MySQL”精品面试题(带解析),你背废了吗?
  18. 3轮全向轮正解---41
  19. CCPC-Wannafly Comet OJ 夏季欢乐赛(2019) 飞行棋
  20. java基础小记_[Java教程]Java基础学习小记

热门文章

  1. 2004-2019年286个地级市实际利用外资
  2. windows 显示进程的命令 TASKLIST 详解
  3. CAD中怎么定义视口?CAD视口定义教程
  4. 34门课改变人生——牛人自学计算机总结
  5. spring学习之一:了解spring
  6. 【运维实战家】无线三建七优之QoS-锐捷无线
  7. 心海泛舟 | 回首向来萧瑟处,归去,也无风雨也无晴……
  8. Python爬虫实战:京东拍拍验机(帮你买到最完美的二手iPhone)
  9. 计算机网络原理 自考(五)
  10. 病从U盘入,网管如何堵死“蚁穴”