认识数据仓库

1.数仓的定义:

2.数据仓库和数据库的区别:

数仓的发展

1.简单报表阶段:这个阶段,系统的主要目标是解决一些日常的工作中业务人员需要的报表,以及生成一些简单的能够帮助领导进行决策所需要的汇总数据。这个阶段的大部分表现形式为数据库和前端报表工具。

2.数据集市阶段:这个阶段,主要是根据某个业务部门的需要,进行一定的数据的采集,整理,按照业务人员的需要,进行多维报表的展现,能够提供对特定业务指导的数据,并且能够提供特定的领导决策数据。

3.数据仓库阶段:这个阶段,主要是按照一定的数据模型,对整个企业的数据进行采集,整理,并且能够按照各个业务部门的需要,提供跨部门的,完全一致的业务报表数据,能够通过数据仓库生成对对业务具有指导性的数据,同时,为领导决策提供全面的数据支持。

通过数据仓库建设的发展阶段,我们能够看出,数据仓库的建设和数据集市的建设的重要区别就在于数据模型的支持。因此,数据模型的建设,对于我们数据仓库的建设,有着决定性的意义。

数仓建设的意义

1.理清业务数据:随着数据量和业务数据表的不断扩张,需要我们理清数据作用域,就是做什么的,可以清晰的找到数据来源。能够帮助我们的企业或者是管理机关对本单位的业务进行全面的梳理。通过业务模型的建设,我们应该能够全面了解该单位的业务架构图和整个业务的运行情况,能够将业务按照特定的规律进行分门别类和程序化,同时,帮助我们进一步的改进业务的流程,提高业务效率,指导我们的业务部门的生产。

2.避免重复计算:为了避免多次计算,多次关联多张表,分层可以保存中间结果,减小开发成本。

3.增加数据使用便捷性:仓库层的设计,让数据能分析,好分析,能支持大部分的数据需求。建立全方位的数据视角,通过数据仓库的模型建设,能够为企业提供一个整体的数据视角,不再是各个部门只是关注自己的数据,而且通过模型的建设,建立出了部门之间内在的联系,帮助消灭各个部门之间的信息孤岛的问题,统一数据口径,保证数据质量,避免出现统一指标多种概念,通过数据模型的建设,各个部门之间数据的差异将会得到有效解决。

4.解决业务的变动 : 通过数据模型的建设,能够很好的分离出底层技术的实现和上层业务的展现。当上层业务发生变化时,通过数据模型,底层的技术实现可以非常轻松的完成业务的变动,从而达到整个数据仓库系统的灵活性。

建模步骤

数仓建模主要分为以下四个部分:

1.业务建模,生成业务模型,主要解决业务层面的分解和程序化。
2.领域建模,生成领域模型,主要是对业务模型进行抽象处理,生成领域概念模型。确定需求,划清系统范围和边界

3.逻辑建模,生成逻辑模型,主要是将领域模型的概念实体以及实体之间的关系进行数据库层次的逻辑化。梳理业务规则,对概念模型求精.

4.物理建模,生成物理模型,主要解决,逻辑模型针对不同关系型数据库的物理化以及性能等一些具体的技术问题,从性能,访问,开发等多方面考虑.

具体建模方法论

1.范式建模法
是Inmon提出的集线器的自上而下(EDW-DM)的数据仓库架构。操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据建设原子数据的数据仓库EDW,EDW不是多维格式的,不方便上层应用做数据分析,所以需要通过汇总建设成多维格式的数据集市层。

①.第一范式(1NF):指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。
②.第二范式(2NF):在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。选取一个能区分每个实体的属性或属性组,作为实体的唯一标识。例如在员工表中的身份证号码即可实现每个一员工的区分,该身份证号码即为候选键,任何一个候选键都可以被选作主键。在找不到候选键时,可额外增加属性以实现区分,如果在员工关系中,没有对其身份证号进行存储,而姓名可能会在数据库运行的某个时间重复,无法区分出实体时,设计辟如ID等不重复的编号以实现区分,被添加的编号或ID选作主键。(该主键的添加是在ER(Entity Relationship Diagram,实体-联系图)设计时添加,不是建库时随意添加)。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。
③第三范式(3NF):在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)。简而言之,第三范式(3NF)要求一个关系中不包含已在其它关系已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。

