00:00
好,那接下来我们来聊一下它这个写流程啊,读写流程呢,都在这个里面,都要说,那首先了解一个点H这个框架,它是一个读比且慢的框架。就是对于爱来说,它的读比写慢。一般的操作都是读比写快吧,但是h base它读笔写慢啊,我们看一下它整个读流程跟写流程就能清楚了,当然今天可能说不到这个读流程了啊,应该是说不到的,因为写流程还有很多东西来做啊,就是你要记录一下,明天我们在回过头来讲这个内容,或者说讲这个读流程的时候啊,同样的还要再说它是一个读比写慢的,因为他读的过程当中啊,做的事情很多。比写作的事情要多啊,比写作的事情要多啊,OK,那我们看一下写数据流程来。首先你要往里面写数据客户端是不是你操作的这样对吧,然后如cable是不是你中间的一个。
01:00
首先客户端连接的一个点啊,ZK要有吧,那既然你要往里数据,那你h base这个东西要不要启动啊,要吧,而且你要写出去表存在了吧,所以reading已经有了,对吧?什么W这些东西是不是都存在了呀?啊,这些东西已经起来了,你才能写吧,但凡有一个东西没起来,是不是写不了啊好,这些东西都起来了。第一个客户端假设啊,我们写的是sto这张表,1001这个数据OK吧,好,来看一下它是怎么写的,第一步。假如说这负的数据对吧,1001啊,就是STU1001,什么CF是音付,然后name是张三可以吧,我们负的这小数据好接下来呢,他先去。找一下me表所在的。Me达表是不是H1张表啊,是H贝斯秘密空间下有一个me塔表,还记得吗?H斯迷密空间下不有两张表吗?一个me塔表,还有张表叫什么混的那个东西叫那对吧?有印象吗?啊那个表啊,他先去ZK里边拿一下我这个me达表所在的位置。
02:19
就在哪个机器上存的呢。能听懂这个意思啊,他拿回来呢,拿回来一个机器,假如说102或者103或者104啊,某一台机器上面,因为当前你是一张表,你是不是也有reading啊,对吧,你一个reading在哪个机器上,是不是有某一个机器来维护啊,对吧,他拿到这个102 103 104,那大家猜一下这个Meta表。叫原数据变化,那里边存的是什么东西?猜一下。好没达表,你觉得这个原数据应该怎么,那第二步应该是给他返回对吧,假如说在102给他返回一个102。
03:09
好,接下来那应该去102连到102去读这个me表内容吗?那我们想一下这个me表应该是什么内容。猜不到吗?不难猜吧,我觉得。我要往这张表里面放数据。我表方出去,我是不是得找到Du表啊,对吧?那为什么他先去找内大表啊。他是不是为了找S表啊,对吧,那面料表很简单呀,里面存的就是用户或者系统表所在的位置吧。在哪个,因为你也是reading,是不是有可能sto这张表在103维护的。对吧,那这个东西信息是记录在Meta表里边的,那第二步他去连到102去请求mea表,请求的就是我们当前那个什么s to这张表所在的V搜,假设给他返回的是103,那也就告诉你s to这张表在103上维护着呢。
04:19
那接下来你要做什么事,是不是连接到零三上面?对吧,这块呢做一个缓存啊,它加速查询的,就是把原数据缓存下来,下一次找的时候先读缓存。如果缓存里面没有,就找什么。再去找那个ZK走这条线吧,啊,这个缓存客户端,缓存这个地方应该能理解他干什么事,对吧,对吧,核心的不管他有没有做缓存,接下来都要做什么事啊。找我们的SQ这张表所在位置,假设是103。对吧,假设是103那。发送那个不得请求。啊,去写数据了,因为他发现S这张表在103维护着,那你的数据是不是应该写给103了,对吧?好,发送请求,请求到了103,接下来真正的写操作了吧,先写什么?
05:15
先写到预写日志吧,然后再去干什么,写到内存吧,好,写到内存,对于客户端来说。写就结束了。客户端需要等到它flash吗?不用啊,对于客户端来说,因为我认为把这个数据写到内存了,数据就不会丢了,因为你之前有一个什么。Wa,对吧,因为写到内存了,数据能不能读了,能读了吧,写到内存里边就能读了,那接下来假如说此时挂掉了,我是不是还有淤写录志啊,可以恢复吧,啊可以恢复是这个意思啊,这个就没关系了,写到这为止,对于客户端来说就已经干什么结束了啊结束了,那这里边呢,有两个点,第一个呢,就是我们所看到的第一步,他先去请求威so所在的位置。
06:04
第二步呢,去请求什么?Meta表的。内容对吧,找到这个102,然后就请求微大表里边内容,找到STU这张表所在的位置。对吧,接下来你找到了在103上面STU表,假如说在这这个什么STU这个reading,那接下来是不是连接到103去真正的去写数据了,写到103的什么W预写入日这里边,然后再写到内存啊写到内存到这块为止,对于客户端来说就已经干什么写完了。啊,就已经写完了,就通知一下客户端,哎,你已经没事了,对吧?啊,你已经写操作结束了。啊,写操作结束是这个意思啊。整个的一个过程,写数据流程啊,写数据好,那接下来我们是不是就应该去看一下这个内容啊。我们看一下吧,还有这个里边这张表,我们是不是应该扫描一下,看一下里面到底存什么东西,对吧?来。
07:02
第一个我们应该进到ZK里边吧,克隆cdd Mo这个如cable进到客户端BZKL.sh。走。L怎么。那你要看什么,进到哪个目录,是不是第一眼看到有个h base啊,对吧,进来h base,走诶这里边又一堆东西,什么副本,什么RS维尼吧,来还有一个什么。备份的master master等等这些东西吧,啊,存在一些元素信息存的还蛮多的,是不是,那我们要的是这个。叫ta reading,就Meta的这个reading所在的reading对吧,好,我们get一下啊,这底下有个什么。S104呢,也就是说现在这个表由104维护着,那我们看一下是不是104。
08:05
我们在这儿是不是能看到系统表,到底在哪维护呢?对吧,来我们怎么退出去了,有一个什么系统没没代表吧,点开。104维护着吧,好,客户端先访问一下ZK里边这个节点,找到me达表在104了,接下来他是不是应该请求104读这张表的数据啊,对吧,那读这张表的数据是不是叫这个内容。那我们能不能扫一下这个数据呢?SKY,我们之前不是学过SKY吗?也能扫来看一下里边什么东西。好,这个是不是一张表。呃,我们一直看到这儿。我们一直看到这,注意这个前面入K是不是一样的呀,这是一行四个列。能听懂四个列都是音符列组吧,看见没四个列吧,是不是列不一样啊对吧?我们最关心的是这个列。
09:09
来我们不看这个,这是系统的对吧,看这个。哎,一直到这,我们最关心的是他。哎,这个是SQ2是吧,圈多了应该圈到这啊。这个是SQ2吧,啊,刚才看到SQ是不是还是四个列啊,1234没问题吧,说我们最关心的是它。S to这张表是不是由102维护的呀?啊,由102维护着,那我们看一下是不是102。在这个地方返回是不是应该有一个用户表Su吧,点开。102吧,啊在102,他就是为了拿1021个数据,那接下来客户端是不是跟102建立连接,真正的去干什么。写数据了吧,写数据的过程先写到W,然后写到内存结束了。
10:04
啊,这个是整个的一个过程啊,整个过程当然了,应该给你提供了一个图啊,当然了啊,那个图呢,自己画的比较low一点啊,大家凑合着看来。呃,这个读数据。啊,写出什么。那这样我改一下这个图呢,可以通用啊,对啊,比较通用的一张图,因为我没有写流程对吧?啊来。首先我们客户端准备啊,这个地方。这个查询你没看到,你看到的是不的。你看到的是铺的OK吧,啊,因为写操作啊,写操作是不是往里铺的对吧,写操作往里铺的OK,那这个时候铺的TABLE1ROOKIE11050。
11:02
接下来他先去ZK里边是不是找一下me的表所在位置信息,假如说他在HV0SO1102上面,哎,就在这。对吧,第一步是不是这个返回的。接下来他是不是请求这张表,这张表的内容是不是这个样子,当然刚才看到四个列吧,对吧,我把它画成了表结构,因为这样好看一点是不是。这种表结构是不是好看一点啊,好,你要注意有个点哦,来。我这个图里边画的,我们是不是请求特别一啊,刚才我们看到s to是不是只有一条数据一行一个就可吧,这个表里边我画了什么?为什么有三个呢?为什么有三个呢?对吧,刚才明明看到那张表里表,我们已都已已经扫描了那张表了,他只有一个,为什么我凭什么画三个。那这个三个代表什么意思?结合一下之前我们所学的点,因为你当前这个你扫描的sto这张表是不是有可能数据量大了,它要做切分呢?那你一切分它不就变成三个吗?而且这三个东西是不是有三个不同的机器,可能是由三个不同的机器来维护啊,那你用一条原数据能表示这个内容吗?
12:14
是不是表示不了啊,对吧,它应该是保留三个,刚才我们看到的一个内容是因为我们STU表太小了,没有什么。没分,所以是这个内容能听懂对吧,当我们这个表过大的时候,它要切分,它是按RK切的吧,所以它在原数据里边记录了一个这个内容。Rookie从哪开始的啊,那你根据你扫描的,假如说你扫描的是11050,那这个数据在哪啊。是不是在这个里边啊啊,定位到这一条数据吧,啊定位到这一条数据,好,这个数据呢,你查看,So,记录在RS2吧,接下来是不是。请求L2扫描到11050这个数据啊,写操作重新写就是覆盖吧,啊就覆盖数据就这意思啊,再写进去啊,再写进去啊再写进去是这个意思,好,那这里边还有一个点,我们现在看到它经过了几次啊访问这是一次交互。
13:14
真是一次交互,这还有一次吧,对吧,最后发送AK3次,但是在老版本当中,有的公司会问啊,这里边诶有人知道什么。这里面还有个root表。那张表呢,叫杠珠的杠。有以前老版本当中八之前叫杠杠,非常标,它有一个这样的点。这张表干什么呢?把所有的内容往后推一步。在CK当中存着杠如何钢表的非质?杠中的杠表里边存着me达表位置。然后没达表里边存着实际表的位置。它基于什么样的考虑呢?因为他考虑到这个Meta表将来也有可能切分。
14:00
能听懂吗?那如果说me差表做了切分。你这里边一个一条数据能找到me达表找不到吧,所以他用一张表来维护me达表切分,那你切分,你可能切分到我这张表再切分吗。就是说我的意思啊,就是说你Meta表我如果说有一个杠输的杠表,它里边维护着META1叫META2,假如切分出来多个reading对吧,那你觉得Meta表的内容会撑到它去切分吗?不可能了,原数据要这么大,那你这个数据量得多大呀?对吧,一定不可能,所以说他做了两级,但是长期的生长环境实验发现没达表这个东西啊,也不会去切分。也不会前盘达不到那么大。举个例子,我们在生产环境当中,一般的一张表呢,存11条数据,我们想一下11条数据分析一下,而表的一个切分。
15:03
我们说了到十个G是不是,而且这个指令还可以往上调十个G,好,那假设me达表做了切分了,是不是它超过了十个G,假如说最大值就到十个G。十个G要存多少条数据啊?那这样吧,对,有同学说了一个数据,1K。一条裤子1K挺大的了吧,或者说10K。我更大一点,10K,那十个G,我们算一下乘以1024,这是多少?这个是兆,是不是再乘以一个1024,这个是多少?这是K吧,好,我再除以。十个G没了,是不是1024乘以1014存这么多小数据。10万条原数对吧。10万条原数据,你要注意一个原数据对应的可是一个region啊,一个region里面是不是又是十个G的数据啊。
16:03
达不到这么大吧。不一定了,一般达不到达不到啊,所以呢,他也考虑到这个问题,假如说有的公司真的比较大存的数据,所以他在做校验的时候,如果是Meta表。不切不走,切分逻辑能听懂,假如说任何一张表出发了,切分逻辑这个操作他先判断是不是没达表,如果没达表直接出去不切。这样绝对保证他只有什么一个reading啊,这张表呢,未来他不切了,只有一个reading能听懂啊,因为早期的时候他害怕这个东西做切分,因为一旦做切分,你用一个别数据能表示吗。表示不了了啊,所以呢,他做了一个这个事儿啊,中间这事那老的带大家看一下,因为现在我们没办法看了,这个地方有告诉你有杠珠的杠表吗。没有吧啊,没有高独的钢表啊好,那接下来我们去看一下啊呃,现在你在现在的官方文档里面也找到了,就是你得看什么。
17:04
老的官方文档,现在呢,我们大家搜一下这个不是documentation API嘛,那这个地方就有一个什么。中中文指南就不看这个了,有有点low吧,这是2.0的API和什么的,我们看这个。这还有个PDF格式的,那我们看这个。嗯,这个就像那个程序员写的那种文档是吧。跟那个文档还是有点差别的,来搜一下杠。Root。眉毛对吧,哎,CTRLC复制过来。资料这个里边有个官方文档,这个官方文档呢,是老的啊,老的直接打开给你下好了,你不用去找那个什么老的官方文档对吧。CTRLF。
18:01
是不是还让你扫描这张表呢啊,老版本当中有啊,0.902。对吧,啊,那个时候还有,但是现在我们用的1.3吧已经没了,但是如果面试的时候,人家提到这个杠中的杠,你知道一下是做什么事的,就把我们之前所有的那个步骤往后推一步,在ZK当中存的是杠中的杠表这个位置信息,而杠中的杠表里边存的是me大表位置信息,Me达表还是一样的存着用户表的位置信息,对吧,然后最后就是一样的微啊,就是这一套就往后推了一格吧,啊推了一个,因为他害怕这个微定,这个没达表去做什么做切分啊,大到一定程度做切分,这是害怕这个事啊,害怕这个事,因为这个呢,要给大家提一下啊这个内容。那接下来其实我们还要聊一个点,刚才我们所聊的。我把这个解一下吧。
我来说两句