您当前的位置:首页 > 电脑百科 > 数据库 > 百科

如何深入浅出理解数据仓库建模?

时间:2019-11-05 14:28:54  来源:  作者:
如何深入浅出理解数据仓库建模?

 

作者 | 傅一平

来源 | 与数据同行

今天跟着我来学学数据仓库的基础知识,希望你结合案例可以把它吃透。

一、数据仓库建模的意义

如果把数据看作图书馆里的书,我们希望看到它们在书架上分门别类地放置;如果把数据看作城市的建筑,我们希望城市规划布局合理;如果把数据看作电脑文件和文件夹,我们希望按照自己的习惯有很好的文件夹组织方式,而不是糟糕混乱的桌面,经常为找一个文件而不知所措。

数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。linux的创始人Torvalds有一段关于“什么才是优秀程序员”的话:“烂程序员关心的是代码,好程序员关心的是数据结构和它们之间的关系”,最能够说明数据模型的重要性。

只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。

性能:帮助我们快速查询所需要的数据,减少数据的I/O吞吐,提高使用数据的效率,如宽表。

成本:极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低存储和计算成本。

效率:在业务或系统发生变化时,可以保持稳定或很容易扩展,提高数据稳定性和连续性。

质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。数据模型能够促进业务与技术进行有效沟通,形成对主要业务定义和术语的统一认识,具有跨部门、中性的特征,可以表达和涵盖所有的业务。

大数据系统需要数据模型方法来帮助更好地组织和存储数据,以便在性能、成本、效率和质量之间取得最佳平衡!

下图是个示例,通过统一数据模型,屏蔽数据源变化对业务的影响,保证业务的稳定,表述了数据仓库模型的一种价值:

如何深入浅出理解数据仓库建模?

 

二、数据仓库分层的设计

为了实现以上的目的,数据仓库一般要进行分层的设计,其能带来五大好处:

清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

数据血缘追踪:能够快速准确地定位到问题,并清楚它的危害范围。

减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。

把复杂问题简单化:将复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。当数据出现问题之后,不用修复所有的数据,只需要从有问题的步骤开始修复。

屏蔽原始数据的异常:不必改一次业务就需要重新接入数据。

以下是我们的一种分层设计方法,数据缓冲区(ODS)的数据结构与源系统完全一致。基础数据模型(DWD)和融合数据模型(DWI与DWA)是大数据平台重点建设的数据模型。应用层模型由各应用按需自行建设,其中基础数据模型一般采用ER模型,融合数据模型采用维度建模思路。

如何深入浅出理解数据仓库建模?

 

三、两种经典的数据仓库建模方法

前面的分层设计中你会发现有两种设计方法,关系建模和维度建模,下面分别简单介绍其特点和适用场景。

1、维度建模

(1)定义

维度模型是数据仓库领域另一位大师Ralph Kimball 所倡导的。维度建模以分析决策的需求出发构建模型,构建的数据模型为分析需求服务,因此它重点解决用户如何更快速完成分析需求,同时还有较好的大规模复杂查询的响应性能,更直接面向业务。

典型的代表是我们比较熟知的星形模型:

如何深入浅出理解数据仓库建模?

 


如何深入浅出理解数据仓库建模?

维度退化

星型模型由一个事实表和一组维表组成。每个维表都有一个维作为主键,所有这些维的主键组合成事实表的主键。强调的是对维度进行预处理,将多个维度集合到一个事实表,形成一个宽表。

这也是我们在使用hive时,经常会看到一些大宽表的原因,大宽表一般都是事实表,包含了维度关联的主键和一些度量信息,而维度表则是事实表里面维度的具体信息,使用时候一般通过join来组合数据,相对来说对OLAP的分析比较方便。

(2)建模方法

通常需要选择某个业务过程,然后围绕该过程建立模型,其一般采用自底向上的方法,从明确关键业务过程开始,再到明确粒度,再到明确维度,最后明确事实,非常简单易懂。

如何深入浅出理解数据仓库建模?

 

以下是阿里的OneData的建模工作流,可以参考。

如何深入浅出理解数据仓库建模?

 

(3)优缺点

优点:技术要求不高,快速上手,敏捷迭代,快速交付;更快速完成分析需求,较好的大规模复杂查询的响应性能

缺点:维度表的冗余会较多,视野狭窄

2、关系建模

(1)定义

是数据仓库之父Inmon推崇的、从全企业的高度设计一个3NF模型的方法,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象。

它更多是面向数据的整合和一致性治理,正如Inmon所希望达到的“single version of the truth”。

如何深入浅出理解数据仓库建模?

 

当有一个或多个维表没有直接连接到事实表上,而是通过其他维表连接到事实表上时,其图解就像多个雪花连接在一起,故称雪花模型。

