1、#,数据库原理及应用,电子科技大学,-,张凤荔,数据库系统原理与开发,7.1 NoSQL,数据库概述,CAP理论,BASE,最终一致性的相关理论,NoSQL,的基础,【,本节学习目标,】,一、,CAP,理论,分布式事务,分布式数据库的不一致-原因,分布式环境的3个核心需求,CAP理论的核心,1.,分布式事务,分布式数据库系统中的事务是一个分布式操作序列,被操作的数据分布在不同的结点上。,分布式事务ACID特征,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。,网络、服务器、软件故障,-,不一致?,2,、,
2、分布式数据库的不一致,-,原因,在分布式DBMS环境中,事务在下列情况会导致不一致性:,1,)数据项的多个副本,-,如何保证多个副本的数据一致性?,2,)单点网络故障,-,如何通知所有的节点?事务是否继续?,3,)通信网络的故障,-,数据通讯?,4,)分布式提交等,-,两阶段、三阶段提交过程中的问题?,2,、,分布式环境的3个核心需求,在分布式的环境下设计和部署系统时,有3个核心的需求:CAP对应一致性(Consistency),可用性(Availability)和分区容忍性(Partition Tolerance),Consistency,Availability,Partition Tol
3、erance,4,CAP理论的核心,:,一个分布式系统不可能同时很好的满足一致性、可用性和分区容错性这三个需求,最多只能同时较好的满足两个。,CA-单点集群,满足一致性,可用性的系统,,CP-满足一致性,分区容忍性的系统,,AP-满足可用性,分区容忍性的系统,,.,一个例子CAP的基本思想,网络两个节点共享数据V,初始值为V0,算法A在节点1,算法B在节点2,要求算法A 写入V新值V1,算法B 读取 V1。正常情况有3个步骤来完成:,1)算法A 写入新V1。,2)节点1 发送信息V1给节点2。,3)算法 B 读取的V1并对其进行操作。,网络断开时,第3步的V1?。,例子分析,-,节点1和节点2
4、数据不一致的原因,:,1.,网络断开,节点1和节点2 就会包含不一致的 V 值。,2,网络协议是异步消息,-,延迟,3,网络协议是同步消息,导致同样的等待问题,CAP思想,让 A 和 B 是高可用的(最小的延迟提供服务)并且让所有的 节点冗余网络的分区(丢失信息,无法传递信息,硬件无法提供服务,处理失败),那么就得面临这样的情况:,V,的值就会不一致。,例子分析,-,节点1和节点2数据不一致的原因,:,1.,网络断开,节点1和节点2 就会包含不一致的 V 值。,2,网络协议是异步消息,-,延迟,3,网络协议是同步消息,导致同样的等待问题,CAP思想,让 A 和 B 是高可用的(最小的延迟提供服
5、务)并且让所有的 节点冗余网络的分区(丢失信息,无法传递信息,硬件无法提供服务,处理失败),那么就得面临这样的情况:,V,的值就会不一致。,目的,:,CAP是为了探索不同应用的一致性C与可用性A之间的平衡,,在网络或其他原因,通过牺牲一定的一致性C来获得更好的性能与扩展性,在有分隔发生,选择可用性A,集中关注分隔的恢复,需要分隔前、中、后期的处理策略,及合适的补偿处理机制。,选择什么样的方式:放弃,?放弃?放弃,?,BASE,二,.BASE,Basically Available-,基本可用;系统能够基本运行,一直提供服务。,Soft-state-,软状态,/,柔性事务。,Soft state
6、,可以理解为,无连接,的,而,Hard state,是,面向连接,的;系统不要求一直保持强一致状态。,Eventual Consistency-,最终一致性 系统在某个时刻达到最终一致性。,BASE,定义为,CAP,中,AP,的衍生,在分布式环境下,,BASE,是数据的属性,,BASE,强调基本的可用性,按照功能划分数据库,.,1.,BASE,特点,ACID,是事物的特征,,A,(原子性),C,(一致性),I,(隔离性),D,(持久性),,ACID,的特点是强一致性、隔离性、采用悲观保守方法、难以变化;,BASE,的特点是弱一致性、可用性优先、采用乐观方法、适应变化并且简单快捷。,对数据不断增
7、长的系统,大数据环境下系统的可用性及分隔容忍性的要求要高于强一致性,很难满足事务要求的,ACID,特性。,2.,最终一致性,一致性模型,强一致性:要求无论更新操作实在哪一个副本执行,之后所有的读操作都要能获得最新的数据。,弱一致性:用户读到某一操作对系统特定数据的更新需要一段时间,称这段时间为“不一致性窗口”。,最终一致性:弱一致性的一种特例,保证用户最终能够读取到某操作对系统特定数据的更新。,3.,最终一致性,两个角度,一致性可以从客户端和服务器端两个角度来看,客户端关注的是多并发访问的更新过的数据如何获取的问题,对多进程并发进行访问时,更新的数据在不同进程如何获得不同策略,决定了不同的一致
8、性。,服务器关注的是更新如何复制分布到整个系统,以保证最终的一致性。一致性因为有并发读写才出现问题,一定要结合并发读写的场地应用要求。如何要求一段时间后能够访问更新后的数据,即为最终一致性。,4.,最终一致性,模型,1,)因果一致性:无因果关系的数据的读写不保证一致性。,2,)读已之所写一致性:用户自己总能够读到更新后的数据。,3,)会话一致性:把读取存储系统的进程限制在一个会话范围内。,4,)单调读一致性:后续的操作都不会返回到给数据之前的值。,5,)单调写一致性:来自同一个进程的更新操作按照时间顺序执行,也叫时间轴一致性。,5.,最终一致性,-,一致性与可用性的决择,很多,web,实时系统对读一致性的要求很低,有些场合对写一致性要求并不高。允许实现最终一致性。,很多,web,应用来说,并不要求这么高的实时性,,SNS,类型的网站,从需求以及产品设计角 度,就避免了复杂多表的关联查询。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,,SQL,的功能被极大的弱化了。,海量大数据的存储和管理,需要对关系数据库进行补充,总结,NOSQL,的基础,遵守,CAP,定理,高性能,高可用性和可伸缩性。,高可扩展性、分布式计算、低成本、架构的灵活性,半结构化数据、没有复杂的关系。,没有标准化、有限的查询功能(到目前为止)、最终一致不直观等。,本节学习结束!,