您的位置:今日热点 > 人工智能 > 大数据 > 一文了解数仓建模—Inmon范式建模与Kimball维度建模

一文了解数仓建模—Inmon范式建模与Kimball维度建模

【今日热点网】

在数据客栈领域,有两位大师,一位是“数据客栈”之父 Bill Inmon,一位是数据客栈权威专家 Ralph Kimball,两位大师每人都有一本经典著作,Inmon大师著作《数据客栈》及Kimball大师的《数仓工具箱》,两本书也代表了两种差其余数仓建设模式,这两种架构模式支持了数据客栈以及商业智能近二十年的生长。今天我们就来聊下这两种建模方式——范式建模和维度建模。

本文最先先简朴明晰两种建模的焦点头脑,然后凭证一个详细的例子,划分使用这两种建模方式举行建模,人人便会一目了然!

一、两种建模头脑

对于 Inmon 和 Kimball 两种建模方式可以长篇大论叙述,但理论是很死板的,尤其是艰涩难明的文字,人人读完估量也不会收获太多,以是我凭证自己的明晰用通俗的语言提炼出最焦点的观点。

范式建模

范式建模是数仓之父 Inmon 所提倡的,“数据客栈”这个词就是这位大师所界说的,这种建模方式在范式理论上相符3NF,这里的3NF与OLTP中的3NF照样有点区其余:关系数据库中的3NF是针对详细的营业流程的实体工具关系抽象,而数据客栈的3NF是站在企业角度面向主题的抽象。

Inmon 模子从流程上看是自上而下的,自上而下指的是数据的流向,“上”即数据的上游,“下”即数据的下游,即从涣散异构的数据源 -> 数据客栈 -> 数据集市。以数据源头为导向,然后一步步探索获取只管相符预期的数据,由于数据源往往是异构的,以是会更增强调数据的洗濯事情,将数据抽取为实体-关系模子,并不强调事实表和维度表的观点。

维度建模

Kimball 模子从流程上看是自下而上的,即从数据集市-> 数据客栈 -> 涣散异构的数据源。Kimball 是以最终义务为导向,将数据根据目的拆分出差其余表需求,数据会抽取为事实-维度模子,数据源经ETL转化为事实表和维度表导入数据集市,以星型模子或雪花模子等方式构建维度数据客栈,架构系统中,数据集市与数据客栈是慎密连系的,数据集市是数据客栈中一个逻辑上的主题域。

两种建模方式的理论观点就简朴先容到这,由于纯理论知识说再多,人人也可能有点疑惑,以是下面用一个详细的例子来实践两种建模方式。

二、两种建模实践

通过上一小节两种建模焦点头脑,信托人人对这两种建模方式已经有了也许的明晰,接下来我们通过详细的例子,让人人有详细的感受。

以电商举例

人人都网购过,知道购置物品的流程,因此以电商购物为例,更易于人人的明晰。

真实的电商购物的流程较庞大,此处表数目和表字段做简化处置。

1. 源表的结构及数据

对于我们大数据平台来说,源表指的电商系统中后台数据库中的表,这种表一样平常都是OLTP类型的表:

① 用户信息表用户ID昵称姓名性别联系方式区域用户品级ID确立时间修改时间是否注销1001小忆控张翠花女15034951345031022021-04-03 13:11:012021-04-04 15:16:0001002池木李开国男17834686673031112021-04-03 14:11:012021-04-04 15:26:0101003君勿笑刘素芬女15687876464031212021-04-03 15:11:012021-04-04 16:16:0001004原野王富贵男15013145210031332021-04-03 15:23:012021-04-04 17:16:001② 都会信息表都会ID省市0310河北邯郸0311河北石家庄0312河北保定0313河北张家口③ 用户品级表用户品级ID价值属性1主要价值用户2一样平常价值用户3一样平常生长用户④ 用户订单表订单ID用户ID订单状态商品ID商品总额下单时间支付金额支付类型OR110011001未支付CO31243122.002021-04-04 10:12:050.00
OR110021002已支付CO5435386.502021-04-04 11:12:0586.50支付宝OR110031003已支付CO4325346.002021-04-04 14:16:050.00助力免费OR110041002已支付CO34235210.002021-04-04 11:12:05210.00支付宝2. 使用 Inmon 模式建模

使用 Inmon 模式对以上源表数据举行建模,需要将数据抽取为实体-关系模式,凭证源表的数据,我们将表拆分为:用户实体表,订单实体表,都会信息实体表,用户与都会信息关系表,用户与用户品级关系表等多个子模块:

① 用户实体表

(注:ETL已过滤掉注销用户)

用户ID姓名性别联系方式区域用户品级ID确立时间修改时间1001张翠花女15034951345031022021-04-03 13:11:012021-04-04 15:16:001002李开国男17834686673031112021-04-03 14:11:012021-04-04 15:26:011003刘素芬女15687876464031212021-04-03 15:11:012021-04-04 16:16:00② 支付乐成订单实体表订单ID用户ID商品ID商品总额下单时间支付金额支付类型OR110021002CO5435386.502021-04-04 11:12:0586.50支付宝OR110031003CO4325346.002021-04-04 14:16:050.00助力免费OR110041002CO34235210.002021-04-04 11:12:05210.00支付宝③ 都会信息实体表都会ID省市0310河北邯郸0311河北石家庄0312河北保定0313河北张家口④ 订单与用户关系表订单ID用户IDOR110021002OR110031003OR110041002⑤ 用户与都会信息关系表用户ID都会ID100103101002031110030312⑥ 用户与用户品级关系表用户ID用户品级ID100121002110031

