存储理论
1、ACID
1.1、什么是ACID
ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性.
注意:
事务是由一些列对系统数据进行访问或者更新操作组成的一个程序执行单元,狭义的事务指的是数据库事务,这里主要来说分布式场景的事务
1.2、特征
1.2.1、原子性(atomicity)
一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。
1.2.2、一致性(consistency)
在事务开始之前和事务结束以后,数据库的完整性没有被破坏,侧重于整体
1.2.3、隔离性(isolation)
数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
1.2.4、持久性(durability)
事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
2、CAP
2.1、什么是CAP
对于数据库来说,因为受到主机资源、容量配置等限制,导致我们无法用一个数据库、一台主机来存储所有的数据,所以在实际的工作中,我们的所有信息都是分散的存储在不同的主机上,这就是 -- 分布式数据存储。 对于分布式数据存储来说,传统的ACID就不太适合了,所以针对当前环境的特性就梳理出来一种为事务服务的理论 CAP -- 它是指在一个分布式系统中,一致性、可用性、容错性三者不可兼得。
2.2、特征
2.2.1、一致性(Consistency)
更新操作成功后,所有节点在同一时间的数据完全一致。
2.2.2、可用性(Availability)
用户访问数据时,系统是否能在正常响应时间返回结果。
2.2.3、容错性(Partition Tolerance)
分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。
2.3、总结
CAP理论告诉我们 一个分布式系统不可能同时满足一致性可用性和分区容错性这三个基本需求,最多同时满足这三个当中的两项
一般来说:我们都是在一致性和分区容错性之间寻找所谓的平衡
3、BASE
3.1、什么是base
BASE 理论是针对 NoSQL 数据库而言的,它是对 CAP 理论中一致性(C)和可用性(A)进行权衡的结果,
源于提出者自己在大规模分布式系统上实践的总结。其核心思想是无法做到强一致性,但每个应用都可以根据自身的特点,采用适当方式达到最终一致性。
BASE理论是由eBay的架构师提出。
3.2、特征
3.2.1、基本可用(Basically Available)
分布式系统在出现不可预知故障时,系统允许损失部分可用性,即保证核心功能或者当前最重要功能可用。
比如说:访问的网页速度稍微降低一些,用户量大的时候,实时限流等
3.2.2、软状态(Softstate)
允许系统数据存在中间状态,但不会影响系统的整体可用性,即允许不同节点的副本之间存在暂时的不一致情况。
比如:集群系统的多个节点之间运行xx秒是数据同步延迟。
3.2.3、最终一致(Eventually Consistent)
这是三个特点中最重要的,它强调的是系统中所有主机的数据副本,在一段时间同步后,最终能够达到一致状态,而不需要实时保证数据副本一致。
3.3、总结
最终一致性是 BASE 原理的核心,也是 NoSQL 数据库的主要特点,通过弱化一致性,提高系统的可伸缩性、可靠性和可用性。
而且对于大多数 Web 应用,其实并不需要强一致性,因此牺牲一致性而换取高可用性,是多数分布式数据库产品的方向。