00:00
呃,刚才呢,给大家介绍关于我们这个h base啊,它的一个我们这个架构原理啊,给大大家介绍我们这个h base的这个架构原理,呃,那么接下来呢,除了我们这里边这些东西之外啊,啊就架构原理,其实主要是把这里边这些东西是吧,什么我们这个呃滤行示志啊,什么咱们那个慢慢到啊关于我们这个缓存对吧,关于我们这个it file对吧,他们之间的关系给弄明白啊,就是我现在这里边其实有一个我们什么呀,就有个缓存的对吧?然后什么时候呢,当达到一定的一个我们的刷新机制之后,对吧?那么这个时候呢,才往我这个HHDMS上去刷新我们的数据啊,去刷新数据好了,那咱现在呢,那除了这个之外啊,那接着再往下来给大家看一看,关于我们h base呀,他写数据大概的一个流程是吧,写数据流程啊,脑子里边有个印象写数据。就是怎么样呢?咱们现在把这个数据写到我们这个短A点那去的,具体怎么走的,先找谁,先找主keepper组keep拿到了一个什么呀,是不是有原数据啊,这个原数据里放的是什么啊,这个原数据放的有region信息,然后还有呢,就是说我到底应该往哪放,对,比如说我现在我要写的话,你都要告诉我rookie呀,那么这个rookie我到时候应该放到哪一个region里面,是不是应该知道,因为咱们说region怎么划分时,根据咱们rookie划分的呀,对吧,就相当于我现在在咱们这个name no里面管理的我对的原数据信息是一样的,对吧?哎,其实呢,是这样一个东西,对吧?那么咱们现在呢,注意啊,首先我现在呢,当你去执行我这样一个操作的时候啊,去执行一个这样操作的时候,然后接下来呢,那么咱们呢,会请求我们当前的这个组keep本啊,会去请求咱组keep本,那么请求组。
01:51
Keep干什么呢?他是不是要拿到一个原数据信息呀,对吧,那么这个原数据信息在哪存着呢?同学们,就咱们当前呢,在咱们这里边读keepper在A下面,它有一个me的server,其实有一个me这样一个节点在到me里边,它里面放的时候是直接把这原声器放组keep里存着了吗?不是吧,这个麦它本身注意啊,它也是h base1张表。
02:14
就是麦的本身也是HP的一张表,对吧?那么只不过咱们这张表里面其实就是一个我们现在的吧,这什么这个列足啊,什么这些东西,对吧?它里面放的是我们现在原柱进信息,那么既然是一张表的话,那你是不是告诉我咱们这张表在哪啊对吧?这个表在什么位置呀,在哪一个range serve上呀,对吧?所以说呢,那么咱们现在请求主题本,他拿到的是我当前咱们这个Meta这个表,它所在的re server在什么地方,比如说我告诉你了Meta这张表啊,它在我们这个哈豆102上。啊,在咱们这个102上,那这样的话,我是不是可以到咱们这个喊动102上去请求咱们这个ma,就是相当于我去找咱们这张表了,对吧?那么这张表它告诉我什么呢?他告诉我你现在啊,这个数据应该放在什么位置到应该放在什么地方,对吧?哎,那我现在呢,在到这里边把这原数西拿到了,那么拿到原数据之后,注意同学们,假如说啊,我现在呢,我做多次写的请求啊,我做多次写请求,那你说每次我都去组keep去把这东西拿到,然后到教那去找吗?因为咱们这个,嗯,这个原数据的本身,大家想一想就存在一些咱们位置都并没有真正数据,其实这里边的数据不会太多吧,不会太大对吧?不会太大对吧?那么咱们现在会干什么呢?是不是在你客户端缓存一下对吧?哎,所以说呢,他会把它原数据呢缓存一下,对吧,以后你下次再去写的话,你不用再去组keep拿了,直接从我的客户端是不是也可以啊对吧,但是呢,同学们有一种情况对吧,那什么呢,如果说。
03:47
我现在我发生变化了。我如果发生变化了,那这个时候怎么办?比如说我现在这里边,我这这这这里边某些原数据如果发生变化了,对吧,那么这个时候走keep东西是不是也要改呀,对吧?那这个时候他要干什么呢?他再去咱们走keep,其实当我去发生变化的时候,那么这个时候呢,他其实底层呢,会抛一个异常。
04:09
的相当于什么?相当于我现在是发生变化了,然后呢,咱们补货的异常之后,他会去干什么?到组keepper再重新的去把咱们原数据给加载一下啊,一旦发生变化的底层会抛异常出来,对吧?然后接下来那咱们现在呢,那这里比如说啊,我通过我们这个Meta元数据信息,我知道你当前的这个r key,那么它的数据应该放在咱们这个103上,那这个时候咱们往103放的时候,那首先往哪写呢?是不是要往预写日志里边写一份了,写完之后呢,那么它要存到我们这memory到里边,对吧些日志,然后呢,在放内存啊,然后接下来,那么当咱们达到一定的我们这个刷新级别之后,它再往哪,再往我们现在H变增写,注意啊,那么咱们现在你等它往H变增写吗?不等等只要是咱预写日值写内存之后,这时候就完事了呀,对吧?哎,那么这个时候呢,他往内存写这个事儿对吧,那不需要咱们去等了,对吧,直接呢,就相当于给我的客户端返回一个AC了啊相当于客户端返AC了对吧。
05:10
然后接下来到时候他再往咱们这个HVD上去写,这是我们现在它的一个我们的写流程,那么这里就涉及到一个什么问题呢?就是咱们现在呢,在这里什么时候往我们这个HDF文件呢,就把这个数据啊,内存数据给它写过去,是不是有这么几个机制啊,应该有这么几个吧,同学们什么时候这个都是。现在我现在要把内存对吧,把咱们这个内存数据,然后写到什么呢?写到我们这个对吧,写到我们这个这个这个HDML上去,到什么时候啊,那你蒙的话也是要不然到时间了,要不然到条数了是不是对吧,大概都么蒙呗,对吧,但是看蒙对不对呢?对吧,来主主要主要啊咱们现在呢,这个遇险机制呢,或者说有这么几个啊,有这么几个对吧,呃,第一个的第一个对它的一个刷减时机对吧,当某一个咱们这个members到的大小到达了我们现在给定的默认值对吧,就是注意啊,咱们现在在我一个reading serve里边是不是一个reading serve里面是不是可以有多个列足对吧,那么每一个列组是不是对应一个store啊对吧?那么咱们现在什么呢?现在看咱们一个region server,呃,一个region里边它一个咱们这个store中这个memory store它的大小到多大了,如果咱默认达到了128兆的话,那么这个时候它所在的reading的所有memory store都。
06:34
会刷写,注意一个是它的大小达到了这么大,它所在的region的所有啊外分都会刷写,你不觉得这合理吗?啊,你们觉得这合理吗?会有什么问题,肯定会有小文件呀,对吧,你的地方没有了,你凭啥让我们跟你一块去刷钱去对不对,所以说这个时候他肯定会有一个什么呀,说不小文件的事了,对吧?哎,所以这块要注意一下,那么咱们这个对小文件怎么处理呢?
07:05
啊,咱们对小文件怎么处理的,他自己的这个机制是什么合并的,怎么合并。两种方式对吧,一个是咱们这个major,一个是me对吧,那一一个小合并,一个大合大合并嘛,对吧?哎,那咱现在呢,这里诶我注意啊,这里一种刷写机制,这种刷写机制是什么呢?就是如果说我现在这个region里边,大家看是不是有两个store,然后两个到对应的是不是两个micro store,对吧?那么接下来如果说其中某一个达到128兆了,那么这个你不管多大也跟着我一块儿把这个东西写到我们现在这一个给点上去,对吧?那么这种呢,可能会啊,这个有小文件的事儿,然后同时呢,注意说这里边呢,有一个我们这样的一个值什么呢?说当麦的大小啊,达到了我们这个128兆,乘以什么呢?乘以这么大的时候,其实这里它是两个参数呗,那180乘四,然这512倍对吧,当达到了512的时候,那么这个时候呢,它会阻止继续往外边写,会继续阻止往咱们这个外B上写数据,这是怎么回事,同学们。
08:07
咱们这里就这个东西,如果128兆的话,是不是就是说我现在这个东西就开始要去刷写了呀,然后又说什么呢?又说如果到512兆的话,就不停止了,就不往这里面写数据了,它有矛盾吗?有没有可能出现512兆情况啊,128就刷写了,怎么会出现512兆呢?啊对,大家想想他怎么知道到128兆。对吧,那么咱们如果写代码的话,是不是得有一个检测的时间呀,比如说我现在呢,怎么去知道他的一把抓兆,我可以每隔多长时间我去做一个轮询,然后检测一下当前看一看到多大了,但是这个时间间隔有没有可能一下子过了很多数据啊,对吧?那么这个数据如果达到512兆话,那么这个时候他就不往里边写了,对吧,相当于有一个保险机制在这啊,所以保险机制在这,对吧?这第一种情况,这第一种情况,那么第二种情况呢,是这样的,对吧,说当整个的们region server中所有memory的总大小达到了咱们现在Java它的一个,我们的一个堆内存它大小的一个,对吧,这个0.4对吧,就是我现在啊在这里,这个是我当前的一个re s节点对吧,那么re s节点,假如说我现在内存呢,比如说128对吧,那么这个时候呢,那么如果说你达到了128乘以0.4对吧,那么这块时候呢,它开始啊。
09:34
准备就开始是吧,这个不接入数据了,但是呢,如果你要想刷写的话,还再乘以一个什么呢?再乘以一个0.95,对吧,其实达到一个这样的一个大小,这个不是咱们刚才单个了,而是什么呢?而是咱们整个reading server啊,整个reading serve上所有的我们这个内存啊,如果达到这个都这么大了,短到这个时候呢,它也会刷写,那么这个时候刷写的时候呀,大家想一想,我现在这本身是不是我当前所有的这个member store,它加起来才打的这么大呀,那你说刷起的话,你把所有的都给刷起这个东西合适吧,好像也不太合适吧,那么他是怎么刷起的呢?对吧,它是对咱们所有的memory克的大小做一个排序,对吧,然后呢,按照由大到小的顺序依次刷新。
10:19
对吧,就假如说我现在一共对这个这达达到了,比如说我现在到512乘以一个什么0.4,然后呢,再乘以个0.95,对吧,然后发现到这个这个临界点了,到了阈值了,那么这时候我要干什么呢?我要按照从大到小的顺序开始往A点了刷起,然后呢,刷几个之后发现哎,这个东西啊,又小于这个阈值了。那这个时候就不做了啊,这个时候停止双写了对吧?那么这会呢,你要注意一下啊,你要注意一下对吧,然后刚才呢,就说如果他达到了这个乘以0.4的话,那么这个时候呢,它就不往我们这个members写数据了,对吧?然后接下来那么第三个,那么到达自动刷新的时间对吧?那么自动刷新时间默认多长时间呢?一个小时对吧,他也会刷新对吧,他也会刷新对吧?那其实呢,像这里啊,同学们可能会有一个问题,说老师你看这里有批量操作,批量操作对吧?那么假如说我现在的执行完之后,我可能啊,我这个程序也没到128兆,然后呢,那也没到什么,也没到我们现在对吧,这个也没到我现在当前这这这这个什么,对这这个阈值,然后呢,也没到一个小时,那这个时候就不刷写了吗。
11:29
对吧,这个就不刷新了吗。啊。这个时候怎么办?做饭时间一个小时啊。难道他等一个小时之后再刷,再刷一下。对吧,其实这无所谓啊,同学们,就我现在在咱们这里边,假如说你要允许的话,咱们数据会就假如我写的时候,你能比如说你写的话,你能不能比如说你放他没网一定要写你的数据,你能不能查到,你完全可以的嘛,对吧,你完全可以,你现在是不是有在内存里面是不是有主时数据会丢吗?肯定不会丢,为什么,因为有预选日志的嘛,对吧,是不是还有淤血志呢,对吧?哎,所以说这块呢,都是关心的啊好了,然后还有一个这个呢,其实这个已经这个废弃了啊这块这个什么呢?对吧,就这块当文件的一个数量啊,超过了多大多大的时候注意啊这块大家想一想,我看大这会能不能理解,以前听过这种说法吧,刷写,当W的文件数量超过这个阈值的时候,默认32,然后也会刷新。
12:39
听过吗?对吧,那这里可能会有一个同学会有疑问什么的,说老师我现在这个wal这不预写这这不预选日志吗?他怎么会数量就一个呀。对吧,大家想一想,咱们现在在整个这个机制里边,我现在这里假如说是region server啊,假如说我现在这个region server,那么一个server里有多少个WL。
13:03
啊,是不是就一个呀,对吧,但是你想一想同学们,假如说就一个的话,对吧,那么这块对吧,我所有的数据都往咱们这里面写,都往这里面写,那你想一想这个这个体积是不是越来越大呀,对吧,肯定不是一个,它也会达到一定数量之后怎么办?来分一个新的给你干活的就一个。啊,给你干活的就一个对吧,然后咱们现在呢,那你说它其实会产生多个WL文件的,但是真正给你干活的就一个WL,前面这些可能给加了一个什么标记,对吧?那么什么时候可以把这些东西给干掉呢?那肯定是不是得刷写完成之后,对吧?那他才会把咱们原来这些给干掉对吧,那么这块他对吧你得知道对吧,就说我现在呢,如果数量超过32的话,那么这个时候呢,他也会去刷新,但是这块呢,已经没废弃了啊就废弃了。好了,这是关于我们现在的这个写流程和我们这个刷新,然后现在这里还有一个读流程,那么读流程呢,其实我的写差不多对吧?读流程呢,其实和咱们写差不多对吧?呃,那么咱来看一看,那么首先呢,也是请求所在的一个me原数据表,然后接下来呢,那么咱们根据我原数据表,然后呢,到我们指定的我们这个reading serve上去发送请求来获取数据,对吧?那么他呢,注意在咱们请求的时候,他这里除了我们现在啊,除了我们现在这这这里边对吧?这些缓存之外,它这里还有一个叫什么,这个不到catch对吧,叫什么块缓存吧,对块缓存,那么这个块缓存是怎么回事呢?对吧?这块缓存是这样的,同学们,就是本身呢,咱们在存储的时候,它其实呢,是分成一个小块,一个小块的,那每一块多大的,每一块其实是我们这个64KB对吧,那么咱们现在把它查出来之后呢,那么在咱们这里,它会对我们当前查询内容呢,也做一个缓存啊,也做一缓存对吧?哎,那么如果你要现在查询的东西,大家想想,假如说我get请。
14:50
条,但是我get呀,或者说我在查询的时候,我查询不是一条数据,我可能查出我们这100条,那么其中呢,这100条数据啊,那么有50条,它是在咱block catchche里边是有的,对吧?那么另外呢,可能有30条,它是在哪呢?在咱们缓存里边还没有刷新到我们这个HDF上去,然后呢,另外呢,有20条已经呢刷新到我的这个这个离点那去了,这有可能吗?同学们对吧?所以说我这在查询的时候,我这个数据我应该来源于三个地方,一个是什么,如果缓存里边有,从缓存里边获取,如果说缓存里边要是没有的话,对吧,那么咱们呢,就得看一看我这个内存里边是不是有啊,对吧?然后接下来那么这个内存完完事之后还有什么呢?是不是咱们现在还得去我们这个store fair里面拿呀,对吧,就我现在没来得及刷新呢,这个memory到里边没来及刷新呢,那么这个时候呢,你也要给我查出来啊,业务查出来,对,然后接下来你再去我们这个这个ADS把这个查出来,对吧?那么在咱们查的时候呢,那么这里其实把它会有一些我们这个过滤器。
15:50
机制,比如说对吧,咱们可以按照什么呢?时间呀,对吧,比如说按照咱们rookie呀,对吧,比如说按照什么不动过滤器呀,对吧,来进行过滤,对吧,来进行过滤好了这块呢,是关于我们现在它的一个啊读数据的流程,那么读数据完成之后呢,那么这块那么再往下走就是什么呢?咱们有一个我们这文件的合并,那么文件合并呢,那么有两个,一个呢是我们的小合并,另外一个呢是大合并,那么这个小合并啊是怎么回事,同学们是不是就相当于这样它呢?经过小合并之后,是不是把咱相邻的一些文件都给它合合并了呀,对吧,但注意啊,那么咱们现在呢,在这里小合并呢,它只会对合并相邻的我们这个文件啊相邻文件,然后把这个文件呢,合并成一个更大的,就比如说啊,那么咱们现在在我们这个执行我们这个刷写的时候,对吧,在这个刷写的时候,那么发现呢,其实这里边对吧,有很多小文件,因为我们说对吧,那如果说你要刷写的话,有可能会产生小文件对吧?那么这个小文件的话,对,那么你都。
16:50
放在咱们这个ad,那这个东西那其实是对吧,这个很有危害,对,所以说呢,咱们可以怎么办,咱们可以把它呢来合一下啊,可以把它合一下,咱可以把它合一下,那么咱们的大合并怎么回事呢?大合并呢,是不是相当于把它并成一个整体啊对吧?把它合并成一个整体对吧?呃,那么这块呢,其实是什么呀?将一个道下所有文件合并一个大文件对吧?那并执行咱们的物理删除操作对吧?这微删除操作就相当于什么呀?对吧,我合并了对吧?那么原来的那些呢,对吧,其实可以不要了啊这块呢,了解一下,就是把一些我们的过期的数据给它干掉,但是小合并呢,这块对吧?大家注意看,小合并呢,会将那个临近的若干小件呢合并较大的,但是呢,不会清理过期和删除的数据。
17:36
啊,就是说我现在你假如说你要执行一些我们这个delete的什么这个操作的话,那么这块呢,它其实呢不会去清理的,那不会去这个删除的,但是如果说我现在要是大合并的话,对吧,那么他呢,会把咱们这清理和删除的呢,给干掉啊给干掉什么意思啊,同学们,假如说我现在呢,在咱们这里边对这个小文件啊,小文件这个里边呢,有对同一个rie的操作,对吧,这个同一操作这个呢,比如说insert这个呢,比如说update同一个,比如都是1001对吧,这个也是update,然后这个呢是delete对吧?然后接下来那么它的合并的时候,假如说把它们几个合并到一块了。
18:14
啊,把脏器合并一块儿了,合并成一个什么呢?合并成一个大文件对吧,那么其中呢,咱们这里是不是有一个比delete的操作呀,对吧,那么大家注意啊,那么如果说你要合并的话,那么这个比例操作呢,那其实呢,你是不能把它删掉的。对吧,其实不能删掉的,为什么?因为你现在把它这个小,把这个文件里边,它是相相对大的这个文件,对吧?你现在把这个文件里面这个D列删掉的话,那么大家想一想,你能保证别的文件里边没有其他的一个什么inser或者update吗?比如说你看我现在这里边,你把这个东西给干掉,在咱们这里边是不是还有个insert呀,那肯定有问题了嘛,对吧,就是我现在把这个东西给他得数据删掉了,哎,那发现这里边其实还有音色的得到数据又来了,这肯定不行,但如果说我现在呢,要是大合并的话,那你想所有东西都在一起。
19:00
对吧,把所有的一些操作是不是都合并在一块了,对吧,那我现在把咱们当年这个数据删掉,是不是也没啥事了,对吧?因为所有的操作都放在一起的话,都要放一起了,好了,那么这块呢,是关于我们这个合并,然后进来合并完之后呢,那还需要大家了解的什么呢?就是我们那个reading啊,它有一个spli这样的一个切分啊,这个切分,这个切分呢,就相当于什么呢?相当于我现在呢,这个一开始对吧,我呢,对这个是对吧,这个一张表,然后一张表里边呢,这里边有一个一个的region,对,有一个一个的region,但后来发现啊,那么其中某一个region这个数据呢,对,越来越多啊,数据来越多,那么现在在咱们这里一个region放不了了,放不了那怎么办呢?那他会把一个region给切分拆分成两个,那么具体怎么拆分呢?其实这会大家这个如果你要想看的话,我不知道当时你们在看的时候,你们是怎怎么去看这个切分的,对吧?看官网了吗?不要去关官网,因为官网它只有一些切分的一个概念或者名,具体怎么来描述的,其实官网没描述对吧,所以说如果你要是想看这个切分的话,你得去找一些这个相关的帖子,对吧,来看一看关于咱们现在它这个切分对吧,其实这个切分对于我们来讲呢,你就知道对吧,原来呢,这里边可能是我们一个region对吧,后来呢,我现在把这一个大的region给拆分了,对吧,拆分两个region对吧,其实这样的啊,其实这样,那么具体拆分它的一个原则什么样的呢?对吧,这块呢,其实也是对吧,它的一个拆分的一个规则对吧,拆分的规则对有一些参数的配置,短一参数的配置,对吧,呃,然后接下来那么这里呢,呃,把这个集结完之后呢,还有一个就是关于我们现在的h base它的一个优化,对,那么其实这个优化呢,那就是什么呀,就是一个啊这个有一个预分区对吧,这预分区是怎么回事呢?对吧,我们说啊,那每个region呢,它其实呢,这里面是不是都按照我们现在它的一个这个rie排行序列,对吧?A数的排序,同学们,那这里大家想一想,我这排序操作在哪做的呀。
20:55
啊,我为什么我我这个东西,其实我们说这个memory stop,除了我们的预选之外,它还有排序啊,怎么排序的,其实是不是在这咱们这里边对吧,在咱们这里还要去,然后往我那一点了写啊对吧?那么所以说呢,在咱们这里边,它其实有一个什么呢?说每一个region呢,维护着我们那个start肉,还有and roll,对,就当前我们这个read啊,那么它这个起始的rie多少,然后呢,结束rie多少,那么这块呢,你可以给提前规定好啊,你可以提前给规定好对吧,那么你要提前规定好的话呢,这就相当于啊,比如说我在这里我创建了一个我们当前的一个表,那么这个表呢,我指定了对吧,那么你现在零到我们这个1000对吧,是一个分区1001~2000,那这是一个分区,2001~3000,一个分区,3001~4000呢,是一个分区,对吧,那你想一想,是不是把每一个region,它里边所放的咱们rie范围是不是给。
21:56
规定好了呀,对吧,这个呢,就是我们的预分区啊,这个呢,其实就是预分区对吧,那么可以提高呢,我们的HP它的一个性能,那么除了按这种方式之外呢,那其实呢,对吧,你还可以按照对吧,什么16进制的对吧,这个预文群,然后还可或者是什么呀,按照文件,就比如说我现在这里边这个数特别多,那你在创建的时候,你在这里,比如说我让你分2000个群,对吧,那你说我在创建的时候,你直接在这里当当写2000个不太合适,那怎么办呢?你可以啊,把它当前分析规则写的一个我们这个文本文件里边,这文本文件里面就单独指定分局规则,对吧,然后接下来,那么咱们现在呢,到时候在创建的时候也可以指定,我现在通过咱们spli fair这个文文件来进行我们这分区啊,来进行分区,对吧,那么使用分区之后呢,那么这个时候rook key呢,它其实设计,那么是不是也得有一个我们这个这个这个什么呀,也得有一定的一些我们的技术含量在里边的呀,对吧?因为我们说啊一个数据,那么它本身。
22:56
有标记是吧,唯一的标记就是咱们rook key,那么这个rook key呢,对它决定了,那我这个数据到时候应该放到哪个分区里面去,对吧?那么如果说我现在呢,要是我们这个预设我们这个啊分区的话,那么如果说按照咱们正常的业务同学们,那么有可能呢,会出现咱们呢,会把当天啊或者说当前的一些数据呢,对都放到某一个分区里区了,比如说啊,那我现在呢,在咱们这里边,我在设计的时候,对我设的是分区,对比如我设一分区,对那什么呢?比如说我们这个零啊到什么一九多少多少多少多少对吧,这里余分区,然后呢,咱们这个二零到什么什么三零对吧,这里有分区,然后三零呢到什么四零到这里有分区对吧?那么如果你要这么设计的话,同学们,然后如果说咱们时间作为rookie的话,你会发现那目前在咱们本世纪你所有的一个,我们现在它的一个数据是不是全跑了,这一个很取消。
23:52
就是假如说我现在按照时间戳作一档r key的话,然后你的预分区规则你这么设计对吧,那是不是咱们当前只要是二零多少多少多少多少对吧?那么这个时候说都跑到这一个分区去来对这二到三到这个都把这一去了,那这样不太好,所以说呢,那么咱们呢,可以在设计R的时候呀,我们的使用一些原则对吧?那么在一定程度上呢,让我们的数据啊,减少一些我们的倾斜对均匀的分布在我们这个每个region里面去,对吧,那么一般常用的设计方案对吧,比如说设成随机数对吧,本身呢,那咱现在在这里,你拿那个2020什么,然后接下来我可以调它,然后帮助咱们设成随机数,那这样的话,在你比如说今天啊,是二零到二零年,然后10月27号,你把它作为种子。
24:39
同学们,是不是随机数的话,是不是有种子呀?啊是不是随机数,你们应应该有这个吧,C的,包括你们在使用我们这个什么,你们在使用咱们这simple采样的时候,不也有一个什么这个state吗?种子嘛,其实这这个说的种子,大家想一想咱们现在所说的随机数,当咱们应该都接触什么random对不对,咱们现在这里是真随机吗?尾随机是不是真随机是什么?
25:05
买彩票嘛,你们那谁买彩票来填对吧,就是说如果说正常情况下,正常情况下对吧,这个如果说就是咱们这个啊,不抛除别的因素的话,那说这个这个这个摇的那个嘟嘟嘟嘟嘟是吧?那个是什么,那个是叫J随机的,但是我们现在这里边什么random呀,这些东西,那其实呢,都是我们这个尾随机,尾随机是怎么回事,就是说正常情况下它会有一个种子啊,就是它会按照一定的算法啊,然后呢,来生一个随机数,对吧?这个算法从哪个值开始呢?就是从咱们这个种子开始。啊,从种子这开始对吧,所以说我现在我可以什么呀,我可以根据咱们当前比日期对吧,今天27号做一咱们这个这随树种子,到28号的时候呢,我再做一随机数种子,等那到时候大家想一想,那是不是随机数,那时不是就不一样了,那不一样的话,到时候你可以放到咱不同分级数去嘛,这是一个,这一个,那么或者什么呢?或者说我现在求哈希,等那去完哈希之后呢,那么它得的结果也不一样,那这个时候也会散落到不同分解流去,对吧,或者求其他的一个散列值对吧,这是一个,那么还可以怎么办呢?还可以这样对吧?哎,那我现在呢,在咱们这里边你可以怎么办呢?比如说我现在本来都是二零多少多多少,那我可以什么呀,把它反过来,因为如果说我现在如果要是正的话,这个前面是都是一样,都放在一分区里了,那我反过来对吧,叫字符串反转啊吧,或者是什么呢?或者说咱们现在呢,可以拼接字符串对吧,但是这个就看你自己运分区的时候,你的咱们入IE范围你是怎么设定的了,对吧,那么咱们管这操作叫什么呢?哎,这个操作就是咱们的加盐,你们所说的加严加严加严就就。
26:39
这块东西啊,对吧?哎,那么这个是关于我们现在这个啊,它的一些东西啊,优化这块呢,大家自己看对吧,然后再往下呢,我们来看一看整合菲利格斯对吧?那么整个菲利格斯呢,同学们,这个菲利格斯相当于什么,这个菲尼格斯相当于啊一个外壳,就咱们本身操作的还是贝斯,但是A上你去写的话,对吧,你想不用说别的,就是这些API就把你搞到了对吧,你在写的时候来往里放一插一条数据,你每次再去写的时候,你是在想往前的put,我现在写的是什么,你都你都自己你都分不清,是表明了还是列足啊,还是列啊,还是值啊,对吧,这都你都知道分不清,所以说呢,咱们在我们的HB外表给他包了一个什么,包了一个外壳,用他的话说对吧,可以理解成一个皮肤对吧,就相当于什么呢?就相当于这个对吧,就这个东西,你看着我现在好像操作的是什么,这个硅谷对吧?但其实我使用的还是谁,还是搜狗对吧,还是搜狗对吧,就我现在这里操作好这个菲尼克斯,但其实我操作还是。
27:39
Space对吧?那么它的好处什么呢?它的好处啊是可以使用这个标准呢,Jdbcpi来代替HBC客户端的A篇来去对表的这些操作,对吧,大家想一想这个东西啊,JDBC1篇,那么你得知道一看JDBCD篇是不是应该JDBC又成为接口了,咱们那天同学在分享的时候说啊,Jara对吧,其实呢,又分了什么,咱们这个对什么,三个方向,S SE me什么意义,对不对?那么其实在每一个方向里边,它都定一些规范啊,比如说我现在在咱们那个Java SE里边一个比较出名的一规范叫什么?就是JDBC。
28:15
啊,这边的规范,你像咱们这个加意义里边比较出名,像什么咱们soate呀,对吧,Soate规范这都这都是有的,对吧,然后包括咱们一些我们的分布式的一些规范,这都有的,什么叫规范,规范就是散公司它制定一些标准,对吧,当时大家想一想,我们现在这个战略园最初的时候对吧,什么散公司开发的,就发现我现在这个账号用的越来越多,那么有特别多场景要干什么,要用我这门语言去连接不同的数据库。对吧,我现在Oracle有使用Oracle的,这这些人想用我这Java去连接Oracle,对吧,使用我们现在DB two的想法Java去连deep two,使用MYS的想我Java去连接MYS狗,后来呢,大家想一想数据厂商是不是很多呀,对吧?那么每一个厂商它都有一套自己啊去通过Java去连接我现在这个数据库的标准,那么如果说这样的话,对于我们扎门使用者来讲,这是一个非常灾难性的一个这个现象说我现在的在W培训的时候,我们又买so据口,然后呢,我花了多长时间教你们怎么去连接买自数据库,到后来到公司一看你们用的什么,你用的Oracle,对吧?然后他俩这个使用方式完全不一样,那你们疯了,到所以说怎么办呢?所以他制定了一套咱们Java和数据库连接的这样一套标准,对吧,其实这个标准是什么呢?就是我们现在这个接口。
29:28
对吧,其实我现在在这里,我啊你要想去连接,首先你必须得实现我们这connect接口,你要想执行搜索句,你必须实现我STEM接口,你要想处理接口机,你必须实现resource set的接口,你不管是哪个数据库厂商,对吧?你数据库厂商等可以实现方式不一样,但是你所实现的接口必须得一样,这这样的话,咱们是不是我们在学习的时候,我不用去学习,我现在啊这个JDBC有什么买SOGDBC,什么OGBC没有,我们是不是去学JDBC就可以了,对吧?别的厂商其实不管什么都是一样的,对吧?那么如果说我现在这个菲利克斯他也提供了这样一套标准的话,那么咱们现在学的时候,那其实就是像什么,就是相当于大家在操作我们的GDBC这个一样,和GDBC连接买S其实一样的。
30:14
JDBC连接so有这么几个步骤吗?同学们,你们一般GDP连接so哪几个步骤注作驱动获取连接,创建数据库操作项,然后呢,没了你不关,你不关闭资源吗?对不对,你可以不处理结果集对吧?你不关闭资源吗?你不仅这个搜索语句嘛,对吧,这行搜索语句,然后处理结果集对吧,释放资源对吧,大概这些对吧?那么菲利克斯呢,它本身对吧,可以非常容易的集中这些东西,然后接下来那么具体这个菲利克斯呀,那么怎么用对吧?大家想想你们菲利克怎么装的。解压之后就可以了吧,然后怎么和咱们这个这个AB结合在一块的。怎么和AB进这一块呢,是不是拷贝个拷贝个加班过去就行了呀,啊有印象吗?来大你们看啊,那么咱们现在呢,在这里其实你们同学们诶,这个菲尼克斯你们当时在使用的时候,你没做什么太多的安装,对你们当时肯定有一个这样的压缩包,对吧?你们咱们现在使的版本是一样的,菲尼克斯5.1.0,你们用的是这个吗?我看我这个版本。
31:22
5.1.0 5.0.00.0.0是吧,那我看我这版本是多少,差不多是吧?CD然后呢,我们这个OB software fair,然后呢,在咱们这里菲尼克斯不0.0是吧,It呢,你版本2.0.5。一样的是吧,啊一样的是吧,行那就行啊,那么咱们现在呢,你们在装的时候同学们对吧,那么其实我们先把它挤压之后呢,那么你们现在其实是做的一个拷贝把谁呢?是不是把咱们现在一个我们这个菲尼克斯里边的对这样一个h base server,然后拷贝在哪,是不是拷贝到h base的这个内部下面。
32:06
对吧,然后接下来呢,就完事了,对接在之咱配一下环含面就完事了,对吧,那么你们现在在操作的时候,那你们是怎么去操作的呢?对吧,我现在想启动一下我们这个h base,对吧,这个对吧,这这个客户端,我想启动H的客户端,那这是这个菲尼克户端,再来到哪来到我们的o BT model,然后菲尼克斯下边,然后接下来这里并不是下面吧,我记得好像是一个什么Python是不是啊,首先叫什么circle line.py是不是对其是pencil的口子,然后后面跟什么。贝对,读keep是吧,读啊。好了,那么咱现在想看一看他留的哪些表对吧?怎么看啊,看一看DEMO,大家看这些东西熟悉吗?刚才在h base里的时候看过,对我说那个东西啊,不是H贝斯的对吧?其实这个谁呢?这是我们现在这个菲尼克斯对吧,他呢播的一些系统表对吧?然后只不过呢,咱们现在操作的是我们这个h base啊,刚才操作h base那里可以看到的对吧?好,那具体对它的一个操作呢,那么咱们这里创建呢,或者说我们现在对吧,这个删除啊对吧?然后呢,咱们现在呢,这个的更新啊,基本都一样,但是插入不太一样,是不是插入叫什么update upsur对吧?哎,插入不是我们inser吧,这个absur别的倒无所谓,到别的无所谓好了,那这样的话呢,咱们关于我们现在这些东西呢,我带他简单回顾到这对吧,然后接下来咱们就得具体操作了,具体操作了对吧,如果说觉得这块哪块还不太什么的话,下去自己再去扩展啊,再扩展把这个停一下。
我来说两句