摘要:一文带你认知数据建模最全常识体系,具体解读三范式、星型模型、雪花模型、星座模型、建模标准等内容。
一、前言
数据建模乍一听的时候感觉十分的有技术性,并且在行感觉十分的高大上,高深莫测。
在目前的时代下,数据量能够说是海量,并且还在持续增长,那么对于企业来说,如何疾速的精确的从这些数据中获取本人想得到的信息呢?
二、什么是数据建模
数据建模简略来说就是基于对业务的了解,将各种数据进行整合和关联,并最终使得这些数据可用性,可读性加强,让应用方能疾速的获取到本人关怀的有价值的信息并且及时的作出响应,为公司带来效益。
三、为什么要建模
数据建模是一套方法论,次要是对数据的整合和存储做一些领导,强调从各个角度正当的存储数据。
有了适合的数据模型,是会带来很多益处的:
- 查问使用性能晋升
- 用户效率进步,改善用户体验
- 数据品质晋升
- ……
所以大数据系统须要数据模型办法来更好的组织和存储,以便在性能,老本,效率和品质之间取的均衡。
四、建模常用工具
PowerDesigner:
Power Designer 是Sybase公司的CASE工具集,应用它能够不便地对管理信息系统进行剖析设计,他简直包含了数据库模型设计的全过程。利用Power Designer能够制作数据流程图、概念数据模型、物理数据模型,还能够为数据仓库制作构造模型,也能对团队设计模型进行管制。他能够与许多风行的软件开发工具,例如PowerBuilder、Delphi、VB等相配合使开发工夫缩短和使零碎设计更优化。
power designer是能进行数据库设计的弱小的软件,是一款开发人员罕用的数据库建模工具。应用它能够别离从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个档次对数据库进行设计。在这里,概念数据模型形容的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义;物理数据模型是在概念数据模型的根底上针对指标数据库管理系统的具体化。
五、业务零碎和数据仓库建模区别
在业务零碎中,通常面对业务库的随机读写,目前次要是采纳三范式(3NF)模型存储数据。
而在数据仓库的建模过程中,因为次要是数据的批量读取操作,然而事物并不是咱们所关怀的,次要是关注数据的整合以及查询处理性能,因而会采纳其余的建模办法,以Kimball维度建模最为经典。
六、Kimball和Inmon架构
6.1 Inmon架构
辐射状企业信息工厂(CIF) 办法由Bill Inmon及业界人士提倡的。在这个环境下,数据从操作性数据源中获取,在ETL零碎中解决,将这一过程称为数据获取,从这一过程中取得的原子数据保留在满足第三范式的数据库中,这种规范化的原子数据的仓库被称为CIF架构下的企业级数据仓库(EDW)
与Kimball办法类似,CIF提倡企业数据协调与集成,但CIF认为要利用规范化的EDW承当这一角色,而Kimball架构强调具备一致性维度的企业总线的重要作用
Inmon企业级数据仓库的剖析数据库通常以部门为核心(而不是围绕业务过程来组织),而且蕴含汇总数据,并不是原子级别数据,如果ETL过程中数据所利用的业务规定超过了根本概要,如部门改名了或者其余的相似计算,要将剖析数据库与EDW原子数据分割起来将变得很艰难
6.2 Kimball架构
Kimball架构利用了CIF中处于核心位置的EDW,然而此次的EDW齐全与剖析与报表用户隔离,仅作为数据起源,其中数据是维度的,原子的,以过程为核心的,与企业级数据仓库总线结构保持一致。
6.3 架构比照
- 流程
Inmon架构是自顶向下,即从数据抽取–>数据仓库–>数据集市,以数据源为导向,是一种瀑布流开发方法,模型偏差于3NF,
Kimball:架构是自下向上,即从数据集市(主题划分)–>数据仓库–> 数据抽取,是以需要为导向的,个别应用星型模型
- 事实表和维表
Inmon架构下,不强调事实表和维表的概念,因为数据源变动可能会比拟大,更加强调的是数据荡涤的工作
kimball架构强调模型由事实表和维表组成,注重事实表与维表的设计
- 数据集市
Inmon架构中,数据集市有本人的物理存储,是实在存在的。
Kimball数据仓库架构中,数据集市是一个逻辑概念,只是多维数据仓库中的主题域划分,并没有本人的物理存储,也能够说是虚构的数据集市。是数据仓库的一个拜访层,是按主题域组织的数据汇合,用于反对部门级的决策。
- 核心
Inmon架构是以部门为核心,而Kimball架构是以业务过程为核心
- EDW的拜访
Inmon架构中用户能够间接拜访企业数据仓库(EDW)
Kimball架构中用户不能够间接拜访企业数据仓库(EDW),只能拜访展示区数据
6.4 总结
企业开发中个别抉择Kimball维度建模
七、数据建模的几种形式
7.1 ER模型
ER模型是属于三范式的,是企业级的主题形象而不是独自形容某个业务
7.1.1 第一范式.范式
当分类不可再分时,这种关系是规范化的,一个低级范式合成转换为更高级的范式时,就叫做规范化。
数据表能够分为1-5NF,第一范式是最低要求,第五范式则是最高要求。
最罕用的范式有第一范式(1NF)、第二范式(2NF)、第三范式(3NF)。
7.1.2 第一范式
表中的每一列都是不可拆分的原子项
由上图可知,phone字段外面存了2个值,具备可宰割性,不合乎1NF,能够改成:
7.1.3 第二范式
第二范式要同时满足上面两个条件:
- 满足第一范式。
- 没有局部依赖。
上图能够看出,如果一个用户下了很多订单,则用户名,播种地址和手机号有反复呈现的状况造成数据冗余,很显著不太合乎第二范式,能够改成:
7.1.4 第三范式
第三范式要同时满足上面两个条件:
- 满足第二范式
- 没有传递依赖
简略点说,关系反复,能相互推导进去。
如上图所示,如果晓得了zip邮编,其实是能推出来省市区的,相同,晓得了省市区,也是能够推出邮编的,有传递依赖,造成了冗余,不合乎第三范式,须要革新:
7.1.5 小结
在关系数据模型设计中,个别须要满足第三范式的要求。如果一个表有良好的主外键设计,就应该是满足3NF的表。
规范化带来的益处是通过缩小数据冗余进步更新数据的效率,同时保障数据完整性。然而,咱们在理论利用中也要避免适度规范化的问题。规范化水平越高,划分的表就越多,在查问数据时越有可能应用表连贯操作。
而如果连贯的表过多,会影响查问的性能。要害的问题是要根据业务需要,认真衡量数据查问和数据更新的关系,制订最适宜的规范化水平。还有一点须要留神的是,不要为了遵循严格的规范化规定而批改业务需要。
7.2 维度建模
维度建模是一种将大量数据结构化的逻辑设计伎俩,蕴含维度和指标,它不像ER模型目标是打消冗余数据,维度建模是面向剖析,最终目标是进步查问性能,所以会减少数据冗余,并且违反三范式。
维度建模也是重点关注让用户疾速实现需要剖析且对于简单查问及时响应,维度建模个别能够分为三种:
- 星型模型
- 雪花模型
- 星座模型
其中最罕用的其实是星型模型。
7.2.1 背景
在多维分析的商业智能解决方案中,依据事实表和维度表的关系,又可将常见的模型分为星型模型,雪花型模型及星座模型。在设计逻辑型数据的模型的时候,就应思考数据是依照星型模型,雪花型模型还是星座模型进行组织。
7.2.2 星型模型
星形模型中有一张事实表,以及零个或多个维度表,事实表与维度表通过主键外键相关联,维度表之间没有关联,当所有维表都间接连贯到“ 事实表”上时,整个图解就像星星一样,故将该模型称为星型模型。星形模型是最简略,也是最罕用的模型。因为星形模型只有一张大表,因而它相比于其余模型更适宜于大数据处理。其余模型能够通过肯定的转换,变为星形模型。
星型架构是一种非正规化的构造,多维数据集的每一个维度都间接与事实表相连接,不存在突变维度,所以数据有肯定的冗余,如在地区维度表中,存在国家 A 省 B 的城市 C 以及国家 A 省 B 的城市 D 两条记录,那么国家 A 和省 B 的信息别离存储了两次,即存在冗余。
7.2.3 雪花模型
当有一个或多个维表没有间接连贯到事实表上,而是通过其余维表连贯到事实表上时,其图解就像多个雪花连贯在一起,故称雪花模型。雪花模型是对星型模型的扩大。它对星型模型的维表进一步层次化,原有的各维表可能被扩大为小的维度表,造成一些部分的 ” 档次 ” 区域,这些被合成的表都连贯到主维度表而不是事实表。如图,将地区维表又合成为国家,省份,城市等维表。它的长处是 : 通过最大限度地缩小数据存储量以及联结较小的维表来改善查问性能。雪花型构造去除了数据冗余。
7.2.4 星座模型
星座模型是由星型模型延长而来,星型模型是基于一张事实表而星座模式是基于多张事实表,并且共享维度表信息,这种模型往往利用于数据关系比星型模型和雪花模型更简单的场合。星座模型须要多个事实表共享维度表,因此能够视为星形模型的汇合,故亦被称为星系模型
7.2.5 比照
- 星型模型因为数据的冗余所以很多统计查问不须要做内部的连贯,因而个别状况下效率比雪花型模型要高。
- 星型构造不必思考很多正规化的因素,设计与实现都比较简单。
- 雪花型模型因为去除了冗余,有些统计就须要通过表的联接能力产生,所以效率比拟低。
- 正规化也是一种比较复杂的过程,相应的数据库结构设计、数据的 ETL、以及前期的保护都要简单一些。
7.2.6 小结
通过比照,咱们能够发现数据仓库大多数时候是比拟适宜应用星型模型构建底层数据Hive表,通过大量的冗余来缩小表查问的次数从而晋升查问效率,星型模型对OLAP的剖析引擎反对比拟敌对,这一点在Kylin中比拟能体现。而雪花模型在关系型数据库中如MySQL,Oracle中十分常见,尤其像电商的数据库表。在数据仓库中雪花模型和星座模型的利用场景比拟少,但也不是没有,所以在具体设计的时候,能够思考是不是能联合两者的长处参加设计,以此达到设计的最优化目标。
7.2.7 建模准则:
- 高内聚和低辑合
将业务相近或者相干、粒度雷同的数据设计为一个逻辑或者物理模型:将高概率同 时拜访的数据放一起 ,将低概率同时拜访的数据离开存储。
- 外围模型与扩大模型拆散
建设外围模型与扩大模型体系,外围模型包含的宇段反对罕用的外围业务,扩大模型包含的字段反对个性化或大量利用的须要 ,不能让扩大模型的宇段适度侵人外围模型,免得毁坏外围模型的架构简洁性与可维护性。
- 公共解决逻辑下沉及繁多
越是底层专用的解决逻辑越应该在数据调度依赖的底层进行封装与实现,不要让专用的解决逻辑裸露给应用层实现,不要让公共逻辑多处同时存在。
- 老本与性能均衡
适当的数据冗余可换取查问和刷新性能,不宜适度冗余与数据复制。
- 数据可回滚
解决逻辑不变,在不同工夫屡次运行数据后果确定不变。
- 一致性
具备雷同含意的字段在不同表中的命名必须雷同,必须应用标准定义中的名称。
- 命名清晰、可了解
表命名需清晰、统一,表名需易于消费者了解和应用。
星型模型设计步骤:
- 抉择须要进行剖析决策的业务过程。业务过程能够是单个业务事件,比方交易的领取、退款等;也能够是某个事件的状态,比方以后的账户余额等;还能够是一系列相干业务事件组成的业务流程,具体须要看咱们剖析的是某些事件产生状况,还是以后状态,或是事件流转效率。
- 抉择粒度。在事件剖析中,咱们要预判所有剖析须要细分的水平,从而决定抉择的粒度。粒度是维度的一个组合。
- 辨认维表。抉择好粒度之后,就须要基于此粒度设计维表,包含维度属性,用于剖析时进行分组和筛选。
- 抉择事实。确定剖析须要掂量的指标
7.3 Data Vault模型
Data Vault Dan Linstedt 发动创立的一种模型,它是模型的衍生,其设计的出发点也是为了实现数据的整合,但不能间接用于数据分析决策。它强调建设一个可审计的根底数据层,也就是强调数据的历史性、可追溯性和原子性,而不要求对数据进行适度的一致性解决和整合;
同时它基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式解决来优化模型,以应答源零碎变更的扩展性。Data Vault 型由以下几局部组成。
• Hub :是企业的外围业务实体,由 实体 key 、数据仓库序列代理键、装载工夫、数据起源组成。
• Link :代表 Hub 之间的关系。这里与 模型最大的区别是将关系作为一个独立的单元形象,能够晋升模型的扩展性。它能够直
接形容 1:1 1:n n:n 的关系,而不须要做任何变更。它由 Hub 的代理键、装载工夫、数据起源组成。
• Satellite :是 Hub 的详细描述内容, 一个 Hub 能够有多个 Satellite它由 Hub 的代理键、装载工夫、起源类型、具体的 Hub 形容信息组成。
Data Vault 模型比 ER 模型更容易设计和产出,它的 ETL 加工可实现配置化。
8、模型分层
8.1 前言
数据仓库个别分为三层,自上而下别离为数据贴源层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。
8.2 ods层
贴源层,与业务库保持一致,不做任何解决
8.3 cdm层
数据公共层CDM(Common Data Model,又称通用数据模型层),包含DIM维度表、DWD,DW和DWS,由ODS层数据加工而成。次要实现数据加工与整合,建设一致性的维度,构建可复用的面向剖析和统计的明细事实表,以及汇总公共粒度的指标
- 公共维度层(DIM):基于维度建模理念思维,建设企业一致性维度。升高数据计算口径和算法不对立危险。 公共维度层的表通常也被称为逻辑维度表,维度和维度逻 辑表通常一一对应。
- 明细粒度事实层(DWD):对数据进行规范化编码转换,荡涤,对立格局,脱敏等,不做横向整合
- 主题宽表层(DW) 对dwd各种信息进行整合,输入主题宽表(面 向业务过 程,不同业务过程的信息不冗余建设,采纳外键模式)
- 公共汇总粒度事实层(DWS):以剖析的主题对象作为建模驱动,基于下层的利用和产品的指标需要,构建公共粒度的汇总指标事实表,以宽表化伎俩物理化模型。构建命名标准、口径统一的统计指标,为下层提供公共指标,建设汇总宽表、明细事实表。
公共汇总粒度事实层的表通常也被称为汇总逻辑表,用于寄存派生指标数据。
8.4 ads层
数据应用层ADS(Application Data Service):面向业务需要定制开发,存放数据产品个性化的统计指标数据。
8.5 逻辑分层架构
8.6 分层的益处
- 清晰数据结构:每一个数据分层都有它的作用域,这样咱们在应用表的时候能更不便地定位和了解。
- 数据血统追踪:简略来讲能够这样了解,咱们最终给业务出现的是一张能间接应用的张业务表,然而它的起源有很多,如果有一张起源表出问题了,咱们心愿可能疾速精确地定位到问题,并分明它的危害范畴。
- 缩小反复开发:标准数据分层,开发一些通用的中间层数据,可能缩小极大的反复计算。
- 把简单问题简单化:将一个简单的工作分解成多个步骤来实现,每一层只解决繁多的步骤,比较简单和容易了解。而且便于保护数据的准确性,当数据呈现问题之后,能够不必修复所有的数据,只须要从有问题的步骤开始修复。
本文分享自华为云社区《从三范式到建模标准,详解数据建模常识体系》,原文作者:范MM。
点击关注,第一工夫理解华为云陈腐技术~