00:00
那在之前啊,我们把我们的这个分区键,分区号咱们都算完了,那接下来呢,就是我们这个数据的封装了,咱们这个数据的封装呢,咱们之前说了,其实啊,咱们之前就已经可以正确的满足我们数据的要求了,已经能够插入到face当中,可是我们的操作太复杂了,为什么呢?因为每一个我们的字段,咱们都要给它增加一个put,增加一个列,那这样的话,如果这张表的字段很多,列很多,那我得每个写一遍,可是每个都写一遍,它恰恰有规律,有规律的话,我们以后呢,尽量少写这样的代码啊,少写咱们能封装的,咱们就给它封装好,那这样的话用起来也方便,所以呢,我们昨天呢,给大家封装的这个对象呢,是这样的,把我们的数据呢,给它封装完一个对象,然后呢,我调用一个方法,这个方法恰恰你只要对象就行了,你要传个对象就完事儿了,你什么都不用写,那你封装完了以后,只要有对象,那我直接就可以用了,只不过这个对象呢,我要加一些标记,我告诉你这个对象我。
01:00
对应哪张表,它的每个属性对应哪个列,然后它的肉key是什么,它的那个family列足是什么,只要你增加注解的话就完事了,有了这种对应关系还是非常不错的啊,所以在这种情况下呢,我们给大家演示的一些我们的什么注解呀,包括一些属性啊,包括我们的底层反射是如何实现的呀,这个呢给大家都演示过了啊,这个操作当中,其实重点呢,就在于我们的反射当中这些方法的作用,你该看看如何去取到它,只要你这些能明白的话,我相信这个封装并不复杂啊,只不过呢,就是想办法得到我想要的数据就行了,什么rookie啊,表明啊,我的列足的名称啊,我的列的名字呀,诶自己下来呢,可以看一看,我们这里就不详细说了啊,因为我们已经说过了,所以这一块的代码呢,我们说了,咱们就直接来调用就可以了,啊好了,那这个咱们可以了,之后没有任何的问题,我的数据插入了,可是呀,有这么一个现象,举个例子,张三给李四打了个电话。
02:00
那么这个时候我就问同学们,如果李四在统计他的通话记录的时候,张三给他打的这个统不统计出来?什么意思,就是我像张三呢,他给李四他打了个电话,比方说在2018年的10月1号打了个电话,啊,国庆节嘛,那打完一个电话之后,那么李四他想看一看,哎呀,我这一个月我都打的多少电话之类的是吧,我的通话记录都是什么东西,他来去做统计的话,就问问你这条数据我应不应该统计出来,应不应该你被叫是不是也叫通话呀,对不对,你主教我打给别人叫通话,难道别人给你打电话就不叫通话了吗?是不也叫通话,他应该统计通话时长和通话的时间嘛,对不对啊,比方说哎呀,张三给我打了多少时间电话是吧,打了多少个,那不也跟亲密度有关系吗?啊,也都有,那所以啊,就是我们这条数据,我们也应该给它取出来,那好,问问你们,我该如何来查询呢?如果你是张三给李四打的,我根据张三来查,非常方便,为什么呢?因为在电话号码里面,我们是不是根据他的电话号码,根据那个时间做了个分区啊,我马上能查到吧,但是现在问题在于我们要查的不是主叫用户,而是被叫用户了,那这个时候怎么办?
03:18
反过来查,你怎么查?你的你就已经保存到数据库里面了,肉就不能变了,你都保存好了,那这个时候你想根据我们的理四来查行不行。可不可以啊,可以一定可以,但是效率肯定不够高,因为咱们之前给大家介绍了一个叫做什么东西啊,叫还记得吗?叫过滤器吧,过滤器是可以去查它的,比方说我想查查我的李四呀,谁给我李四打过电话,诶这个我可以查,但是性能一定不够高,所以呀,我能不能够又能查出来,但我的性能还能高点呢,我的效率还高点呢,这个咱们该怎么做?同学学想想有没有什么好的办法,就这种方法能,但是我不推荐使用啊,那我们怎么能够查这个被叫用户呢?
04:14
大家想想,那这怎么办,这个时候就有另外一个办法了,什么办法呢?张三,你不是说给我们的李四打了个电话嘛,对不对,那好,那我再增加我数据的时候,我把李四数据呀,也给他保存上。就是你张三给李四打一条数据干嘛呢?我同时把李四也给他加上啊,那么我们就这么加,但你这么加就有个问题,什么问题呢?我现在张三是主教吧,你的李四是被教吧,如果你加了两份一样的数据的话,大家看张三放前,李四放后,李四放前张三放后是不是两个数据其实一样的呀,怎么顺序不一样吧,可是对于我们用户来讲,我怎么知道他是主教,他是被教呢?因为我认为我认为什么我认为这两个好像都是主教吧,对不对,我怎么能区分出来它是主教,它是被教呢,对不对?所以我们要把它区分的话,我们就得加个标志位。
05:14
在后面加个什么呢?零或者一,比方说加上一,它就是主交,如果你是个零是什么呢?你就是个背交,所以啊,我加个标志位啊,一或者是零,这个在我们的课件当中其实是有的啊,所以呢,咱们回到咱们课件当中,咱们课件当中,咱们生产的时候,大家看这地方什么东西啊,最后再加上一个叫flag,这个flag呢,作为判断第一个电话号码是否是主教还是被叫吧,为什么要加这个东西啊,就意味着我的数据可能要做区分,我要知道我当前的数据是主教还是我们的被叫,有了它就会非常的方便,所以啊,咱们之前的程序当中啊,还得做一个改善啊,还得做一个改善,所以我们之前咱们点一下咱们这里呢,还得再来一个啊,咱们叫pro啊,我们写上叫做什么呢?Flag诶好了,然后呢,在这里呢,我们写上它,咱们这个列足呢是不用变的啊,给它放过来啊好了,放过来以后,那么这个时候呢,干嘛呢,我们现在呢给它来。
06:15
嗯,列图不用变flag,那你这个flag的话,我这边也给他给增加我们的set get方法啊来我们的set,我们的get方法,嗯,好了,然后呢,我们默认吧,咱们默认给他个什么一默认一什么意思呀,表述的是主教吧,那你这样的话,主教就没有任何的问题了,然后呢,我保存到数据库里面,它就是我们的主教了啊,那我背掉的话是把这个属性变一下就可以了啊,变成零不就完事了吗?诶就这个意思啊好,这个呢,咱们先这么说啊,接下来咱们再说另外一件事情,既然我现在呢要去什么呢?作为一个区分,那么同学们想想这会导致一个什么问题出现,会导致我打一次电话数据库里面会有两条数据存在吧,无形当中是不是就多了一倍的数据啊,那这个有没有什么问题呢?有没有问题啊,就是我当年是不增加了一倍的数据,你增加了一倍的数据,对我的查询来讲是不是有影响,是不有影响,一定会有影响,对不对,数据多了嘛,你数据多了以后,我查询肯定慢了,对不对,那我有没有什么办法?
07:15
可以解决这个问题呢?这个有有没有什么办法呢?啊,首先你记住我打一条电打一什么打一个电话增加两条数据,这个本身是没问题的,因为我们的base本来就是大数据框架吧,你大数据框架你多存点数据,这不是问题吧,对吧,这不是问题,为什么呢?因为这个东西本来就是存储数据的,而且本来就海量数据存储多没问题,但是你影响我效率这个事儿是有问题的,那我们要解决的就是个效率的问题,那我如何解决呢?就个数据我一定要增加,没办法我一定要增加,但是我是什么呢?希望效率提高,所以我可以想这么个办法,想什么办法呢?我的主教的那个一,它放到一个列族当中。
08:00
CF1,然后呢,我的这个零被调呢,我放在另外一个列组当中,叫CF2。我这么来去作为一个什么呢?提高查询效率的方式,这个你们能明白吗?就是你想想你这个能明白什么意思吗?就是我们数据确实多了,但是我把它分列足来存储。那它就能提高效率,你们能明白吗?首先我们之前给大家讲那个架构的时候,列足是对应一个道的吧,那么也就意味着我的足不一样,它的道就不一样,对吗?那么如果道不一样,道里面是不是会有很多的文件呢?那么也就意味着我在查询的时候,我会把所有的文件全查一遍吗?我不会吧,如果我是主教用户的话,我是不是只要查这一个道就可以了,那么里面的文件就没那么多,对吗?同样道理,如果我查的是被教的话,我只需要查这个store就可以了,它的文件也没那么多,对吗?那所以说我不是全查啊,不是所有的道全查,不是的,我是什么呢?把它分开,你分开以后你的数据量确实多了,但是呢,我分列足存储之后,你存储的地方它不一样了,我就可以快速来查取我的数据啊,所以这种方式还是可以的啊,所以啊,我们有的时候需要考虑这个事情,要考虑能够快速查询的方式,我查被教我就查这边,我查主教我就查这边,诶给他区分开,所以我当时给大家设计。
09:24
那个列足的时候,我并没有固定写成info,还记得吗?我们当时给大家去设计那个列足的时候,我们这边咱们看啊,我们这里是不是专门叫做叫color啊,对不对,我们又叫ino对不对,那所以我这里可以再加一个这个color,咱们称之为叫主教,那么还有一个叫做coll。这个东西啊,咱们称之为叫背叫啊,一个叫coll,一个叫coll啊,就这个东西,所以啊,我们通过不同的列族呢,给它来区分开,这还是非常不错的啊,好了,那么列足给它区分开,那么接下来就咱们要增加数据了,最起码呢,这个列足的事儿咱们明白了,咱们开始要增加数据,增加数据我这里先不这么做了啊,先不用对象了,不用对象了,还是用它吧,嗯,所以把这个给它做掉,我不用对象的方式了,咱们用这个方式,用它的方式,大家想想,那这个时候我该怎么做。
10:17
你是不是应该再加一个put呀,你之前有一个put是加一条对不对,但是你正好要加一个相反的一个put吧,那所以我是应该再准备一个put对吗?我要暂准再准备一个put,那这个准备put这个时候大家同学们想想rookie是不是又变了。为什么rie变了?因为rookie是根据电话号码来计算出来的,也就意味着你电话号码都变了,那你的这个分区号是不是也就跟着变了,所以说我们这个rie其实也就要发生变化,同学们看啊,我得来,我写上是那个里啊咱们的call里的一个rie,诶好了,那这个应该是什么扣二的吧,是那个被叫用户的是吧?是他了吧,那这个说不也是扣二了,那这个应该是我们的CALL1了,对吗?同样道理,那我这个呢,也写上咱们叫什么呢?诶,咱们的call put,哎这么写,然后呢,把它拿过来,拿过来以后呢,我们的bit点我们的to,我们的bit,哎,给它放过来,放过来以后同学们再想想,那我再加上我们这个东西,这个还对吗?这个是不就不对了,为什么不对了,因为我们这个family应该是另外一个了吧,所以我们写上咱们叫callly啊,咱们的call的family,那我这个应该改一下,诶咱们的LY,诶就这个样子,那我这么写完了以后同学。
11:34
看啊,我现在这边的是不是也应该发生变化,而且我刚才还还有点不太对啊,我应该再加一个啊,加个什么东西呢?那个flag啊,这个应该是一吧,那我这个是不是应该是零啊对不对,咱们给它加上啊,咱们写上一个下划线,零表示的是一个主教,一个被交啊同样呢,在我们这里呢,也给它加上啊来我们这里给它加上,这里呢写上一个咱们叫flag啊,这个flag呢,就给它写上一个我们的一啊,那好,那这个咱们写完以后,咱们接着呢往下写,往下写以后呢,这个地方首先咱们拷贝给它替换一下啊来嗯,然后呢,我们这个put,诶在这给它替换替换啊替换OK,然后呢,下面呢,诶放过来,行,放过来,放过来以后,那这个时候我们这边就应该变了。
12:23
这个记住啊,我这个靠一靠二啥意思啊,这个靠一靠二,我们这可不是说主叫被角的意思,它表示是第一个和第二个吧,所以我这个不用变吧,这个不用变,我只要变这就行了,我变这就行啊,所以这个呢变它这个时间不用变,这个呢不用变,但这就不就变了,变成零了,诶好了,那我们记住啊,我就把前面咱们区分一下,咱们前面这个put呢,我们写上叫主教用户啊,咱们叫主教用户OK,然后呢,主教用户之后,那这个呢,我们就称之为叫被叫用户,咱们叫被叫用户啊来咱们叫被叫咱们的用户,OK啊行了啊,那这个都有了以后呢,我保存数据应该怎么办?是不是应该是再增加一个呀,哎,再增加一个啊,所以来把这个呢放过来,或者呢,我们还可以用另外一种方式什么呢?我们这是不是可以放个集合呀,就两条一块增加呀,也可以吧,所以我们有个叫做list,有一个什么东西啊,咱们的put吧,Put s等于new。
13:23
List,然后呢,把这个put啊,咱别一个一个加了,咱们两个呢一块去加啊好了,把这个呢给它加上,嗯。嗯,好了啊,然后呢,这边呢是2LIST,嗯,OK,点完以后,那咱们这个put呢,就可以直接来了,点我们的第一个,咱们是主教的put,嗯,然后呢,再来一个,嗯,那这个呢,就是我的callly put,诶把这个放过来,放过来以后,那我这里是不应该就把它放过来啊,诶放到这里啊,但这个方法并不存在,没关系,给它加上嗯拷贝,拷贝以后呢,再来一个啊,增加我们的多条数据,所以呢,拿过来啊,咱们叫增加多条,嗯,多条数据,好,那增加多条数据的话呢,这里应该是一个我们的历史了啊后呢,给它拿过来,然后呢,我们就加个S就可以了啊然后呢,这个呢,给它放到这里,那这个题就简单了呀,因为我table本来提供这样的方法了呀,诶,所以我们这么做是不是就可以了,诶这么做就行了啊,嗯,好了行了,那我这么做完成以后,他们会发现我现在的这个程序是不是就可以了,哎,那这样的话,我保存数据以后没有任何的问题的话,我们的两条数据不就都出来了吗?啊。
14:33
啊,就是这样好了,那我现在的这个地方,咱们做完以后呢,可以简单的试一试,看看有没有什么问题出现啊,创建表创建表,创建表肯定要创建的,那创建表的话,我们应该再来一个吧,就是在多加一个列足吧,那所以我们那个初始化的时候,同学们看啊来我们这边我们的初始化我想想啊,咱们那个叫做嗯best store啊best store看看就这吧,点一下点它,点完它以后,诶不用点,为什么不用点呢?因为咱们这是不是有一个东西啊,可以传吧,咱们这里是不用的,是点点点,你点点点的话可以再来一个吧。
15:09
是不是这样的,你这样写个叫做什么呢?Cor里是不就可以了,哎,你这么写完以后有多个列足不就加进来了嘛啊所以我们这个呢,这么写完就可以了啊好,写完之后,那咱们现在呢,准备来试一试了啊来在我这里呢,我们准备还是给他啊嗯嗯,我来确认一下,咱们这里呢,给他生产一下,诶回撤啊不断在生产,然后呢,我们的呢,不断的再去采集,采集之后,那我接下来呢,我的消费者呢,就准备去消费了啊,所以在我们这里打开,打开以后呢,我点一下不断的去消费啊消费的时候我的目的很简单,就看一看咱们数据库的那个数据啊,有没有多增加,如只要有那就没问题了啊,那我这里呢,我正好呢,我就在这里啊,它慢点慢点吧,那我先进去,咱们叫做我们的s base,我们的cell。我先给他登进去啊,登进去以后,那么现在呢,我们就可以去观察一下数据有一有零那就对了啊好,那现在呢,我们可以给他来啊,咱们扫描扫描我们的CT,我们的call lock,嗯,好,然后呢,给他来回车啊,回车以后现在没有还没去做呢啊还没等,等待一会儿啊,稍微的等一会儿啊,看看我们的数据。
16:25
嗯。嗯,好像没什么反应了。卡了是吗?撒是吧。看看也没报什么错误呀。
17:00
好像现在没什么反应是吧,那行了,那就不耽误大家时间了,大家先休息会,我们下节课接着讲啊。
我来说两句