00:00
我们现在的时间是晚上的八点半,那么咱们就开始今天晚上的学习,那么今天晚上呢,咱们来给大家介绍一下mango DB, 首先大家需要知道这个mango DB呢,它是一个什么呢?它是一个我们的low Co数据库,并且呢,我们可以把这个什么呢low CQ数据库划归到我们的大数据体系当中,因此呢,大家后续如果要系统的去学习有关大数据的知识,那么需要去学习一下我们Lucy com, 也就是呢,需要去学习一下我们的mango dbam, 当然了这里面呢,还会包含一些其他的low Co数据库,那大家之前哈听过赵老师的课程,那应该都知道,赵老师呢,在上课的这个过程当中,会给大家记录一个课堂笔记,通过记录课堂笔记的这种。
01:00
方式,我们会把课程里面比较重要的知识给大家记录下来,因此呢,今天晚上咱们也按照同样的这种方式来给大家记录一个课堂笔记,重点给大家介绍一下三个方面的知识。那么通过刚刚的介绍,咱们知道了mango debam它属于一款nocyko数据库,因此呢,咱们首先就需要对nocyko的一些基本知识要有一个初步了解,到底什么是我们的Lucy com, 它跟我们的关系型数据。Com又有哪些区别,那么有了基本知识以后呢,通过第二个小节的DEMO眼生,让大家能够对我们的mango debam能够有一个感谢,是如何在我们的mango DB里面执行我们的真删改查,这能操作,当然我们在mango DB里面也能够通过执行我们的Mar。
02:00
腾讯来完成我们啊这个聚合操作,对,好,顺便提一下,尽管我们在什么目前的大数据体系当中啊,很少会在直接使用market PDU去开发我们的程序,但是呢,Market PDU它的思想和原理非常的重要,那么这种思想和原理也被借鉴到了大数据计算引擎10SPARK com还有flink当中,因此呢,大家后续如果要系统的去学习有关大数据的知识,那么咱们第一步呢,还是需要好好的去学习一下。到底什么是我们的map map就是当然我们在mango DB里面,它也能够通过开发我们的JS程序,也能够支持我们的map,就是咱们通过一个例子呢,来给大家进行相关的讲解,好,因此呢,介绍到这个地方的时候,赵老师呢,就带着大家去梳理一下我们在今天晚上将会学习到哪些知识,好,咱们现在呢,咱们就按照这样一个顺序来给大家进行相关的介绍。首先咱们看一下第一个问题哈,No CQ数据库的基础知识,首先张老师呢,就需要问各位直播间同学一个问题,那么到底什么是我们的lowc扣呢?大家能不能够把他的最基本的概念发送到咱们的公屏之上,那么如果说大家知道呢?
03:37
就请积极回答一下赵老师的问题,如果说大家并不是很清楚,就请在公屏之上回复一个0,或者给赵老师呢点一个赞啊,咱们接着往下来给大家进行相关的介绍,这些基本概念看似非常简单,但是非常的重要啊。首先咱们去解释一下到底什么叫我们的OC口呢么?大家需要首先知道它的什么全称是什么?那么它的全称是我们的么?Nor term only cco, 如果我们直接从字面上把它给翻译过来的话,它就是什么?不仅仅是我们的CQ,当这个呢,是从字面上去理解到底什么叫做我们的OCQ,但是请大家注意一下low Co的什么真正含义是?
04:31
它指什么呢?所有的非关系型数据库,这一句话很重要呢,给大家接下来lowcyo的真正含义是不?它泛指什么呢?所有的非关系型数据库,因此我们在讨论no c code之前,首先就需要去讨论一下另外的一个问题,到底什么是我们的关系型数据库,那么你把关系型数据库搞明白以后,反过来去理解什么叫非关系型数据库呢?自然而然的就明白,那比如说你的什么呢?Or你的什么my com, 包括PG,还有各种各种什么国产数据库,这些都是属于咱们传统的这个关系型的数据库,因此呢,赵老师呢,就反过来问大家一个问题,你能够告诉一下赵老师吗?到底什么叫做关系型?
05:31
数据库吗?你把关系型数据库的基本的概念搞明白以后,反过来去理解什么叫no西code,自然而然的就明白。好,我们来给大家解释一下什么叫做关系型数据库啊,那关系型数据库它最基本的一个定义是什么呢?它是基于我们的什么关系模型?好,咱们基于什么关系模型,我们所提出来的一种数据库就叫做关系型数据库,那接着咱们再往下面去讨论,什么又叫关系模型呢?关系模型的本质就是我们使用一张二维表的什么行和列的这种方式来存储数据的模型,那么就叫做关系模型,那换句话去说。
06:24
在你的Oracle里面,MYSQL里面等等等等,那么最终存储数据的模型都是这种二维表的行和列,并且呢,我们在关系型的数据库里面呢,当我们去设计数据库的表结构的时候,对,那么咱们需要去干嘛呢?啊,写下咱们需要去遵循我们的范式,那么什么叫遵循范式呢?比如说当你在关系型数据库当中拿到一个需求以后,首先根据我们的需求设计出我们的err模型,也就是实体关系模型,那么有了一二模型以后,再抽象城式关系模型,然后呢,再根据我们的范式,比如说我们的第一范是我们的第二范式,我们的第三范是最终设计出关系型数据库的表结构。
07:24
这个呢,是我们在关系型数据库当中他的基本的一个做法,那么关于这个部分呢,赵老师呢,会放到后续再给大家进行详细的介绍,今天晚上呢,关于关系型数据库这个部分不做过多的什么深入,重点讨论一下我们的OC com, 好当你把整个的关系型数据库的基本的知识。掌握以后,反过来去理解什么叫low c com, 什么叫非关系型数据库呢?自然而然的就明白,那么换句话去说,在我们的log c口当中,它存储数据的模型,那么就不是这种二维表的行和列,并且呢,我们在low西扣当中,它也不需要去干嘛呢?遵循范式,那反过来就是说它是什么呢?他是反方式的,既然他是反方式呢,那他不遵循范式的要求,那么他就有可能会带来哪些优点,带来哪些缺点呢?对啊,先讨论另外一个方面啊,如果说你在关系型数据库当中遵循范式以后,那它的优点是什么呢?那它的缺点又是什么呢?把这些问题呢搞明白以后呢,反过来去理解什么叫反范。
08:50
是反方思以后,它的优点和缺点又有哪一些,自然而然的就能明白,对那讨论一下,那么你在关系型数据库当中遵循范式以后,那么各位直播间的同学,你能不能够告诉一下赵老师,他有什么优点?
09:11
他又有什么样的缺点?那么如果说大家都知道呢,就请积极回答一下赵老师的问题,如果说大家不了解,就请在公屏之上回复一个0,或者赵老师呢点一个赞,让赵老师呢能够了解到,大家都还能够跟得上赵老师的节奏。好,你遵循范思以后,他所带来的优点就是他能够去减少数据什么冗余,数据不会多存,表与表之间通过表的外键那么进行关联,那么正因为它有这样的一个优点,同时也就带来了一个缺点,缺点就是它会干嘛呢?它会影响我们什么查询的效率,为什么说它会影响查询效率呢?刚刚提到我们把数据存储在多张表里面,遵循范式,表与表之间。
10:11
通过表的外键,那么进行关联,那么这样子呢,你的查询数据的时候,那就需要执行我们的多表查询,而多表查询首先会产生我们的笛抗集,那么我们需要使用连接条件,避免使用笛抗全集,很明显这样的一个过程它是会降低查询的性能,那么反过来去讲,那么你在Lucy里面它不遵循范式,那它是反方式的呢?它又有哪些优点,它又有哪些缺点呢?它的优点和缺点正好跟关系型数据库正好是截然相反的,那么你反方式以后呢,它所带来的什么?这个缺点就是它首先会造成什么数据冗云数据它会多存,但是呢,它的优点就是它。
11:11
它能够去干嘛呢?提高我们查询的效率,因此我们讲整个的Lucy comn, 它的基本的出发点跟我们在关系型数据库当中是截然相反的。还有呢,这些基本知识以后,咱们还需要对一些比较常见的OC code数据库要有一个基本的了解,好我们单独写的笔记写在咱们的下方的,好,咱们一些比较什么常见的low CL数据库都有哪些呢?好,各位同学,你能够把一些比较常见的lucyo数据库,把他们的名字发送到咱们的公屏之上吗?看一下各位直播间的同学。
12:00
是不是对我们的lowcy com有一个基本的了解,好,咱们写下一些比较常见的lowcy com, 那这里呢,首先呢,第一个就是我们的把radiism radi呢,它是一个非常常见的OC库,数据库,它有哪些特点呢?对,首先大家需要知道它是基于内层的什么,基于内层的建值,我们的什么数据库,我的首先它的第一层含义,它是基于内存的方式,那么整个read里面,它的所有数据都是存储在内存当中,既然存储在内存当中,读写速度那么就会非常的快,这个呢是基于内存的它的一个优点,正因为它有这样一个优点,同时也就带来了一个缺点,缺点就是那么内存它是个什么它。
13:00
那是一个不安全的地方,你把数据存储在内存当中,如果说内存突然掉电,突然崩溃了以后,那数据将会丢失。好既然我们讲redion它是一个数据库,问一下各位直播间同学,你能够告诉一下赵老师吗?我们在reddis里面,他通过什么样的方式来保证数据的安全,如果说大家知道呢,就把这种机制或者说这种方式发送到咱们的公屏之上,如果说大家并不是很清楚呢,就请给赵老师呢回复个零啊,那他通过什么机制来保证内存数据的安全?好,咱们接着往下面来给大家进行相关的介绍,对,那我们在RA里面它通过什么?
14:00
数据的什么持久化的这种方式,通过持久化方式能够保证内存数据的安全,如果说大家对约有一定了解,应该知道我们在约里面。它支持两种持久化方式,一种叫RDBM,一种叫我们的a off, 那关于reddison更加深入的知ISM,赵老师呢,也会在后续直播课里面单独的来给大家进行相关的介绍,并且呢,Redism它的第二层含义是什么?它是一个兼值的一个key value类型的数据库,通过K来去操作我们的value,好,这个呢是我们大家需要了解的第一款比较常见的lowcy com, 那接着呢,很咱们的第二款比较常见的low com, 那就是我们的么h base啊,首先大家需要知道h base它属于什么,属于我们的哈杜op生态圈体系,因此呢,我们可以把整个的lowcy com划归到我们的大数据体。
15:16
题当中,反过来去说,我们在学习大数据的时候,需要去学习我们的lowc库数据库,比如说你在哈多里面,它就包含了我们的HBA,那到底什么是我们的h base呢?HBA它是什么?基于HDFS之上的一个什么列式存储的一个no CQ数据库,那这个域面呢?它就有两层含义,首先它的第一层含义是h base什它是什么呢?基于HDFS之上。好问一下各位直播间同学,知不知道什么是HDFSM?如果说大家知道了,你能够把HDS的中文名字发送到咱们的公屏之上吗?如果说大家并不是很清楚。
16:13
就请在我们的公屏之上回复一个0,或者给赵老师呢点一个赞,到底什么是HDFS啊?HDFS它是属于什么?哈多普当中的分布式文件系统,你把它看成是一个网盘就可以,它能够以文件的方式解决海量离线数据的存储问题,因此呢,它都用于我们的构建离线数仓的。这种情况之下,既然你的h base基于HDFS之上,那你在HP里面创建一张表,表中的数据最终都将以目录和文件的形式保存在HDFS当中,嗯。
17:06
因此呢,有了这个基本知识以后,后续我们在安装部署的时候,首先就需要先安装部署好我们的HMDFSM,当你把HDFSM安装部署好以后,再来安装部署好我们的h basem, 好尽量是h base什它的第一层含义,那么它的第二层含义什它是一个什么呢?列存储数据库好问一下各位直播间同学,你能够告诉一下赵老师吗?历史存储跟行式存储他们各自有什么样的特点,我们可以把它用在什么样的场景之下,那么咱们需要对每种类型的数据库,它的应用场景要有一个基本的了解,这样子呢,可以为我们以后的技术选型做一个参考,首先咱们讨论一下我们的行式存储啊,那么咱们讲。
18:06
传统的这个关系型的数据库,比如说你的Oracle也好,你的MYSQL也好,那么你的PG也好,这种关系型数据库呢,他们都是什么方式来读写数据呢?都是按照咱们的行式存储方式,那么什么叫行式存储呢?简单来说就是在你的这个关系型数据库里面,它读写数据,它以这个行为单位,我读写完第一行以后,在读写第二行,那么在读写我们的第三行,那么这个地方就需要问大家一个问题,你能够告诉一下赵老师吗?这种行式存储的关系型的数据库,它主要适合执行哪些操作,你能够把它适合执行的操作。
19:00
发送到咱们的公屏之上吗?这些都是我们后续你在进行数据库选型的时候,那需要考虑的内容,好咱们讲一下关系型数据库,它是行是存储的,它主要适合执行DML的什么事误操作,DML呢是我们的数据操作语言,它里面呢包含了我们的么?插入更新和我们的删除操作,因此总结一下传统的这个关系型的数据库呢,主要的应用场景就是我们的OLTP的这个应用场景,好讨论完了咱们的行式存储以后,那么单独讨论一下我们的什么历史存储,历史存储的数据库有很多,那么他们主要按照列为单位来读写数据,那么这个历史存储的数据库呢,它主要适合。
20:01
执行我们的吧查询操作,那比如说你在这个什么,你在数据仓库里面,那我们的数据仓库里面,我们就需要去执行大量的什么查询语句,如果是这种应用场景呢,推荐使用咱们的历史存储,并且呢,我们的数据仓库的这个应用场景,也可以把它叫做我们的吧o lap的应用场景,好这个地方就涉及到两个名词,一个是我们刚刚提到过的什么OLATP,一个是我们的o lap, 好问一下各位直播间同学,你能够把这两个名词它的全称发送到我们的公屏之上吗?如果说你是什么,你要做OLTP的这种种场景,推荐使用传统的关系型数据库,如果说你要去。
21:01
实现我们的olap呢,推荐使用我们的历史存储,这些知识都是我们后续你在学习关系型数据库,包括学型大数据的时候,那么都需要掌握的内容,好这个呢,是我们给大家介绍的第二款比较常见的low c com, 接着呢介绍咱们的第三款比较常见的low c口数据库呢,那就是咱们今天晚上要么给大家介绍什么我们的这个mango dbr mango DB注意像它是所有的low CQ当中最像关系型数据库的一款NOC库数据库,那这句话呢,我再重复一遍,Mango d, 它是所有的NOC库当中功能最强大,最像,嗯。最像关系型数据库的一款NOC口数据库,那么讲整个mango DB里面,它最主要的特点是什么呢?它是基于文档的一款no cql数据库,好,这个地方赵老师呢,可能就需要问大家一下,你能够不能够告诉一下赵老师,既然mango DB它是一款基于文档的no CQ数据库,那这个地方的文档啊,这个地方的文档它指的是什么文档?你能够把这个文档类型发送到咱们的公屏之上吗?如果说大家都知道呢,就请积极回答一下赵老师的问题,如果说大家并不是很清楚呢,就请在公屏之上回复一个0,或者给赵老师呢点一个赞,好,咱们接着往下来给大家进行相关的介绍,好,这个好,好,谢谢哈。
22:57
谢谢,谢谢好,这个地方的文档它指的是我们的什么呢?是我们的B式文档,那解释一下什么叫B式文档?BS文档它是接S文档的二进制形式,S文档大家可能都了解对不对?就像B省文档,它是接省文档的二进制的形式,那么我们在mango DB里面就能够直接保存一个二进制类型的数据,那那么稍后呢,通过DEMO演让大家能够对我们的mango d能够有一个感性的认识,好,既然介绍到这地方呢,首先咱们今天晚上第一个部分有关no CQ数据库的一些基本知识就给大家介绍到这地方,好问一下各位直播间同学。
23:49
嗯,关于这个部分大家是不是都听明白了,如果说这个部分大家都听明白了呢,就请在公屏之上,请给赵老师呢回复一个1啊,咱们接着往下来给大家进行相关的介绍,好,有了这些介绍,还有了这些基本知识以后,我们进入到第二个小节的学习,我们通过这个什么呢?DEMO的演示,让大家能够对我们的monggo DEB能够有一个感性的认识,那么怎么进行DEMO演示之前,首先大家需要去知道mango DB它的一个什么表,它的一个什么数据模型,那我们在怎么讲mango DB的一个什么数据模型,大家首先需要去了解一下的,并且我们在mango DB里面,当你去设进它的表结构的时候,它有两种。
24:49
设计的方式,那第一种设计方式是我们的引用设计方式呢?那引用设计这种方式,它就相当于我们在传统的关系型数据库当中,通过外键进行表和表的关联,对吧?引用的这种方式就跟关系型数据库外键的思想是完全一样的。好,除了这种方式呢,咱们能够去设进mango d一倍的表结构,设计它的数据模型以外,它还有另外的一种设计的方式,它可以说么?还能够使用咱们呢嵌套的方式也能够去设计mango DB的表结构,因为整个mango DB它是一款基于bson或者说接省文档的什么数据库,它能够进行么?进行文档数据的什么嵌套,因此整个mongo DB里面,它都能够通过使用这两种。
25:49
方式来去设计它的表结构,对好这个地这个地方咱们通过一个设定来看一下如何通过使用咱们嵌套的这种方式来去设计mango DB的一张表,对咱们采用嵌套的种方式来设计一张表,来保存什么呢?来确定保存咱们呢电影的数据,那你要保存一部电影的数据,一部电影它有哪些数据需要保存下来呢?咱们来给大家举一个简单的一个例子呢,那么那么每次讲到这个地方的时候。
26:28
我都会到我们的嘛,到我们的网上去找一部电影啊,这比如什们豆瓣电影上找一部电影,看一下作为一部电影来说,它有哪些数据需要把它给保存下来,这他们随便找一部电影把这比如比如说咱们就找这部什么天才游戏把这他这个是一部电影,现在我就需要在数据库里面,我就需要在mango DB里面设计一张表,来保存这一部电影的什么,所有的信息,首先看一下这个部分是什么电影本身的信息,包括什么电影的名字,导演类型,地区、语言等等,那么我们可以把它作为什么mango d病表的某个字段,把这些数据把它保存下来的,那别人看完这部电影以后,针对这部电影呢,可能会写一个什么,写一个我们的。
27:28
影评评价这部电影呢,拍的怎么样?那当然一部电影呢,它可能不止一条影评,因此呢,我们可以采用一种嵌套方式,嵌套一个什么宿主来表示一部电影的什么所有的影评,那有了这种基本的思想以后呢,那么就在mango DB里面把它表达去给他,把去给他创建出来啊,就我这张话,我就把它给创建出的,好吧,写一条数据来保存电影啊,啊怎么整个来采用什么接上的方式来去写,首先大家需要知道,我们在mango DB里面每一条数据,它都叫做一条文档,文档它会有一个ID号,它相当于是表的组件,如果你在插入文档的时候没有指定文档的ID号,那它会自动生成一个ID号,通过这个ID号它能够保证数据。
28:28
具在分布式环境下的唯一性,对好,咱们写一下文档数据保存一部电影信息好这个ID号呢,通过什么方式去表示呢?通过下划线ID去表示,它就相当于是什么呢?我们关系型数据库当中的组件,对好给每部地呢编上一个编号比叫001吧,对好写上咱们的第二个字段D呢,我们的什么这个名称,它是什么名称,那么这个呢,是整个mango DB表结构当中的字段好电影名称刚刚大家看到的什么我们的这什么天的天才的游戏的好这部电影呢?还有哪些字段呢?还有他的什么,比如他的导演还的导演是谁的,这些都是产什么这种阶层格式拿去表示的那一部电影呢,他别人看完以后,他会针对这部电影呢发表一个影评,当然一部。
29:28
电影呢,它可能会有什么若干条影评,因此我们给通过使用个数组来进行我们的嵌套,那么采用嵌套的这种方式呢,来去设计mango deep的比较带好写一下这部电影它有哪些影评呢?一个影评它一部电影呢,影评不止不不止不止一条,因此咱们这个地方采用一个我们的就什么数组来表示这部电影的什么所有的影评的每个数组元素代表一条影评的,他们写上数组的这种元素的表示方式呢,好比如说这部电影呢,它有什么它两条影评的数据的啊写像影面的数据包括,那么影评的内容是什么,内容是什么样的内容的内容包括了啊写错的内容是什么样的内容包括了你的作者是谁的,当通过使用这样的一种设计。
30:28
的思想,我就采用了什么采了这种嵌套的方式呢,拿去设计了一张mango DB的表,来保存一部分电影的子吧相关的信息,这个呢,整个我们在mango DB里面,它非常特殊的一种方式,如何去设计它的表结构,当然你在mango DB里面如果使用引用方式,引用方式它跟我们传统的关系型数据库的外键,那就是完全一样的,还有了这些基本的知识以后呢,还有一点咱们需要知道一下整个mango DB它的数据模型,它跟我们的关系型数据库它的一个什么对应关系,这个什么关系,他单独写咱们的第二点呢,他先把这基本模型大家需要去了解一下,就我们的mango DB它的什么数据模型啊,写一下写错了的mango DB数据模型。
31:28
啊,它的什么数据模型与我们的关系型数据库,它这个什么对应关系,是什么关系的,好比如说这一边是我们的嘛,我们的这个的这个mango dbam这一边是我们的关系型数据库,比如or come或者是MYSQL都可以。对,首先你在关系型数据库里面呢,你就首先需要去创建一个我们什么数据库,对,比如说你通过使用咱们的这个cur data创建一个什么数据库,当然我们在mango DB里面呢,它也存在我们的数据库的什么概念,但是注意一下,Mango DB当中,它的数据库不需要事先创建,直接使用就可以,这一点它是跟传统的关系型数据库很不一样的一个一个地方,我再重复一遍mango。
32:28
BB里面它也有数据库的概念,但是它的数据库并不需要事先创建,直接使用就可以,好数据库有了以后,然后呢,你这样关系型数据库里面,你能够去创建一张一张表,那我们在mango DB里面也存在表,但是呢,Mango DB它的表不叫表,它叫集合,你在mango DB里面创建一个集合,就相当于创建一张表,对,并且mango DB的表,Mango DB的集它跟数据库一样,也不需要事先创建,直接使用就可以,它有的数据库,有的表,有的集合,那么表里面是不是有一条条一行一行什么数据,或者叫做我们记录啊,在这些概念对应到慢。
33:28
从GODB里面,它就叫做一条条什么文档,Mango DB文档,它就相当于我们在关系型数据库当中的一行记录,还有了这些基本知识以后。现在呢,咱们就切换到咱们的实验环境当中去,我们去创建一个mango DB的数据库,在数据库下创建一个集合,再往里面呢,插入相应的文档的数据,好切换到咱们的实验环境当中来,在如果在默认的配置之下,Mango DB呢,监听我们的27017端口,在直接执行B影下面的什么我们的mango这条mango西列连接上来以后呢,首先执行一个西DBS,通过这一条语句你就能够看到了,你在当前mango din里面包含有哪些数据库,哪些数据库的好,这个地方我们一共呢,包含有什么三个数据库,分别是AIN lockcom和SC,那么咱们能不能够创建一个新的数据库呢?刚刚说到过你在mango地。
34:43
B里面数据库不需要事先创建,直接使用它就可以。比如说Use下,我们DEMO切换到DEMO数据库下,通过这样的一种方式,等同于我就创建了一个新的数据库,名字叫做我们的DEMO,并且我切换到了什么DEMO的数据库下,那我能不能够在这个数据库下创建一个集合来去保存数据呢?集合就相当于是一张表,它也不需要事先创建,直接往里面插入文档数据可就可以。比如说我想去创建一个集合来保存学生的相关的数据,当然也可以啊。DB代表什么?前面的DB代表当前数据库,当前我们是在DEMO数据库下,我在DEMO数据库下我创建一张学生DM。
35:43
来保存数据表集合也不需要事先创建,直接使用它就可以。通过使用in的语境,我们直接往里面呢插入一条文档数据,那么当你插入文档数据的时候,如果没有给这条文档数据。
36:02
指定ID号,那么它会自动生成一个ID号,当然你也能够手动指定这一条文档数据的ID号是多少,就能写下,这个里面需要写成Json格式,比如咱们这样写一下,能写上它的什么,这条文档数据的什么名字,是什么名字呢?是我们吧,这个to to年龄比如说是我们的21岁,好通过使用什么这样的一种发送,我就创建了一个集合,并且呢,在该个该集合里面创建了一条文档数据与保存学生的相关信息,当然我们在mango DB里面增删改查操作呢,都能够像关系型数据库那样去执行的,好们首先去执行一个先我们什么connect,看一下你在当前数据库里面你创建好了哪些集合啊,当前数据库里面有一个集合,就是我们刚。
37:02
刚创建好的是student次,那能不能够查询一下该基因合当中的数据呢?当然可以啊,DB代表当前数据库,我在当前的数据库里面下面有个是student表啊,执行什么简单什么查询句,那么在查询的时候,如果不写上查询条件,它将查询表中的所有文档通过打印输出的信息咱们就能看到呢。由于我们刚刚在插入这条文档数据的时候,并没有给这条文档数据指定ID号,它就会自动指定分配个object ID, 通过这个什么object的ID,它就能够保证在分布式环境之下文档数据的什么就唯一性,因此通过这个地方什么非常简单的一个什么DEMO的衍生,让大家能够。
38:02
够对我们的mango d game能够有一个感性的认识,好,一直讲到这个地方,问一下各位直播间同学,关于张老师们刚刚讲的这什么,刚刚演示的这个DEMO大家是不是都看明白了,如果说这个DEMO的演示大家都看明白了呢?就请在我们的公屏之上。回复一个1,或者给赵老师呢,点一个赞啊,咱们接着往下来给大家进行相关的讲解,好,我们接着讲咱们的吧,第三个部分,那我们在mango DB里面也支持开发我们的map produce程序,既然讲到了map producedu, 那就需要讲一下大数据的什么相关的知识,在尽管目前我们在大数据体系当中很少会在直接,很少会在直接开发我们的map productiondu, 更多的是开发我们的18g,还有我们的弗Li克,但是呢,My producing它的思想和原理非常非常的重要,它采用这种什么先拆分再合并的方式,能够去解决大数据的离线计算的问题,这句话呢,很重要,给大家尽在。
39:26
课堂笔记上在他写一下思想和原呢,My produce什么,它的思想是什么,采用什么,它采用采用什么先拆分啊,先拆分再什么再合并,通过先拆分再合并的的这种思想,它能够去解决解决大数据的什么离线计算问题,因此呢,它主要用用构建我们的离线数仓,那么咱们把这个什么拆分的过程叫map,我们把合并过程叫做我们的reduce,那如果说你在哈多里面,你就需要去开发两个Java程序,一个Java程序因为实现map,另外一个Java程序因为实现我们的,也就是当然你在mango DB里面呢,你就需要开发两个JS函数,一个JS函数,Javascript.
40:26
特啊,一个函数实现我们的map,它来完成我们的拆分的动作,在开发我们第二个JS函数。来实现我们的,也就是它主要于为什么用于大数据的什么离线计算的场景,并且我们的哈多普里面刚刚说到它采用什么Java语言实现了我们的map producedu, 因此呢,我们在演示mango DB的map producedu之前,先到我们的哈杜里面来简单的去执行一个map布Du什来处理我们的单词技术,啊好,我们首先到我们的哈多普中来衍生我们的吧,哈杜普中来衍生我们的map producedu是注意一下map producedu本身它只是一个什么,它只是一个计算模型,它与编程语言无关。这句话也给大家计战课堂比赛Mar布dus本身它只是什么?只是啊,它是一个什么,它是一个计算模型,它与什么编程语言无关,那你在你在哈多普里面。
41:36
你使用了什么Java实现map producedu, 而我们在mango DB里面呢,采用了jas,采用了我们的Java script实现了我们的,那就是啊,首先咱们到什么我们的哈杜普里面。演示一个什么mapdu水系,看看是不是执行的是两步,先执行我们的map,再执行我们,也就是他们演示司令呢,是我们的什么单词技数的,什么单词技术的word count训,那我需要把文本数,文本文件当中每个单词它所出现的频率统计出来,先执行我们的map,再执行我们的,也就是统计后的结果呢,写回到哈多么HDFS当中,当你把哈多安装好以后,它提供了这样的话,Example程序,示例程序,让我们就执行我们的map,就是认为他简单演示一下哈多当中的,就是通过他打印输出的日志,你就能看到呢,它先执行的是我们的map,再执行我们的,也就是它切换到咱们实业环境当。
42:51
通,大家先去启动一下我们的哈多普集群,通过执行命令呢,是do all这一条命令,它能够启动多当中的HDFS也能够启动哈多当样,当你把HDFS启动起来以后啊,它就能够以文件的方式解决海量离线数据的存储问题,当你把压门启动起来以后呢,它就能够执行我们的map丢失任务。Yam, 它是属于哈都2.0版本以后提供的一个资源和任务调度的平台,目前这种on yam的方是我们在大数据体系当中主要的调度方式,什么意思呢?就是我们把我们的mapdu sparkrk fli呢都运行在我们的yam之上,Du on yam Spark on yam flink on yam yam.
43:51
启动完以后呢,它提供了一个什么图形化的网页工具,端口号是8088,打开浏览器访问输入组就是什么8088端口,你就能够打开亚门的图形化工具,通过这么一样的一个图形化工具,如果说有计算任务,不管是mapdus任务,还是10SPA克任务,还是flink任务呢,只要它运行在。
44:23
我们的样M之上,通过大家现在看到的的图形化界面,你就能够监控到任务的执行的状态。好,环境准备好以后,来看一下咱们要处理的数据,数据我事先放到了什么?放到了HDFS上,它是一个文本的文件,那文件里面呢,包含有什么三句话,就是这个data点文件,那三句话呢,分别是我们的I love Beijing I love China, 北京is capital of China, 通过观察这三句话里面有一些单词它是重复的,对不对?现在呢,咱们就想在how杜里面跑一个map producedu程序,把每个单词它所出现频率呢统计出来,结果呢,写回到HDFS之上,那他当你把它都嗯安装好。
45:23
好以后它提供了这么样的一个什么示例程序的黄进到哈都po怎么安装的木箱栏,要么哈都嗯线我们的Du。下啊,这么它这是呢,当前目像下面有一个哈都my produ example点加包,它这个JA压包,它是官方提供的四个程序,那么它里面把很多的example程序,其中有一个就是我们的单词技术程序,那个程序它应该如何去执行呢?演示一下how do价命令执行我们的这JA包当中的word countt程序后面呢,需要写上我们输入和输出,注意这个地方的输入和输出都是我们的HDFS输入它可以是HDFS的一个目录,如果它是一个目录,它将读取目录下面的所有文件,当然你也可以只写一个文件也可以。好,我们在HDFS的input目录下面有一个datatime.s文件,这是我们的输入路径,输出也写回到HDFS之上,我们。
46:37
在HDFS上创建一个新的目录,将奥pod再创建一个什么WC,最终结果呢,将会被写到这个什么HDFS么下,那么当我执行这一条命令的时候,请大家注意他所打印输出日志的第一句话,它会是什么话,它将会去连接我们的什么?注意啊,它去连接我们的这个re resource manager, 那这个resource manager是整个yam呢主节点,他把任务呢提交给yam去执行,既然提交给yam执星以后呢,好怎么去刷新一下刚刚的的图形化的网页,你就应该能够看到在你亚M上面就一个什么正在运行这个程序,而这个程序就是你刚刚执行的什么mapdu是执行我们的单词技术,那因为整个mapdu是它在执行过程。
47:37
里面它会产生大量的IO操作,执行读写操作,因此呢它会影响咱们执行的效率,因此呢,现在呢,目前我们在大数具体系里面呢,更多的是嗯。更多的是采用我们的斯巴克,还有弗Li克,斯巴克和弗Li呢,都是基于内存方式进行计算,但是思想和原理跟mapdu是完全一样的,都是采用先拆分在合并的这种方式。好,我们再来刷新一下的图形化的界面,你所提交的map producedu将会变成我们的finish状态,执行完成,执行完成以后,结果将会写回到HDFS之上,他看一下结果它长什么样子呢的好,看一下HDFS的什么刚刚的那个,什么刚刚的那个啊,刚刚的凹put下面的WCD,它将会以文件形式把统计就给它保存下来,结果呢,写到下面的什么,就part r的文件中,这个,这个是一个文本文件,看看里面的相关的内容的执行一个cut命令在我们的奥特。
48:53
Put WC下面呢,会有什么part-R面什么0000的文件,好这个呢,它是一个文本,文件里面它就包含了什么统计执行或的结果,它就会按照单词计每个单词的频率,比如说北京出现两次China出现两次I也出现两次capital这一次这个量就是我们在整个哈多里面如何去执行一个我们的map,就是通过打印输出的日志,大家呢,能够判断出来它是两部,先执行我们的map,嗯,再行我们的,也就是看看这个地方,这个地方日志,但通过观察你会发现呢,就是是这个地方先执行我们的map,再执行我们的reduce,我们把拆,把map呢叫做什么拆分,把reduce呢叫做我们的合并,好,这是我们在哈多里面。
49:53
嗯,开发Java程序能够去实现我们的mapdu是,但mapdu是本身太编程与无关,它只是一个什么计算模型,当然我们在mango DB里面呢,也能够通过开发我们的JS函数,也能够去实现我们的map程序,比如说我们接下来就开发一个什么,我们接下来就到我们的mango DB里面开发一个map程序来求员工表中每种职位的什么,员工的人数是多少的,他们写个简单的程序名件,把需求写在咱们的课堂比例上面。第三点啊,是什么呢?是我们在mango DB中开发我们的map producedur mango DB中开发是吧,Map丢程序实现什么实现求每种求,求什么,那是求员工表中啊求。
50:53
员工表表中。每一种职位的什么员工的人数,好求员工表中每一种职位的员工人数,当你拿到这个需求的时候,如果通过CQ语dream应该如何去完成呢?写一下CQ的话应该是这样子啊,Set job, 嗯,我们的count什么我们的新发我们的嘛,员工表group按照呢我们的职能进行一个分组,这个呢,通过使用CQL语句来实现这么样的一个需求,当然也能够去开发我们的mapdu呢,也能够去实现这样的功能。首先看一下我们要用到什么,用到的员工数据,它在我的mango DB里面,它是一个什么样子,他们登录到我们的mango DB里面,看一下的员工数据,它长什么样子,重新进到我们的mango DB当中,进到我们的嘛,进到我们的mango DB的安装的部下执行。
51:58
变向面的mango连接上来营呢,切换到我们什么这SC数据库上呢?好在这个数据库里面呢,我有一个表,有个集合叫做我们的EP啊,就是我们的employee,这个呢是怎么用的?用的员工表,员工表里面一共包含有什么14条员工数据,那那里面一共包含有什么8个列,首先看一下员工表数据,它长什么样子啊,执行一个简单的一个查询DB代表当前数据库下的员工集合,执行一个find的,由于我没有写任何的什么查询条件,他将查询表当中,他将查询集合当中的所有文档,将返回这14条文档数据,当然这个格式呢,并不是很好看,对,后面能给写上一个点m party这样子呢,它能够用换行方式展示出这14条员工数据,每。
52:58
一个员工数据它有8个列,简单解释一下这八个的含义,分别代表什么含义?首先第一个字段ID代表员工的员工号,第二个字段E代表员工的名字,第三个job呢,代表员工的职职位,第4个MGM代表员工的老板号,就是老板的员工号是多少?Hardtime代表入职日薪,Sal是什么?我们的月薪commission奖金de department number是员工所在部门的部门号。好了解到了员工数据以后,接下来呢,咱们就在整个mango DB里面,我们去开发两个函数,那去实现我们的map,就是求员工表中每种员职位员工的人数。首先咱们开发我们的第一个函数来实现我们的map map呢代表咱们的拆分,针对每一条文档数据拆分。
53:58
的结果,我们统计它的值位,并且记一次数,啊对,好,我们去开发一个什我们的mapp函数,实现拆分的动作,好这是什么Java时个表的好等于我们的方个系把时个表的好等于我们的方个系统的好,通过写上我们一个吧一个发括号,我们函数实现的显在咱们的这个后边的amit特项,那么针对每条文档数据,嗯发送这一行文档的什么它的什么它的job,嗯值位变成记已之数,通过这种方式呢,我就能够去实现我们的什么就拆分的过程的去好那呢,开发完成以后,那么还需要去我们开发一个什么也丢是实现一个什么聚合操作,把相同职位的员工按照了职位呢进行一什么聚合,那么求出每一种职位员工的什么总人数来实行一什么一个约丢失的一个种操作,我们再来开发我们的第二个函。
54:58
嗯,叫什么reduce丢失这的函数,它也是个函数,那么也写上我们的那个方格性,它里面呢,需要接送两个参数啊,写错了,那我们的个方,我们写这样写错了,我们的方可行,我们的方可分方可行的,那它里面呢,接收两个参数,Map的输出是reduce的输入,这句话需要记住啊,Map的输出是reduce的输入,因此呢,这两个函数两个参数呢,一个是我们的职位,一个是就职位呢,记一次数列,那后面的什么需要去实现把相同职位的员工做一个什么,做一个求和的一个什么操作,求出每种职位什么员工的总人数是不是这样子的,因此咱们需要返回这一种职位员工总人数是多少的,而写在咱们的后边为看一下。
55:51
我们用什么用数组啊,数组R当成求和函数,把我们的看呢,就什么这个求和,那通过使用这样的一种方数,我就分别开发好了什么两个JS函数,一个去实现我的map,一个去实现我的,也就是当然我们需要把它组装成是一个map pre丢失之呢,针对员工表M执行我们的这个操作,因此要写咱们的主程序啊,DB代表了当前的数据库,当前数据库的什么员工表现呢?针对他我们执行什么map producedu的一个操作,指定你的这个map producedu这种呢,Map是谁,Reduce是谁?输出写到哪里去?好写一下咱们的呢,是上面写的map in reduced是上面写的reduce一类,那最终你的任务执行完成呢?输出放到哪个地方去呢?写到怎么后面呢?写到后面呢,它已经会生成。
56:52
那什么新的集合用于保存我们的结果数据,写上我们的ALT选项来输出一个新的集合叫做我们吗?我们的这个MMRDEMO,好最终结果呢,将被输出到我们的MMRDEMO,这呢也是一个新的结合,因为保存这个任务呢,它的执行的结果好们咱们去执行一下,就是什么马配丢程序,先执行我们的拆分,执行我们的,也就是最终统计完以后呢,他就会输出5条文档数据,按照每种职位求每一种职位的员工人数,他们执行个一个我们的,我们的修语项,我们的什么connection,那么我们的当前数据库当中,除了刚刚已有的什么员工集合以外,那这个地方除就新生层的集合叫MMRDEMO,这个集合里面它就保存了刚刚你所执行的map pre丢失之呢,它执行结果,它这个也是1。
57:52
一个点也是个机会,看里面呢包含哪些文档数据呢?执行一个简简单的一个一个查询句点什么点范的一下,在查询这个集合里面的所有文档,通过输出的信息,好,咱们看到那职位是啊,那是职位呢,一共有两个人,职位送CRK,职位呢一共有四个人,职位送manager,经理呢,一共有三个人,Present一个人,销售SALES4个人,因此通过这样的一个什么my produce, 我们就在mango DB里面执行一个什么,执行一个聚合操作,按照员工的职位求出每一种职位的员工人数分别是多少,还有从介绍到这个地方呢,问一下大家关于如何在我们的mapdu是里面啊,如何在我们mango DB里面,或者说在我们的hard多里面,如何去执行我们的map producedu, 大家是不是都看明白了,好,最后呢,他说。
58:52
不像,尽管目前在大数据体系当中很少会在直接的去开发我们的map producedu, 但是map帕丢斯的思想和原理非常非常重要,这种先拆分在合并的思想也被借鉴到了,什么呢?18g还有弗林克当中,因此那句话呢,我再重复一下,如果。
59:18
如果说大家后续你要系统的去学习有关大数据的知识,第一步呢,还是需要好好的去学习一下到底什么是我们的,那不就是啊,思想原理和非常重要。第一步还。
我来说两句