雪花模型是对星型模型的扩展。它对星型模型的维表进一步层次化,原有的各维表可能被扩展为小的事实表,形成一些局部的 "层次 " 区域,这些被分解的表都连接到主维度表而不是事实表。

雪花模型更加符合数据库范式,减少数据冗余,但是在分析数据的时候,操作比较复杂,需要join的表比较多所以其性能并不一定比星型模型高。

(2)建模方法

关系建模常常需要全局考虑,要对上游业务系统的进行信息调研,以做到对其业务和数据的基本了解,要做到主题划分,让模型有清晰合理的实体关系体系,以下是方法的示意:

如何深入浅出理解数据仓库建模?

 

以下是中国移动的概念模型的一种示例,如果没有自顶向下的视野,基本是总结不出来的:

如何深入浅出理解数据仓库建模?

 

(3)优缺点

优点:规范性较好,冗余小,数据集成和数据一致性方面得到重视,比如运营商可以参考国际电信运营业务流程规范(ETOM),有所谓的最佳实践。

缺点:需要全面了解企业业务、数据和关系;实施周期非常长,成本昂贵;对建模人员的能力要求也非常高,容易烂尾。

3、建模方法比较

一般来讲,维度模型简单直观,适合业务模式快速变化的行业,关系模型实现复杂,适合业务模式比较成熟的行业,阿里原来用关系建模,现在基本都是维度建模的方式了。

运营商以前都是关系建模,现在其实边界越来越模糊,很多大数据业务变化很快,采用维度建模也比较方便,不需要顶层设计。

如何深入浅出理解数据仓库建模?

 

四、企业建模的三点经验

维度建模就不说了,只要能理解业务过程和其中涉及的相关数据、维度就可以,但自顶向下的关系建模难度很大,以下是关系建模的三个建设要点。

1、业务的理解:找到企业内最理解业务和源系统的人,梳理出现状,比如运营商就要深刻理解三域(O/B/M),概念建模的挑战就很大,现在做到B域的概念建模已经很不容易。

如何深入浅出理解数据仓库建模?

 

2、数据及关系的理解:各个域的系统建设的时候没有统一文档和规范,要梳理出逻辑模型不容易,比如运营商的事件主题下的逻辑模型就非常复杂。

如何深入浅出理解数据仓库建模?

 

3、标准化的推进:数据仓库建模的任何实体都需要标准化命名,否则未来的管理成本巨大,也是后续数据有效治理的基础,以下是我们的一个命名规范示例:

如何深入浅出理解数据仓库建模?

 

五、推荐三本书

如何深入浅出理解数据仓库建模?

 

总而言之,你可以把我的文章当成一个指引,具体还是要结合企业的实际去推进,但做事的时候要不忘建模的初心:即数据如何摆布才能提高支撑应用的效率,手段上不用区分什么先进不先进,好用就成。



