00:00
过来,我们再来看最后一棵叫碧心树,碧心树它是怎么回事呢?我们看它是这样子的,同学们。B心数呢,它是必加速的一个变体。也就是说B心数是在B加速的基础上进行一个变化的,那么在加速的这个非根和非叶子节点呢,在增加了指向兄弟的这种指针,大家有没有发现我们在前面,如果说我们跟在前面,你们有没有发现这两者是没有关系的?就是这个索引和这个索引它们没有关系,它们并没有关系,那么如果是这种必心数呢?它们这个之间可以有一个指向。有个就说兄弟他们索引,兄弟索引之间呢,它是可以有一个指针连接的,也就是同学们看到的这种图形,你看它这里下面有一个尾。好,然后呢,指向下一个,指向下一个,这样呢。
01:01
他可以干什么呢?你看啊,这个地方的修改。它是有一个规定的,它的规定是这样,子心数B心数,它规定了非叶子节点的关键字的个数至少要为2/3乘以M,这M是它的度,那么极块的最低使用率呢为2/3,而B加速。这个quad最低使用率。B加速最近使用率为多少呢?为1/2。啊为1/2,那这样子的同学们可以看到,从第一个特点我们看出B星数的分配,新节点的概率呢,要比这个B加速要低。要比这个毕加索要低,即它的使用空间的效率就会更高,是这样子一个概率,那么这是B心术的它的一个规定,这是我们这个B心术的它的一个图解。大家看到它跟我们毕加速主要的变化是在于它增加了,就是我们说非根和非叶子节点,它增加了指向兄弟的这个指针,然后在一定程度上呢,这个也是也是能够对吧,它是能够使用提高我们这个使用率的,因为它使用率2/3呢,而BB加速呢,使用率只是1/2,那关于底层这个分析呢,我们这就不去做分析了,大家知道这个九七主要是的了解一下B数和B加速,就是刚才B就说我们讲解这个呢,主要是让大家知道B速。
02:32
B加速,还有B心说它它的一个索引的一个构建的流程,就是我们当去检索一个数据的,他跟我们原先二叉树的一个区别。是不是把这个搞清楚咱就可以了,那现在呢,我们把刚才讲解的这些内容,也就是说我们讲的多路查找书的内容呢,给大家做一个板书。那刚才我们讲了什么东西呢?同学们,我们来聊一聊这个话题。聊这个话题。首先我们。
03:01
我们先提出了一个叫做多路查找数的概念,往下喽。好,我给大家来一个新的分页,我把代码稍微的整理一下。对,多路查找树。那多路查找数呢?我们先说出了二叉树,它可能存在的一些问题是什么?把它搂一下。这是提出了。二叉树和B数的一个关系,那么二叉树它的问题是什么呢?是这样子捋到这啊。这样子的一个问题放这儿就是。如如果我们这个二叉树的它的这个节点海量,那么会造成我们这棵树的高度很高,从而对我们效率是有影响,第二个呢,因为你二叉树数都要把这个加载到,它需要加载到这个内存对不对?那么他如果说读写的这个,因为你节点很多嘛,那么他对这个IO操作次数就很多,显然对我们构建也是有影响的,所以说从这个地方我们就提出了二叉数它存在的问题。
04:06
是这样子的吧。它存在问题呢,我给大家板述到这里,我这里总结了四个那三个三个点。放在这就可以。那说完我们这个二叉数,呃,就是我们所说的二叉树存在的问题呢,我们就提出了多叉树的这么一个概念,那多差数我们先讲的是什么呢?我们先给大家讲的是最为简单的。多叉树就是二三树,是不是我们先给大家讲的是二三树,那什么是一棵二三树呢?这就是一张图。二参数里面呢,大家可以看到它有三节点和二节点,那大家一定要知道三节点和二节点的一个概念,这里我就不再多说了,请上面。笔记里面都有。好,接着呢,我们又把这个二三数讲完了,过后讲完过呢,我们又回头给大家看了一个B数,他怎么说一个B数,他通过重新组织节点就可以降低我们这个书的高度呢,这个图他就把这个说清楚了是吧,这个图就可以把这个图啊,把这个原原则给它说清楚,好,这是B数的概念,配了一张图。
05:18
那把这个说完了以后呢,我们对这个图做了一些简单的一个说明,用三个三句话。把这个图做了一个整理,是这样子的吧。诶这样子的,诶这个地方我们来个标号是吧,首先通过B数我们可以降低数的高度,第二个呢,文件系统它有一个磁盘预读原理,那么我们把这个节点大小呢,设置成一个页,那设置成一一个页呢,每一个页每个节点只需一次IO就可以载入。那载入的话呢,如果我们这个数的度为102次,那6亿个数据呢,其实四次IO就可以定位,那性性能还是非常好的。这就是B数的一个说明,那B数说完了过后呢,我们讲解了二三数的概念,就是这时呢,我们就。
06:07
把这个二三数提出来,并且呢予以实现,首先我们先对二三数做了一个介绍,何为二三数,是这样子的吧,诶,我把这个你到上面去和,为二三数做了一个说明。那么讲那讲把这个说说完了以后呢,我们就来了一个二三书的一个应用实例。这个应用实例就以一个什么呀,诶这个地方二三数,对是这样是这个意思二三数。二三数的一个特点,把这个也勾上去吧,好。那么这个二三数的一个构建过程比较重要,大家呢。也可以参考我这个示意图,这个图呢,我也是画了好久,呃,至至少画了一会啊,这也不是很久,就是至少你要得得认真去画才能把它画对,是不是把这个图画好了过后呢。
07:01
我们就把这个流程给大家写清楚了,那这个就是对应的这张图,这里呢,还有一个我们在进行二三数插入的时候呢,把这个步骤也给大家整理了一下五步。大家有一个印象。把这个二三数说完了以后,我们说还有一种数叫234数,这个呢我们就没有去再举例了,因为二三数的构建呢,跟23234数的构建,和我们二三数的概念,你二三数,二三数的这个构建流程其实类似,对吧,所以我这就没有说那么多了。好,这个地方咱们就弄成正文吧,不要用这个了,弄成一个正文就行。这边有个叫其他双引其他。其他说明对不对,其他说明那个三号。好,这是对应的一棵234树的一个对应的图形,那这个讲完了以后呢,我们就系统的说一下B树B加树和B心数,主要是让同学们理解B速B加速B心速,它在底层的一个。
08:11
构建的原理是什么样子的?那这样子呢,对于我们理解文件系统或者超数据库的索引比较有帮助。OK,这是B数的一个介绍。好,这个地方是不是写错了。好,这个地方是标号二,标号二。那么这个整完了以后呢,我们就画了一个图,把这个B数的它的。示意图给各位同学画了一下。这是B树,B树的图形拿过来。对B数的图形拿过来,然后对这个图的一个说明呢,我们也拿过来对上图的说明。对上图的说明。OK。对上图的一个说明,把这个说明呢,咱们拿过来,一共有这么五点吧。
09:01
整理到这里,大家有一个印象,这里我就不再去一个个念了。把这个必速的它的一个。一个构建的示意图,说完了功能,我们又说了B加速,B加速呢,它的特点是不是就说,呃,跟前面B数的区别,最大的区别是在于它的所有的数据放在了ES节点。对不对,好,这个地方我们也写到这里来。OK,这是B加速的一个介绍,这是它的示意图。这是B加速的一个示意图,那B加4B加速的示意图呢,我这里也做了一些。说明这里写啊,对上图的,对上图上图的一个说明这里呢,有这么五句话也列到这里来。也列到这里来就是对的,那这个说完了以后呢,我们紧接着又给同学们聊了一下B心数,B心数呢,它是在B加速的基础上做了一点修改。
10:04
主要的修改是在于哪里呢?就是。增加了非根和非叶子节点,在这在这个节点上呢,增加了指向兄弟的这个指针。OK,这是它的一个修改啊,这是它的一个示意图,也给同学们拿过来。那针对上图的一个说明呢,我们也是写到这。碧心术。必心数的一个说明,聊到这里就可以了。那那我们从这个说明这边可以看到,B心数它和毕加速最大的一个区别是在于什么呢?它的块的最低使用率是在2/3,而B箱素的最块的使用率呢,是在。是在这个1/2啊,这个地方是这个这个不是这个啊,为1/2。好的。那这个说完了个我们第一个题,可以看到B心数分配新节点的概率呢,要比B心数B加速要低啊,空间使用率就变得更高了,对吧,为什么空间使用率更高了,2/3嘛,我最低使用率是2/3,你的最低使用率是1/2,当然我的使用率就更高,是这样子一个概念,那我讲到这呢,我再说最后一句啊,就是关于这个多路查找数呢,理论上说我们不管是Java程序员,还是你做大数据开发的,一般来讲很少你在你你自己要去设计这种必加速必心数的,所以说我们在讲这一个多路查找数的时候呢,主要是站在一个介绍的这这么一个层面,我也没有深入的去给大家去讲他的底层的一个剖析,我们也没有去写一段代码来实现。因为。
11:44
一般来讲没有这样的要求,如果同学们确实对这个多路查找数或者说B速必加速必行数想了解的更具体点,可以自己参考一些相关资料来提高就行了,但一般来讲是呃。一般来讲是很少去用到的,OK,那关于多路查找树的内容就给大家讲解到这里。
我来说两句