分布式数据库的CPA
来源于尚硅谷谷周阳
C:Consistency (强一致性)
P:Partition tolerance(分区容忍性)
A:Availability ( 可用性)
Consistency | Availability | Partition tolerance |
---|---|---|
Every read receives the most recent write or an error (每次都读取到最新数据) | Every request receives a (non-error) response – without guarantee that it contains the most recent write(可以收到响应,不保证包含最新数据) | The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes(分布式) |
CPA 的3进2
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。
而由于当前的网络硬件肯定会出现延迟丢包等问题,所以只能满足两点。
分区容忍性是我们必须需要实现的,因为要实现分布式。
所以我们只能在一致性
和可用性
之间进行权衡,没有NoSQL系统能同时保证这三点。
C:强一致性 A:高可用性 P:分布式容忍性
CA 传统Oracle数据库
AP 大多数网站架构的选择(分布式、高可用性)
CP Redis、Mongodb(分布式、强一致性)
注意:分布式架构的时候必须做出取舍。一致性和可用性之间取一个平衡。大多数web应用,其实并不需要强一致性。
因此牺牲C换取P,这是目前分布式数据库产品的方向
一致性与可用性的决择
对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地
数据库事务一致性需求
很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低, 有些场合对写一致性要求并不高。允许实现最终一致性。
数据库的写实时性和读实时性需求
对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说发一条消息之 后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。
对复杂的SQL查询,特别是多表关联查询的需求
任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是SNS类型的网站,从需求以及产品设计角 度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。
CAP理论的核心是:
一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
经典CPA图
BASE
BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。
BASE其实是下面三个术语的缩写:
基本可用(Basically Available)
软状态(Soft state)
最终一致(Eventually consistent)
它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观
。
为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式来完成,这里BASE就是解决这个问题的办法
分布式数据库的CPA相关推荐
- 开源分布式数据库中间件
转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性 ...
- tp3分布式session mysql_分布式数据库支持
ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置`DB_DEPLOY_TYPE` 为1 可以采用分布式数据库支持.如果采用分布式数据 ...
- 基于Sql Server 2008的分布式数据库的实践(一)
原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选 ...
- 区块链技术的本质是分布式数据库
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链技术是基于比特币应用提出的一个概念,他是一个融合了多种技术的一个集成式创新.目前区块链的应用早已不仅仅局限在比特币 ...
- 重磅!分布式数据库解决方案Apache ShardingSphere毕业成为顶级项目
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 全球最大的开源软件基金会 Apache 软件基金会(以下简称 Ap ...
- 网易分布式数据库多活架构的演进与实践
本文根据周劲松老师在[deeplus直播第228期]线上分享演讲内容整理而成. 周劲松 网易杭州研究院资深研发工程师 来自网易数据科学中心,目前是网易分布式数据库DDB及网易数据运河NDC项目负责人. ...
- 【CSTC白皮书】分布式数据库发展路径研究(附下载)
来源:中国软件测评中心本文多图,建议阅读5分钟本文探讨分布式数据库发展路径研究. 公众号(DatapiTHU)后台回复"20210304"获取完整版PDF文件 分布式数据库是传统数 ...
- 从分布式数据库的CAP特性说起
在传统RDBM系统中,对于事务处理必须保证为一个完整的逻辑处理过程,具备ACID四个特性,A Atonomy 事务处理的原子性,要么成功,要么失败 ,C Consistency 一致性,数据库必须保持 ...
- 79期:Faceu的分布式数据库实战访谈
云周刊 本周要点 查看更多 [大会回顾]2016云栖大会南京峰会 2016云栖大会南京将于4月27日举行.本届大会"大数据"."云安全"."云市场&q ...
最新文章
- 【Linux】linux使用mplayer播放摄像头
- SaltStack:Salt SSH
- 数学建模——支持向量机模型详解Python代码
- Hello,SDK!数据采集黑客松大赛重磅开启,Mac投影仪任你拿!
- 这么香的技术还不快点学起来,不吃透都对不起自己
- 【PTA天梯赛CCCC -2017决赛L1-6 】整除光棍 (20 分)(大数模拟除法)
- spring 主从表_听听京东架构师浅谈,MySQL binlog 主从同步
- 程序员很平凡,但从事着不平凡的工作!
- js 将input、textarea、Select等控件替换成标签(span)
- [转载] python中的MySQLdb模块
- 解决Emacs输出PDF文件时Tex缺少.sty文件的方法
- 《构建之法》(第一、二、十六章)读书笔记
- Android Studio真机调试,数据库sqllite时,Multiple dex files define Landroid/support/v4/R 问题...
- 堆排序(C语言实现)
- TINA_PRO_6中文版.rar
- js ajax实现五极联动,前端见微知著AngularJS备忘篇:温故而知新,可以为师矣
- 算法:URL短地址压缩算法-短网址映射。
- 力扣 LCP 42. 玩具套圈 (数学公式反推)
- 细菌觅食算法BFOA
- python语言strip的作用_Python语言中的strip()的理解