`

acid与acp

 
阅读更多

传统关系型数据库事务acid

原子性、一致性、隔离性、持久性

1、A (Atomicity) 原子性
原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。

2、C (Consistency) 一致性
一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

例如库存,多少个并发,库存最终量不能错。

例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。
也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性。

3、I (Isolation) 独立性/隔离性
所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。
比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。

4、D (Durability) 持久性
持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

--------------------- 本文来自 纳尔逊皮卡丘 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/zhaobig/article/details/78630843?utm_source=copy 

 

 

分布式数据库cap

NOSQL数据模型和CAP原理

http://blog.sina.com.cn/s/blog_7800d9210100t33v.html

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

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

互联网项目,P是必须满足的,

C和A,通常选择A

即PA

而传统企业级项目,能会是PC

 

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

 

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理论

BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。接下来看一下BASE中的三要素:

1、基本可用

基本可用是指分布式系统在出现不可预知故障的时候,允许损失部分可用性----注意,这绝不等价于系统不可用。比如:

(1)响应时间上的损失。正常情况下,一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果,但由于出现故障,查询结果的响应时间增加了1~2秒

(2)系统功能上的损失:正常情况下,在一个电子商务网站上进行购物的时候,消费者几乎能够顺利完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面

2、软状态

软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时

3、最终一致性

最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的,它完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性和BASE理论往往又会结合在一起。

 

分享到:
评论

相关推荐

    php.acp和html.acp文件

    本文将详细探讨`php.acp`和`html.acp`文件以及它们在EditPlus中的作用。 `php.acp`和`html.acp`是EditPlus中的自动补全配置文件,它们为用户提供了一种快速输入代码的方式。自动补全功能允许程序员在输入代码时,...

    EditPlus代码自动完成所需的.acp文件

    `*.acp`文件是EditPlus中的代码自动补全配置文件,用于扩展其内置的代码提示功能。在本文中,我们将详细探讨如何利用这些`.acp`文件提高开发效率。 1. **什么是`.acp`文件?** `.acp`文件是EditPlus中的自定义代码...

    阿里云ACP考题.pdf

    阿里云ACP.pdf

    xcss.acp文件

    同时,EditPlus也提供了方便的内置工具,如代码模板管理和用户词典,与`xcss.acp`文件相结合,可以构建出一套强大的CSS编写环境。 总之,`xcss.acp`文件是EditPlus提升CSS编写效率的重要工具。通过利用这个文件,...

    阿里云云计算ACP复习资料PPT

    阿里云云计算ACP复习资料,知识点

    PMI-ACP中文手册

    PMI-ACPhandbook 中文版,详细介绍了PMI-ACP认证相关知识

    ACP2727.pdf

    Tiny SOT23-6, 2A, 1MHz LED Driver DC/DC erter designed to drive LED arrays....current allows ACP2727 to be used in different 7' to 10' LCD panel backlights (3*13 LED arrays typically).

    acp.rar_ACP

    标题中的"acp.rar_ACP"表明这是一个与ACP(可能是“自动分类程序”或某种特定算法的缩写)相关的RAR压缩文件。描述提到这是一个用MATLAB编写的程序,用于实现ACP算法。MATLAB是一种强大的数学计算环境,常用于科学...

    云计算ACP培训教程.zip

    云计算ACP.

    acp注入器源码

    常见的注入技术包括SQL注入、XSS(跨站脚本)注入等,但"ACP注入"可能是开发者自定义的一种特定类型的注入方法,可能与特定的框架或平台有关。 源码分析可以提供以下几方面的知识: 1. **编程语言**:首先,我们...

    【ACP】PMI-ACP Exam Prep

    刚刚考过PMI体系下的ACP,备考ACP敏捷认证必备资料,共享给小伙伴们

    ACP认证笔记.doc

    ACP认证笔记.doc认证学习笔记

    editplus的php自动完成文件php.acp

    因此,定期更新php.acp以保持与最新PHP版本的兼容性是非常重要的。此外,EditPlus还支持用户自定义的自动完成列表,用户可以创建自己的.acp文件来包含项目特有的函数或类,这样在团队开发中可以提高协作效率。 总的...

    论文研究 - 吸烟,ACP

    在本文中,我们研究了男性精索静脉曲张样本中ACP1基因型与吸烟与不孕症之间的关系。 研究了126例精索静脉曲张患者。 通过DNA分析确定ACP1基因型,并通过SPSS软件进行统计分析。 通常,低活性* A / * B基因型对不育...

    Android代码-AndroidAcp

    支持批量权限申请,不需要重写 onRequestPermissionsResult 方法,Activity 与 Fragment 中用法一致,一句话搞定。 处理权限拒绝,或勾选不再询问,导致不能正常使用功能的提示框,支持跳转设置权限界面开启权限,...

    ACP练习题三.pdf

    ACP练习题,我就是全部五套题循环做,同时多看书,记住基础概念,最终得到ACP7A的成绩,希望些资料对大家有帮助。

    acp 好帮手

    acp 好帮手

    ACP考纲-中文版.pdf

    ACP考纲-中文版,有需要ACP考试的同学可以获取参考,包括敏捷原则等内容。

    ACP BROCHURE.pdf

    对特斯拉公司电机技术的前身,ACP-150进行产品规格书介绍。The Power Electronics Unit (PEU) houses the propulsion power inverter, the battery recharge electronics and power line filters,motor controls, ...

    acp_commander_gui_156.jar

    acp_commander.jar升级版功能相同

Global site tag (gtag.js) - Google Analytics