Tags:数据仓库   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关推荐
01.什么是大数据?数据是对客观事实进行记录的一种符号,可以是数字、文字,也可以是图片、音频、视频。大数据是指无法在一定时间范围内用常规软件进行捕捉、管理和数据的数据集...【详细内容】
2021-06-25  Tags: 数据仓库  点击:(14)  评论:(0)  加入收藏
这几年的数据领域出现好多的概念,例如:人工智能、物联网、边缘计算、数据治理、数据湖、数据中台……可谓是“百花齐放”!一时间大家都在提新概念,但却不是所有人都...【详细内容】
2021-02-25  Tags: 数据仓库  点击:(73)  评论:(0)  加入收藏
UML对系统架构的定义是:系统的组织结构,包括系统分解的组成部分,它们的关联性,交互,机制和指导原则,例如对系统群就是定义各子系统的功能和职责,如贷款系统群可能分为进件申请、核...【详细内容】
2021-02-24  Tags: 数据仓库  点击:(68)  评论:(0)  加入收藏
数据仓库?真的有必要吗?我曾经和一个业务系统负责人聊起数据仓库,他感到很疑惑,“我们数据库里不是有现成的数据吗?你们数据分析师直接用就好了,为什么还要花人力物力去建设什么数...【详细内容】
2021-01-27  Tags: 数据仓库  点击:(89)  评论:(0)  加入收藏
一、Hive基础简介1、基础描述Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,是一个可以对Hadoop中的大规模存储的数据进行查询和分析存储的组件,Hive数据...【详细内容】
2021-01-05  Tags: 数据仓库  点击:(67)  评论:(0)  加入收藏
今天这篇文章,给大家讲述一下数据仓库的架构模式,作为我们一起探讨的内容。希望大家留言、评论,我们一起学习。一 说到数据仓库,那么我们先来了解一下数据仓库的基本概念。数据...【详细内容】
2020-11-13  Tags: 数据仓库  点击:(86)  评论:(0)  加入收藏
一、数据仓库体系架构公司借助的第三方数据平台,在此平台之上建设数据仓库。因为第三方平台集成了很多东西,所以省去了不少功夫。数据仓库的体系架构,无外乎就是数据源、数据采...【详细内容】
2020-10-04  Tags: 数据仓库  点击:(433)  评论:(0)  加入收藏
关于数据仓库的概念、原理、建设方法论,网上已经有很多内容了,也有很多的经典书籍,本文更想聊聊企业数据仓库项目上的架构和组件工具问题。先来谈谈架构。企业数据仓库架构关于...【详细内容】
2020-09-30  Tags: 数据仓库  点击:(69)  评论:(0)  加入收藏
自创立之日起,酷克数据一直致力于降低企业进行大数据分析的门槛,推动数据民主化。今天,我们朝这个目标迈出了第一步:酷克数据在青云QingCloud上推出基于PostgreSQL和Greenplum D...【详细内容】
2020-08-03  Tags: 数据仓库  点击:(146)  评论:(0)  加入收藏
飞天大数据产品价值解读 — SaaS模式云数据仓库 MaxCompute摘要:企业在数字化转型过程中面临数据技术平台建设和运营的诸多挑战,随着现代化数据仓库向多功能、服务化方向...【详细内容】
2020-07-29  Tags: 数据仓库  点击:(35)  评论:(0)  加入收藏
▌简易百科推荐
初学者的数据库索引简介> Congratulations今天在ORM的时代,我们作为开发人员不必经常触摸数据库。我自己自己建立了我的第一个项目而不在项目内写一行的原始SQL。它起初工作...【详细内容】
2021-07-12  闻数起舞    Tags:SQL查询   点击:(5)  评论:(0)  加入收藏
如果一切似乎都在控制下,你就不会够快”> Photo by Christina Morillo (original). Thank you!几乎所有用于最终用户的Web服务都需要存储数据。它们几乎所有所有人都将它们存...【详细内容】
2021-07-12  闻数起舞    Tags:数据库性能   点击:(5)  评论:(0)  加入收藏
系统数据库和用户数据库数据库有两种:系统数据库,另一种是需要用户创建的数据库,右键新建数据库(称之为用户数据库) 创建数据库必须了解的概念要创建自己的数据库,首先要弄清楚两...【详细内容】
2021-07-09  技术小菜    Tags:数据库   点击:(6)  评论:(0)  加入收藏
分库分表介绍:分库分表的目的是为了系统高并发、高可用。分库和年发表是两回事,两个概念,都是为了防止数据库服务因为同一时间内访问量过大导致宕机而设计的一种应对策略。一、...【详细内容】
2021-06-28  从孩子开始学编程    Tags:分库分表   点击:(16)  评论:(0)  加入收藏
本文讲解窗口函数的概念,窗口函数与数据分组的功能相似,可以指定数据窗口进行统计分析,但窗口函数与数据分组又有所区别,窗口函数对每个组返回多行,而数据分组对每个组只返回一行...【详细内容】
2021-06-25  大话数据分析    Tags:SQL数据分析   点击:(15)  评论:(0)  加入收藏
MongoDB 简介MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。它的最大特点是:•特别适合存储大量的无结...【详细内容】
2021-06-25  锐玩道    Tags:MongoDB   点击:(25)  评论:(0)  加入收藏
class Integration(Base, ModelBase, ModelSerializer): __tablename__ = 'integration' id = Column(Integer, primary_key=True) domain = relationship...【详细内容】
2021-06-24  lizhihua0625    Tags:sqlalchemy   点击:(16)  评论:(0)  加入收藏
我们渴望通过数据来增强和改善商业和生活的各个方面,这驱使我们在大规模管理数据方面进行范式转变。 尽管过去十年的技术进步已解决了数据量和数据处理计算的规模问题,但它们无法解决其他方面的规模问题:数据格局的变化,...【详细内容】
2021-06-23  ThoughtWorks  今日头条  Tags:Data Mesh   点击:(19)  评论:(0)  加入收藏
一. 前台管理1. 轮播图(5张),首页头部大图,注册登录页左侧大图,logo图,导航条广告二. 后台管理1. 站点用户管理1. 系统用户 SystemUser 列名 数据类型 ...【详细内容】
2021-06-23  大壮二壮学剪辑    Tags:数据库表   点击:(15)  评论:(0)  加入收藏
阿里云Tair云原生内存数据库线上名字为阿里云数据库Redis企业版(又称阿里云Tair),从2009年开始正式承载集团业务,是一款历经磨练的企业级产品。它完全兼容Redis的数据结构和通讯协议,包括API接口,并且在内部逐步打磨的过程...【详细内容】
2021-06-21  数据库技术达摩院    Tags:Tair云   点击:(18)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条