当前课程知识点:数据库系统原理与开发 >  第7章 NoSQL数据库技术 >  7.4 文档型数据库 >  7.4.2文档型数据库-2

返回《数据库系统原理与开发》慕课在线视频课程列表

7.4.2文档型数据库-2在线视频

下一节:7.4.3文档型数据库-3

返回《数据库系统原理与开发》慕课在线视频列表

7.4.2文档型数据库-2课程教案、知识点、字幕

今天我们学习

芒果DB数据库的组成

在这一节里头包括的两个方面

芒果db数据库的组成

以及芒果db的机群结构

第一个我们看一下芒果db文档 数据库的组成

它是面向集合前膜 是石油的一个文档数据库

联想集合就是指我们的数据被分组为 成集合的文档

数据模式自由实际上是我们不用定义数据的格式

是直接把电子对放到文档里头就行了

数据的存储是事件之类的集合

是字符串 值可以是任意的一个类型

这个就是集合的概念

下面文档是我们芒果db的基本单位

集合可以看成是我们没有模式的表

而且和对应关系数据库的表

芒果db的每个实例有多个独立的数据库

每个数据库都有自己的集合

和权限以及对应数据和操作方式

我们看文档实际上多个文档组成集合

多个集合组成数据库 一个实例只是多个数据库

这个是我们文档数据库 芒果db文档数据库的一个组成

下面我们来看一下数据库对应的文件信息

也就是说我们的数据库建立以后要在

系统里头存储有哪些文件来表示它们

首先我们的系统数据库是在默认的数据库目录底下

默认的目录就是db的目录

存储所有的数据文件

每个数据库都包含一个点S文件和一些数据文件

例如我们建一个test的数据库

这个数据库里头就有tt

特点s plus点0123组成

这个月分配的空间机制,每次我们数据库建立以后我们

postcard s

点012都每次开始

分配的时间 用零来填充起来 每分配一次它的大小

就会带上一个数据文件,汕头增加两倍每个数

文件最大是两个g

数据库的每一张表都对应一个命名空间

这个就是说我们的每一个表

名字空间进行存储,每个索引也对应相应的名字,空间这些名字,空间的元素句

都存在我们的点ns文件里头

就是说我们的数据库的第一个文件是对所有数据库逻辑结构的存储

下面我们来看一下 对应的

数据文件就是说我们刚才建立的test数据库,包括三个文件,用于存储表和,所以

我们test

二是我们预分配的空文件零和一对应我们相应的盘区和不同的名字空间,这个就是说我们首先

要存的文件,包括他的系统的配置信息

还包括它对应的存储表和索引的数据,还有一个空闲的信息,这样子是我们

使数据的操作非常灵活

每个名字空间可以包含

多个不同的盘区 可以不是连续的

名字空间也是对应的盘区 随着分配次数不断增长

也就是说我们

名字空间随着数据

存的内容越多,它也是不断自动增长的,不用吃饭和回收我们空闲的磁盘空间

我们盲目db的数据库回

保存在底层文件系统里头,我们用DB pass来设置我们的数据库目录

我们创建一个数据库时

例如我们创建test数据库

我们要在数据库里头有相关的集合,我们队集合起个名字在集合里头我没有很多

文档所以说我们在我们的

数据库目录底下就可以生产相关的文件列表,我们看一下相关的文件列表

已经有六个稳数据文件了

分别是我们taste点0到点6

应该是七个文件 每一个数据库 每一个文件都是用数据库的名字加上

序列数字号 而且序列号从零开始

逐步递增

数据文件是从16兆开始,每次扩大一倍,我们看第一个文件

编号为零的是16兆,第二个就是32,第三个64

这样456每次扩大一倍 然后我们test点ns实际上是一个

我们的所有名字,空间的一个说明就是数据库的逻辑的分配的

结构的一些说明

好下面看一下 我们考虑我们这个集合的这个存储

集合的存储,我们数据库中所有的集合以及所以信息分散存储在多个数据文件里头

