NoSQL数据库
NoSQL 即 Not Only SQL是对非关系型数据库的泛称。NoSQL数据库不遵循传统关系型数钢库的ACID原则,并且他弃了磁度存储,转而走向了内存存储。
CAP定理
NoSQL数据库大多应用于分布式应用系统中相对于传统关系型数据库的ACID理论,NoSQL理论基础主要基于CAP原则(也叫CAP定理,见下图)。CAP定理中的C、A、P分别指Consistency(一致性)、Availability(可用性)、Parition iolerance(分区容铺性)。NoSQL理论对分布式系统中的三个特性进行了如下归纳:
1)一致性(C)。一致性被称为原子对象,任何的读/写都应该看起来是“原子”的。写后面的读一定能读到前面写的内容,所有的读/写请求都好像被全局排序。
2)可用性(A)。对任何非失败节点都应该在有限时间内给出请求的回应(请求的可终止性)。
3)分区容错性(P)。允许节点之间丢失任意多的消息,当网络分区发生时,节点之间的消息可能会完全丢失。
CAP定理由Eric Brewer教授提出,并由Lynch等人于2002年证明了Brewer的猜想。
CAP定理告诉我们,一个分布式系统不可能同时满足一致性、可用性和分区容错性这三个需求,最多只能同时满足两个。根据CAP定理,可以根据不同的应用场景选取其中的两个作为设计方向。
目前,NoSQL数据库作为实时应用系统数据库一般遵循AP原则。满足AP原则的NoSQL数据库一般采用Key-Value内存数据库,如Redis。但CAP定理正在面临诸多质疑。CAP的概念定义比较模糊,而且CAP没有考虑不同的基础架构、不同的应用场景、不同的网络基础和用户需求,而C、A、P在这些不同场景中的含义可能完全不同,这种无差异化的定义直接导致了概念的不明确,同时也成为CAP被质疑的源头。
不过,CAP定理仍然有显著的指导意义,它至少告诉我们在设计分布式系统和选择NoSQL数据库产品时需要考虑的基本方向,它还提醒我们分布式系统与传统系统架构存在的差异性,你必须根据实际的应用慎重选择分布式框架。