当前课程知识点:数据库系统原理与开发 >  第7章 NoSQL数据库技术 >  7.1 NoSQL数据库概述 >  7.1.3 NoSQL数据库概述-3

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

7.1.3 NoSQL数据库概述-3在线视频

下一节:7.2.1列存储数据库-1

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

7.1.3 NoSQL数据库概述-3课程教案、知识点、字幕

今天这一节我们来学习一下

NoSQL的基本概念

NoSQL数据库的存储模型

NoSQL数据库的特征

第一个NoSQL的基本概念

什么是NoSQL

NoSQL是Not Only SQL的缩写

即 不仅仅是SQL

是对关系型SQL数据库系统的补充

它是一类非关系数据存储系统

通常不需要一个固定的表的模式

所有的NoSQL

淡化了一个或更多的事务的ACID属性

即事务的一致性 原子性

隔离性和持久性的属性

还有相比传统数据库

他叫分布式数据库管理系统

更加贴切

而且数据的存储被简化了

重点放在我们的分布式数据管理上

NoSQL像我们的互联网公司

像谷歌或Facebook

都可以用NoSQL每天处理用户的

上万亿比特的数据

而且一些新的数据源

新的应用领域

也产生了大量的数据

用NoSQ可以做很快的一些处理

还有NoSQ并不单指一个产品和一个技术

它代表一族产品以及一系列不同的

相互有关联的

有关的数据存储以及处理的一些概念

下面我们来看一下

采用的哪些技术

第一个数据类型简单

它可以采用简单的数据类型

例如永键值类型

还有系统只需要支持单记录级别的原子操作

不需要支持批量的数据操作

还有系统的扩展性

就是我们不管是系统可以横向扩展

也可以纵向扩展

数据的内容可以扩展

数据的处理方式可以扩展

元数据和应用数据分开

又有元数据来对数据的格式进行定义

这样子是我们可以

很容易的定义

k不同类型的数据

在我们的数据库里头去应用

还有弱一致性

我们用最终一致性和实践一致性

来满足用户对数据一致性的要求

最后我们适应的数据增长

并能灵活的适应我们半结构化的数据

和稀疏数据集来进行管理

还有一个他没有声明性的查询语言

没有预定义的模式

这个随着数据的变化

可以用自定义的方式

来处理各种变化的数据

存储的方式包括我们的键值对存储

列存储 文档存储和图形存储等等方式

来对数据进行存储处理

提高数据的查询效率

最终一致性

和非结构化的不可预知的数据

我们都遵从CAP定理

使用BASE原理

用高性能 高可用性和高扩展性

来进行数据的管理

下面一个我们来看一下

NoSQL的特点

他的

优点表现在具有高扩展性

分布式计算 低成本

还有架构的灵活性

半结构化的数据

没有复杂的关系

缺点是没有标准化

而且它的查询

只要求有限的查询能力

而且最后最终的一致性不直观

他是应用很多的

NoSQL数据库的特点是

应用来决定

怎么实现数据的最终一致性

下面我们来看一下NoSQL的整体结构

我们看一下它分成三个层次

首先最上面是我们的接口层

接口层里头实际上有很多我们的

语言的API接口的子集

或者是不同的数据

分析挖掘的一个工具

来对我们用户

对用户提供的很多

功能进行处理

下面的一层是我们的逻辑层

数据逻辑层

对数据的结构设计层

我们的键值型

和我们的面向列出的和文档型

或者是图形的一个数据模型的设计

再下面一层数据的分布层

分布层在这一层里头

我们是基于CAP的支持

支持我们多数据的中心动态部署

最后最下面一层是我的数据持久层

这个是保证我们

说明我们数据怎么存储

我们可以基于内存的

可以基于硬盘的

也可以基于内存和硬盘结合的

也可以基于定制可插拔的方式来存储整个

NoSQL的数据

下面来看一下

NoSQL数据库的存储模型

整个存储数据模型分成四类

也是我们整个这一章的内容

第一类是列存储数据模型

是讲同一列的数据存储在一起

可以存我们结构化的半结构化的数据

第二类是键值存储模型

存储的数据有键和值两部分组成

通过键可以快速的查到值

值的格式可以根据我们的应用来定义

文档存储数据库实现存储的内容是文档型的

可以用格式化文件

或者是半格式化的文件进行存储

图存储数据库

以加权图的方式

对数据进行存储

下面我们来看第一个

健值存储的类型与特征

我们键值存储的类型有哪些

有三种

一种是临时性的

这种就是我们的数据是保留在内存中

可以进行快速的保存

和读取处理数据

有可能丢失

第二种永久性的是在磁盘上保存数据

可以进行快速的读写

数据不会丢失

第三种就是两者兼有

我们内存和磁盘都可以保存数据

这个就是我们的数据的类型

特征就是我们为键值

只有可以通过键来快速进行查找

可以快速的写入

可以这些所有的查找

都是基于内存和内存的映射的

而且

因为键值可以代表的含义很多

所以说组合计算不是很透明

基于混合的工作复杂

并且有大量的数据齐的情况下

可以用我们的键值存储来进行处理

第二个是我们的文档存储

文档存储的方式

我们看一下是没有表结构

实际上是结构可变化

我们的文档可以

随着你的应用不同

可以进行复杂的查询条件

因为这一个文档里头

可以定义很多文档的不同格式