2.维度建模
Kimball提出的总线式的自下而上(DM-DW)的数据仓库架构。同样的,操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据,利用维度建模方法建设一致维度的数据集市。通过一致性维度可以将数据集市联系在一起,由所有的数据集市组成数据仓库。优势:构建迅速,最快的看到投资回报率,敏捷灵活;劣势:作为企业资源不太好维护,结构复杂,数据集市集成困难。
常见的模型:星型模型和雪花模型
①.星型模型:

星型模是一种多维的数据关系,它由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。这也是我们在使用hive时,经常会看到一些大宽表的原因,大宽表一般都是事实表,包含了维度关联的主键和一些度量信息,而维度表则是事实表里面维度的具体信息,使用时候一般通过join来组合数据,相对来说对OLAP的分析比较方便。

②雪花模型:

当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。雪花模型更加符合数据库范式,减少数据冗余,但是在分析数据的时候,操作比较复杂,需要join的表比较多所以其性能并不一定比星型模型高。(雪花模型可以理解为,为了获取更“深”或更“细”一级的信息)

3.实体建模法
实体建模法并不是数据仓库建模中常见的一个方法,它来源于哲学的一个流派。从哲学的意义上说,客观世界应该是可以细分的,客观世界应该可以分成由一个个实体,以及实体与实体之间的关系组成。那么我们在数据仓库的建模过程中完全可以引入这个抽象的方法,将整个业务也可以划分成一个个的实体,而每个实体之间的关系,以及针对这些关系的说明就是我们数据建模需要做的工作。

上图表述的是一个抽象的含义,如果我们描述一个简单的事实:“小明开车去学校上学”。以这个业务事实为例,我们可以把“小明”,“学校”看成是一个实体,“上学”描述的是一个业务过程,我们在这里可以抽象为一个具体“事件”,而“开车去”则可以看成是事件“上学”的一个说明。

实体 : 主要指领域模型中特定的概念主体,指发生业务关系的对象。
事件 : 主要指概念主体之间完成一次业务流程的过程,特指特定的业务过程。
说明 : 主要是针对实体和事件的特殊说明。

4.建模方法应用场景对比:

  • 星型模型的设计方式主要带来的好处是能够提升查询效率,因为生成的事实表已经经过预处理,主要的数据都在事实表里面,所以只要扫描事实表就能够进行大量的查询,而不必进行大量的join,其次维表数据一般比较少,在join可直接放入内存进行join以提升效率,除此之外,星型模型的事实表可读性比较好,不用关联多个表就能获取大部分核心信息,设计维护相对比较简答。
  • 雪花模型的设计方式是比较符合数据库范式的理念,设计方式比较正规,数据冗余少,但在查询的时候可能需要join多张表从而导致查询效率下降,此外规范化操作在后期维护比较复杂。
  • 范式建模是从关系型数据库的角度出发,结合了业务系统的数据模型,能够比较方便的实现数据仓库的建模,易于维护,高度集成;由于建模方法限定在关系型数据库之上,在某些时候反而限制了整个数据仓库模型的灵活性,性能等,特别是考虑到数据仓库的底层数据向数据集市的数据进行汇总时,需要进行一定的变通才能满足相应的需求,结构死板,部署周期较长,主要解决关系型数据库得数据存储,利用的一种技术层面上的方法。
  • 实体建模法,能够很轻松的实现业务模型的划分,因此,在业务建模阶段和领域概念建模阶段,实体建模法有着广泛的应用。再没有现成的行业模型的情况下,我们可以采用实体建模的方法,和客户一起理清整个业务的模型,进行领域概念模型的划分,抽象出具体的业务概念,但实体建模法也有着自己先天的缺陷,由于实体说明法只是一种抽象客观世界的方法,因此,注定了该建模方法只能局限在业务建模和领域概念建模阶段。

5.选型建议:

  • 在关系型数据库中的建模方法,大部分采用的是第三范式建模法;
  • 维度建模星型架构是比较常见的。因为我们在实际项目中,往往最关注的是查询性能问题,至于磁盘空间一般都不是问题。 当然,在维度表数据量极大,需要节省存储空间的情况下,或者是业务逻辑比较复杂、必须要体现清晰的层次概念情况下,可以使用雪花型维度。在复合式的数据仓库架构中,操作型或事务型系统的数据源,通过ETL抽取转换和加载到数据仓库的ODS层,然后通过ODS的数据,利用范式建模方法,建设原子数据的数据仓库EDW,然后基于EDW,利用维度建模方法建设数据集市;
  • 至于实体建模很少使用,也仅仅局限于业务/领域建模,到了逻辑建模阶段和物理建模阶段,则是范式建模和维度建模发挥长处的阶段。

