精华内容
下载资源
问答
  • 分布式数据库CAP理论

    千次阅读 2017-10-27 17:10:46
    传统数据库与NoSQL数据库 传统的关系型数据库在功能支持上通常很宽泛,从简单的键值查询,到复杂的多表联合查询再到事务机制的支持。而与之不同的是,NoSQL系统通常注重性能和扩展性,而非事务机制(事务就是强一致...

    传统数据库与NoSQL数据库

    传统的关系型数据库在功能支持上通常很宽泛,从简单的键值查询,到复杂的多表联合查询再到事务机制的支持。而与之不同的是,NoSQL系统通常注重性能和扩展性,而非事务机制(事务就是强一致性的体现)。

    传统的SQL数据库的事务通常都是支持ACID的强事务机制。A代表原子性,即在事务中执行多个操作是原子性的,要么事务中的操作全部执行,要么一个都不执行;C代表一致性,即保证进行事务的过程中整个数据加的状态是一致的,不会出现数据花掉的情况;I代表隔离性,即两个事务不会相互影响,覆盖彼此数据等;D表示持久化,即事务一但完成,那么数据应该是被写到安全的,持久化存储的设备上(比如磁盘)。

    NoSQL系统仅提供对行级别的原子性保证,也就是说同时对同一个Key下的数据进行的两个操作,在实际执行的时候是会串行的执行,保证了每一个Key-Value对不会被破坏。例如MongoDB数据库,它是不支持事务机制的,同时也不提倡多表关联的复杂模式设计,它只保证对单个文档(相当于关系数据库中的记录)读写的原子性。

    CAP理论

    CAP指的是Consistency(强一致性)、Availability(可用性)、Partition tolerance(分区容错性)。

    强一致性:系统在执行过某项操作后仍然处于一致的状态。在分布式系统中,更新操作执行成功后所有的用户都应该读到最新的值,这样的系统被认为是具有强一致性的。 等同于所有节点访问同一份最新的数据副本。

    可用性:每一个操作总是能够在一定的时间内返回结果,这里需要注意的是”一定时间内”和”返回结果”。一定时间指的是,在可以容忍的范围内返回结果,结果可以是成功或者失败。

    分区容错性:指当出现网络分区的情况时(即系统中的一部分节点无法和其他节点进行通信)分离的系统也能够正常运行。理解为在存在网络分区的情况下,仍然可以接受请求。节点crash或者网络分片都不应该导致一个分布式系统停止服务。

    CAP既适用于NoSQL数据库,也适用于关系型数据库。它是NoSQL数据库、关系型数据库,乃至一切分布式系统在设计数据多个副本之间读写一致性问题时需要遵循的共同原则。

    经典CAP图

    这里写图片描述

    CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个要求,最多只能同时较好的满足其中的两个

    CAP的证明很简单,假设两个节点集{G1, G2},由于网络分片导致G1和G2之间所有的通讯都断开了,如果在G1中写,在G2中读刚写的数据, G2中返回的值不可能G1中的写值。由于A的要求,G2一定要返回这次读请求,由于P的存在,导致C一定是不可满足的。

    放弃P:如果想避免分区容错性问题的发生,一种做法是将所有的数据(与事务相关的)都放在一台机器上。虽然无法100%保证系统不会出错,但不会碰到由分区带来的负面效果。当然这个选择会严重的影响系统的扩展性。

    放弃A:使用网络分区,等数据一致后再去取数据,因此在等待期间系统无法对外提供服务,失去可用性。

    放弃C:这里所说的放弃一致性,并不是完全放弃数据一致性,而是放弃数据的强一致性,而保留数据的最终一致性。以网络购物为例,对只剩下一件库存的商品,如果同时接受到了两份订单,那么较晚的订单将被告知商品告罄。
      
    因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP原则三大类:

    • CA-单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强。
    • CP-满足一致性,分区容错的系统,通常可用性不是特别高
    • AP-满足可用性,分区容错性的系统,通常可能对一致性要求低。

    根据CAP理论,在分布式存储系统中最多只能实现上面的两点,而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须要实现的。

    所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。

    • CA:传统Oracle、mysql数据库
    • AP:Tokyo Cabinet、SimpleDB、couchDB、Riak
    • CP:redis、mongodb

    关于BASE

    随着时代的发展可以发现,关系数据库的很多特性往往没有用武之地。很多web实时系统并不需要严格的数据库事务,对读的一致性要求很低。有些场合对写一致性要求也并不高。允许实现最终一致性。

    很多web应用对数据库的实时性要求也不高。比如说发一条消息之后,过几秒甚至十几秒之后。订阅者才看到这条动态是完全可以接受的。因此牺牲一致性换取可用性,这是目前分布式数据库产品的一种方向。

    BASE就是为了解决关系型数据库强一致性引起的可用性降低而提出的解决方案。ACID是关系数据库中的事务的四个性质,在NoSQL数据库中BASE(碱)和ACID(酸)是对应关系。

    BASE其实就是下面三个术语的缩写:

    • 基本可用(Basically Available)
    • 软状态(Soft state)
    • 最终一致(Eventually consistent)

    它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上的改观。

    解决CAP

    根据一些专家的分析,CAP并不是一个严谨的定律,并不是牺牲了Consistency,就一定能同时获得Availability和Partition Tolerance。还有一个很重要的因素是Latency,在CAP中并没有体现。在现在NoSQL以及其他一些大规模设计时,A和P并不是牺牲C或部分牺牲C的借口,因为即使牺牲了C,也不一定A和P,并且C不一定必须要牺牲。

      淘宝一天就处理了1亿零580万,而12306一天处理的交易仅仅166万条 ,如果从并发性上来说,淘宝的并发量远比12306大,但天猫的商品信息,促销数据都可以做缓存,做CDN,而12306的“商品”是一个个座位,这些座位必须通过后端数据库即时查询出来,状态的一致性要求很高。

      从这点上看,12306的商品信息很难利用到缓存,因此12306查看“商品”的代价是比较大的,涉及到一系列的后端数据库操作,从这个角度讲,12306的复杂度是高于天猫的。 淘宝的商品相对独立,而12306商品之间的关联性很大,由于CAP定律限制,如果其商品的一致性要求过高,必然对可用性和分区容错性造成影响。

      因此,业务设计上,如果找到一条降低一致性要求时,还能保证业务的正确性的业务分拆之路。举个例子,火车票查询时,不要显示多少张,而是显示“有”或“无”,或者显示>100张,50~100,小于50等,这样就可以减小状态的更新频率,充分使用缓存数据。

      CAP 理论说在一个系统中对某个数据不存在一个算法同时满足 Consistency, Availability, Partition-tolerance。注意,这里边最重要和最容易被人忽视的是限定词“对某个数据不存在一个算法”。这就是说在一个系统中,可以对某些数据做到 CP, 对另一些数据做到 AP,就算是对同一个数据,调用者可以指定不同的算法,某些算法可以做到 CP,某些算法可以做到 AP。

    最后

    虽然设计师仍然需要在分区的前提下对数据一致性和可用性做取舍,但具体如何处理分区和恢复一致性,这里面有不计其数的变通方案和灵活度。当代CAP实践应将目标定为针对具体的应用,在合理范围内最大化数据一致性和可用性的“合力”。这样的思路延伸为如何规划分区期间的操作和分区之后的恢复,从而启发设计师加深对CAP的认识,突破由于CAP理论的表述而产生的思维局限。

    分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过RPC/RMI之间通信和调用,对外提供服务和组内协作。

    集群:不同的多台服务器上面部署相同的模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。

    参考文章:http://www.cnblogs.com/hxsyl/p/4381980.html

    展开全文
  • CAP (Consistency, Availability, tolerance to network Partitions) 理论论文
  • 数据库——CAP理论

    千次阅读 2017-12-15 14:09:43
    CAP理论 这个理论是由美国著名科学家,同时也是著名互联网企业Inktomi的创始人Eric Brewer在2000年PODC(Symposium on Principles of Distributed Computing)大会上提出的,后来Seth Gilbert 和 Nancy lynch两人也...

    CAP理论

    这个理论是由美国著名科学家,同时也是著名互联网企业Inktomi的创始人Eric Brewer在2000年PODC(Symposium on Principles of Distributed Computing)大会上提出的,后来Seth Gilbert 和 Nancy lynch两人也证明了CAP理论的正确性,虽然在后来近十年的时间很多人对CAP理论提出了很多异议,但是在NoSQL的世界中,它还是非常有参考价值的。它的意思是,一个分布式系统不能同时满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。


    1. 一致性(Consistency):任何一个读操作总是能读取到之前完成的写操作结果,也就是在分布式环境中,多点的数据是一致的;
    2. 可用性(Availability):每一个操作总是能够在确定的时间内返回,也就是系统随时都是可用的。
    3. 分区容忍性(Partition Tolerance): 在出现网络分区(比如断网)的情况下,分离的系统也能正常运行。

    由于一致性、可用性和分区容忍性这三方面只能选择两个,所以大多数NoSQL系统都会根据自己的设计理念来进行相应的选择,但由于许多NoSQL数据库都以水平扩展著称,所以在CAP的选择上面,都倾向于坚持分区容忍性,而放弃一致性或者可用性,它们的做法主要是通过消减关系型和事务相关的功能。


    关注一致性和可用性的 (CA)

    这些数据库对于分区容忍性方面比较不感冒,主要采用复制(Replication)这种方式来保证数据的安全性,常见的CA系统有:

    1. 传统关系型数据库,比如Postgres和MySQL等(Relational) ;
    2. Vertica (Column-oriented) ;
    3. Aster Data (Relational) ;
    4. Greenplum (Relational) ;

    关注一致性和分区容忍性的(CP)

    这种系统将数据分布在多个网络分区的节点上,并保证这些数据的一致性,但是对于可用性的支持方面有问题,比如当集群出现问题的话,节点有可能因无法确保数据是一致性的而拒绝提供服务,主要的CP系统有:
    1. BigTable (Column-oriented) ;
    2. Hypertable (Column-oriented);
    3. HBase (Column-oriented) ;
    4. MongoDB (Document) ;
    5. Terrastore (Document) ;
    6. Redis (Key-value) ;
    7. Scalaris (Key-value) ;
    8. MemcacheDB (Key-value) ;
    9. Berkeley DB (Key-value) ;

    关于可用性和分区容忍性的(AP)

    这类系统主要以实现"最终一致性(Eventual Consistency)"来确保可用性和分区容忍性,AP的系统有:

    1. Dynamo (Key-value);
    2. Voldemort (Key-value) ;
    3. Tokyo Cabinet (Key-value) ;
    4. KAI (Key-value) ;
    5. Cassandra (Column-oriented) ;
    6. CouchDB (Document-oriented) ;
    7. SimpleDB (Document-oriented) ;
    8. Riak (Document-oriented) ;

    展开全文
  • CAP定理(CAP theorem) 在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer’s theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点: ...CAP理论的核心是:一个分布式系统不

    CAP定理(CAP theorem)

    在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer’s theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:

    • 一致性(Consistency) (所有节点在同一时间具有相同的数据)
    • 可用性(Availability) (保证每个请求不管成功或者失败都有响应)
    • 分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)

    CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。

    因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

    CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。例如:HBase、Redis、MongoDB(默认CP,也可以设置为CA)
    AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

    在这里插入图片描述

    BASE

    BASE:Basically Available, Soft-state, Eventually Consistent。 由 Eric Brewer 定义。

    由于CAP理论最多只能同时较好的满足两个,所以BASE理论出现,它是NoSQL数据库通常对可用性及一致性的弱要求原则:

    • Basically Available --基本可用
    • Soft-state --软状态/柔性事务。 “Soft state” 可以理解为"无连接"的, 而 “Hard state” 是"面向连接"的
    • Eventually Consistency – 最终一致性, 也是 ACID 的最终目的。
    展开全文
  • CAP理论是分布式数据库中很重要的理论基础。CAP即Consistnecy 一致性,Avaliability 可用性,Partition-tolerance分区容忍性 的缩写。在分布式系统中,三者不可兼得,只能得到其中之二。所以就有了三个分类:CA...
    
    

    CAP理论是分布式数据库中很重要的理论基础。CAP即Consistnecy 一致性,Avaliability 可用性,Partition-tolerance分区容忍性 的缩写。在分布式系统中,三者不可兼得,只能得到其中之二。所以就有了三个分类:CA数据库,CP数据库,AP数据库。

     

    CA数据库不考虑分区容忍性,对应现实中是数据库就是普通的关系型数据库RDBMS。

    CP数据库考虑的是一致性和分区容忍性,这种数据库对分布式系统内的通信要求比较高,因为要保持数据的一致性,需要做大量的交互。

    AP数据库考虑的是实用性和分区容忍性,即外部访问数据,可以更快的得到回应。这时候,数据的一致性就可能得不到满足。比如一个数据,可能外部一个进程在改写这个数据,同时另一个进程在读这个数据,此时,数据显现是不一致的。但是有一点,就是数据库会满足一个最终一致性的概念,即过程可能是不一致的,但是到某一个终点,数据就会一致起来。

    展开全文
  • CAP 是分布式数据库中的重要理论之一。为了更好的理解分布式数据库,我们需要对 CAP 理论有个简单的理解。 1.CAP 概述 CAP 证明了,对于一个分布式数据库系统,存在这样三个指标: C_onsistent_(一致性。写操作是 ...
  • 根据CAP理论,一致性(C),可用性(A),分区容错性(P),三者不可兼得,...但是,对于CAP理论也有一些不同的声音,数据库大师MichaelStonebraker就撰文《ErrorsinDatabaseSystems,EventualConsistency,andtheCAPTheorem》
  • 数据库ACID和CAP理论

    2018-07-24 21:12:00
    对于数据库领域,有两个重要且经典的理论,这两个理论是单点数据库系统及分布式数据库系统(Nosql,通常强调分布式扩展)构建的基础理论。通过这篇文章,希望能帮助小伙伴理解这两个理论的具体含义。 一、ACID是RDBMS...
  • CAP理论是设计分布式web系统的一个很关键的定律,其主要内容是(非官方定义): When designing distributed web services, there are three properties that are commonly desired: consistency, availability, ...
  • 分布式数据库CAP原理

    2020-12-08 22:41:26
    CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。 而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能...
  • 数据库CAP和BASE理论

    2021-03-15 15:08:11
    1. CAP理论 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想。2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP。之后,CAP理论正式成为分布式计算领域的公认定理。 ...
  • 1.数据库中的CAP原理:CAP+BASE ...CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求 最多只能同时较好的满足两个. 因此,根据CAP原理将NoSQL数据库分成了满足CA原则,满足
  • 1:CAP理论核心 CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。 因此,根据CAP原理将NoSQL数据库分成了满足CA原则、满足CP原则和满足AP...
  • 理论计算机科学中,CAP定理(CAP theorem),又被称作布鲁尔定理(Brewer's theorem),它指出对于一个分布式计算系统来说,不可能同时满足以下三点 选项 具体意义 一致性(Consistency) 所有节点访问...
  • CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。 而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。 所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能...
  • 和上一篇博文一样,这次我们依旧以 Riak 为案例,来分析 CAP 理论在一个实际的分布式数据库中的作用。...这次我们来看看,在 Riak 这样的分布式key-value数据库中,CAP理论是怎么起作用的。 Nodes/Writes/Reads...
  • 雷兽的数据库CAP乱谈之(一)阐述 今天有人问我cap,找了https://my.oschina.net/lilw/blog/169776这片文字, 下面是cap那篇文字的解释: 所谓CAP理论,即: Cosistency 数据的一致性 ...
  • 分布式数据库CAP原理和BASE理论 传统的ACID分别是什么? 原子性 Atomicity 一致性 consistency 隔离性 isolation 永久性 durability 什么是CAP,三选二 一致性 consistency 可用性 availability 分区容错性 ...
  • 一、关系型数据库的ACID 1、什么是事务 事务时作为单个逻辑单元执行的一系列操作,这些操作作为一个整体一起向系统提交,要么都执行,要么都不执行。事务时一个不可分割的工作逻辑单元。 2、事务的四大特性ACID ...
  • ACID特性和分布式系统CAP理论事物的介绍和认识事务通常指的是数据库事务,不要把它太概念化,就是一些列操作要么都执行要么都不执行,把这些操作封装在一个不可分割的单元体里这么理解就可以。 //备注最常见用来举例...
  • Redis分布式数据库原理CAP(理论篇)

    千次阅读 2018-10-05 12:34:01
    关系型数据库遵循ACID规则 事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1、A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的...
  • CAP理论和BASE理论为基础的NoSQL数据库开始出现。 1.在我们传统数据库中的ACID分别是 原子性(Atomicity),一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在...
  • CAP定理又被称作是布鲁尔定理,是加州大学伯克利分销计算机科学家里克在2000年提出,是分布式理论基础。 CAP:是分布式系统的理论基础 【一致性 可用性 分区容错性】 BASE理论是对CAP中AP的补充 【基本可用 软...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 916
精华内容 366
关键字:

数据库cap理论