数区的分块单位是用于喷的,也叫樊伟一个区域

既我们每一个数据文件有多个区域组成

区域总可以保留

保存我们

集合数据或者保存我们的索引数据

而且一个区域只能保存在同一个

集合数据中不同的集合数据可以分布在不同的这个区域里头

我们indexes数据也是保存的歌词的

区域里头 实际上这个就是说我们有一个层次结构,我们的collections就是说我们的

集合可以分成很多个

区域范围 每个区域可以保存数据也可以保存

我们的索引 这样实际上是一个collections可以有多个extent区域组成

等于说在每一个数据库里头,我们都有natures

文件这是实际上就是我们刚才定义的考虑提我们有系统的

集合有数据的集合

每个集合只保存第一个,我们区域的一个位置信息

每一个区域都维护一个链表关系

也就是说我们每一个口味每个集合

直接引用我们第一个区域

所有这个集合的区域是通过一个链表把它链接起来

最后实际上我们通过这个

集合就可以引用到我们相关的区域的一些数据

第二上面一个概念是我们的name, please

文件时加name,顾名思义,是将是为我们所有的

数据库里头要引用的一些东西

给出一些名字 而且

每一些名字都在这一个范围之内来处理的

所以说我们看一下

对于我们namespace文件 比如test点ns这个文件 我们的默认的大小就是16兆

这个文件主要是保存我们所有

集合也就是col lection和所有索引的命名一些信息,就是说我们的集合

和我们的所有的命名规则必须按照我们这个namespace文件里头指出的来进行命名

我们在这个namespace里头,可以保存我们集合的属性信息,每个所以

的这个属性类型信息等等

我们通过配置一个nsSize这个选项,来指定穿出大量的集合

这样子就比如说我们的

在一个数据分析的系统里头

应用中我们需要处理大量的数据,要数据结果来数据进行分析

这样子我们每次大量的数据读进来我们就要

分配一个集合 这样子我们可以通过文件的配置参数来指定每次集合

生成的大小这样子

可以提高整个系统的效率

上面一个概念是日志文件journal这个日志文件是提供数据的保障能力

日志就适用于我们整个数据库出现异常 或者

崩溃以后,我们可以用这些日志和数据库进行恢复

这个日志实际上所有的数据,芒果db的数据持久写入磁盘是滞后的

这个实际上就是说所有的数据操作是在内存里头进行

数据操作的过程

把它写到日志里头 我们这样子 但是

在日志满以后 我们才把它写到磁盘上

所以它这个词就写入磁盘时滞后的

在默认的情况下

我们这个日志文件纸一直开启的这个实际上和一个芒果DB

实力可以享受我们数据库共享的一些日志文件

意思就说 我们一个是文件 可以供多个数据库实例同时使用

下面第二个部分就是我们的芒果DB的

体系结构 也就是它的集群结构 分布式系统的一个组成方式

这个实际上是分布式集群

实际上我们在***的特点

你不烦,我们都已经强调过了,所有的***都支持

就是基于分布式数据库之上再建立的系统

所以说它实际上是支持我们分布式集群的而且有数据的备份

所有的数据每个数据可有多个备份 多个备份在不同的地点

可以提高系统的安全性也可以支持我们

高的读写服务能力

数据的存储能力

我们可以通过副本及对数据进行

备份通过分片对大数据进行分割

我们分布式存储在不同的节点上

这个就是说实际上每个数据有多个副本提供安全保障

而且大的数据我们把它进行分割到不同的节点上 这样提供并行处理的方法

我们现在芒果db目前支持三种集群方式 第一种就是组从集群

就是有一个主服务器和多个从服务器组成副本集群

这个是我们所有的数据要有副本及来支撑

还有分片集群就是把大的数据分成

多个片段放在不同的节点上

下面我们来看一下集群的结构

一个是单机的实力当然单机的实力因为只有

一个单机实力客户端直接与他连接就可以了

副本的实力就是在副本集上我们通常只要

至少要三个节点一个主角点处理我们客服的请求

