00:00
好,那咱们现在需要先把这个PPT点开啊。好,那接下来我们看一下这个所谓的QB存储原理,呃,刚才也说了QB存储原理,重点关注它在h base当中的ROK,对吧?啊好,那现在在讲这个ROK之前,我们需要先介绍一个概念,叫做维度字典。我字点啊,那这个是什么,我们打开看一下啊。好,那大家来看一下,那这儿呢,有一张表啊,这张表是什么表啊,这张表呢,给大家说一下啊,这张表就是我们在使用麒麟啊进行。进进进行这个cub的构建之前,咱们所选的维度和度量值啊,所选的维度和度量值,那这几个呢,是我们所选的维度是不是三个呀,一个地区,一个品类,一个时间对不对,这个呢是度量值。能看懂吧,啊,这是我们所选的啊。然后呢,大家要知道啊,在麒麟我们进行Q的构建,以及构建完之后,我们存储到h base当中的时候呢,它里边啊,其实并不会真正的去使用我们每一个维度的真正的值的啊,包括你的计算,包括最终你存在结果里边是不会出现咱们这个真正的维度值的,你比如说它不会出现北京,不会出现上海,不会出现什么电子交通。
01:23
啊,是这样的啊,它不会让这些维度值真正的参与计算的,为什么呀,大家说。因为你的维度值是不是可能会很长很长,对不对,这个是不是会占用大量存储空间啊,一会降低咱们的计算速度,二呢,你存到HP当中也会占用大量存储空间,那所以说呢,我们在计算和最终存储的时候呢,并没有使用真正的维度值啊,没有,那它用的是什么呢。它会对维度的值呢进行编码,编码所谓编码就是干什么,是不是就是把这个值拿过来,我经过一定的这个编码的这个编码的这个算法,把它转成,比如说转成int值啊啊转成这个其他的这个哎哎,这个形式目的就是干啥,是不是可以降低这个存储空间呀,对吧?是这样的啊,那这边默认的编码方式是什么呢?就是字典编码啊,字典编码,那字典编码呢,能够将每一个维度字段里边的每一个维度值来给它转换成一个,哎整值,整数值。
02:24
啊,一个整形的数啊,一个整形的数啊,啊,这是咱们这个所谓的字典编码啊,它会进行字典编码啊好,那最终编码完之后呢,你看啊,每个维度里边啊,它的每个维度值是不是都有一个数字来表示它呀,比如说以地区维度为例,那这里边北京那我就用零表示,那上海呢,我就用一表示啊那依次类推,我这儿呢,可能还会有其他地区啊,只不过这儿呢,没有写那么多,所以这儿呢,都是有零有一,是不是还可能有零有二有三,一直往下走,一直诶这个到你最后一个这个维度值啊,对吧,是这样的啊啊那每个这个维度字段呢,都有自己的这个编码,它都会进行编码了啊,这是咱们这个维度字典的这个概念,咱们需要搞清楚。
03:08
啊行,那编码完之后,那接下来我们就开始呃,去讲这个麒麟的Q和存储原理了啊来看一看。也这个结果呀,在HP当中到底是如何存储的啊,好,那大家现在先来看一下这个地方。啊,这个地方呢,这我画的是一个什么啊,大家可以先简单的看一看啊,我画的是一个什么。这个呢,其实就是我我画的就是一个咱们呃,经过cube构建之后得到的一个结果集,这就是一个多维数据集。啊,这是一个结果,这是一个结果啊,你看这个结果大家看是什么意思啊,来一起看一下,那我这行数据应该是啥意思。应该是北京地区电子品类,然后呢,这个2019年1月9号我的总和吧,订单金额总和是不是,那下边这个呢,相当于啥。北京地区电子品类是不是所有日期的什么呀,这个订单金额总和啊,能理解吧,那相当于是我的每一行数据。
04:08
那是不是就是我的一条结果啊,一行数据一条结果,那这个结果当中呢,我有这种三个维度都有的,也有只有两个维度的啊,是不是还会有那个一个维度的呀,对不对,只不过咱们这这个数据量会很大很大,我没有全写出来而已啊那假如说那这个就是我最终的一个,诶一个Q吧,对不对,这是不是就是一个CU吧呀,对吧,那当然这个cube呢,我是啊,直接写的这个文字啊等等等,那当时在h base当中呢,其实并不是这样直接存储的,H base当中到底怎么存的呢?我们往下看啊,这边呢,是我们对维度进行编码之后的这个结果,北京对应零,上海应一,广州对应二,深圳对应三等等等等啊啊,那接来往下走。下边这一小块就是在h base当中存储的这个数据的形式。啊,那这个这一小块啊,跟我上边画的这个表呢,是一一对应的,是一对应的啊,你看这个对应关系是什么样的啊,我们现在呢,先以第一条数据为例吧,咱们重点看ROK就行啊,看ROK就行啊,也就是说我这个ROK呢,就能把这个东西表示出来。
05:16
你看它怎么表示出来的啊,来这个ROOK呢,我们可以拆开来看,分为两部分去看啊,那第一部分呢,我们管它叫做q boy的ID。Q Bo的ID啊,这不是QID啊,是q Bo的ID,那后边这是啥是维度值啊维度当然维度值呢,我我是写的真实,真实的维度值吗?不是是什么呀,是编码之后的值对吧?来咱们看一看这个对应关系啊,首先先说这个Q8的ID,这个能不能看懂啊,三个一三个一啥意思?三个一是不是三个维度都有对不对,这个从哪可以看出来,从刚才咱们在麒麟的外围页面上看的那个图是不是也能看出来呀,对吧?三个一就说明三个维度都有啊,完了之后你三个维度分别都是什么值呢?那第一个维度是不是地区维度,地区维度你这个是多少啊,是北京对吧,那北京,那我编码之后的值是多少?零是零的话,那我这边第一个数是不是就是零。
06:09
对吧,它是不是对应第一个维度,那就是零,那下面呢,我诶这个怎么退出来了。接着走啊。来,我们接着走。好,那接下来我们再看第二个值啊,第二个值是品,这个是这个品类,品类这个字段对吧,那品类那我是不是也是电子品类,那也是也也是零嘛,那所以这个地方是不是就是零啊,那第三一个呢,是九号啊九号在时间那个这个进行编码之后呢,我是不是也是零,所以这是不是也是零,哎就是这么对应上的啊就这么对应上的啊那当然呢,那咱们这写的时候呢,呃,是这么写的,其实h base底层呢,对每一个值后边呢,都会有呃这个相的一个分隔符啊,一个分隔符,因为尤其是维度值这边啊,那唯独咱们这写的是这个相当于用十进制写的,但其实底层不是十进制啊,16进制存的啊,16进制存的,那我第一个维度值,我这儿是不是可能有一位,可能有两位,可能有三位啊对吧,得有很多位,那所以说它为了区分不同的维度值,它是不是每个维度值跟每个维度之间应该是有一个啥的呀。
07:13
有一个分隔符的啊,人家是能够区分开的啊,能够区分开的啊啊,那这个呢,就是我们讲到的这个h base,这个ROOK,它就是这么去设计的啊,那后边的字段呢,就是你统计出来的一个一个的度量值啊,我可能有一个度量值,也可以像我们刚才之前之前大家说有多个度量值啊,哎,可以有一个,可以有多个啊啊那这就是这个HP入K的样子,就是这样啊,它存储的其实不是真正的维度值,而是编码之后的值。好好,那我们再来看一个小例子啊,看下面这个。啊,看它吧,那这个东西咱们看看也是分两部分对吧,那两部分前面一部分是不是也是q boy的ID啊,这是相当于是对应的这条数据吧,这是前两个维度有第三个维度没有,没有的话就是少就是零啊,因为只有俩维度,那你后边的这个维度值是不是只有俩数啊对吧,那一个是多少,一个是北京,北京对应多少零啊,那第二个电子电子是不是零,那所以这是不是俩零,第三个维度没有,没有是不是就没有值了呀,对吧?诶其实人家就是这样去设计的啊,这就是H被子,OK,也就是咱们麒麟cube的存储原理啊,那咱们就搞定了啊,这个比较简单啊,好,我把视频录一下。
我来说两句