00:00
我们相关的no so q的内容哈,那么呢,首先呢,结合我们原来说过那句话,所有天上飞的理念是不都需要落地的实现啊,好,那么反推,如果说end end end,那么cash and red and mango DB这些是不是都是no的思想的典型的产品构建啊,那么反过来讲,同学们看一下,我们虽然说讲的是red,但是我的主题标是叫什么?好,第一章我们是不是要把no q详述一下呀,因为这呢请注意这边硅谷呢,不是一个骗人的学校,很多,如果说你讲的话完全的可以好同学们干嘛呀,Helloard是所有程序的入门,我们呢,现在教大家写写helloard好代码发下去,大家呢,做一下课堂练习,播一节课是不是熬完去了耶,是吧,那娜所以说呢,不能干这种事儿,那么呢,为了给大家知道这个最新和最好的互联网技术。
01:00
所以说我们先暂时不讲no,我们呢,先讲哦,先暂时先不讲,先讲是什么,为什么到最后有落地的register过来,而且说难听点,既然你说了,还有慢看,为什么register又把他给干掉了,OK,好,那么呢,来回到我们这,那么呢,可以看一下互联网时代背景下,为什么会出现了no SQL,说难听点,我相信各位同学在大学如果相关计算机专业的话,应该学的都是关系型数据库MYSQ,或者叫那本书,什么数据概论吧,是吧,封面是不是一本绿色的人民大学出版社出版的,作者叫萨士轩的那个,嗯,是不是啊,哎,基本上当年的话呢,我们在本科教育的时候,也是他这哥们儿撒老师的话呢,这个功底呢,非常的深厚,然后呢,我在北邮的时候,我们那个老师也都提提起了过他他编的这本书就。
02:00
戴伦,在理论上而言呢,是非常专业非常棒的一本书哈,那么呢,但是呢,为什么我们那个年代用着光系数据库MYSQL好端端的横空出世,一个no SQ呢?好,那么呢,这是第一个问题,第二一个来看看我们的老规矩,四步棋是什么,能干嘛,去哪下,怎么玩?这些又能给大家解决什么样的问题呢?好,我们先来看看哈,这对于我当年12年前入行的那个年代,是不是就是单机买SQL或者叫单机Oracle的美好年代啊,也就是说以各位同学目前而言,是不是也就是JSP找action,找service找到找数据库啊,然后的话,你们是不是也就是一个数据库的实例啊啊,OK,那么好,我们来看看那么这边。
03:00
一打开以后,我相信各位同学目前而言,如果把那五层缩减成三层的话,是不是就是应用程序倒层,然后到MYSQL的一个实例啊,好那么呢,我们就说过,也不用说90年代了,把这句话换成是你在座各位,你们现在做的这个项目和网站说访问量都不大呀,是不是啊好那么呢,也就是说什么单个数据库是不是可以完全轻松应付啊哎,你们做的是用MYSQL做的还是用默认口做的一样哈,那么反正就是说起码就是说目前你们的架构是不是就这么一个,是不是好的,那么呢,我们来看看哈,随着弟兄们的功率的增长和真真正正进入到一家靠谱的专业的互联网公司以后,我们都知道数据的总量,是不是总有一天会撑破这个机器啊啊坦白讲,当时我们在北京移动干的时候,像Oracle那些卡的那些数据干干干到个能装进去哈,2.8亿左右的时候。
04:00
差不多已经开始很慢很慢很慢,是需要优化调不动了,那么同理,就以现在买SQL,以你们装的都是5.0以上版本的吧,坦白讲,如果以现在最新的5.7,据说理论上而言是500单表500万的数据也很牛逼,但是呢,基本上真真正正DBA的话,是不敢给他干到500万再去优化300万是不是开始就要预警,就要开始去做这些优化和分割了,那么好哈,这是一个是数据量,第二个是不是数据库的索引一个机器也就放不下了,怎么又没同感?呃,首先你们插入一条记录,这个单表的记录是不是应该在哗哗哗哗哗的增加,但是为了查快的话,我们是不是也需要建索引啊,那么建索引的过程当中是不是也要占磁盘的空间啊?哎,那么这样就是说你如果把索引和数据放在一个机器一块盘的话,是不是这样的话都会增加它的容量啊,好,第三一个访问量。
05:00
你们现在是不是读和写都是同一个库啊,那么真真正正的生产是不是应该主从复制,读写分离等等一大堆的话,各找各的呀,好那么当然你们现在单机版的话呢,不用说是不是就是自己跟自己玩就行了,好随着这些问题的陈受,我们呢,如果满足不了上述,我们是不是要把我们系统进行架构的演变啊,好,那么言下之意,请同学们注意,我们呢,大家可以看看,目前而言,如果你这样的话,你在这个一的话,那是不是相当于说也就是差不多是小1万左右的水平啊,那么你的架构去公司看了以后,是不是每跨一个台阶就涨得差不多一到2000啊,能理解了吗?啊,你就看看你们公司的架构是你因为你们现在比如一个lips,一个CR工程师不就搞定了吗?是不是很可爱的一个,对不对,好那么呢,这边的话呢,到我们第二步注意这。
06:00
有个慢看啊,后面写啥,你们是不是学过约看啊,哎,那么呢,有点和那个相通,但是是不是完全是两个东西啊,后者的功能更强大哈,那么我们来看看第二步,随着前面数据量大,读写都是在同一台机器上,是扛不住了,扛不住以后呢,我们呢,架构呢变成了这样,第一个弟兄们都知道,上一个是不是只有一个MYSQL实力啊,现在我们在MYSQL前面挡了一层什么很好,换句话说,之前是不是DAO层直接就捅到数据库里面了,现在是不是DAO层能理解了吗?也就是说我们的memorymo cash red是不是就在这T数据库挡了一层呢?简单来讲,我们大家都知道,对数据库而言比较受伤害比较大的,是不是就是频繁的查询啊?
07:00
但说白点,如果频繁的查询是一些固定的数据,我们是不是可以把它摘出来放缓存里面,减轻数据库被访问的压力和负担啊,好,那么呢,这儿我们大家可以看到,随着访问量的上升,是不是所有买CQL的价格网站都会出现新的问题啊,那么换句话说,我们在尝试着用缓存技术来缓解,那么呢,当然优化数据库自身是不是也要优化结构和索引啊,这个呢,等我们在买SQL高级的时候呢,我会呢,专门呢,花个三天左右的时间来跟大家说这个优化,那么呢,这边的话呢,好的内容呢,越到后面呢,越多越重哈,那么好,我们大家可以看一下,这个时候我们这按照什么MYSQL是不是叫,还有一个叫什么垂直拆分呢?言下之意,是不是你一个数据库装不住了,你拆拆了以后按照什么,比如说买家和卖家是不是应该分成两个库,那么这样的话呢,我们的这个数据库的。
08:00
实力是不是也就被分担了,好,这是第二步,第三一步主从和读写分离,作为主从复制,读写分离是这样的,兄弟们现在是不是一台机器一个库啊,好,我们的第二步啊,现在呢,我给你呢四台哈,假设假设他们这一台同学就是四个数据库,主括后面的话呢,那么这四个同学呢,就是从库,他做什么动作,他有一条记录了从括迅速的复制,等我们讲那个MYSQL的主存复制的时候,我会和大家详说,这样你就明白,就是主库有一条记录了我为了容灾备份,为了缓存数据,为了保证这个数据的什么完整性,以及是担心出了什么事儿恢复不了的话,我是不是主库有一条,我马上重库也插一条啊,好,那么这个时候这就是什么主从复制,那么什么是读写分离呢?好,同学们,读和写两个操作,实际上而言,是不是我们的增伤感是写查是不是就是读啊?
09:00
好,那么现在干脆就是你们现在是不是自己跟自己嗨,自娱自乐的话,茶和毒都是同一台机器,甚至就是同一个库,那么在生产环境上,比如说像阿里呀,百度啊,美团这样的,那绝对不可能出现这种情况,一定是哎读的这一边就找二楼企的这边是单独到一楼啊好那么这边我们可以看一下我们的架构,是不是大型网站的加一的架构又进行了变化,之前是不是挡了一层缓存啊,连了垂直拆分了以后连了多个数据库实例大家请看,现在就变成master和slaver,是不是我们的什么呀,读写分离了好那么呢,这边我们在red这块是不是也会有这个master slave主同的复制和这些读写分离的介绍啊好那么这儿请大家看什么概念呢?就是对于一个数据库的信息写的操作。
10:00
我们是不是都放在主库了,这儿是什么读的操库,读的操作,我们是不是都从什么从库去读,那么这样的话,承载的数据一分割了以后,给数据库的压力是不是就减轻了,好,这是一个,那么再来第四一个,大家请看分库分表,水平拆分和MYSQ集群,好随着你业务的发展,前面这种什么垂直拆分,这个什么加了ma cash和red的缓存,然后呢,读写分离以后,到了第四步是不是又扛不住了,我们再变,那么这个时候呢,变成什么呀?是不是C集群就给你干出来了,那么呢,同学们呢,可以看一下member看的高速缓存,这你也可以把它当做是什么red哈,然后呢,逐层复制等等,就是我们能使得JA欧了,现在呢跟你说。
11:00
主库的血压力开始出现瓶颈,所以主库血什么概念大家都知道,如果我要查卖家评论是不是更多是毒库啊,那么好写的话,如果那些店家天天来注册,是不是一听天要往里面写呀,我要去查那些以前比如说上个月那些卖家的留言留了固定的话,是不是没有人再去改,但是我想把它查出来啊,好,那么这个时候我们大家一起看,除了MYQL的这些弄了以后我们的数据呢,持续猛增,由于我们的什么假设,我们的数据库是不是使用MYI引擎啊,是这么啊,如果这听不懂的话,没关系,数据库的引擎还没和大家讲,因为你们大家现在用的MYSQL默认是用的是DB这个数据库引擎啊,那就说MYQL呢,是有五六种,甚至是七八种哈,这样的不同的数据库引擎来支撑它的这个运作,常用的一个叫IMYISM,一个叫inno DB,没关系,你现在听不懂,或者。
12:00
要不熟悉你先混个耳熟,等我们下个月的MYSQL高这门课,我会专门去讲这个数据库的引擎,那么这儿言下之意就是说他会使用表锁,知道什么叫表锁、函锁吗?所谓表锁就是什么呢?我把整张表给锁了,就是我在用的时候,你们后着如同什么卫生间,有没有哪位同学在去卫生间不上不锁门吧?那么这样的话,请问我是不是把整个都给锁了?那么行锁就是100万条记录,我用了第67行,我把67行锁了,其他的人是不是可以操作?那么跟我讲锁整张表和锁其中的一行并发性谁更好呢?是不是锁一行的行锁变化性更高啊?为什么有行锁?也就是下周各位同学,你们现在装的什么MYSQL用的引擎就是DB好,那么这边我们呢,对于这样高并发的操作,我们开始逐渐使用windowno DB的数据库引擎来替代传统的MYSM。然后呢,这个时候。
13:00
分区分库分表又成了一个热门技术,那么呢,然后呢,这边什么概念呢?他就说有点类似于这样哈,我们呢,尽量的仅耦合把业务相关的分在一个库,然后呢,把业务其他不相关的,就比如说用户的注册信息,那个身份证号码,你跟我讲,会不会天天谁吃饱撑没事儿每天去换,你用是用好多年啊,那么这些用我们的话来讲,是不是趋于冷的一些冷数据啊,那么这样的话,我们拆分了以后,是不是尽量的就是说频繁的热点的高度活跃的数据,我们是不是跟业务相关性紧密的,是不是放在一些库上,其他这些变化很少的,我们是不是放在另外一些库上面啊好,那么这边呢,数据库的实例就多了,那么再来分表了,以后是一张表哈,假如这个数据一开心整一下9000万。
14:00
请问9000万的数据全部灌在一张表里面慢不慢?不管你怎么优化,肯定慢,那么这个时候大家会想到我们有没有一种算法或者一种导航,后面干脆有三个库来支撑,或者更多的库做一种集群,什么概念呢?分库分表了以后,一到3000的进一号库,3001的到6000的进二号库,6001的到9000的是不是进三号库啊?那么这样的话,假设一张表里面从上到下9000万条数据,我这三刀过去是不是给它分了?那么这样压力是不是就减轻了很多?那么好,大家请看,这就导致呢,我们呢,读写分离加缓存以后,这是不是有MYSQL的数据库集群呢?大家请看1/3的数据是不是在A区,1/3的数据是不是在B区,以此类推。好,那么这到最后第四步,我们呢,也会发现MYSQL也一定会有它的。即便你到。
15:00
内部了,是不是还有他这个啰嗦的事情啊,那么呢,就说明什么,数据库的优化,包括数据的拆分,那比如说一些什么VCR二进制的一些大的数据方不方便装到MYSQL里面,你想记住比如说一些视频,一些图片,大的图片能不能放到MYSQL里面是不可以的哈,这样的话你数据库非常非常慢,因为你们在学Oracle应该学过那个数据库存道是不是有一个叫BB和CB啊哎,大进制和这样的话,如果那种东西你在数据库你写个select新那个电影1.8个G好开心啊是吧?好那么呢,所以说呢,这样的话呢,来了以后,那么借用淘宝网上原来分享出来的一些case的一张图的话呢,来说的话呢,我们呢,可以看到今天我们这个系统是不是应该是变成这种样子啊,大家请看,那么这块是不是我们的客户啊,就我们几个透过企业防火墙Linux的话,然后这大家看这是比较富。
16:00
在均衡的主备呀,这个呢,就是我们的什么N啊n gix啊,俄罗斯人老毛子发明的一个比代替阿哈奇更强大的一个,做这个负载均衡那个反向代理的一个哈,那么也就是说基本上大家干活的时候是不可能直接捅到他们看太的,你一定是先经过恩S啊好完活以后大家看这是不是有一大堆诶应用服务器的集群啊,你要是简单理解,可以把它理解为是什么他们cat的集群,一只猫拖不拖得动啊,一群猫是不是才行啊,好,那么再来,同样这是不是MYSQL的集群啊,那么最终是不是有专门的集群缓存啊,通信服务器,那流媒体是专门发那些VCR的,专门有一种服务器啊,然后再来看电子邮件,包括图片等等,清楚了吗?好,那么呢,也正是随着这些高度的增长和数据的来了以后,我们将会看到,我们呢是随着国外兴起的。
17:00
谷歌Facebook和推的话,首先的话出现了非常复杂的社交网络,那么传统的关系数据库就像一个Excel表格一样,一行一列,难以或者说不足以来支撑这么复杂的关系网络了,比如说我们中国人的我二大就的331的小姐的四哥哥这种,如果你要用数据库去模拟,是不是很郁闷的一件事情啊,老外会做疯的,你知道吧,他那个会做的,会自杀的,会觉得中国人这个亲戚关系好猛啊,是吧?但是呢,如果是一个网状的环状社交,如果我们用no SQ这样来描述的话,就非常的简单,那么好,我们就会发现对于这个数据的兴起和用户操作日的成倍增长,那么传统的关系数据库是不是已经不再适合了,我们大家可以看到给谷歌放出来的话,随着我们的这个什么传统的话,2000年的时候是这样,这还是到六年以后的事情,但是六年以前都已经高了,都受不了了,那么所以说。
18:00
随着我们这个什么在谷歌的云计算和大数据的分析,随着我们推测Facebook上这些数据的暴增,传统的光纤运行数据库迄今难以支撑目前的业务。好那么这儿所以前面呢介绍了一下我们的什么大型网站的一个简单的互联网架构的演变,当然包不包含,呃,包含但不限于哈,这些呢,如果以后有机会我们的讲那个呃,精装版的那个SM高级的时候,那么那个时候呢,还会和同学们加上那些其他的把十啊,FS啊,Activemq啊,那一大堆乱七八糟一堆东西一加,那是不是会让同学们更嗨了?好那么呢,所以说我们先在看,请同学们现在花十秒钟读一下,一定要明白no的意思是什么,好那么呢这呢大家就记着一呢,Not only,再说白了就是什么。
19:00
泛指什么?没关系,好,我们大家都知道,非关系性数据的话,有个经典的公式,是不是叫什么a cid啊,就原子一致啊,独立隔离那个,还有咱们这个又忘了,那么同理no是不是对应的也会提出它另外一套理论呢?来看看传统的关系数据库,那么好这儿呢,请大家注意,黑色的读读就行,但是红色的请大家露一眼,我们说过这类型的数据存储不需要什么。嗯,先把这句话读一下,混个眼熟,你可能会像什么叫固定啊什么的。好来抬头咱们先,他说是不需要固定的,那么言下之意是不是一定会有固定的?好,何为固定呢?同学们做系统的时候是不是做过一张create customer这么一张表,好,假如设哈横竖ID name。
20:00
邮件地址,手机号,性别生日嘟嘟嘟嘟嘟,我就不再念了,好不好,请问这个时候你是不是非常严谨非常规矩的,如果我明天跟你说,你给我扩一个字段,加一个微信号,你是不是out table1写后面有班又出来一个呀,这个我们大家都知道,从左到右像Oracle到200啊,不多了以后是不是会满啊,它从左到右括一张表是不是不是固定无限的,没听说过一千一张表有从左到右有它1万个字段吧,但是呢,对于大数据时代的话,这些特点和这些是不是非常的巨量啊,所以说传统的关系数据库难以再支撑目前的业务和发展,那么呢,我们呢,所以说呢,就导致出呢no s q呢就横空出世,好,我们呢这节课呢就先上到这儿,大家呢先休息一下。
我来说两句