说明:对数仓认识甚微,不当之处请大家指出

浅谈数仓建模及其方法论相关推荐

  1. 【数仓】浅谈数仓建模的方法

    一篇比较全面介绍数据仓库建模方法的普及文章,主要包括了四个方面的内容: 1.什么是数据模型:简而言之就是对现实世界业务对象及关系的抽象. 2.为什么需要数据模型:数据模型不是必需的,建模的目的是为了改 ...

  2. 数仓建模的edw_浅谈数仓分层和模型

    数仓分层 ODS层基础层-ODS(Operational Data Store-操作型数据存储):主要是未经过加⼯的原始数据 中间层-CDM\EDW(Enterprise Data Warehouse ...

  3. 内部矩阵维度必须一致simulink_浅谈数仓模型(维度建模)

    背景 数据仓库的核心是展现层和提供优质的服务.ETL 及其规范.分层等所做的一切都是为了一个更清晰易用的展现层. 数仓架构的原则: 1.底层业务的数据驱动为导向同时结合业务需求驱动 2.便于数据分析 ...

  4. 数据仓库系列文章一:浅谈数仓设计

    数仓设计指对数据仓库的各项组成进行规划,在正式建设数仓之前形成指导性建设方案. 数仓设计主要分为两部分:数据仓库同操作型业务系统的数据接口设计和数仓自身建设设计. 本文从多个方面探讨数仓的设计要点,给 ...

  5. 数仓建模—建模方法论之范式建模

    数仓建模-建模方法论之范式建模 三大范式是关系数据库(OLTP)设计表结构所遵循的规范和指导方法,主要用于提高数据库的逻辑结构质量,避免数据冗余和更新异常,目的是为了减少冗余,通过结构合理的数据库,从 ...

  6. 浅谈数据仓库维度建模

    浅谈数据仓库维度建模流程 谈到Big Data就离不开数据仓库.数据集市等概念,而谈到数据仓库.数据集市,就又离不开数据仓库设计的方法,维度建模则是其中的典型.与维度建模相对立的则是范式建模,范式建模 ...

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

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

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

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

  9. 大数据数仓建模 - 维度建模 实战及思路过程 (两年数仓建模经验 纯干货)

    数仓维度建模 维度建模方法论: 维度建模 是以业务过程为驱动 先确定某些业务过程 围绕业务过程去建立模型 通常采用自底向上的方法 从明确关键业务过程开始 再到明确粒度 再到明确维度  最后明确事实 在 ...

最新文章

  1. ARKit应用超300万次安装,排第一的是一款养成游戏
  2. 16 级高代 II 思考题十的多种证明
  3. java冒泡排序程序流图_java实现选择排序和冒泡排序及执行流程图解
  4. linux存储--共享内存机制shm(十三)
  5. 【错误记录】Flutter 报错 ( Android Studio 中 main.dart 左侧不显示设备栏 )
  6. (本地源)安装CDH Manager
  7. 小功能隐藏着大学问---windows的ACL带来的挑战
  8. SpringBoot声明式事务
  9. Python基础-迭代器生成器装饰器
  10. Vue学习--MVVM模型
  11. linux chmod -r,linux chmod -R 777 / 的危害
  12. 可视化远程管理系统保障工地施工安全解决方案
  13. 移动侦测/周界入侵检测智能分析摄像头采集的智能分析数据如何通过国标GB28181平台进行接入与分发
  14. 中华流传十大吉祥图解
  15. 稀奇古怪的代码处理方式
  16. Win7通过CMD命令开启无线热点
  17. MySql作业练习题
  18. 关于数字IC设计中分频后的慢速时钟和以快时钟触发的信号的关系处理
  19. sudo,su, -的区别
  20. jquery入门介绍

热门文章

  1. 出差忘带电脑脑袋炸裂?鼓捣了下个人云,真香
  2. 人工智能是怎么准备训练样本的
  3. linux h3c 802.1客户端,OH3C 的安装及使用 H3C 802.1x Client for OpenWrt
  4. Socks代理上网工具 tsocks
  5. 软件工程知识点总结——第三、四部分
  6. 多篇用DL做Semantic Segmentation的文章总结
  7. 别当工具人了,手摸手教会你 Jenkins !
  8. 软考论文写作这些雷区,千万要避开
  9. 在 Windows 10 中保存和恢复桌面图标位置的 2 个免费工具
  10. linux运维自动化脚本,linux运维自动化shell脚本小工具