00:00
那我们看一下第五章数据的一致性,这个呢,主要是咱们在实际业务场景中的一个问题啊,也是很喜欢问的一个问题,是什么问题呢?驱虫问题,在咱们的架构里面,可house我不管你是作为什么啊,那目至少目前咱们他购里面,可house它是不是作为DWS层啊,那我们查结果是不是直接同他查呀,那如果他出现的重复数据,咱们查询的指标结果是不是不是百分百准确的。对吧,那咱们考虑这个是不是使用了一个repate,呃,什么了,Re不是吧,是副本的意思,Replaceing替换啊replace,然后把E改成ing,不要骗我multi tree对吧?啊,后面我就简写了这个东西合并数嘛,那这个东西它是不是会自动去重啊,但是我们说它去重只有什么时候。
01:11
他只有执行合并的时候,才会真正的将重复的数据去去除,其实这个h base是不是也一样,H base是不是通过版本号管理时间戳。他是不是也是有一个叫大合并呢,只有大合并才真正会去清理和那些数据吧,对过期啊和标记删除的,那肯定house也一样啊,他俩就是有点像啊,那这个时候怎么办呢?其实实现方式很多。很多,看你玩不玩的溜啊,第一种我们先简单一点啊。我们先简单了解一下,一种是通过一些特定的语法,是不是一个手动优化触发合并呢?但你觉得这种方式好吗?
02:04
手动触发优化啊合并好吗?不好,因为它优化是不对外提供服务的吧,合并期间,那这个时候你再生产环境,难道你每插入一次,你都手动执行一次合并吗?那你就别玩了,说实话就别玩了,所以这种方式其实是不太适合,不太适合,那么如果是第二种方式是比较推荐的,因为他。是通过你的蛇口玩得六设计得好来实现的。去图。搜索一会,我们来好好看一看,另外一种就是final final查询是不是也会做一个什么,什么叫final,就取一个,你简单理解就取最新版本的吧,对吧?假设你一条数据重复插入多次,那时间不一样,那我只取最新一条,是不是也可以叫final?
03:01
就是说他只会取最新的数据啊,那这样一定程度也能解决,那接下来我们先准备一些表,然后来挨个来看一下效果,大家就很直观了啊,那上面这个一个词大家记一下叫什么。最终一致性,什么叫最终呢?最后为什么叫最终呢?因为是不是合并后触发合并后它还是一致的,对吧,所以叫最终一致性啊。行,那这个是我在官网的截图,这边有说明啊,在不确定的时间进行合并对吧?Replicating replacing这个东西不保证没有重复数据出现,如果有人告诉你。假设未来你工作了。啊,就假设未来你在公司里面,然后呢,你们缺人,你去招人,由你负责面试,这个时候来了一个哥们啊,或者一个姐妹啊,他说用到click house,这个时候你感兴趣,问他,那你们click house的重复数据怎么办?他说我们用的是。
04:07
Replace me,它会自动去重啊,所以没有重复问题,这个时候你就可以断定他没用过,或者说瞎编的。行,准备数据来,我建一张表啊,就是一个电表语句,你看引擎是。啊,那这个。Order by,我就指定了一个order by,用了ID,就几个字段,用户ID分数,这是什么?这就是咱的设计了。举例子,删除标记我能不能这么来实现呢?未来一跟零,一表示它没被删除,零表示这条数据我想要删除,其实这跟flink是不是一样啊?大家想想,Flink是不是有个东西叫撤回流啊?它怎么实现呢?一条数据变了,它是不是产生两条数据啊,先把老的标记为删除,把新的标记为插入,那咱们就模拟这种思想来实现了,能理解吧,好一会来看吧,先把表现了,这个还是有点含量的啊。
05:18
然后先写入数据1000万。你看写一个这个就1000万呐。那当然了,我用的是什么NUMBER1000万啊,那是不产生一到1000万,1000条1000万条数据啊,一一个临时表啊,这是肯定有耗的用法啊,你不要害还能这么用啊,那不行啊,然后我这边做了啥呢?把这个生成的数字当做用户ID,然后我中间搞了一个临时表未死是不是临时表啊,下载到内存嘛,然后这是写死的几个东西,是不是有点像字典啊。对吧,当然咱们没有去创建字典表,就临时的创建一下啊,然后呢,对这个数字取模,为什么取七呀,这里是不是七个。
06:07
对吧,磨梯,然后再。取到它对应位置的,也就是说这个字段要么肯定是七个里面的其中一个呗。是不是?你不要以为这个是字典啊,这个是什么?表明表明跟上中括号是不是取数组啊啊,那中间里面传的是索引呢,这没啥复杂的啊行,那我们插入1000万行数据,1000万说来就来了,对吧。你看这不很快吗?0.7秒,因为数据比较简单啊,仅仅是一个数字,那么接下来我在也不叫修改啊,我再插入为什么是我,为什么叫修改了,你会发现我的语句还是银色的into。为啥ID是不是一样的?我前面插的是不是一到1000万的ID啊,那我现在用了一个NUMBER50,是不是一到50万呢?那请问这个编号是不是撞了呀,那就是重复数据的嘛,能理解吧。
07:14
好,那我再插入50万。那我这边特意写的是叠字的,跟原始数据做一个区别嘛,看你有没有识别到啊,来我们再快速的插入,插入完我们直接来一个count一下select count from那张表叫什么test a对吧。1050条啊吧,一千一千零五十万条是没拒重啊,所以大家能明显看到,虽然我们用的是这个表引擎,但啥时候他会合并咱不知道对吧,可能你过一会儿再他一下它就变了,但至少目前还没进行合并,对不对,好。
08:01
这就是咱们准备的一个数据。
我来说两句