课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
事务是程序员在学习数据库编程开发的时候需要重点掌握的一个编程技术,下面我们就通过案例分析来了解一下,数据库事务概念与特性。
在诸多变化背后,客户多年积累下来的使用习惯其实是难以改变的。而看上去日新月异的产品迭代需求,经过抽象不难发现一些恒定的规律和模式:
同步和有序的数据变更:客户习惯于在集中的入口(UI/API)提交一组数据变更请求,希望在尽可能短的时间内,得到返回结果(成功或失败);接下来做何种操作,提交什么数据,取决于之前步骤的执行结果。
批量修改,统一结果:一次请求如果对应多条数据变更操作(增加、删除、修改数据),不管这些操作发生在哪些服务、落到哪个数据库,好要么都成功,要么都失败。
传统关系型数据库中,一批数据操作同时成功、同时失败的这类需求共性被抽象为事务性,英文缩写为ACID:
A(Atomicity,原子性):一组数据操作如果其中某步操作失败,之前的操作也要回滚,不允许出现部分成功部分失败的情况。
C(Consistency,一致性):数据操作符合某种业务约束。这个概念来源于财务对账领域,拓展到数据库设计上的含义比较模糊,众说纷纭。甚至有资料说C是为了凑成ACID这个缩写而添加的。
I(Isolation,隔离性):对并发的数据操作有一定的隔离性。Isolation是分等级的,差的情况是毫无隔离、互相干扰;好的情况是并发操作等效于一系列串行操作(Serializable,可串行化)。Isolation等级越高,数据库需要的资源越多,存取数据的性能(如吞吐量、延迟)越差。
D(Durability,持久性):到达数据库的请求不会“轻易”丢失。通常数据库设计文档会对“轻易”做具体的定义,比如在磁盘坏道,机器停电重启等条件下不会丢数据。
随着系统的服务拓扑从单体应用迈向微服务时代,以及数据库数量和种类的增长,分布式系统在满足传统ACID标准的事务性需求上,面临着新的挑战。所谓的CAP三选二定理是说,任何一个分布式系统不能同时满足以下三个特性:
C(Consistency,强一致性):分布式系统的任何节点对同一个key的读写请求,得到的结果完全一致。也叫线性一致性。
A(Availability,可用性):每次请求都能得到及时和正常的响应,但不保证数据是新的。
P(Partitiontolerance,承受网络分隔):分布式系统在节点之间无法连通或者连接超时的前提下还能维持运转。
在CAP三个特性中,P通常是分布式系统无法规避的既定事实,设计者只能在C和A之间进行取舍。大部分系统经过综合考虑,都选择了A而放弃C,目标是高可用,终一致(不过达成一致需要的时间无上限)。少部分系统坚持C而放弃A,即选择强一致、低可用(单节点故障将导致服务不可用,可用率取决于故障频度和恢复时间,无上限)。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。