其余的两个侍从节点

不只我们主角脸上的数据也就是说所有的操作是在主节点上进行

这些副本是从主界面上把操作的结果复制过来

这个就是副本集

在芒果db中各个节点常见的搭配方式

在副本就是一组多从正常的情况下就至少三个就是一个主角点多个从节点

主节点

完成所有的数据操作 从节点过定期轮训的方式

从主节点那里获得这些操作最后保持

从节点数据与主节点是一致的

当一个节点失效以后或者一个节点

失败了以后或者当机了以后我们就需要满足

大多数人成员的投票,再选取一个主节点

这样子实际上是

该系统里头规定了一些选举的机制

要大多数人投票才能作为主角点

我们看这个图 这个图是副本集的一个图示

我们的主服务器

和我们的副本即使通过心跳进行连接的

这样子可以判断主服务器是不是失效 如果失效通过选举来进行选举新的主服务器

下面一个方式是分片

分片的房子是

是讲一个集合的数据分别存储在不同的片段上去

这样子我们就可以减轻

南极的压力这个是提高系统的查询性能

它是通过一个间质来进行划分的

我们数据库提供了两种分片的方式一种是垂直

扩展和分片垂直扩展时间是增加我们的cpu

增加我们的内存增加我们的数据存储资源等等

第二种是分片扩展水平扩展即使我们

把数据按照不同的值划分不同的数据级

数据分布到多台服务器上每一个碎片都是一个独立的

数据库

我们的分片及群里头有三个组建一个就是我们的碎片这个就是一个片段

存储我们所有分到这个片段上的数据

每个碎片都有一个复制集

还有一个我们的查询路由

还有一个我们的配置服务器来存储集群中的元素句,就是说集群中是怎么配置

怎么分片怎么对数据进行分片的

我们这边是一个分片集群我们看一下有三个组件

第一个组建我们的碎片就是我们绿色的这个部分它是

存储数据每一个碎片都是一个复制集

这个蓝色的是应该是我们的查询路由就说我们的

客户端来请求数据的时间通过这个路由来看到底数据是在哪里

还有一个配置服务器

配置服务器里头存储了所有

是如何对数据进行分片的分片信息

我们下面看一下我们集群中的服务器我们刚才看的就是这个路由的服务器

路由服务器是要负责把对应的数据请求

转发到对应的分片服务器上是数据集群请求的一个入口

还有一个配置服务器就是存储我们所有数据库的元信息路由分片的配置

配置服务器90计算相当于我们整个

这个集群中的一个集群大脑存储我们的所有数据库的信息

路由分片还有一些相关的数据的配置的信息

好我们来看一下集群的组成

单个的芒果db组成就是由副本集还有

分片我们客户端不管是哪种方式,客观可以通过芒果db来读取我们的

系统的配置信息与分片通讯

通过我们的芒果db的服务和我们相关的

机器进行连接芒果db会自动选择相关的

服务 我们的每一个分片包括一个或多个服务和存储数据的

芒果db一个进程,而且每一个分片里头都是一个复制集

好 这个就是本节要学习的内容

数据库系统原理与开发课程列表:

第1章 数据库系统概论

-1.1 数据库及其系统概念

--1.1 数据库及其系统概念

-1.2 数据库技术发展

--1.2 数据库技术发展

-1.3 数据库应用系统

--1.3 数据库应用系统

-1.4 典型数据库管理系统

--1.4 典型数据库管理系统

-1.5 PostgreSQL对象-关系数据库系统软件

--1.5 PostgreSQL对象-关系数据库系统软件

-第1章 数据库系统概论--本章单元测试

-第1章 数据库系统概论--本章重点问题讨论

第2章 数据库关系模型

-2.1 关系及其相关概念

--2.1.1关系及其相关概念-1

--2.1.2关系及其相关概念-2

-2.2 关系模型原理

--2.2.1关系模型原理-1

--2.2.2关系模型原理-2

-2.3 PostgreSQL数据库关系操作实践

