noSQL(noSQL = Not only SQL)
关系数据库管理系统(RDMBSs)
A relational model of data for large shared data banks —— E.F.Codd's.
NoSQL的拥护者们提倡运用非关系型的数据存储.
一、关系型数据库遵循ACID原则
事物----transaction。和现实世界的中的交易很类似,它有如下四个特性:
1、A(Atomicity)原子性
即事物里的操作要么全部做完,要么全部不做。事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
2、C(Consistency)一致性
即数据要一直处于一个状态,事务的运动不会改变数据库原本的一致性约束。例如现有完整性约束a+b = 10,如果一个事务改变了a,那么必须改变b,使得事务结束后 依然满足a+b = 10,否则事务失败。
3、I(Isolation)独立性
所谓的独立性是指并发的事务之间不会互相影响。如果一个事务要访问的数据正在被另一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务 的影响。
4、D(durability)持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
二、分布式系统
概念:分布式系统是由多台计算机和通信的软件组件通过计算机网络连接组成。它是建立在网络之上的系统软件。
特性:高度的内聚性和透明性。
应用平台:pc、工作站、局域网和广域网。
优点:1、可靠性(容错)(一台服务器的系统崩溃并不影响到其余的服务器。)。
2、可扩展性 (分布式计算系统可根据需要增加更多的机器)。
3、资源共享 (数据共享)
4、灵活性 (易安装、实施、调试新的服务)
5、更快的速度
6、开发系统 (本地或远程都可以访问到该服务)
7、更高的性能 (相对集中的计算机网络集群可以提供更高性能)
缺点:1、故障排除和诊断问题
2、软件 (更少的软件支持是分布式计算系统的主要缺点)
3、网络 (网络基础设施问题:传输问题、高负荷、信息丢失)
4、安全性 (数据的安全性和共享的风险)
三、NoSQL
概念:非关系型数据库,是对不同于传统关系型数据库的数据库管理系统的统称。
用途:用于超大规模的数据存储
why:随着数据和日志成倍的增加。如果我们要对这些用户进行挖掘,SQL已经不适应这些应用了,NoSQL数据库的发展能更好的处理这些大的数据。
四、RDBMS VS NoSQL
RDBMS:
1).高度组织化结构数据化
2)结构化查询语言(SQL)
3).数据和关系都能存储在单独的表中
4).数据操纵语言,数据定义语言
5).严格的一致性
6).基础事务
NoSQL:
1).不仅仅代表SQL
2).没有声明性查询语言
3).没有预定义的模式
4).键-值对存储、列存储、文档存储、图形数据库
5).最终一致性,而非ACID属性
6).非结构化和不可预知的数据
7).CAP定理
8).高性能,高可用性和可伸缩属性
五、CAP定理 (CAP theorem)
概念:CAP定理,又布鲁尔定理。它对于一个分布计算系统来说,它不可能同时满足以下三点:
(1).一致性(consistency) 所有节点在同一个时间具有相同的数据
(2). 可用性(Availability) 保证每个请求不管成功失败都有响应
(3). 分隔容忍(Partition tolerance) 系统中任意信息的丢失或者失败不会影响系统继续运行
核心:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好满足两个。
因此,CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:
CA----单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP----满足一致性,分区容忍的系统,通常性能不是特别高。
AP-----满足可用性,分区容忍的系统,通常可能对一致性要求低一些。