00:00
好,下面的话我们来看一下啊,关系模型和这个,呃,关系建模和维度建模。啊,这两个概念呢,呃,也是比较高频的一个概念哈,当今数据处理呢,大致分为两大类,两大类一个叫联机事物处理,叫OLTP。也是online transition processing指的是什么呢?指的是my circle,比如Java后台买里面的数据处理。那生最擅长的什么,增商改查呀,对吧?哎,增商改查你说这是OLTP他擅长的,那还有呢,是这个联机分析处理叫o lap,叫online like。Analytic啊,这个processing相当于是一个分析。数据分析的一个一种方式。那这个呢,主要指的是大数据场景啊,大数据类似于在have里面,因为have的特点呢,是存储数据量比较大,数据量越大,查询速度呢越快,而且在这里面我可以进行对数据的分析。
01:01
这是它的特点,那OLTP也就是买里的关系数据库呢,呃,主要是基本的日常业务的处理,你说保证它这个Java后台呀,这个交易啊,下单呐,支付啊,啊这些事情的一个完成,数据量呢比较小。那op呢?它是数据仓库系统的主要应用。支持呢,复杂的数据分析,侧重于决策与数据量大,大数据场景才使用哈,并且呢,直观易懂的查询结果,这这一块也就是说一个用于这个呃,传统的业务,另一个呢,是用于目前的大数据场景的一个分析,那他们之间的一个对比区别是什么呀。OT po lap,那你其实你可以换成什么呢?你可以把它换成买口,比较直接的啊,把它换成买口,把它换成还往这一放你就清楚了。首先从毒毒的特性。每次查询只返回少量数据。买Q里面本身它就没有多少数据,对吧,它也不可能你返回太多,但是你have里面。
02:04
对大量的这个记录呢,进行一个汇总,那数据量肯定很大啊,很大都是这个PB啊,TB和PB级的哈写特性。随机写,低延时写入,用户输入,那这里面写的速度就很快,来一条就写一条对吧?哎,这个增删查改是这个效率那是极高啊,但是op。他不行,他你来一条,你给我处理一条,来一条处理一条,那对不起啊,这个我做不到,他呢,就是你来一大批数据,我可以对你这一大批数据进行统一的相应的一个处理啊,比如说批处理。使用场景OLTB呢,主要是用户呢,基于这个,呃,是这个Java后台啊这种项目。那像o lap呢,主要是用来这个分析决策分析指标的啊啊数据表证这里面往往是最新的数据。那我这个o lap呢,随着时间变化,历史数据,数据越多越好,对吧?啊,这个能可以存储,呃,从这个企业开始创建,一直到现在这一时刻,所有的数据都可以保存啊。
03:05
数据规模,那像OLTB呢,属于这个GB级的。数据量比较小了啊,能到GB已经很大很大了啊,一般上就是几千万条呗,那像这个o lap呢,这个每天都是上亿条的数据。而且呢,这里面我还存储着从公司开始一直到现在这个过程,那你想想得多少数据对吧。这是这两个的一个对比,就关系模型和维度啊,关系建模和维度建模的一个对比哈,啊这里面说到的这个概念呢,就是oltp和o lap。那再往下具体的关系建模。关系建模呢,你看一下啊,这呢就是JAVA1后台买的表。那买circle的表什么特点呢?你看啊,这是一张大,一张表,一张表呢,这是日期。日系里面包括月。一包不年。他为了这个满足三三范式这个要求,他为了满足三范式,他就尽可能的把这里面猜的非常非常细,你看这里面就剩了一个EID和name。
04:08
对吧,啊,这个页的ID,因为这里面要存放这个页ID嘛,通过它呢去查一查。啊的是哪一年的啊,这样去设计的啊,其实你会发现这里面就会日后在分析数据的时候存在着大量的。噪音操作屏这一块。这里面都是通过ID一个去变成一个,对吧,你看这个,这是这个ID,嗯,这个ID在这呢,我通过它就能读到这里面的name category,这个通过这个ID我可以读到这里面的信息,然后呢,再并到这里面,这是谁的ID啊,Product ID这对吧,通过ID一个一个去查,把所有东西都查出来。那你每刷一个指标,你都要进行大量的这个噪音操作。那你想想,在大数据场景下,最慢的操作就是噪音操作。那会严重影响性能的哈行,那关于数据库呢,它的特点就是为了减少冗余,所以说会设计成这种,把一张大表拆分成N多个小表,进行各种关联查询啊。
05:10
那下面看一下我们这个维度的啊,维度建模的示意图,维度建模这个呢,是这。你看的什么特点?中间只有一张表,周围全是一级维度。全部都合并在一起了,你看你上张图当中呢,比如说看一下这个,看一下它日期啊,看一下日期,你上张图当中的日期。这是三张表,到了我维度建模的时候,我把你全部都合并到啊这里面是年月日对吧,按年月日。它上边我看还有别的吗?这是产品产品相关的,产品相关的这合了吗。这个吧,嗯,产品相关的是这张表,哎,你那里面三张表我都给你合到这里面去,包括这个位置信息,如果你有省市县的话,哎,我给你合到这里面,那这样保证你这个外围啊只有一层维度,这样的话,我在噪音的时候呢,我就减少了大的这个呃噪音,我可能噪音一次就行,那你其他的表呢,我可能你要是按照上面这种这个建模的方式的话,那我首先他啊,他要招他一次,再招他一次,他再招他一次。
06:19
那这个效率太低了哈,这关系建模呢,往往是在这个加后台,他们为了减少数据冗余这样去建,那这个维度建模呢,是属于在大数据场景下,为了减少后续的一个噪音操作。那我们尽量的把这个维度呢,进行相应的一个退化,退化成一张表啊,行关印建模,虽然数据啊勇于少了,但是在大规模数据跨表分析查询过程当中,会造成多表关联,这会大大降低执行效率。所以说通常情况下呢,我们会选择这个会选择的是维度建模,好,那看一下维度建模里面,这里面的一些核心概念,维度建模里面包括星型模型,雪花模型和星座。
07:03
这么三类,那这三类啊,你光看名字感觉,哎呀这个这太难懂了哈,这个啊星什么叫星座啊,什么叫心型,什么叫雪花啊,什么叫星座呢。看图。左侧这张表呢,它就是星型模型。右侧这张表呢,是雪花模型,看大家能不能看出来啥啊,啥情况啊,能不能看出来点啥。那这里面呢,就要40表。叫fact什么推表对吧?啊,40表,40表周围如果围绕着是一级维度,什么叫一层维度呢?那你看画圈呗,你看跟它关联的,这不就一圈一圈一圈对吧,一圈。那它就是新型模型,那雪花模型呢,你看啊,在这个40表周围这几个呢。这是一圈吧,你看这呢,这是不是还有一圈。哎,也就说在40表周围围绕着多圈。多级维度,那么它就是循环模型,你看这简单不?
08:01
那稍微看一下概念哈,雪花模型和新型模型的区别主要在于维度的乘积,什么叫维度,这都叫表啊,这种这种就叫维度表上。啊,标准的新型模型的维度呢,只有一层。而雪花模型呢,可能会涉及多层,雪花模型涉及到多层。嗯,雪花模型呢,比较靠近这个三范式,你看这个表越多,那不就是这个三范式的原则嘛,啊,尽量减少这个勇于操作嘛。哎,我觉得你建这种小表哈,但是呢,无法完全遵循啊,他也不会说完全的把它拆开啊,因此呢,遵循这个3万式啊,性能太高,主要就是因为这个造引。为了减少后续每算每个指标的时候都进行造影,所以说我们尽量呢采用的都是新型模型。那除了星星模型之外,还有个星座呀。看看星座。这是星座。
09:00
星座呢,与前两种这个情况的区别就是40表的数量。你刚才不说的是维度嘛,这个一级维度呢,是这个星座啊,星星,这个多级维度呢,就是这个雪花,那这个星座呢,以前两种的区别是40表的数量。星座呢是基于多个师表,你看这样一个表,这又是一个师表。Fact嘛,FACT4表,那你只要你这里面有多个四时表,那它就是星座。不管你是雪花,你还是说是星星,你说它是独立于这两个之外的啊,啊基本上呢,是很多数据库的常态,因为很多数据库呢,都是基于多个表啊,这肯定我们这里面有八张师子表啊,所以呢,这个星座呢,不星座只反映的是是否有多个值表。它们之间呢,是否共享一个啊维度,你看这个这里面。这个维度不相当于是共享的吗?尤其是这两个,呃,所以星座呢,并不和前两种模型呢进行一个冲突,只要有多个试表,那就是星座。
10:02
啊,不管你是这个雪花型的星座,还是说是新型的一个星座啊来。那在企业当中我们怎么选呢?我们是选择星星星座还是这个,呃,雪花呢。首先就是星座不星座只是跟这个数据和需求有关系,跟设计没关系,所以说不用选择你只要你有是多师表,那就默认就已经是星座了,所以说我们这里面主要这个优先考虑的还是心型和雪花,那新型还是雪花呢,取决于性能的优先还是灵活优先。你追求的是性能还是灵活?什么叫灵活呢?如果你越是小表拆的越细,那我相对来说肯定灵活一些啊,我想要哪张表格数据,直接就拿哪张表数据,否则的话,你来一张大表,比如说你都已经聚合到呃,某某一个这里面了,这时间年月日都放在这里面,那我只想用到这个年。那你给我的月和日,那我觉得是永于数据对吧?哎,所以说呢,你要是越小表它越灵活,但是呢,同样来说,那你小表的话带来的性能问题,它会进行大量的一个招引。
11:06
目前在实际开发中,不会绝对选择一种根据实际情况灵活的一个组合,甚至并存,甚至是并存啊,这里面要注意,但是整体上看更倾向于维度更少的星星模型啊,尤其是哈多体系,减少噪音就是减少沙,性能差距呢,很大。啊,非常之大,也在企业里面,我们尽量的是能往新型上靠,就往新型上靠,实在靠不了的,因为取决于这个有一些一些表啊,一些小表,它需要呢,就是啊保持这个。保持成这种雪花模型,那偶尔有一两个其实也是能接受的啊,不这么特别绝对哈,就说能靠的就靠到心,靠不上的那那雪花也没办法。
我来说两句