00:00
前面聊了这么多概念,那么接下来这个概念是大家必须要了解了,就是表类型。在whodi当中,它有两种表,一种叫copy on right,简单来讲就是写实拷贝,另外一种表呢,叫做merge on read,叫读时合并。啊,那么大家记住啊,这是护体特有的两种表类型,那我们先来看第一种类型叫cow啊,咱们简称Co啊,Copy on right,那么它的特点是它的数据文件当中,它只有一个基本的列文件,列存的也就是这种所谓的的格式。他没有点log啊,这个特点大家要记住啊,因为点log是增量提交的时候才有的啊,这个时候没有,那么对于每一个新批次的写入,它都会创建相应的数据文件的新版本啊,这句话大家好好品一下啊,对于每一个新的批次,也就是说我写入一批新的数据了,那这个时候都会创建相应数据文件的新版本。
01:09
诶,重点是什么,新版本新的一个文件片,也就是我举个例子啊,原先在一张Co的表中,它只有一个文件,比如说啊。它里边比如说存储了ID为123这么三条数据啊。那现在呢,我们要去追加写一个四跟五这么一批数据啊,四五这两条新的数据要写进来了,那这个时候他会做什么呢?啊,他就会将原先老的,也就原先的pack文件,再加新增加的这些变更数据,将他们合并起来。然后呢,就会变成一份新的12345啊这样子能理解这个意思吧,这也是为什么叫写实拷贝,拷贝的是什么呢?拷贝的是原先的PA的文件,将原先pack文件都拷过来,再将新增的部分及变化的部分合并进去,再写入一个新的文件,那新的文件它也是一个什么呢?Pack,那这个时候呢,对应我们前面聊到了一个概念叫什么呢?文件片,那这个123这个比如说它就是一个文件片啊,比如说是一吧,我们称之为一,那么写实拷贝完啊,合并完这个新的pack文件,那可能我们就可以认为它是一个文件片二他们都是在同一个文件组里面是吧?嗯。
02:39
这也是为什么我们前面说到这个文件片可以理解为,呃,不同文件片是不同的数据版本。好,这简单理解啊,呃,新版本文件包含旧的文件记录机这个批次的记录,那最新的这个文件片就是包含了全量最新的数据,好,那下面看一个具体的例子啊,其实大家基本理解了啊,那当前呢,是给到三个fire group,诶大家注意啊,我们的意思是,诶,这是一个firero,这是第二个,这是第三个,也就是说有三个文件组,那么目前呢,他们的版本都是第一个版本啊第一个版本好,那这个时候我们进行一个数据的写入,新的写入,那你看啊,场景是这样,在索引之后,我们发现这些记录仪啊,文件组一,文件组二匹配了,也就是说什么呢?啊,我有些数据是要进行更新操作的。
03:36
啊,那这些数据对应的原先数据在文件组一和文件组二里面啊,另外呢,有一些数据它是属于新的插入啊,不是更新了啊,那这个时候我们会将新的插入写到一个新的文件组啊,也就第四个组,比如说啊好,所以就变成下图这样子。文件组一文件组二有些数据需要更新啊,那这个时候他们就会对呃旧的呃V1版本的数据还有更新的数据进行合并啊,并且呢,写入一个新的,生成了一个V2版本,那文件组二同样的道理,它也生成了一个V2版本,新的文件片,新的pocket,那文件组三呢,没有变化啊,那还有一些是新插入的数据啊,就写入一个新的文件组。
04:25
文件组四好是吧,这个应该都好理解吧?好,再往下看,那基于这个大家就能想到了,呃,它是属于写入期间进行合并的,也就是说我一批数据插入了啊,我既要拷贝老的数据,又要将老的数据将新写新过来的数据进行一个合并啊,写入一个新的文件,所以呢,它写入的延迟相对会大一点,但是cow是最早屋底设计的一种,呃,表一种表,它的优势就是它非常的简单,另外有一个特点需要大家记住,它并不需要进行compassion。
05:07
大家注意啊,如果是Co的表,它并没有compassion这个动作,因为他每一次都写入的时候就进行合并,合并成一个新的呃呃,Pack文件了啊,所以呢,它cow表就没有必要进行这种压缩合并操作啊,也是用起来比较方便和简单啊。好,那么这个是我们对Co表的一个理解啊,应该没什么难度。
我来说两句