当前课程知识点:数据库系统原理与开发 > 第7章 NoSQL数据库技术 > 7.4 文档型数据库 > 7.4.1文档型数据库-1
好我们现在开始讲今天学的内容芒果db
数据库文档数据库
本节我们学习的内容有四个方面
一个是文档数据库的基本概念
芒果DB数据库模型
以及它的组成
第一个我们来看一下文档数据库的基本概念
文档是处理信息的基本单位一个文档可以很长
很复杂可以有结构也可以是无结构的
一个文档对包含的数据类型和内容可以进行自我描述
比如xml文档可以自定义标签来说明文档的内容
HTML文档
根据标签来解析文档里边相关的类型
和节省文档是java使用的一种自我描述的一个文档
嵌入式文档这个意思就是说我们在文档存储模型里头咫尺嵌套结构
就是说我们在基本文档的基本单位里头我们可以
一个键值对应的文档类型还可以是另外一个文档这样子文档
看套在其他的文档当中
每一个文档的ID都是他的唯一的一个键
ID是在一个数据库集合中唯一的所以我们
文档的排序是根据ID来进行排序的
下面我们来学习一下芒果db数据库
芒果db是一个基于分布式文件存储的一个开源的数据库系统
将数据存储成一个文档
数据结构有键值对组成每一个文档有一个键和一个直想对应组成的
字段的值可以包含其他的文档数组以及文档数组
下面我们给一个
三个例子我们看一下这个文档每一个
都是有一个键我们首先要name status还有groups
我们看name是一个单子文档,只有一个王新
status只有一个值是student groups
我们可以是一个多个文档是course,experiment两个词
每一行的存储格式都是一个
文档的名字
也是键值和一个相应对应的文档的取值
每一个文档
可以匹配所表示的实体的数据域
数据关系有两种可以用引用的方式
也可以用嵌入的方式就是在文档的值这个地方我们可以引用的方式
引用其他文档也可以嵌入一个相关的文档
写操作的是在文档,级别是原子的
没有单个写操作,对超过一个文档或者超过一个集合是原子的
这个意思就是说我们所有的操作是在文档级别进行的
我们保证在文档级别的操作可以保证原子性
其实每次操作可以完成 下面我们来看一下
芒果db数据库的特点
第一个是它的模式自由我们刚才也说过了
在文档数据库里头没有
不用我们去定义文档的格式实际上就是一个键和一个值相对应就可以了
它支持动态的查询可以用引用和嵌入式两种方式
所以说我们就可以动态的对他进行查询
而且还支持完全所以
包含内部对象每一个对象可以引用和包含其他的对象
支持复制和故障恢复这个也是芒果db数据库的一个特点
我们后边会对这个做详细的介绍
它是使用高效的二进制数据进行存储
包括对大型的对象例如视频
图像图片等等都可以用文档来表示
可以自动处理碎片
以支持云计算城市的扩展性
这个在后头我们的芒果集群的过程中我们会详细的说明
支持多种语言有很多语言的开发包支持可以
使用这些语言来对芒果db数据库进行访问
支持的文件格式BSON格式是一种加
节省的扩展方式是二进制形式的
还可以通过网络访问因为它是基于一个分布式的一个数据库系统
好下面我们来看对芒果db的数据模型进行
说明 我们看一下芒果
DB数据库里头的基本概念只有三个一个是文档
集合和数据库
我们在右下边这个图里头我们给出来她们三个之间的关系
文档是我们芒果db中数据的基本单位
最小单位
集合可以是看着没有模式的表格是多个文档组成一个集合
还有每个实例可以容纳多个独立的数据库
每个数据库有自己的集合和权限
文档集合和数据库之间的关系可以是文档是最底层的
一个集合可以包括多个文档
一个数据库也包括多个集合文档和集合是一对多的关系
集合和数据库也是一对多的关系
好我们下面来
分别对这三个概念作详细的描述第一个概念文档
文档它的存放方式是多个件及其关联的字有序的放置在一起就是文档
文档是一组键值对及它是用bson表示的
还有文档不需要设置相同的字段相同的字段也不需要只有相同的数据类型
一个文档可以包含一组字段每一个字段都是一个键值对其中建立新式制服行
值可以包含我们的字符串整数浮点数
实践出二进制等类型
或者也可以包含一个文档或者是包含一个数组的类型
下面我们来看一下文档中值的数据类型
可以是最基本的类型包括我们的字符串整数布尔型
还有双精度浮点值
我们的最大最小的键值这个是用于BSON元素最低值和最高级的一个相对比
还有也可以是数字也可以是一个多个值存储为一个键
也可以是一个时间戳这个时间戳是系统自动生成的是按照系统提供的时间戳
还可以是一个对象
用于我们内嵌文档
还可以空值也可以作为一个
文档的一个类型
还有用符号这个实际上这个符号的类型等同于我们的字符串类型
只是符号具有不同的含义
日期行 日期包括我们的年月日时分秒
还有对象ID型这个对象爱是
唯一的一个组件系统自动生成的使用来进行排序的
还有二进制数据二进制数据可以表示我们的图片声音图像video等等
还有一个代码类型
代码类型适用于在文档存储我们JavaScript代码的
这个时间可以运行的
下面还有一些正则表达式类型这个是
对一些可变的数据进行定义进行表示的
下面一个我们来解释一下单值文档和多值文档
单值文档是一个K对应一个值就像我们刚才
这个
看到我们的useRNAme是对应bbs111个QQ一个k对应一个值多字文档是
键值对多个键值对象ID,我们对另一个Object ID,name对应test,add对应china
所以这个实际上多值文档是多个键和值组成的一个文档叫多值文档
文档中的值可以在双引号里面的字符串里也可以是其他几种类型
因为我们后头会看到有嵌入式文档的出现
所以芒果db
文档不能有重复的键我们都知道键值必须唯一文档的键是字符串型的
文档中的值可以是字符串 也可以是其他的类型 或者是嵌入类型 或者是引用类型
第二个概念是我们的集合的概念
集合是把一组相关的文档放在一起组成了集合
集合的模式是自由的
就是说不用去定义集合的格式一个集合里面的文档可以是各式各样的
我们实际下边看
这个一个集合里头可以放name可以放
单值文档也可以放多值文档
另外芒果db提供了一些特殊功能的集合
我们看一个
有些是系统的集合有些是
所有的集合和应用系统设置的系统配置的一些集合等
我们来看一下
这些集合的一些含义元数据的集合元数据实际上就是我们定义数据的数据
元数据我们是数据库里头中存处
来定义数据库里头的其他数据格式的一些数据,它是存储在集合中的
我们看名字空间这个名字空间实际上是也是一个集合
包含各种系统信息的一个特殊集合时有
数据库名字加上system
最后是我们集合的名字
实际上我们看一下我们的dbname数据库名字点system
点namespaces这个就是数据库
中所有的名字空间
下一个我们看数据库里头索引的索引就是数据库名字
点systen在加上indexes是我们数据库里头的所有索引
下面是数据库里的所有
概要信息即是profile的信息
下面一个是数据库里头所有的用户信息都是放在不同的空间里,不同的
集合里边的
还有一个是我们数据库里头复制
对从服务器的服务状态的信息的一些记录实现数据库名字有个local有slave
这个是进入我们服务器信息的和状态
下面我们来看一下第三个概念数据库
数据库实际上是我们刚才说是多个文档组成的集合
数据库有多个集合来组成的
芒果db可以有多个数据库可以承载多个数据库的实例他们之间是彼此独立的
每一个数据库对应不同的相关功能
我们在开发的过程中通常我们讲一个应用或者一类应用
一种类型的应用的所有数据放在数据库上
在磁盘上我们芒果db将不同的数据库放在不同的文件中
这样子,我们一个芒果这边的实力可以包含一组数据库,
一个数据库可以包含一组我们的集合
一个集合可以包含一组文档
而且我们还可以建立多个数据库
在芒果db里头系统数据库包括有三个
第一个是系统管理库
还有一个是local是系统的配置信息库 confi是作为系统
配置集群信息的一个库这个实际上是系统里头
全省用的我们用其他的数据库名字不能和他重复的
好这个就是本节的学习就到这里结束
-1.1 数据库及其系统概念
-1.2 数据库技术发展
-1.3 数据库应用系统
-1.4 典型数据库管理系统
-1.5 PostgreSQL对象-关系数据库系统软件
-第1章 数据库系统概论--本章单元测试
-2.1 关系及其相关概念
-2.2 关系模型原理
-2.3 PostgreSQL数据库关系操作实践
-第2章 数据库关系模型--本章单元测试
-3.1 SQL语言概述
-3.2 数据定义SQL语句
-3.3 数据操纵SQL语句
-3.4 数据查询SQL语句
-3.5 数据控制SQL语句
-3.6 视图SQL语句
-3.7 PostgreSQL数据库SQL实践
-第3章 数据库操作SQL语言--本章单元测试
-4.1 数据库设计概述
-4.2 E-R模型方法
-4.3 数据库建模设计
-4.4 数据库规范化设计
-4.5 数据库设计模型SQL实现
-4.6 基于Power Designer的数据库设计建模实践
--4.6 基于Power Designer的数据库设计建模实践
-第4章 数据库设计与实现--本章单元测试
-5.1 数据库管理概述
-5.2 事务管理
--5.2 事务管理
-5.3 并发控制
-5.4 安全管理
-5.5 数据库备份与恢复
-5.6 PostgreSQL数据库管理项目实践
-第5章 数据库管理--本章单元测试
-6.1 数据库连接技术
-6.2 数据库存储过程
-6.3 数据库触发器
-6.4 数据库游标
-6.5 嵌入式SQL编程
-第6章 数据库应用编程--本章单元测试
-7.1 NoSQL数据库概述
-7.2 列存储数据库
-7.3 键值对数据库
-7.4 文档型数据库
-7.5 图形数据库
-7.6 HBase数据库项目实践
-第7章 NoSQL数据库技术--本章单元测试
-期末测试--期末测试