CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得
分区容错的意思是,区间通信可能失败
一致性的意思是,写操作之后的读操作,必须返回该值
可用性的意思是只要收到用户的请求,服务器就必须给出回应。(对外可访问)
一般来说,网页的更新不是特别强调一致性。短时期内,一些用户拿到老版本,另一些用户拿到新版本,问题不会特别大。当然,所有人最终都会看到新版本。所以,这个场合就是可用性高于一致性
CAP原则是NOSQL数据库的基石
而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须要实现的。所以我们只能在一致性和可用性之间进行权衡

NoSQL系统通常注重性能和扩展性,而非事务机制(事务就是强一致性的体现)
传统的SQL数据库的事务通常都是支持ACID的强事务机制。A代表原子性,即在事务中执行多个操作是原子性的,要么事务中的操作全部执行,要么一个都不执行;C代表一致性,即保证进行事务的过程中整个数据库的状态是一致的,不会出现数据花掉的情况;I代表隔离性,即两个事务不会相互影响,覆盖彼此数据等;D表示持久化,即事务一旦完成,那么数据应该是被写到安全的,持久化存储的设备上(比如磁盘)。
NoSQL系统仅提供对行级别的原子性保证,也就是说同时对同一个Key下的数据进行的两个操作,在实际执行的时候是会串行的执行,保证了每一个Key-Value对不会被破坏
BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE是下面三个术语的缩写:
- 基本可用(Basically Available)
- 软状态(Soft state)
- 最终一致(Eventually consistent)
传统关系型数据库ACID原则:
在传统的关系型数据库中,事务是一个不能分割的操作单元
- 1.原子性
事务要么全部执行,要么全部拒绝,没有任何中间状态 - 2.一致性
数据库的完整性约束不会被任何事务破坏 - 隔离性
多个事务完全隔离,互不影响
- 隔离性
- 持久性
事务完成之后,事务对数据库的变更会永久存在数据库中
- 持久性
网友评论