当前课程知识点:互联网大规模数据分析技术 > 第五章 大数据平台与技术 > 第13讲 NoSQL数据库 > 第13讲 NoSQL数据库
欢迎来到
互联网大规模数据分析技术
的课堂
我是今天的主讲教师李琳
来自武汉理工大学
今天我们进行第十三讲
关于NoSQL数据库的学习
在今天的课程当中
我们将从以下四个方面
和大家一起来进行探讨
NoSQL
是什么意思
NoSQL的意思不是不用SQL查询
而是Not only SQL
不仅仅是结构化的查询
所以NoSQL数据库
具有以下几个特点
灵活的可扩展性
灵活的数据模式
与云计算紧密融合
那么目前有哪些公司
使用了NoSQL数据库呢
像大家耳熟能详的
谷歌、Facebook、Adobe、LinkedIn
像这样一些大公司工作
我们国内的百度、腾讯、阿里
新浪和华为
都使用了NoSQL数据库
我们看一下NoSQL兴起的原因
大家都用过Excel
在Web编程上面的大家也许用过
MySQL和SQL Server
这样一些数据库
那么这些数据库
都是属于关系数据库
关系数据库发展到今天
已经无法满足Web2.0的需要
大家可以看到在前面的课程当中
我给大家讲解了Web1.0时代
2.0时代和3.0时代的
一些主要特点
这里面我们有一个简单的例子
大家来看一下
在Web2.0时代一分钟内
新浪发送2万条微博
苹果可以下载4.7万次应用
淘宝卖出6万件商品
人人网产生30万次的访问
百度产生了90万次的查询需求
大家可以看到
数据是非常海量
而传统的关系数据库
无法满足海量数据的管理
另外
数据的高并发性
在这里得到了体现
同时有90万次的查询下
向百度的服务器提出了搜索要求
另外呢
还有一些高扩展性
我们的Web应用千变万化
可能对字段的需求在不断地增加
而传统的数据库是无法对字段
进行简单的扩展
所以这样一些问题都导致了
我们必须要有新的数据管理模式
第二点,“One size fits all”
也就是用一个数据库
在我们的例子当中
就是用一个数据库来解决
所有的业务场景已经是不可能的
那么关系数据库作为一个
统一的数据模型
既被用数据分析
也被用于在线业务
在这样的模型下
就会产生一个问题
数据分析强调的是高吞吐量
我要产生大量的计算结果
而在线业务需要低延时
这个意思就是说
你要快速告诉我答案我等不及
所以这种不同的数据要求
导致我们需要采用
不同的数据管理模式
前面我们讲的Hadoop平台
大数据分析平台以及它所包含的
文件系统适合对数据的分析
对于在线业务
我们可以采用MongoDB
这样的非关系数据库
来解决低延时的问题
第三
关系数据的关键属性
与2.0相比呢
web2.0网站通常不要求
严格的数据库事务
等会儿我们会通过表的对比
来跟大家做进一步的讲解
而且Web2.0
不要求严格的读写实时性
同时Web2.0不包含
大量复杂的结构化查询
大家用过搜索
只需要简单的
把一些关键字放到搜索框里面
你就会得到一些查询的结果
不需要大家去指定是用户名呢
还是作者呢
还是时间呢
去掉了复杂的
这样一种结构化查询
这里我们有一张表
大家一起来一下
当然我从这表中
选取若干个问题
跟大家一起来进行探讨
第一个,标准
我们有一个原理
学过我们关系数据库的人
都知道
我们的关系数据库
是以关系代数作为理论的
它有理论的支撑
那么NoSQL呢
没有
目前没有统一的理论基础
我们几届图灵奖的获得者
都是关系数据库的领头人
数据规模呢
我们看一下现在是大数据
传统的关系数据库只能说大
而NoSQL呢
我们可以说超大
传统的关系数据库很难做什么
横向的扩展
什么叫横向
就是表的列的个数
也就是我们在关系数据库当中
所说的字段
你想添加字段
对于关系数据库来说
对于后续的编程来说
会带来很大的麻烦
所以在关系数据库的设计当中
大家一开始
要做好数据库的需求分析
定好字段
你会跟客户说我定好了
不用再改了
因为一改
你的代码会做相应地很大的变化
而这样一种方式并不适合Web
我们NoSQL数据库
很容易通过添加字段
因为实际上它并没有字段
通过添加一些列来达到
水平扩展这样一个目的
我们看模式
关系数据库
要严格遵循一些约束条件
NoSQL不存在数据库模式
它很灵活
同时对于查询来说
关系数据库
很快就能获得查询结果
但是它的查询复杂度比较高
而我们的NoSQL
它可以通过
MapReduce来加速查询
但是在复杂查询的方面
仍然不如关系数据库
实际上刚才放的幻灯片上
我们已经跟大家讲了
在Web2.0时代实际上
我们很少有复杂的关系查询
这后面还有很多问题
我们在这里选一个
比如说这个一致性问题
我们关系数据库是强一致性
NoSQL是弱
也就是强弱之分
并不代表
非关系数据库没有一致性
大家看一下
大家在采用关系数据库的时候
都知道
当你的事务被中断的时候
你要被滚回的
回复到事务执行之前的状态
而对于NoSQL数据库
我们没有这样的要求
只要最终一致就行了
也就是经过某一个时间间隔之后
你能够达到一致
我并不要求实时性的一致
大家可以看到
对于一致性的条件
非关系型数据库是进行了放松的
同时也就增加了它的灵活性
还有一些对比
大家可以在课后
做一个仔细的阅读
另外标准化这个方面呢
也是我们关注的
关系数据库已经标准化了
我们已经有了结构化查询语言
而NoSQL没有行业标准
不同的NoSQL数据库
都有自己的查询语言
这个StoneBraker
图灵奖的获得者就讲了
NoSQL缺乏统一的查询语言
将会拖慢NoSQL的发展
当然这个需要我们后续的学者
和工作者去进一步地努力
通过刚才这样
一个表的分析
我们进行一个总结
关系数据库有它的优点和缺点
NoSQL数据库
也有它的优点和缺点
在这里我们列出来了
比如说优势
关系数据库呢
是以完善的关系代数理论
作为基础
有严格的标准
支持事物的四性
借助索引机制
可以实现高效的查询
技术成熟
有理论有标准
复杂性的查询又能够获得
但它的劣势是什么
大家讲到了
它的水平扩展性和垂直扩展性
都比较差
对于海量数据的存储和管理
它显得过于死板
非关系数据库的出现
可以支持超大规模数据的管理
灵活的数据模型
可以更好地支持Web2.0的应用
扩展性比较好
但是没有理论基础
对于复杂查询性能又不高
大多不实现强一致性
所以数据的完整性
不一定能够保障
技术还不大成熟
同学们会问
老师让我在选择
一个应用开发的时候
我到底是选择关系数据库
还是选择非关系数据库呢
其实这些都没有问题
你可以去混合使用
我们可以看到
关系数据库和NoSQL的
非关系数据库各有优缺点
无法取代
关系数据库
主要应用的场景有哪些呢
电信银行领域的关键业务数据
需要保证数据的一致性
大家可以看到
银行里的存款
必须实时地保持一致
不能说
我这个时间段我存的是五块钱
下一个时间段我看的是六块钱
最后变成再下一个时间段
你又回到五块钱
所以对于银行这样的业务
一定要保持强一致性
NoSQL数据库应用的场景呢
互联网企业
互联网企业的一些数据分析技术
所以一般的公司
在大规模数据分析的时候
都会采用一些混合的架构
比如说亚马逊公司
就使用不同类型的数据库
来支撑它的电子商务应用
它对于“购物篮”购物车
这样的临时的数据
采用非关系数据库
对于产品和订单信息
放在关系数据库里面
对于历史订单信息呢
文字比较多的呢
它放到
MongoDB这样的文档数据库里面
大家看到了没有
是一种混合的架构
好
刚才
我们对NoSQL数据库呢
做了一个简要的介绍
了解了它的优缺点
比关系数据库做了一个对比
我们简单地看一下
NoSQL数据库有哪些类型
大家需要在这里记住的是
键值数据库
Key_Value
大家是不是觉得很熟悉
在前面MapReduce的课程当中
大家还记不记得
计数的那个操作
Key是单词
value是什么呢
这个单词出现的次数
我们还有列族数据库
大家在这里可以看到列族
我们英文叫什么呢
Column-family
也就是这样一些
列组成的一个家族
这样一些列组成的一个家族
我们简单地可以说
这样一种列族
可能对应着某一种应用
这样一个列族
可能对应着另外一种应用
我们把不同的应用
根据不同的key呢
组合到一起
如果你还有新的应用
你可以直接在后面进行添加即可
水平地扩展
我们还有
文档数据库和图形数据库
大家看一下
文档数据库
Document_id对应的Document
每一个文档都有自己的编号
图形数据库就是这样
一种图的结构
那么这是
我们NoSQL数据库的四大类型
针对这四大类型我们都有相应的
一些产品供大家使用
图数据库
文档数据库
列族数据库
Key_Value数据库
大家可以根据自己的应用
去选择相应的数据库类型
来完成自己的应用开发
我们有键值数据库
我们把它详细地列出来
大家可以看到非常熟悉的名字
谁在用键值数据库呢
百度云
大家是不是经常使用啊
那么在这样一个数据库当中呢
我们既有关系数据库看到没有
我们也有这样一个键值数据库
那么键值数据库
成为一个缓冲的方案啊
因为首先是从关系数据库中
获取数据
保存到键值数据库里面
然后再从键值数据库获取数据
去在浏览器进行响应
对于列族数据库
大家熟悉的有哪些呢
大家可以已经看到了Facebook
已经看到了Twitter
还看到了什么呢
Ebay
对于文档数据库
这里我们举了一个例子
在文档数据库当中
如果你要存学生的
学号、姓名、性别、年龄、系
这样一些
在关系数据库当中
你必须逐一定义好
并且告诉关系数据库
学号是什么类型的
姓名是字符串类型的
年龄可能是数值类型的
我们可以看到
在文档数据库当中
所有的数据类型
都以双引号的形式来进行存储
把它当做字符串
在具体的应用当中
你把这个字符串读取出来
再去进行相应的处理即可
文档数据库的产品有哪些呢
同样
百度云也用到了文档数据库
我们的MongoDB
它用的就是MongoDB
以及NBC News
图计算是目前比较研究
比较热门的一个场景
我们的谷歌的排序算法
后面就可以看到
就是一个典型的图计算
图计算当中有哪些呢
网络公司Cisco
Adobe这个文档公司
以及T-Mobile
它们都是有了图数据库的支持
介绍了
NoSQL数据库的四个类型之后
我们对今天的课程做一个小结
我们介绍了
NoSQL数据库的相关知识
我们知道NoSQL数据库
满足了大数据时代
各种非结构化数据的存储需求
得到越来越广泛的应用
传统的关系数据库
和NoSQL数据库各有所长
不存在一方取代另外一方
两者共存
差异化的需求满足应用程序
我们对NoSQL数据库的主要的
四种类型的不同产品
以及不同的应用场合
进行了一定的了解
今天的课程就到这里
感谢同学们的观看
-第1讲 大数据与数据挖掘概述
-第2讲 频繁项集和关联规则的基本概念
-第3讲 Apriori算法
-第4讲 Apriori算法的改进与兴趣度度量
-第5讲 分类的基本概念
-第6讲 决策树
--第6讲 决策树
-第7讲 简单贝叶斯分类
-第8讲 聚类的基本概念
-第9讲 K-Means & K-Medoids Clustering
--第9讲 K-Means & K-Medoids Clustering
-第四章 聚类算法--习题
-第10讲 大数据处理平台Hadoop
-第11讲 MapReduce编程
-第12讲 大数据处理平台Spark
-第13讲 NoSQL数据库
-第14讲 Web信息检索简介
-第15讲 信息检索之倒排索引
-第16讲 信息检索之TFIDF
--Video
-第17讲 信息检索之相似度排序
-第18讲 Web搜索之链接分析
-第19讲 Web搜索之PageRank
-第20讲 Lucene信息检索平台
-第七章 Web链接分析--习题
-第21讲 推荐系统简介
-第22讲 推荐系统之协同过滤
-第23讲 Mahout数据挖掘平台
-第24讲 信息过滤评价体系
-第八章 推荐系统--习题一
-第八章 推荐系统--习题二
-综合编程题