nosql的base和cap_关系型数据库遵循ACID规则 NoSQL 数据库BASE CAP
事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性:
1、A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。
比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。
2、C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。
例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。
3、I (Isolation) 独立性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。
4、D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。
RDBMS vs NoSQL
RDBMS
- 高度组织化结构化数据
- 结构化查询语言(SQL) (SQL)
- 数据和关系都存储在单独的表中。
- 数据操纵语言,数据定义语言
- 严格的一致性
- 基础事务
NoSQL
- 代表着不仅仅是SQL
- 没有声明性查询语言
- 没有预定义的模式
-键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理
- 高性能,高可用性和可伸缩性
CAP定理(CAP theorem)
在计算机科学中, CAP定理(CAP theorem), 又被称作 布鲁尔定理(Brewer's theorem), 它指出对于一个分布式计算系统来说,不可能同时满足以下三点:
一致性(Consistency) (所有节点在同一时间具有相同的数据)
可用性(Availability) (保证每个请求不管成功或者失败都有响应)
分隔容忍(Partition tolerance) (系统中任意信息的丢失或失败不会影响系统的继续运作)
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容忍性的系统,通常性能不是特别高。
AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
NoSQL的优点/缺点
优点:
- 高可扩展性
- 分布式计算
- 低成本
- 架构的灵活性,半结构化数据
- 没有复杂的关系
缺点:
- 没有标准化
- 有限的查询功能(到目前为止)
- 最终一致是不直观的程序
CAP理论的核心是:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。
BASE是NoSQL数据库通常对可用性及一致性的弱要求原则:
Basically Availble --基本可用
Soft-state --软状态/柔性事务。 "Soft state" 可以理解为"无连接"的, 而 "Hard state" 是"面向连接"的
Eventual Consistency --最终一致性 最终一致性, 也是是 ACID 的最终目的。
ACID vs BASE
ACIDBASE
原子性(Atomicity)
基本可用(Basically Available)
一致性(Consistency)
软状态/柔性事务(Soft state)
隔离性(Isolation)
最终一致性 (Eventual consistency)
持久性 (Durable)
NoSQL 数据库分类
类型
部分代表
特点
列存储
Hbase
Cassandra
Hypertable
顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储
MongoDB
CouchDB
文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储
Tokyo Cabinet / Tyrant
Berkeley DB
MemcacheDB
Redis
可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储
Neo4J
FlockDB
图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储
db4o
Versant
通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库
Berkeley DB XML
BaseX
高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。
nosql的base和cap_关系型数据库遵循ACID规则 NoSQL 数据库BASE CAP相关推荐
- mysql遵循acid_mysql关系型数据库遵循ACID规则
事务在英文中是transaction,和现实世界中的交易很类似,它有如下四个特性: 1.A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功 ...
- 关系型数据库的ACID规则
1.A (Atomicity) 原子性 原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚. 比如 ...
- 常见的几个非关系型数据库(NoSQL)、非关系型和关系型的区别
目录 非关系型数据库的特点 -------------------------------. 1.关系型数据库 ------------------------------------ 2. 关系型 ...
- 谈谈对数据库中ACID、CAP、BASE的认识
2019独角兽企业重金招聘Python工程师标准>>> ACID.CAP.BASE的区别与联系 这得从关系型数据库关系型数据库(RDBMS)和非关系型数据库(NoSQL)说起. RD ...
- MySQL数据库是非关系_MySQL(数据库)基础知识、关系型数据库yu非关系型数据库、连接认证...
什么是数据库? 数据库(Database):存储数据的仓库 高效地存储和处理数据的介质(介质主要是两种:磁盘和内存) 数据库系统:DBS(Database System):是一种虚拟系统,将多种内容关 ...
- 数据库指南-SQL与NoSQL
什么是数据库 我们的应用程序保存和执行业务逻辑,那么数据呢?这就需要数据库来保存了.数据库(database),就是我们保存数据的地方.一般来讲,数据比硬件和程序更宝贵,因此数据库是价值的核心.专业定 ...
- 关系型数据库到文档型数据库的跨越
1. 简介 在文档型NoSQL数据库出现之前,许多开发者一直绞尽脑汁思考,希望能想出更好的处理关系型数据库技术的方法,如今他们可能要跳出那种思维而另辟蹊径.本文将介绍关系型数据库和分布式文档型数据库的 ...
- Hadoop基础教程-第10章 HBase:Hadoop数据库(10.1 NoSQL介绍)(草稿)
第10章 HBase:Hadoop数据库 10.1 NoSQL介绍 10.1.1 NoSQL简介 随着互联网技术(互联网+,物联网)发展,特别是大数据时代到来,我们需要存储处理更多数据,这种需求远远超 ...
- Smartbi智分析一网打尽50种主流数据库:本地+SQL+NoSQL +多维
Smartbi智分析是新一代云端SaaS数据分析平台,在数据分析领域有着无与伦比的天然优势,除了拥有EXCEL融合分析.ETL.透视分析等众多王牌的功能外,最主要的优势还是在于数据源的支持上.Smar ...
- 关系型数据库第五章笔记---数据库设计
文章目录 数据库设计概述 数据库设计 数据库设计的特点 1. 数据库建设的基本规律 2. 结构(数据)设计和行为(处理)设计相结合 数据库设计方法 数据库设计的基本步骤 需求分析 需求分析的任务(续) ...
最新文章
- linux oracle 配置监听器
- jrebel热部署不起作用_5种SpringBoot热部署方式,你用哪种?
- 分享.NET开发中经常用到的十大软件(转)
- OpenCL用于计算机领域的13个经典案例
- 浅谈CS0433的错误的类型
- Kubernetes中部署SpringBoot应用
- HDU 2531 (BFS搜索)
- ajax上传图片 java_Java+ajax+图片上传
- 【机器视觉】——焦距计算物体实际尺寸计算
- 文字竖排 字间距 css 设置
- go操作excel单元格合并
- 服务器 系统 版本查询
- 外企计算机英语,职场英语:外企生存十大必备英语词汇
- 电商产品设计:拆单规则和业务场景详解
- Redis:配置文件
- Oracle数据库中的级联查询、级联删除、级联更新操作教程
- 一篇博客教会你写序列化工具
- HMailServer 5.6版本完整版汉化包
- Games101----Transformation(2)
- Python黑帽编程2.5 函数
热门文章
- 谷粒商城:Oss endpoint can‘t be empty.
- linux soc 程序崩溃,SOC、FLCK和内存之间的关系,以3900X+X570为例(更新PCIE4.0)
- HTML5 桌面通知:Notification API的基础用法
- FFmpeg学习(3)——视频中音频文件提取
- SLAM 领域国内外优秀实验室/开源方案(汇总)
- 论文笔记_SLAM_Simultaneous Localization And Mapping: A Survey of Current Trends in Autonomous Driving
- 随手记_选方向读论文发论文相关
- 一分钟详解机器人手眼标定MATLAB及C++实现
- tensorflow中的优化器
- Angular2 的 View Encapsulation(样式封装)