大数据技术原理与应用学习笔记(五)
本系列历史文章
大数据技术原理与应用学习笔记(一)
大数据技术原理与应用学习笔记(二)
大数据技术原理与应用学习笔记(三)
大数据技术原理与应用学习笔记(四)
NoSQL数据库
NoSQL概述(Not Only SQL)
NoSQL特点
- 灵活的扩展性
- 灵活的数据模型
- 和云计算紧密结合
MySQL集群方式的缺陷
- 复杂性
- 延迟性
- 扩容问题
传统关系型数据库缺陷
- 无法满足海量数据的管理要求
- 无法满足数据高并发需求
- 无法满足高扩展性和高可用性要求
NoSQL兴起的原因
- 关系型数据库无法满足Web 2.0需求
- 数据模型的局限性
- Web 2.0关系型数据库中许多特性没有发挥
NoSQL与关系型数据库的比较
- 数据库原理方面,关系数据库有完备的关系代数理论作为基础,而NoSQL缺乏统一的理论基础;
- 数据规模方面,关系型数据库很难实现横向扩展,纵向扩展非常有限,而NoSQL具有非常好的水平可扩展性;
- 数据库模式方面,关系型数据库定义了严格的数据库模式,而且要严格遵守,而NoSQL的数据模型非常灵活;
- 在查询效率方面,关系型数据库适当量级查询效率较高,当量级较大时,效率会下降,而NoSQL在未构建面向复杂查询的索引查询性能差;
- 在事务一致性方面,关系型数据库遵循ACID事务模型可以保证事务强一致性;
- 在数据完整性方面,关系型数据库具有保证完整性的完备机制,而NoSQL不能实现完整性约束;
- 在可用性方面,关系型数据库保证了严格的一致性,所以其可用性就削弱,而NoSQL具有非常好的可用性,响应快;
- 在标准化方面,关系型数据库遵循SQL标准,而NoSQL暂未形成通用的行业标准;
- 在技术支持方面,关系型数据库已有商业版关系数据库,拥有强大的技术支持,而NoSQL仍处于初期阶段,大多为开源产品;
- 在可维护性方面,关系型数据库需要管理员维护,而NoSQL还没有成熟的基础,且实践维护较为复杂。
NoSQL的四大类型
NoSQL典型数据库通常包括键值数据库、列族数据库、文档数据库和图数据库。
键值数据库——键值对
列族数据库——列族
文档数据库——文档
图数据库——图
NoSQL的理论基石
CAP理论
C: 一致性(任意读操作总能读到之前写操作的结果)
A: 可用性(快速获取数据,在确定时间内返回结果)
P: 分区容忍性(当出现网络分区(一部分节点无法与其他节点通信时)也能正常运行)
(注:3个条件实现时最多实现2个。)
如:
CA(放弃P): 把所有与事务相关的放到同一台机上。(如:MySQL)
CP(放弃A): 受影响服务器需等待数据一致。(如:Neo4j,HBase)
AP(放弃C): 允许系统返回不一致的数据。(如:CouchDB,Cassandra)
BASE与ACID
BASE的意义:
- Basically Available:基本可用(允许分区失败)
- Soft-State: 软状态(可有一段时间不同步(滞后性))
- Eventual consistency:最终一致性(可有不一致,但最终一定一致)
与BASE对应的ACID
ACID的意义: - Atomicity:原子性(事物必须是原子工作单元)
- Consistency: 一致性(所有数据保持一致)
- Isolation:隔离性(并发事务间修改隔离)
- Durability:持久性(事务完成后,对系统的影响是永久性的)
设数据冗余份数为N,更新数据时需保证写完成的节点数W,读取时要读的节点数R,
满足强一致性的要求:W + R > N;
满足弱一致性的要求:W + R ≤ N;
从NoSQL到NewSQL数据库
最主要的是了解应用场景:
分析型应用:NewSQL
事务型应用:OldSQL
互联网应用:NoSQL
MongoDB——(C++、分布式、开源)
这部分请参考厦大数据库博客:Ubuntu下MongoDB安装与使用教程
补充
关系型数据库与NoSQL数据库都起着不同的作用,彼此不可互相取代
项目 | 优势 | 劣势 |
---|---|---|
关系型数据库 | 以完善的关系代数理论作为基础,有严格标准,支持事务ACID四性,借助索引机制可实现高效查询,技术成熟,有专业公司的技术支持。 | 可扩展性交差,无法较好支持海量数据存储,数据模型过于死板,事务机制影响了系统性能等。 |
NoSQL数据库 | 支持超大规模数据存储,数据模型灵活,强大的横向扩展能力 | 缺乏数学理论基础,复杂查询性能不高,大都不能实现事务一致性,很难实现数据完整性,技术尚不成熟,缺缺乏专业团队技术支持,维护较困难等。 |