温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
在湖底的索引当中啊,它又区分了全局索引,还有非全局索引,那所谓的全局索引呢,就是整张表而言建立的索引,也就是说即使你做的分区,那么我是整个所有的分区一起来看,那每一个key啊,也就是那个所谓的record key啊,数据键它是唯一的,不会有重复的。即使你的数据是在不同的分区,那我也不允许你有重复的这个键啊。那这样就能够确保给定的一个键只有一个对应的记录整张表的范围内,但是这也有一个很明显的缺点了,如果我这张表特别大,那大的你受得了吗?对吧?那你随着你咱们表的数据量越来越大,你去做一个更新删除操作的时候,你这个性能就越差。对吧,因为你要全表的去匹配,那这样的话,即使你做了索引,嗯,但这样效率也高不了,所以这种全局索引呢,更适合用于小表啊,就是表的数据量并不大,那其实用全局索引啊比较理想。
01:08
那第二类就是非全局,所谓的非全局,那它的范围是什么呢?分区啊,对,它在一个分区里面能够保证这个key的唯一性,也就是说一个分区里面这个key只能有一个,那不同的分区,那你K相同我管不了。对吧,那它是依靠它写入器为同一条记录,就是同一条数据,它的更新也好,你的删除也好,都提供相同的一个分区路径,因为你这条数据是固定的嘛。呃,或者说咱们前面不是讲了一个蝴d key嘛,啊,那因为他默认的实现其实就是非全局的,所谓的非全局就是咱们的record key,哎,就是什么呢?那个record key在拼接上一个什么呢?Partition。Pass,对吧?啊,我的记录键再拼接上一个分区路径,这样它不就唯一了吗?
02:07
对吧,那这样的话,呃,你对相同一条数据的更新也好,删除也好,它都能定位到这条数据所在的分区,然后对应的这个T,这样不就好了吗?那这样就可以大幅的提高一个效率。那这样的话大即使是大表啊,相对于全局索引来讲,它的性能会更加的好一点,这个非常理解啊,那从索引的维护成本跟写入性能考虑,呃,大家都知道这个全局索引难度更大啊,性能更差,如果你数据量大的话啊。那么好,既然聊完这个,那我们再对比一下前面聊到的这几个索引类型,在这当中哪一些可以设置全局的,哪一些只能是局部的呢?啊,那么大家注意了,对于h base这个索引来讲。他就是全局索引啊,他没有非全局啊,他就只有一种全局索引。
03:03
那么。对于布隆也好,还有简单索引也好,这两种索引类型,你可以选择是全局索引或者是非全局索引。这个可以通过参数来配置,那当然我前面也提到这个主要应用于Spark引擎,是不是啊,那具体的配置方式呢,就是这样啊,就是一个参数。啊,Index type,那你可以指定为全局的,你看加一个global就可以了啊,布隆或者global simple啊,这个是一个全局跟非全局,那如果数据量足够大,那一般来讲还是有非全局,所以会好一点啊,这也是一个默认的啊,大家注意这个是默认的啊。这是一个。
我来说两句