所以说可以进行复杂的查询条件

第三个文档实际上是一个记录

能够对包含的数据的类型和内容

进行自我描述

像我们的xml文件一样

可以自定义自己的数据类型

所以说我们面向文档的数据库

适用于我们存储 检索 管理

面向文档和半结构化的数据

文档可以包括我们的XML YAML JSON和BSON

还有二进制的所有文档

PDF和微软的office文档等等

都可以作为文档来进行存储

下面一个是我们的列存储数据库

列存储数据库是面向列的数据库

对大量的行 少数的列进行读写

对所有特定的列进行实时的更新

它实际上是在

它的特点是拓展型比较大

但是应用十分困难

对大量的数据更新和查询有优势

适合部署在那种需要大规模数据库的场合里头

而且开发者可以动态的控制列族的各列

数据按照行的标识符

列名及时间戳来进行定位的

而且读取操作和写入操作都是原子的

数据是以行以某种顺序来进行维护的

这个就是列数据存储库

下面一个是我们第四类

是图存储数据库

图存储数据库是图形数据库的

每一个节点

对象是一个节点

之间的关系是一条边

图形数据库善于处理

大量复杂的 互连接的

结构化的数据

这些数据变化迅速

需要频繁的查询

图形数据库适合用于我们的

社交网络 推荐系统等

专注于构建关系图谱的系统

在社交网络里头

我没有朋友圈

我没有这些

朋友之间的关系可以

最适合用我们图形进行存储的

它的特点是

我们可以表示复杂的结构

数据的操作快

这个实际上就是我们用图的方式

来定义他们之间的关系

通过对图形的图

可以基于图的所有理论对数据库进行操作

所以数据的表现非常直观

还有灵活

不管有什么新的数据需求都可以

一律按照节点和边

只考虑我们节点的属性和边的属性

在扩展的方面

也是对边如何扩展

对节点如何扩展

使它具有更大的灵活性

数据库的操作速度

并不会随着数据库的增大而明显的降低

这个是因为我们数据的存储格式的一些原因

我们用图的方式来存储

图的方式

实际上我们在

要求我们的存储量比较大

但实际上能够保证我们的存储

数据操作的速度

下面我们来看一下

NoSQL数据库的特征

第一个它不需要预定义模式

这个就是我们刚才讲的四种存储的模型

就不需要时间去定义

第二个 无共享架构

它实际上是针对某些数据进行操作

弹性和扩展

他可以用分区的方式来进行

像我们用键值数据库

可以按照键值来进行分区

不同的键值存到不同的服务器上

来提高系统的可扩展性

可以进行异步复制

又有我们

是基于我们的

弱一致性来保证这个异步复制的功能进行

用BASE相对于我们的ACID特性

s我们

NoSQL数据库保证BASE特性

就是最终的一致性和软事务的一致性

在某一个时刻不一致

但是最终的数据是保持一致的

有了这个以后

我们下面来看一下它相对应的

它的架构特征

一个是数据的模型比较灵活

我们可以自定义很多种

根据需要来定义

另外一个可以实现可伸缩性

可以向上扩展也可以水平扩展

向上扩展是我们各种应用不同

要求我们来进行扩展

水平扩展是存储

根据不同的存储方式

分批复制来进行扩展

还有高可用性

下面一个他都有

具有非常高的读写性能

因为我们对数据操作的类型

都是用键基于一个

快速的查找

基于一个键值

然后再通过键值连接它的内容

所以说它的读写性能都比较高

适合于我们的

在我们社交网络 移动服务

协作编辑等等方面

我们图形数据库

存储显示的更高的灵活性

所以说我们的NoSQL数据库

也是我们现在发展的一个特征

下面我们来看一下

NoSQL的应用的一些场景

第一个场景

我们用数据模型比较简单的一些场景

因为我们NoSQL其中的四类的数据存储方式

所以说

第二种我们需要灵活

更强的一个信息处理系统

这个要求我们所有的数据

要不断的变化

而且可以是无结构的

有半结构化的数据不断的变化

需要我们有更灵活

更强的数据处理

第三个对数据库的性能要求较高

我们的可扩展性

还有高性能

因为在大数据环境底下

数据量非常大

需要我们对高性能进行一些扩展

第四个

我们不需要高度的数据一致性

这个也是我们的BASE原则

我们保证

是用软状态或者最终的数据的一致性

在我们最终可以保证

所有的数据操作

在我们整个环境下数据是一致的

对给定的键值可以比较容易的

映射到一些复杂值的环境

这个也是我们数据可扩展的

一个比较重要的一个因素

所以我们可以给定一个键值

这个键值代表的含义

可以非常复杂

也可以非常简单

而且可以随着应用不断的变化

在一个数据库里头

你可以对这个键值代表的含义

进行不断的重复定义

这样子保证数据的可用性

所以说许多云计算的环境下

新型的应用

如我们社交网络 移动服务

协作编辑等等

这些都是我们NoSQL应用的

一个很好的应用场景

当然随着我们云计算时代

海量数据的管理的设计目标

我们的可扩展信息 弹性

还有容错性

自我管理等等

弱一次性

这些都提出了更高的要求

但随着技术的发展

也有新的系统

也在不断的发展

这个就是本节的学习内容

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

第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.1.3 NoSQL数据库概述-3笔记与讨论

也许你还感兴趣的课程:

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