- [CAP Theorem in DBMS](#cap-theorem-in-dbms) - [What is the CAP Theorem](#what-is-the-cap-theorem) - [Consistency](#consistency) - [Availability](#availability) - [Partition Tolerance](#partition-tolerance) # CAP Theorem in DBMS 在网络共享数据系统设计中固有的权衡令构建一个可靠且高效的系统十分困难。CAP理论是理解分布式系统中这些权衡的核心基础。CAP理论强调了系统设计者在处理distributed data replication时的局限性。CAP理论指出,在分布式系统中,只能同时满足`一致性、可用性、分区容错`这三个特性中的两种。 > CAP理论中,对分布式系统提出了如下三个特性: > - consistency(一致性) > - availability(可用性) > - partition tolerance(分区容错) 由于该底层限制,开发者必须根据其应用的需要谨慎的平衡这些属性。设计者必须决定优先考虑哪些特性,从而获取最佳的性能和系统可靠性。 ## What is the CAP Theorem CAP理论是分布式系统的基础概念,其指出分布式系统中所有的三个特性无法被同时满足。 ### Consistency `Consistency`代表network中所有的节点都包含相同的replicated data拷贝,而这些数据对不同事务可见。其保证分布式居群中所有节点返回相同、最新的数据。其代表所有client对数据的视角都相同。存在许多不同类型的一致性模型,而CAP中的一致性代指的是顺序一致性,是一种非常强的一致性形式。 `ACID`和`CAP`中都包含一致性,但是这两种一致性所有不同: - 在`ACID`中,其代表事务不能破坏数据库的完整性约束 - 在`CAP`中,其代表分布式系统中相同数据项在不同副本中的一致性 ### Availability Availability代表每个对数据项的read/write request要么能被成功处理,要么能收到一个操作无法被完成的响应。每个non-failing节点都会为所有读写请求在合理的时间范围内生成响应。 ### Partition Tolerance partition tolerance代表在连接节点的网络发生错误、造成两个或多个分区时,系统仍然能够继续进行操作。通常,在出现network partition时,每个partition中的节点只能彼此互相沟通,跨分区的节点通信被阻断。 这意味着,即使发生network partition,系统仍然能持续运行并保证其一致性。network partition是不可避免地,在网络分区恢复正常后,拥有partition tolerance的分布式系统能够优雅的从分区状态中恢复。