00:00
那接下来我们就来对比一下这两种表的优缺点啊,区别在哪里啊,来这是C,这是二,那我们看一个从数据的延迟来讲,谁更高啊。Cow更高一点啊,Me也就MR的表反而会更低一点啊,数据也延迟。那么查询的延迟呢,就是我查这张表啊,需要多久时间COD,为什么呀,因为我要查的时候,它是比它是在写入的时候就进行合并了,我查的时候他是不是已经合并完了。啊,简单来理解是这样,所以我查的时候是不是延迟更低一点。是吧,呃。那么对于Mo Mr来讲,你的查询延迟就高了,因为你是读取查询的时候才进行一个合并啊,那你肯定就相比CW要慢一点啊,啊对,当然这个数据延迟,嗯,有有的人可能不理解什么叫数据延迟,其实就是什么,就写入延迟,你简单这么理解啊,写入延迟,写入延迟Co肯定高嘛,因为写的时候要合并嘛,好吧,啊好行,另外一个是更新的成本,IO成本啊,我要对表的数据进行一个更新,谁的成本更高呢?啊,对于Co来讲它更高,因为我们知道每一批数据来,它是不是要把旧的跟新的数据进行一个合并,写入一个新文件,那如果呃,我有一张表。
01:25
有一个拍回的文件吧,比如说这里有1万行数据,那现在我对其中的某新来的数据是对某一行数据,比如说ID为三的进行更新,那这个时候他是不是同样得拷贝原先的1万条数据,并且将新的数据跟老数据合并,再写入一个新文件,这个代价是不是有点大,能理解这个意思吧?啊,这个代价就大啊,另外一个呢,就是咱们的这个MO2表。它代价比较低,为什么它不会动原先的PA的对吧,先不考虑这个compassion,呃,我不会动,我只会将新来的这些数据插入也好,更新也好,我都追加到那个点log文件啊。
02:05
回头等compassion,或者等你查询的时候我欠合并啊好行文件的大小,呃,Co它的是更小更低,但是它更新的IO成本更高,那表它的pack回的文件会更大一点啊,但是它更新成本比较低。呃,写放大啊,那cow不用讲,它肯定是一个写放大的一个问题,对吧,我写的时候哎,我要拷贝旧数据啊,就大家就比较重,那么MO2表呢,他写会不会放大呢?就呃相对来讲是低一点,当然说了这么多,大家应该有一个初步的印象,但是理解不会很深入吧,那咱们来个大白话啊C适合什么?呃,P咱们以P还有流计算这两种场景来考虑,是不是更适合于P呀,因为我们知道它有一个什么写放大的问题,如果我原先的PA的文件有一假设啊,有一议行,当然不会这么做啊,我们不会让它那么大有亿行,现在呃,我来的数据这个批次只有一条是更新的数据,那你是不是要拷贝原先1亿行跟新的这一条进行合并,大家有点重吧,但是如果我来的是一批数据,这里面包含了比如说100万条,那也就是说我做这么一次啊,那还行对吧,比你一条一条的去啊写实拷贝啊,效率会更好一点。所以呃,建议就是cow表呢,咱们还是用在P的处理的一个场景会更好一点,那二表呢?
03:47
就是呃,P也好,流也好,其实也都行,但是如果是流市场景,咱们更推荐表,因为你想想什么叫流啊,流处理啊,流处理是不是数据源源不断的来是吧,那如果不做处理,咱们是不是数据是一条一条来的,一条一条写入啊。
04:06
对不对,那那也就是说它写入会特别特别的频繁,丢处理写入很频繁,每次量又很小,你用Co的话,这个写放大问题就很严重,特别严重啊,没必要,所以如果是流逝场景,特别是你用CDC去同步一些数据过来,呃,咱们还是推荐用Mo表,当然不绝对啊,不绝对啊,如果你对虽然是流处理,但是你做了一个长P的处理,那其实也还行啊好。这个是咱们啊主要一个对比啊,心中有数啊,也就是说cow偏向于P或者呃,只要有展P吧,不管是P处理还是留处理,有展P的这种更好一点,呃,MO2呢,更适合呃流式的写入啊,流式的写入好,这个取舍呢,各大企业就一些大厂他们在用的时候啊,呃,牛市场景也有用Co的,也有用MO2的啊,就是说嗯,你看吧。
05:06
啊,这是我的,呃,一些建议。
我来说两句