00:00
我们再来看一个号称是王炸功能的新的引擎啊。雾化版啊,也算是雾化版,雾化my circle口,那这个是什么意思啊,大家想想咱们从呃,My circle里面同步数据用的啥?哎,通过监控它的b log,那我们会用到什么工具呢?Mawell对吧?那可选的其他可能,比如说canel是不是也可以做啊,那还有什么可以做flink的CDC是不是也可以做啊,对吧,等等等等,那导到哪里。咱们架构里面是不是到卡不卡是吧,那我现在可利可号是基于实时数仓的这么一个场景,它新增加的这个引擎这个功能,那么它呢,跟这些工具并没有太大差别,但它的作用是什么?
01:01
哎,对,我直接就进来了,进到我的表里面了,我也不用再过一手,我不需要再过一手。直接进来,那它的原理一样的,也是基于什么blo的监听。B的监听,但是这就有问题了,同学们,Blo是不是有更新有删除啊,那没有说了,Click house又不支持真正的更新跟删除啊,有延迟啊,那咋办呢?那咋办呢?其实前面咱们一些用法有点类似了,已经。两个字,呃,差不多再精简一点做什么?哎,对,你包括弗也是做标记,对不对,是更新了我就标记上,是删除了我也标记上不就行了吗?对吧,那我们来聊一聊这个事儿啊,那首先我们要了解一个版本,哪一个版本增加了这个引擎。
02:04
20.8是正式插入的,它前面的版本是一个测试版,不稳定,这个是,呃,加入的稳定版里面的第一个,第一个版本20.8,而且它是什么酷引擎,不是表引擎。他会把整个买库下面的表都同步过来。把整个库下面都同步过来,它同样跟can of my way一样,伪装成MYS的一个副本,然后去同步它的log,原理都是一样的,对吧?不管什么框架都是基于这个原理,来我们来说,呃,来了解一下它的一个特点。他支持。减量和增量这个问题说简单也简单,说难也难。其实max war能不能同步历史数据?呃,CDC能不能同步历史数据?好好,但他们都有一个问题。
03:03
我怎么同步全量呢?他是不是先把原来的数据扫一遍。对不对,然后你是不是要从最新的blo的位置开始读啊,我举个例子吧,这张表A现在有十条,现在b log的位置,我随便给一个值啊,比如说是五。我随便给的啊,那我们希望的是把这十条全部读到,然后呢,从五后面接着往后读啊,关键就问题来了,现在是不是两个步骤。说两件事儿,哎,对,我如果在读取的同时表变化。别人又插了一条数据进去。然后这个b log是不是变了,在你读完这十条之前,B log变了,你是不是从第六条开始读了,新插入的那一条,你是不是漏读了,有可能吗?
04:00
总而言之就不一致嘛,现在不安全嘛,你可以这么理解,所以CDC做了一个什么事,对,在我扫描期间里,我会加一个行级锁。行锁不是表锁啊,表锁太严重了,而且是堵锁,什么叫堵锁啊?我读的时候我就把门锁了,别人别进来。就像你吃饭的时候,你上厕所,然后把门反锁,别人进不去啊,不是啊啊对啊,不是吃饭啊,就我也不知道干啥那。就是问题了,CDC加锁me way呢?哎,它其实也是加锁,说白了什么框架实现这个都只能加锁了,但是在我们实际开发里面,只要你但凡领导架构一听到会加锁就吓尿了,因为你你用不好是不是会造成死锁?
05:03
而且默认是行锁,如果你的权限没附好,MYSQL用户它会变成表锁,表锁会变成什么?你的数据是不是一直写不进去啊?你的MYSQL可是业务库啊,你的业务数据是不是都得读写读写读写啊,那线上系统是不是就崩了对吧?为了防止。这种问题一般都把锁关了,但是会造成数据的一致性没有保证,没有保证这是题外的话啊,咱们就聊一聊。那我们看先先了解一下它实现的一个方式啊,实现的方式是不是家里字段呢?一个叫什么在一个叫version,那么其实来接下来我们看下面详解啊,它这个S字段用来标记是否3VERSION用来干嘛,你现在去背。
06:01
版本号嘛,如果更新我是不是只取版本号最大的,更新一次我版本号就加一,更新一次我版本号就加一,对吧,你多条数据同时存在,我只取短板号最大,这不就有实现的嘛,跟咱们前面那个写法有点像,对吧。好,那你看它分发了几种类型,这是什么写也是什么意思,就插入嘛,银色的事件S等于一对吧,一表示什么。没被删除一表示没删除啊,那版本号是不是得加一啊对吧?好,那再来这是什么事件删除,那我的标记就变成了负一。大家可想而知,他回头查的时候会做一个什么事,VR ver,呃,S等于一对吧,负一他就不管了嘛,那就不就相当于删掉了,你查就查不到他了,跟咱们前面用法一样啊,版本号也会加,那如果是更新呢?
07:13
平时更新是不是也是插入一条数据啊,对吧,版本号也会加啊,那查询呢。它封装了这么多多种事件吗?它支持什么表的语句,那就涉及到那个不同框架的区别了,比如说MY能不能同步什么正表、三表,修改表的语句啊。有吗?开是肯定可以的。默认没有啊,默认没有,但是有参数可以打开。因为其实这种语句对咱们业务上没有什么意义,你三表见表关我啥事?我是不是只关注已存在的表的数据的变化。
08:02
对吧,你不能说它设计问题,它这个参数默认就是不处理这些数,但是你也可以打开,但没意义啊,没意。那这是一个简单的介绍啊,简单的介绍。
我来说两句