通过以上我们可以发现,范式建模就是将源表抽取为实体表,关系表,以是范式建模即是实体关系(ER)模子。数据没有冗余,相符三范式设计规范。

3. 使用 Kimball 模式建模

使用 Kimball 模式,需要将数据抽取为事实表和维度表,凭证源表数据,我们将表拆分为:订单事实表,用户维度表,都会信息维度表,用户品级维度表。

可以看出,在 Kimball 的维度建模中,不需要单独维护数据关系表,由于关系已经冗余在事实表和维度表中。

① 支付乐成订单事实表订单ID用户ID商品ID商品总额下单时间支付金额支付类型OR110021002CO5435386.502021-04-04 11:12:0586.50支付宝OR110031003CO4325346.002021-04-04 14:16:050.00助力免费OR110041002CO34235210.002021-04-04 11:12:05210.00支付宝② 用户维度表用户ID姓名性别联系方式区域用户品级ID确立时间修改时间1001张翠花女15034951345031022021-04-03 13:11:012021-04-04 15:16:001002李开国男17834686673031112021-04-03 14:11:012021-04-04 15:26:011003刘素芬女15687876464031212021-04-03 15:11:012021-04-04 16:16:00③ 都会信息维度表都会ID省市0310河北邯郸0311河北石家庄0312河北保定0313河北张家口④ 用户品级维度表用户品级ID价值属性1主要价值用户2一样平常价值用户3一样平常生长用户

我们用图的方式将以上表之间的关系简朴展示出来:

凭证上图,我们发现什么,这不就是典型的雪花模式嘛,其特点就是维度表可以拥有其他维度表。

三、两种建模对比两种建模方式特点

范式建模:通过上一小节的详细例子可以看出范式建模的优点:能够连系营业系统的数据模子,较利便的实现数据客栈的模子;统一份数据只存放在一个地方,没有数据冗余,保证了数据一致性;数据解耦,利便维护。但同时也带来了瑕玷:表的数目多;查询时关联表较多使得查询性能降低。

维度建模:模子结构简朴,面向剖析,为了提高查询性能可以增添数据冗余,反规范化的设计,开发周期短,能够快速迭代。瑕玷就是数据会大量冗余,预处置阶段开销大,后期维护贫苦;尚有一个问题就是不能保证数据口径一致性,缘故原由后面有解说。

我们再来明晰下维度建模:数据会抽取为事实-维度模子,维度就是看待问题的角度,从差其余角度看待某个问题,就会得出差其余结论,而要获得这个结论,就需要事实表中的器量,作甚器量,就是事实表中数值类型的字段。

例:某公司的各个商品在天下各地市的销售情形,维度就是天下的都会和各个商品,器量就是商品的单价,从差其余维度盘算销售额:如查看北京市酸奶的销售额,上海市纯牛奶的销售额,这就是差其余维度组合方式。在限制的维度条件上,盘算商品单价的总和,也就是 sum 器量值,即可获得我们想要的效果。

维度建模,就是依赖维度举行建模,然则若是维度设计的不合理,会不会带来问题呢?

若是我们把省份当做一个单独维度,都会当做一个维度,盘算都会的人口数目。这时省份和都会都是单独的维度,它们之间没有了关系,就会泛起以下情形:

广东省 杭州市 1500
浙江省 广州市 1200

这时会泛起数据口径纷歧致,最后导致数据效果禁绝确。而范式建模就不会泛起这个问题,由于在范式建模中强调的就是实体-关系模子,以是省份和都会之间一定存在归属关系的,不会泛起省份和都会口径纷歧致的问题。

以是,范式建模能保证口径的一致性,而维度建模不能!

建模方式对比

通过上一节的详细的例子以及两种建模的特点,我们对比下两种建模方式的差异:

特征KimballInmon开发周期短长开举事度小大维护难度巨细数据要求针对详细营业站在企业角度全心设计否是缓慢转变维是否需要的职员少量专业团队数据模子维度建模,星型模子、雪花模子实体-关系模子,准三范式设计

我们知道,互联网公司的营业一样平常是周期对照短需求转变快,而且迭代频仍,若是全心设计 Inmon 实体-关系的模式似乎并不能知足快速迭代的营业需要。以是,互联网公司更多场景下趋向于使用 Kimball 维度-事实的设计反而可以更快地完成义务。

四、两种建模夹杂场景

通过以上几个小节我们已经明晰了范式建模与维度建模的头脑以及它们之间的异同,优瑕玷。那么我们能不能将两种建模方式夹杂使用呢,让它们施展各自最大的优势。接下来我们一起来看下。

范式建模必须相符准三范式设计规范,若是使用夹杂建模,则源表也需要相符范式建模的限制,即源数据须为操作型或事务型系统的数据。通过ETL抽取转换和加载到数据客栈的ODS层,ODS层数据与源数据是保持一致的,以是ODS层数据也是相符范式设计规范的,通过ODS的数据,行使范式建模方式,建设原子数据的数据客栈EDW,然后基于EDW,行使维度建模方式建设数据集市。

连系两种建模方式的各自规范,夹杂建模根据“松耦合、条理化”的基本架构原则举行实行。夹杂数据客栈架构方式主要包罗以下要害步骤:营业需求分步构建、分条理保留数据、整合原子级的数据尺度、维护一致性维度等。

性感可爱丝袜女郎高清写真
High definition photo of sexy and lovely stockings girl
上一篇:数字永生,人将接受怎样的风险与挑战?
下一篇:在数字竞争中,全球数字空间权力将重新洗牌

您可能喜欢