--2.3 PostgreSQL数据库关系操作实践

-第2章 数据库关系模型--本章单元测试

-第2章 数据库关系模型--本章重点问题讨论

第3章 数据库操作SQL语言

-3.1 SQL语言概述

--3.1 SQL语言概述

-3.2 数据定义SQL语句

--3.2.1数据定义SQL语句-1

--3.2.2数据定义SQL语句-2

--3.2.3数据定义SQL语句-3

-3.3 数据操纵SQL语句

--3.3 数据操纵SQL语句

-3.4 数据查询SQL语句

--3.4.1单表数据查询

--3.4.2 内置函数与分组统计

--3.4.3 多表关联查询

-3.5 数据控制SQL语句

--3.5 数据控制SQL语句

-3.6 视图SQL语句

--3.6 视图SQL语句

-3.7 PostgreSQL数据库SQL实践

--3.7 PostgreSQL数据库SQL实践

-第3章 数据库操作SQL语言--本章单元测试

-第3章 数据库操作SQL语言--本章重点问题讨论

第4章 数据库设计与实现

-4.1 数据库设计概述

--4.1 数据库设计概述

-4.2 E-R模型方法

--4.2.1 E-R模型方法-1

--4.2.2 E-R模型方法-2

-4.3 数据库建模设计

--4.3.1 数据库建模设计-1

--4.3.2 数据库建模设计-2

-4.4 数据库规范化设计

--4.4.1 数据库规范化设计-1

--4.4.2 数据库规范化设计-2

-4.5 数据库设计模型SQL实现

--4.5 数据库设计模型SQL实现

-4.6 基于Power Designer的数据库设计建模实践

--4.6 基于Power Designer的数据库设计建模实践

-第4章 数据库设计与实现--本章单元测试

-第4章 数据库设计与实现--本章重点问题讨论

第5章 数据库管理

-5.1 数据库管理概述

--5.1 数据库管理概述

-5.2 事务管理

--5.2 事务管理

-5.3 并发控制

--5.3.1 并发控制-1

--5.3.2 并发控制-2

-5.4 安全管理

--5.4.1 安全管理-1

--5.4.2 安全管理-2

-5.5 数据库备份与恢复

--5.5 数据库备份与恢复

-5.6 PostgreSQL数据库管理项目实践

--5.6 PostgreSQL数据库管理项目实践

-第5章 数据库管理--本章单元测试

-第5章 数据库管理--本章重点问题讨论

第6章 数据库应用编程

-6.1 数据库连接技术

--6.1.1 数据库连接技术-1

--6.1.2 数据库连接技术-2

-6.2 数据库存储过程

--6.2 数据库存储过程

-6.3 数据库触发器

--6.3 数据库触发器

-6.4 数据库游标

--6.4 数据库游标

-6.5 嵌入式SQL编程

--6.5 嵌入式SQL编程

-第6章 数据库应用编程--本章单元测试

-第6章 数据库应用编程--重点问题讨论

第7章 NoSQL数据库技术

-7.1 NoSQL数据库概述

--7.1.1 NoSQL数据库概述-1

--7.1.2 NoSQL数据库概述-2

--7.1.3 NoSQL数据库概述-3

-7.2 列存储数据库

--7.2.1列存储数据库-1

--7.2.2列存储数据库-2

-7.3 键值对数据库

--7.3.1 键值对数据库-1

--7.3.2 键值对数据库-2

--7.3.3 键值对数据库-3

-7.4 文档型数据库

--7.4.1文档型数据库-1

--7.4.2文档型数据库-2

--7.4.3文档型数据库-3

-7.5 图形数据库

--7.5.1图形数据库-1

--7.5.2图形数据库-2

--7.5.3 图形数据库-3

-7.6 HBase数据库项目实践

--7.6 HBase数据库项目实践

-第7章 NoSQL数据库技术--本章单元测试

-第7章 NoSQL数据库技术--本章重点问题讨论

期末考试

-期末测试--期末测试

7.4.2文档型数据库-2笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。