00:00
那我们来进入一个新的内容,我们叫做一个mongo DB啊mongo DB诶我们之前说过了,我们这个整个这个,呃,这个整个一个这个we部的一个架构是吧,前边是我们这个客户端,然后中间是我们这个服务器,后边是还有我们这个数据库啊,诶客户端向服务器发请求,服务器去调用这个去操作这个数据库,数据库把结果返回给服务器,服务器是在咱结果响应给我们这个客户端呀,这么一个结构啊,那本来我们应该讲完note GS,我应该再讲一下我们note GS里边的服务器的框架,但是现在呢,我们先不说这个服务器,我们先说什么呢?先说数据库啊,学员数据库,为什么先说数据库呢?因为我们前边这个前端已经学会了,后边这个数据库,我们再说完了,然后我们再去整什么呀,服务器把我们的客户把把我们这块就给他干嘛呀,就连起来了啊连起来,所以我们最后再说服务器用它来这个,呃,承上启下去连接这个东西,所以。
01:00
我们这先来说什么呢?先来说数据库啊,再来说数据库,我们的mango DB就是我们一个数据库啊,那我们先来不管mango DB,我们先说这个数据库,那数据库呢,我们叫做一个data啊,Database的数据就是database就是数据库是吧?Database简称的就叫DB啊,叫DB,所以你以后看到这个DB了,你要知道说的是数据库啊,说的是数据库,数据库是什么?数据库我们这说了,数据库是按照数据结构来组织存储和管理数据的一个仓库,诶那这个东西数据库到底是干嘛的,到底是干嘛的?那数据库其实顾名思义就是存数据的对吧,就是存数据的,那我们想一下,我们的服务器或者我们的程序在运行过程当中必然会产生一些数据,比如说我们的这个一个网站,那我在运营过程中,那我是不是肯定得有用户对吧,用户是不是。
02:00
注册呀,用户一旦注册,我是不是需要保存这个用户的信息啊,用户的用户名啊,密码啊,地址啊,手机号啊等等一系列我是不是都得存起来呀?诶那再比如淘宝或者京东,我们有商品信息对吧?商品信息我们是不是也得也给存起来呀?诶那问题就来了,我们要把这东西给存哪诶存哪,诶那同学说了,诶老师我这个东西我整一变量存变量里不就完了吗?诶一用户信息我整一变量存存存一个对象里,然后把对象统一放到数组里,我统一管理,这样行不行?行不行也行,理论上讲也可以,但是有什么问题啊,哎,变量,我们的变量是都在程序里啊,程序在哪运行啊,程序都是在我们这个内存中运行的,内存有什么特点?内存的特点就是一旦断电,内存的数据全都没了,懂这意思吧,一旦断电或者程序重启,你的内存里的数据全都没了,那你想,假如说你真的在这个程序的整个变量把这些信息给存进去了,好,你你服务器一旦重启信息干嘛?
03:10
全都没了,懂这意思吧,所以不可能存到这个变量里啊,所以不可能存到变量里,那往哪存那所以我们这东西必须得存到一个什么呀,存到一个断电以后数据不会丢失的地方就是哪呀?哎,我们的磁盘啊,存到我们的磁盘中,那磁盘中其实我们也不是说只能存到数据库里,我可以存到哪儿,诶你说我们是不是学过文件系统了,我可以把数据是不是写到一个文件里,它也可以存呀,行不行啊,没有问题,一点问题都没有,但是有一个小的问题就是什么呀,它不方便,哎我们除了解决一个存的问题,我们还要解决一个什么呀?哎,性能的问题,我不仅能存,首先性能得好,二一个我操作得什么呀,得方便,所以在这儿我们就需要一个专门对我们数据进行持久化的东西啊,持久化,数据的持久化,什么叫持久化,就是什么呀,就是数据不会丢失这么一个位置啊,专门用来对。
04:10
是数据进行持久化这么一个工具,而这个工具就是什么呢?就是我们的数据库啊,就是存数据的啊,就是存数据的数据库就是存储数据的一个仓库,是我们开发中必备的一个东西啊,必备一个东西,好,那这一块我们来说一下我们这个数据库的一个分类,数据库呢,我们主要分成两种,一种我们叫做这个关系型数据库啊,关型数据库,关系型数据库呢,英文叫做一个RDBMS啊RDBMS这叫关系型数据库管理系统,它是一个长品是吧,RDB叫关型数据库,M就是manager,诶S就是这个C是吧?关系型数据库管理系统啊,关系型数据库管理系统,这是我们用的比较主流的一套数据库系统,如果你们上大学学的计算机,一定学的都是关系型数据库,像什么买circlele Oracle DB To Circle server等等等等,这些都叫关系型数据库,那关型数据库有什么特点?
05:10
关型数据库里边全都是表啊,关系型数据库是基于表的,全都是表,所以关型数据库一般你看到找什么模样呢?诶一般都是这样的,随便找他一个啊,你打开里边是什么呀,各种各样的表啊,各种各样的表,一打开咱们打开一个表,我们来看这表是这么样一个呀,这是我们的这个表头,然后这是我们表格里边的什么呀?哎,内容数据懂这意思吧,所以关型数据库全都是表,好然后接着来说还有一种我们叫什么呢?叫非关型数据库啊,非关型数据库在这块我们一般称他们叫那个no口,诶no circle口诶大家看到这个名,很觉得这两名一点也不挨着是吧?诶关系型数据库叫RTBMS,非关系数据库叫做no circle口是吧?这个名好像八竿子打不着这种感觉是吧?哎,那我们来说一下。
06:10
哎,那我们说这个circle什么意思?Circle叫做结构化查询语言,Circle叫结构化查询语言,我们所有的关系型数据库都是使用circleq来操作的,懂我意思吧,所有的关系型数据库都是使用circleq来操作的,它是一个标准化的语言,跟我们的GS,跟我们的Java,跟我们的其他一样,它也是一门语言,懂这意思吧?哎,所以其实如果你学会了,它是一个好的一个东西,如果你学会了circle,你既可以去用my circle也可以用Oracle,也可以用什么呢?也可以用DB two,也可以用circlel circlel等等些数据库都可以去使用,它是一个挺好的东西,但是它会有一个问题,它有点像什么呢?有点像我们WCC提出那个规范,那个东西,它提出来规范是不是由各个厂商去实现呀,各个厂商虽然都实现了SOHO,但是实用实现的方式干嘛呢?它不完全一样,大体上一样,但是不完全一样,所以虽然你学会了SOHO,你可能用。
07:10
Or买circle了,但是你在用Oracle的时候,你还得干嘛呀,再学1.oracle的语法,你在用DB two的时候还得学一点什么呀,DB two的语法,所以它虽然一样,但是不,不完全一样啊,不完全一样好,这是我们说的一个circle,那为什么说no circle呢?No circle呢?No circle很明显就反对circle,懂这意思吧,反对circle no circle它是一个当时最早的时候是一个这个运动,是一个反对circleq标准化的一个运动,为什么要提出这个no circleq,为什么?就是因为有一大批的程序员,其实他不喜欢这种什么呀,这种标准化,为什么不喜欢标准化,我们先说标准化有没有什么好,有标准化的好处是很明显的,对吧?标准化什么好处?你像我们网页标准化什么好处啊,我写完一个网页,不同浏览器是不是都能都能用啊,哎,我学一个东西,我所有的数据库我是不是都能操作呀,这是我们标准化的一个好处,但是标准化还有没有什么不好的地方?
08:10
标准化也没什么不好的地方,诶标准化就限制了我们的创新的能力,好,你定了一个标准,那像思有标准,可能是十几年前至20年前去定的一个标准,诶应该应该怎么着也得20多年前了,对吧?它定义这么一个标准,那也就是说你一旦定义成标准,你再想我大大批量的更新,是不是就不好更新了?好,那你20年前定义的标准,到现在它还是一个先进的东西吗?不一定了,对吧?不一定了,但是已经成为了标准了,我们想改啊,好不好改不好改,就像我们的HTML一样,W3C曾经多少次想推广它的XML,想推广它的XML,它都干嘛就推广不开,为什么?因为阻力太大,人家大家都已经习惯了这个标准,所以就不再去不愿意去更新了吧,所以这种东西就是诶标准化它虽然好,简化了我们的开发,简化了我们的学习成本,但是它却什么呀,限制了我们的一个这个创新的机会。
09:10
啊,限制创新的机会,所以有这么一帮人就提出了一个什么呀,No circle,我要反对这个circle的一个什么呀,标准化,但是人家说,人家不说我反对你是吧,人家不说我反对你,他这个应该是连一块叫做一个这个no so是吧,人家不说反对你叫什么呢?叫做not only circle哎,Not only circle叫什么呀,不仅仅是circle,哎,告诉你不是反对你是吧,我就要提出一个增强版啊,Note only啊好,那非关型数据库,那这个类别就非常多了,什么建职队的数据库啊,各种各样的数据库啊,会非常非常多,它的种类很繁复,那我们这块主要学的是一个文档型数据库,也就是我们的什么呀,Mango DB,所以注意mango DB它属于非关型数据库,但是它是非关型数据库上弄的什么呀,文档数据库啊,它是文档数据库,那这个玩我们的非关型数据库和这个关型数据库它没有什么区别。我们。
10:10
一块儿往下说啊,一个。
我来说两句