数据库中的事务(transaction)是什么

数据库中的事务(transaction)是什么,第1张

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列 *** 作。 事务处理可以确保除非事务性单元内的所有 *** 作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关 *** 作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

传统的分布式事务管理方法对于现代应用程序来说不是一个好的选择,跨服务的 *** 作必须使用所谓的Saga(一种消息驱动的本地事务序列)来维护数据一致性,而不是ACID事务(原子性、一致性、隔离性和持久性)。

Saga的一个挑战在于只满足ACD(原子性、一致性和持久性)特性,而缺乏ACID事务的隔离性。因此应用程序必须使用所谓的对策(countermeasure),找到办法来防止或减少由于缺少隔离而导致的并发异常

这是一本关于微服务架构设计方面的书,这是本人阅读的学习笔记。以下对一些符号做些说明:

()为补充,一般是书本里的内容;

[]符号为笔者笔注;

分布式事务管理的事实标准是XA标准:

其存在的挑战有:

当本地事务完成时,服务会发布消息。然后,此消息将触发Saga中的下一个步骤。

需要注意不是所有步骤都需要事务补偿,如只读步骤、当某步骤之后的 *** 作总会成功时等。

在实现基于协同的Saga时,需要考虑一些与服务间通信相关的问题:

好处

弊端

图解

Order Service首先创建(实例化)一个Order对象和一个Create Order Saga编排器对象,一切正常后流程如下:

将Saga建模成状态机非常有用,因为它描述了所有可能的场景(可能成功也可能失败)。

好处

弊端

OrderService的UML类图

OrderService的Saga UML类图

Eventuate Tram Saga框架

OrderService创建Create Order Saga实例时的事件序列

当SagaManager收到来自Saga参与方的回复消息时的事件序列

OrderCommandHandlers UML类图

Order Service的命令处理程序

简述数据库事物的4个基本要素。

正确答案:事务的 *** 作比较严格,他必须满足ACID,ACID是指数据库事务正确执行的四个基本要素的缩写,这些要素包括原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),接下来针对这四个基本要素进行详细解释。原子性:表示事务是一个不可再分割的工作单位,事务中的 *** 作要么全部成功,要么全部失败回滚。一致性:表示事务开始之前和结束之后,数据库的完整性没有被破坏。也就是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。隔离性:表示并发的事务是相互隔离的,也就是一个事务内部的 *** 作都必须封锁起来,不会被其他事务影响到。持久性:表示事务一旦提交后,该事务对数据做的更改便持久保存在数据库中,并不会被回滚,即使出现了断电等事故,也不会影响数据库中的数据。

当数据库需要处理 *** 作量大、复杂度高的数据的时候需要用到事务。用事务是为了保证数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行。

一个数据库事务通常包含了一个序列的对数据库的读/写 *** 作。它的存在包含有以下两个目的:

1、为数据库 *** 作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。

2、当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的 *** 作互相干扰。

当事务被提交给了数据库管理系统,则数据库管理系统需要确保该事务中的所有 *** 作都成功完成且其结果被永久保存在数据库中,如果事务中有的 *** 作没有成功完成,则事务中的所有 *** 作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。

扩展资料:

数据库事务ACID性质:

1、原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的 *** 作要么全部被执行,要么都不执行。

2、一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态,一致状态的含义是数据库中的数据应满足完整性约束。

3、隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。

4、持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。

参考资料来源:

百度百科-数据库事务

百度百科-数据库

以上就是关于数据库中的事务(transaction)是什么全部的内容,包括:数据库中的事务(transaction)是什么、微服务架构设计模式 | 第4章 使用Saga管理事务、简述数据库事物的4个基本要素。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10214334.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存