00:00
好,我们看一下这个第八章是一个小的案例,这个也说不上是一个项目。整个的比较简单,然后这个里边呢,我们没有涉及到什么B分区啊的设计啊,主要是操作这些API,练习API,但是在练习API的基础上呢,我们加了一些业务啊,这个业务呢,就是微博当中的一个业务。当然是微博的部分业务啊,不是说实现了全部的,你写了一个微博,搭了一个后台是吧,不可能我们写的是什么呢微博。就是近几年好像。比较火嘛,就是就个人来说,玩的应该相对来说越来越少了是吧,我感觉就是明星啊,他们还是比较多一点的,但是大家微博玩的多吗?现在都玩抖音是吧是吧?啊,不玩微博了,卸载了抖音有毒是吧?之前我也玩过一段时间,现在网上都。就是一个接一个的,真的停不下来,那个真停不下来,只能卸载了,只能卸载了,卸载了之后就好了啊,卸载了之后就好了,真的控制不住是吧?然后这个,但是虽然说近些年大家玩微博玩的比较少一点,但是微博大概的一个情况大家还是了解的,对吧?诶是这样的,你看就是你登录登录微博之后,你登录你账号对吧,点击登录之后,你这个页面上是不是有你关注人的。
01:18
近期所发的微博啊,这个东西有啊,然后这上面还有你关注多少人,还有你的粉丝是谁对吧,微博有粉丝吧,就是你被谁关注的对吧,被谁关注的这样一个内容,然后你点到某一个人里边,你还可以查看他。所有的一个微博信息吧,哎,是这些东西啊,这些东西,当然他还有什么评论啊等等等等这些内容啊,啊,它的一个内容比较多,我们做什么需求呢?来看一下我们的需求在这。第一个微博内容的浏览。就类似于两个两种方式的一个流量,第一个呢,就是我们一进就是你点击登录的时候,你要直接给你反馈出来什么。不一样的几个人一个主页,这个主页上是不是有一些人在发发布的微博啊,你关注的那些人对吧?啊,还有一种浏览方式,就是你点了具体的某个人,你要查看这个人相关信息对吧?啊,所有的一个微博内容是这样的,OK。
02:16
那好,还有一个。用户社交体现关注用户,取关用户对吧?啊,这个要有啊,这个要有OK,还有一个就是拉取关,也跟那个微博浏览,这个浏览讲的是就首页,然后这个就是具体的,你要看哪个人的一个微博是这样的一个内容,OK,那我们接下来就要设计这个表啊,需求呢,我们只做那些什么评论啊,这些东西就没有了,什么发图片啊,我们发的内容呢,都是一些文字,因为我们做需求比较简单嘛,不是做一个大的后台。好,然后关于这个表的设计啊,来看一下,首先呢,我们看这一块。关注和取关用户这一块。这个表来,首先一张表在这对吧,然后它有列足有列,然后这边是rookie。
03:06
这边是一个一个的入K这样吧,这个分开对吧,这个是CF,这个是RK,假如说1001这个人,然后这张表就是用户社交体验这张表啊,我们比较好设计,比较好设计怎么来呢?就是关于关注用户这块啊,我用这样。我用一个antenna。然后又一个fans啊,那一看这个名字就知道他干什么用的,对吧?啊,一个是存你自己关注的一个fans呢,是你被谁关注的吧?啊你的粉丝是谁,OK,那这块一般一个微博系统啊,他都有自己的一个什么UID,对吧?啊用户唯一标识ID,那我们就达到他的一个UID。做它的一个rookie啊,作为它的一个rie,因为UID肯定是唯一的嘛,对吧?啊唯一的OK,那接下来我们要考虑的是这个里边怎么存呢。
04:00
首先是关注的和粉丝都会有多个吧,啊都会有多个,那这样那多个怎么存呢。是我下面来一个列,然后往一个列里边值来一个值,那我就拼接,拼接就是说假如这个是A啊,A这个人呢,我可能关注BCD,那就是关于BCD怎么存的问题吧。那我们可以这样,这个里面呢,我们就用一个列一个列,然后这个列里面值怎么写呢。A拼接B拼接C拼接D啊就是这个地方应该是BCD3个拼接起来,这样可以吧。但是你想想看,这种方式不太靠谱吧?就是你添加的时候是也还行,反正拼接一次也无所谓,但是你取关呢,取关是不是从这地方得删掉呀。那你拼接的你是删一个太麻烦了吧,那想想看这块应该怎么来呢。这个一个列下是不是可以存多个列。
05:04
对吧,哎,我们用列来存储它的一个。关注的人啊,关注人那列里边存什么呢?我们也存BCD这些东西啊,BCD这些东西这个是列名,那这个值呢。其实可以这样,我们把这个人发了一个微博,放在这行不行?就是B这个人发布的微博放在这。就是这个表,最后就是这个版本,你就发现必须要用多版本吧,因为一个人发的微博他不止一条嘛,那这个表这东西就设计的很不合理,对吧,那我们这样怎么办呢?哎,这一块呢,只放。我关注的这个人是谁是谁,那Y6呢,你可以不存,你也可以存一个B也可以吧,因为列本身就是h base当中的一个什么数据吧,当时提过对吧,我们用列来保存我们的数据也可以也可以,那我们这个列呢,就是来我关注一个人呢,添加一个列啊,就用他的一个UUID作为它的一个什么。
06:13
列名啊,作为它一个列名,然后值呢,我们存不存都行,值呢你要存的话也存的其实是一样的东西吧,啊存的是一样的东西,OK,那这个打印的,那fans这块其实也一样嘛,啊也是这种存法,也是这种存法,OK,那这个叫我们的一个用户关系表对吧。就是他们俩表示他们俩是粉丝啊,还是被关注的这种情况呢,他们俩是体现这张表体现的用户关系有关系,我们呢刚才考虑了,如果把微博内容放在这块就比较复杂了,这张表比较多,版本这块就特别复杂了啊。第既然我们要解耦,那就是要设计一张什么。微博内容表吧,Content,那想一下这个微博内容表应该怎么来设计?嗯。
07:01
这个地方我们用一个O就够了吧,一个列组就够了,不需要两个了,刚才因为有关注的有粉丝那一个就够了,OK,还是同样A这个人完了吧。啊,那当然这个info底下,其实原本的设计当中呢,肯定有多个列,为什么呢?第一个文字性的content什么。图片视频等等,它都会去连接一个图片服务器,视频服务器,对吧?啊,我们就没有,我们就没有做,只要做这个文字的,哎,Content的,我们就只有这一个列啊,Content这一个列,那这一个列表里边存什么东西呢。肯定是发的微博嘛,这个不是微博内容表对吧?哎,这个里边存的是微博内容,那你想想看,一个人他只发一条微博吗。不止对吧,好,那这块有两种设计方式,第一就是这块我存多个版本,可不可以从多个版本可以吧?啊从多个版本可以的,但是你要注意这块就在后面获取这个值的时候。
08:10
就不好获取了,特别是山的时候。一删全没了,删的时候也不删。就是版本里面删数据之前不是说了不好删吗?不好删OK,那这块怎么做呢。还有另外一种设计思路的那个先退回去了。哎,他撤销不掉了。那我们重新画一下,刚才我们讲的需求呢,是用了什么多个版本来实现的吧,哎,刚才分析了,而且讲到后面的时候去真正用的时候,你也会发现获取数据的时候都不好获取。都帮我获取了这个值,那还有一个输入量呢,来in for还是在这,然后这个UK呢,刚才是拿UIB作为U可对吧,就A,这会我改一下,改什么呢?我用UID拼接上一个时间戳。
09:02
就是说我用一条微博啊,作为一行数据,那一个用户他是不是有你要发多条,是不是对应多行数据啊,因为TS1TS2TS3对吧,哎等等这些内容啊,搁这的。啊,每一次发送的数据啊,我都可以记录下来,记录下来是这样的。这样的这个东西就不至于用多版本了吧。啊,不至于多版本的,那这个里边具体存什么值,就是存你的content,然后是你发布的微博的内容吧,啊,每一个都是,每一个都是只有一个链啊,只有content,就是文字性的描述啊,图片啊,视频啊都没有。视频上都没有,OK,那这是我们的什么?微博内容表啊,微博内容表啊,核心的要掌握一下这个就是这个rookie,我们用的是什么。用户名加就是用户的一个UID加上一个时间戳啊,那每一条微博,每一次发微博都对应一个新的一条数据吧,啊,都有一个新的ROK,是这样的,好,然后还要做什么事呢,就这样。
10:09
就刚才我们所说的那第一次登录进来的那个那个时候啊。是不是会有一个什么。会能看到你所关注的人的一些微博,对吧,那这个怎么做呢?其实可以,你刚才那张两张表够吧。够了吗?想一想,够了吧,能够做这个需求吗?可以对吧,啊那够了,但是呢,我们就不想跟他做,那如果说你那样做的话,那一个人我们一般在第一次页面显示的时候,是不是一个人一般显示三到五条啊,不可能把它所有的数据全部拿到了,所以说我们微博内容表跟那个用户关系表,这两个表结合的时候是看我某一个。关注的人所有微博的,那我们专门给这个进来的,就是一进这个页面的时候,专门设计一张表,那这个表什么样的,我看一下,对,我们就专门把最近的什么三条五条,把它专门放在一个表里边,然后你放一条数据的时候都要做更新,是这个意思啊来看一下,那这张表呢,我们这样设计的。
11:14
有一个A错列族,然后这个地方是。还是UID吧,UID,因为你一进来是看到你什么。关注的人嘛,就列表的什么,所有的那些人,假如说三条微博,你只想就默认的看三条,看三条这个意思好,那A放在这,那后面这个值应该怎么求呢。首先想一下,我关注的人是不是会有多个?对吧,那我就用一列存一个。也就是说这后面啊,跟着是BCDE,假如说我关注了这四个人,我里面就是这四个列吧,这四个列,那这个里边值存什么。
12:09
啊,这个值存什么呢?最新发布的微博是哪个人,假如说这一列是哪个人发的微博是B这个人最近发布的,假如说我们就是三条啊,就三条微博,那三条微博是吧,你这里边设置三个版本就行了吧。对吧,三个版本好,那我们要考虑的是你要把那个。实际的微博内容放在这儿呢,还是放什么东西?这个地方放什么?是不是我放B加TS1TS2TS3这个东西就行了呀,你就没有没有必要把实际内容放在这了,实际内容放在这,你是不是两张表里的数据重复了呀,冗余了对吧?哎,我们真要去获取的时候读一下,拿着这个UID加上时间桌就另一张表咱读一下就行了吧。
13:01
能不能理解,就这就不放实际数据了,当然你说你要把实际数据放这也没人拦得住你是吧,那你的数据在HP当中呢,就存的冗余了呗,而且是这种内容对吧?一条微博的内容在这冗余那就不太合适了,不太合适了。太容易了,所以说这个地方呢,我们放的是关于内容表的一个rookie rookie。啊是这样的,OK,那看一下最终的一个表的一个情况下,提前其实给大家都准备好对吧。三张表,三张表在这,然后这个是我们第一个分析的什么。用户关系表了,哎,我们用一个人的UID来作为他的一个r key,然后后面呢跟fans呢,分别是两个列图,然后两个列图向乘的是什么呢?UID。是它这个里边是他关注的人的UID对吧,然后这个地方是它是什么。
14:01
是关注他的人的ID吧,关注他的OK,然后这边还有一个。微博内容表,微博内容表啊,之前分析的那info列图这个地方是类似于什么图片啊视频啊,但是我们没做对吧,我们只有一个列,只有一个列content,好,然后我们那个uie设计的是UID加TS。啊,本来说你UID放在这,你把放在这形成多版本也可以了,也可以,但是你这个版本它设置表的时候就没法定了,因为你每个人发布的微博条数你就规律一样嘛。不太一样吧,啊这块你就是最初设计表的时候,这个版本不好定,不好定,你说有的人发1000条1万条,这个版本设一不太合适吧,对吧,所以说呢,我们用这种你一个UID加一个TS。那你发布的微博是?竖向扩展了对吧?啊,不是说在这一横里边,在这一行里边去持续的添加数据,还用这种方式,那还有一个这张表是不是我们为了干什么。
15:06
你这个人啊,刚进来的时候,他反馈的一些内容啊,啊,自动获取这张表里的内容,啊,自动获取这张表里面内容,OK,然后呢,我们同样的是,那这张表肯定是。这个UID对应的是不是这这来的。把它放到这了对吧,好,然后这个地方哪来的,是不是关于这张表呢,在这有哪几方数据到这来啊,啊至于你是五十三都无所谓,你去版本设置对吧,就看你公司的一个需求到底时效进来之后呈现五条呈现三条啊是这样。现在关于这三张表还有什么不理解的吗?没有,我们就开写代码了。第一张微博内容表吧。对一行一条,那没问题。你发错就成一个没问题,没他提供多版本,没必要,你非得用多版本吗?对吧,而且他说可以多个列,那这后面我们不还有什么图片视频等等了,还有这些内容,还有这些内容。
16:18
可以的,一行你一个UID对应就是里边就一个列,然后对应一条数据,这没有问题,这个没有问题的,只不过说如果说真的你往这边去添加,而且是无限增加的,那就有问题了。啊,这个东西就就就有问题了啊,这个是有问题了,那你一行乘一个是没有问题的。还有什么其他的问题吗?就关于这三张表。因为这三张表稍微大家要记一下,你写代码当中,当然我写每个需求的时候,再回来就是分析那个需求的时候,还还会看这个表,但尽量大家自己还是能把这个表能记住更好。三张表对吧?表结构,表结构是什么样子的,稍微记一下,你这样可以记,这是A是吧,然后这个是B,这个是C,然后这个地方就是A,这个地方就是BC,然后其实这个地方是B发布的微博内容,对吧?然后这个B叫TS1,然后这个BTS1最终会放在这吧,这个地方放了一个BTS1。
17:14
是这样的吧,哎,整个的过程是这样的。
我来说两句