首页 > 其他分享 >ACID 和 BASE

ACID 和 BASE

时间:2023-05-21 13:13:27浏览次数:34  
标签:事务 数据库 系统 BASE 一致性 ACID

谈到这里,有必要先说一下 ACID 和 BASE 的差别。传统关系型数据库系统的事务都有 ACID 属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。下面我逐一做下解释:原子性:整个事务中的所有操作,要么全部完成,要么全部失败,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。隔离性:两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时中间某一时刻的数据。两个事务不会发生交互。持久性:在事务完成以后,该事务对数据库所做的更改便持久地保存在数据库之中,并不会被回滚。

事务的 ACID 属性保证了数据库的一致性,比如银行系统中,转账就是一个事务,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和构成一个完整的逻辑过程,是不可拆分的原子操作,从而保证了整个系统中的总金额没有变化。

然而,这对于我们的分布式系统来说,尤其是微服务来说,这样的方式是很难满足高性能要求的。我们都很熟悉 CAP 理论——在分布式的服务架构中,一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance),在现实中不能都满足,最多只能满足其中两个。

所以,为了提高性能,出现了 ACID 的一个变种 BASE。Basic Availability:基本可用。这意味着,系统可以出现暂时不可用的状态,而后面会快速恢复。Soft-state:软状态。它是我们前面的“有状态”和“无状态”的服务的一种中间状态。也就是说,为了提高性能,我们可以让服务暂时保存一些状态或数据,这些状态和数据不是强一致性的。Eventual Consistency:最终一致性,系统在一个短暂的时间段内是不一致的,但最终整个系统看到的数据是一致的。

可以看到,BASE 系统是允许或是容忍系统出现暂时性问题的,这样一来,我们的系统就能更有弹力。因为我们知道,在分布式系统的世界里,故障是不可避免的,我们能做的就是把故障处理当成功能写入代码中,这就是 Design for Failure。

标签:事务,数据库,系统,BASE,一致性,ACID
From: https://www.cnblogs.com/ukzq/p/17418486.html

相关文章

  • Connections could not be acquired from the underlying database!
    报错内容:五月19,20239:02:42上午org.apache.catalina.core.StandardWrapperValveinvoke严重:在路径为的上下文中,Servlet[springmvc]的Servlet.service()引发了具有根本原因的异常Requestprocessingfailed;nestedexceptionisorg.springframework.transaction.CannotCreat......
  • MAY 2022-Composite Experience Replay-Based Deep Reinforcement Learning With Appl
    摘要:本文提出了一种基于深度强化学习(RL)的控制方法,以提高学习效率和效果来解决风电场控制问题。具体地,设计了一种新的复合体验重放(CER)策略,并将其嵌入到深度确定性策略梯度(DDPG)算法中。CER提供了一种新的采样方案,通过在奖励和时间差异(TD)误差之间进行权衡,可以深入挖掘存储变......
  • STI比赛任务一:【智能问答baseline】
    比赛简介百度搜索首届技术创新挑战赛:赛道一答案抽取STI比赛任务一:【比赛数据分析与长尾发现】STI比赛任务一:【NLP常见优化算法和上分Trick】STI比赛任务一:【智能问答baseline】任务定义本赛题任务是:给定一个用户搜索问题集合Q,基于每个搜索问题q,给定搜索引擎检索得到的网页文档集合......
  • Connections could not be acquired from the underlying database!
    报错内容:五月19,20239:02:42上午org.apache.catalina.core.StandardWrapperValveinvoke严重:在路径为的上下文中,Servlet[springmvc]的Servlet.service()引发了具有根本原因的异常Requestprocessingfailed;nestedexceptionisorg.springframework.transaction.CannotCre......
  • HTB ACADEMY-Stack-Based Buffer Overflows on Linux x86 WRITE UP
    WewereabletogainSSHaccesstoaLinuxmachinewhosepasswordwasreusedbyanothermachineduringourpenetrationtest.Onthismachine,wehaveastandarduser"htb-student"whocanleaveamessagetotheadministratorusingaself-written......
  • 图片URL转Base64编码
    @Slf4jpublicclassUrlToBase64Util{/***图片URL转Base64编码*@paramimgUrl图片URL*@returnBase64编码*/publicstaticStringimageUrlToBase64(StringimgUrl){URLurl=null;InputStreamis=null;ByteArrayOutputStream......
  • Spartacus base-url 访问 - CSR 端需要修改的配置
    假设我想把Spartacus的url后面增加customurl访问,比如以前通过https://spartacus-demo.eastus.cloudapp.azure.com/electronics-spa/访问,现在通过https://spartacus-demo.eastus.cloudapp.azure.com/electronics-spa/jerry访问。在CSR即客户端渲染模式下,在app.modul......
  • 数据库 | Database
    1入门1.1元数据数据可以分为两类:元数据和实际数据.元数据是描述数据的数据,也可以被称为"数据的数据".它们提供了关于数据的信息,例如数据的来源,格式,大小,类型,版本,创建日期,更新日期等等.元数据通常用于数据管理和数据发现,以帮助用户更好地理解和使用实际......
  • 四、HBase平台安装
    解压:tar-zxvfhbase-1.2.1-bin.tar.gz配置文件(/usr/local/src/hbase-1.2.1/conf路径下):vihbase-env.shexportJAVA_HOME=/usr/local/src/jdk1.8.0_181/(27)配置文件:vihbase-site.xmlhbase.rootdir/usr/local/src/hbase-1.2.1/HBASEhbase.cluster.distributedtrue......
  • Hbase - hbase hbck介绍
     HBaseFsck(hbck)是一种命令行工具,可检查hbase集群的region一致性和表完整性的问题,同时可以修复损坏的集群数据 hbasehbck[options]options:-fixAssignments-fixMeta-fixHdfsHoles-fixHdfsOrphans-fixTableOrphans-fixhdfsOverlaps-sidelineBigOverlaps-maxOverla......