一、NoSQL概述
1、特点
灵活的可扩展性;
灵活的数据模型;
和云计算的紧密结合。

2、传统的关系型数据库性能上的缺陷?
(1)无法满足海量数据的管理需求;
(2)无法满足高并发的需求;
(3)无法满足高扩展性和高可用性的需求。
MySQL集群方式的缺陷:
复杂性,整个集群部署管理配置都非常复杂;
延迟性:当主库压力比较大时,就会带来较大的延迟;
扩容问题:整个集群压力过大时,需求增加新机器对整个数据集进行重新分区,非常复杂。

3、NoSQL兴起的原因?
(1)关系型数据库无法满足web2.0的需求;
(2)数据模型的局限性;
(3)web2.0关系型数据库很多特性没有发挥,比如事务机制和高效的查询机制。

4、NoSQL与关系型数据库的比较?
(1)数据库原理方面:关系型数据库具备完备的关系代数理论作为基础;NoSQL缺乏理论基础。
(2)数据规模方面:关系型数据库很难实现横向扩展,纵向扩展非常有限;NoSQL具有非常好的水平扩展能力。
(3) 数据库模式方面:关系型数据库要定义严格的数据库模式,并且严格遵守;NoSQL数据模型非常灵活。
(4)查询效率方面:关系型数据库对于适当数据量级的查询效率高,数据量级大查询效率下降;NoSQL未构建面向复杂查询的索引,查询性能差。
(5)事务一致性方面:关系型数据库遵循ACID事务模型可以保证事务强一致性;NoSQL采用base模型,只能保证最终一致性。
(6)数据完整性方面:关系型数据库具有保证完整性的完备机制;NoSQL不具备完整性约束。
(7)可用性方面:关系型数据库随着规模增大,为了保证严格的一致性,可用性就被削弱;NoSQL具备很好的可用性,能够在短时间内迅速返回所需的结果。
(8)标准化方面:关系型数据库遵循SQL标准,比较完善;NoSQL未形成统一的行业标准。
(9)技术支持方面:关系型数据库很多都是商业数据库;NoSQL很多属于开源产品。
(10)可维护方面:关系型数据库管理员维护;NoSQL维护较为复杂。
(11)两种数据库的应用场景:
关系型数据库:电信银行的关键业务系统;NoSQL:互联网企业以及一些传统企业的非关键业务。

5、NoSQL的类型

nosql性能 nosql的技术特点_nosql性能


(1)键值数据库:Redis、Memcached、SimpleDB

数据模型:键是一个字符串对象;值可以是任意类型的数据,比如整型、字符型、数组、列表、集合等。

典型应用:涉及频繁读写、拥有简单数据模型的应用内存缓存,比如购物车、配置文件、会话、参数等,存储配置和用户数据信息等移动应用。

不适用情形:没有通过值查询的途径;在键值数据库中,不能通过 两个或以上的键来关联数据,产生故障时不可以回滚。

(2)列族数据库:BigTable、HBase、Cassandra
数据模型:列族。
典型应用:分布式数据存储和管理,数据在地理上分布于多个数据中心的应用程序,可以容忍副本中存在短期不一致情况的应用程序,拥有动态字段的应用程序。
优点:查找速度快,可扩展性强,容易进行分布式扩展,复杂性低。
缺点:功能较少,大都不支持强事务一致性。

(3)图数据库:Neo4J
数据模型:图结构。
典型应用:专门用于处理具有高度相互关联关系的数据,比较适合于社交网络、模式识别、依赖分析、推荐系统以及路径寻址等问题。
优点:灵活性高,支持复杂的图形算法,可用于构建复杂的关系图谱。

(4)文档数据库:MongoDB、CouchDB

数据模型:键值。

典型应用:存储、索引并管理面向文档的数据或类似的半结构化数据。

优点:json数据格式。支持更好的并发性。

nosql性能 nosql的技术特点_数据库_02


二、CAP理论

nosql性能 nosql的技术特点_数据库_03


1、C:consistency,一致性

一致性:指任何一个读操作总能读到之前完成的写操作的结果。

2、A:availability,可用性
可用性:指快速获取数据,可以在确定的时间内返回操作结果,保证每个请求不管成功或失败都有响应。

3、P:partition tolerance:分区容错性

分区容错性:指当出现网络分区的情况时(系统中的一部分节点无法和其他节点进行通信),分离的系统也能够正常运行。

nosql性能 nosql的技术特点_mysql_04


4、BASE和最终一致性

BASE:basically available soft-state and eventual consistency,NoSQL的理论基石,与关系型数据库中的ACID是对应关系。

(1)基本可用性:指一个分布式系统的一部分发生问题变得不可用时其他部分任然可以正常使用,允许出现失败的情形。

(2)软状态:指状态可以有一段时间不同步,具有一定的滞后性。硬状态:数据库必须一直保持数据库一致性。

(3)最终一致性:高并发的数据访问操作下,后续操作是否能够获取最新的数据。

nosql性能 nosql的技术特点_nosql性能_05


nosql性能 nosql的技术特点_nosql性能_06


nosql性能 nosql的技术特点_nosql性能_07


三、从NoSQL到NewSQL

nosql性能 nosql的技术特点_mysql_08


四、MongoDB:文档数据库

MongoDB:基于分布式文件存储的开源数据库系统。

nosql性能 nosql的技术特点_mysql_09


nosql性能 nosql的技术特点_关系型数据库_10


nosql性能 nosql的技术特点_数据库_11