CN112965984A - 一种执行数据库事务的方法及装置 - Google Patents
一种执行数据库事务的方法及装置 Download PDFInfo
- Publication number
- CN112965984A CN112965984A CN202110538014.9A CN202110538014A CN112965984A CN 112965984 A CN112965984 A CN 112965984A CN 202110538014 A CN202110538014 A CN 202110538014A CN 112965984 A CN112965984 A CN 112965984A
- Authority
- CN
- China
- Prior art keywords
- relational database
- indicating
- instruction
- database
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据处理技术领域,特别涉及一种执行数据库事务的方法及装置,该方法应用于数据库应用系统,所述数据库应用系统包括关系型数据库以及非关系型数据库,所述非关系型数据库嵌套在所述关系型数据库中,所述方法包括:接收指示数据操作的事务,所述事务至少包括指示关系型数据库进行操作的指令;根据所述事务中的指示关系型数据库进行操作的指令,对所述关系型数据库进行数据操作,并对所述指示关系型数据库进行操作的指令进行标记;根据标记后的指示关系型数据库进行操作的指令,对所述非关系型数据库进行数据操作;对全部执行成功的事务进行提交。使用本发明,可以数据快速、准确、完整地进行数据保存。
Description
技术领域
本发明涉及数据处理技术领域,特别是指一种执行数据库事务的方法及装置。
背景技术
近年来,现有的中心型应用系统中一般情况下使用MySQL或MongoDB中的一种,由于两种数据库均支持业务处理的事务完整性,所以在业务处理过程对事务完整性的需要可以得到满足。由于这两种数据库分别属于关系型数据和非关系型数据库,在处理业务逻辑中可以形成优势互补。但是,当一个数据库应用系统中同时使用这两种数据库时,由于MySQL的事务与MongoDB的事务是两个完全不同的事务,这样对于应用系统来说,业务处理过程对事务完整性就会受到破坏,当其他系统进行数据返回时,在数据库类型不同、数据结构不同的情况下,会导致数据无法快速、准确、完整地进行数据保存。
发明内容
本发明实施例提供了一种执行数据库事务的方法及装置,可以使数据快速、准确、完整地进行数据保存。所述技术方案如下:
一方面,提供了一种执行数据库事务的方法,所述方法应用于数据库应用系统,所述数据库应用系统包括关系型数据库以及非关系型数据库,所述非关系型数据库嵌套在所述关系型数据库中,该方法包括:
接收指示数据操作的事务,所述事务至少包括指示关系型数据库进行操作的指令;
根据所述事务中的指示关系型数据库进行操作的指令,对所述关系型数据库进行数据操作,并对所述指示关系型数据库进行操作的指令进行标记;
根据标记后的指示关系型数据库进行操作的指令,对所述非关系型数据库进行数据操作;
对全部执行成功的事务进行提交。
可选地,所述根据所述事务中的指示关系型数据库进行操作的指令,对所述关系型数据库进行数据操作,并对所述指示关系型数据库进行操作的指令进行标记,包括:
根据所述事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作;
如果所述指示关系型数据库进行操作的指令执行成功,则对所述指示关系型数据进行操作的指令进行标记;
如果所述指示关系型数据库进行操作的指令执行失败,则对所述事务进行回滚。
可选地,所述根据标记后的指示关系型数据库进行操作的指令,对所述非关系型数据库进行数据操作,包括:
当所述指示关系型数据库进行操作的指令执行成功时,根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作;
如果所述标记后的指示关系型数据库进行操作的指令执行成功,则对所述事务进行提交;
如果所述标记后的指示关系型数据库进行操作的指令执行失败,则对所述事务进行全部回滚。
可选地,所述指示关系型数据库进行操作的指令包括含有@Transactional注解的方法所在的类;
所述对所述指示关系型数据库进行操作的指令进行标记,包括:
基于面向切面编程AOP技术,在含有@Transactional注解的方法所在的类上增加代理对象,在执行事务方法的前后增加数据库事务。
可选地,所述关系型数据库为MySQL数据库;
所述非关系型数据库为MongoDB数据库。
另一方面,提供了一种执行数据库事务的装置,所述装置应用于数据库应用系统,所述数据库应用系统包括关系型数据库以及非关系型数据库,所述非关系型数据库嵌套在所述关系型数据库中,该装置包括:
接收单元,用于接收指示数据操作的事务,所述事务至少包括指示关系型数据库进行操作的指令;
操作单元,用于根据所述事务中的指示关系型数据库进行操作的指令,对所述关系型数据库进行数据操作,并对所述指示关系型数据库进行操作的指令进行标记;
所述操作单元,用于根据标记后的指示关系型数据库进行操作的指令,对所述非关系型数据库进行数据操作;
提交单元,用于对全部执行成功的事务进行提交。
可选地,所述操作单元,用于:
根据所述事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作;
如果所述指示关系型数据库进行操作的指令执行成功,则对所述指示关系型数据进行操作的指令进行标记;
如果所述指示关系型数据库进行操作的指令执行失败,则对所述事务进行回滚。
可选地,所述操作单元,用于:
当所述指示关系型数据库进行操作的指令执行成功时,根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作;
如果所述标记后的指示关系型数据库进行操作的指令执行成功,则对所述事务进行提交;
如果所述标记后的指示关系型数据库进行操作的指令执行失败,则对所述事务进行全部回滚。
可选地,所述指示关系型数据库进行操作的指令包括含有@Transactional注解的装置所在的类;
所述操作单元,用于:
基于面向切面编程AOP技术,在含有@Transactional注解的装置所在的类上增加代理对象,在执行事务装置的前后增加数据库事务。
可选地,所述关系型数据库为MySQL数据库;
所述非关系型数据库为MongoDB数据库。
本发明实施例提供的技术方案带来的有益效果至少包括:
本发明实施例中,基于Mysql与MongoDB结合,使得数据可以动态拓展,数据接收任何没有规则的数据存储到MongoDB数据库之内,通过提供一套稳定的架构和方法,解决数据系统接收其他某第三方系统接口返回的数据差异结构无限制存储,当其他系统进行数据返回时,解决了由于数据库类型不同、数据结构不同导致的数据无法快速、准确、完整地进行数据保存所遇到的问题。本发明以庞大的MongoDB数据库与Mysql数据库进行融合,即精简核心配置,具体功能以可动态扩展配置的形式进行实现,使用不同的数据库进行隔离,从而使数据系统在确保接收数据正确、有序的同时,保证自身数据库的安全与稳定,实现了业务系统与其他三方系统的低耦合以及保证了数据存储的准确性。对于三方系统数据返回的数据格式不同的问题,本发明提供了相应的逻辑扩展方式将数据进行保存。与此同时,本发明将关联数据还可以作为一个集合进行整体发布,基于此方法可以确保接收数据返回时,在使用Spring Boot进行事务管理时,还可以保证两种数据库中数据的完整性和事务性的需求,保证数据的一致性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种实施环境图;
图2是本发明实施例提供的一种执行数据库事务的方法流程图;
图3是本发明实施例提供的一种执行数据库事务的方法流程图;
图4是本发明实施例提供的一种执行数据库事务的装置示意图。
具体实施方式
为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
本发明实施例提供了一种执行数据库事务的方法,如图1所示,该实施环境可以实现于数据库应用系统上,该数据库应用系统至少包括应用程序系统101、一个关系型数据库102以及一个非关系型数据库103,关系型数据库优选为MySQL,非关系型数据库优选为MongoDB,且非关系型数据库嵌套在关系型数据库中。当应用程序系统101产生事务需要处理时,关系型数据库102先执行相关的事务,关系型数据库102执行成功后,非关系型数据库103处理相关的事务,只有当非关系型数据库103执行事务成功时,关系型数据库102才提交事务。
本发明实施例提供了一种执行数据库事务的方法,该方法可以由电子设备实现,该电子设备可以是终端或服务器。如图2所示的执行数据库事务的方法流程图,该方法的处理流程可以包括如下的步骤:
步骤201、接收指示数据操作的事务,事务至少包括指示关系型数据库进行操作的指令;
步骤202、根据事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作,并对指示关系型数据库进行操作的指令进行标记;
步骤203、根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作;
步骤204、对全部执行成功的事务进行提交。
可选地,根据事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作,并对指示关系型数据库进行操作的指令进行标记,包括:
根据事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作;
如果指示关系型数据库进行操作的指令执行成功,则对指示关系型数据进行操作的指令进行标记;
如果指示关系型数据库进行操作的指令执行失败,则对事务进行回滚。
可选地,根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作,包括:
当指示关系型数据库进行操作的指令执行成功时,根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作;
如果标记后的指示关系型数据库进行操作的指令执行成功,则对事务进行提交;
如果标记后的指示关系型数据库进行操作的指令执行失败,则对事务进行全部回滚。
可选地,指示关系型数据库进行操作的指令包括含有@Transactional注解的方法所在的类;
对指示关系型数据库进行操作的指令进行标记,包括:
基于面向切面编程AOP技术,在含有@Transactional注解的方法所在的类上增加代理对象,在执行事务方法的前后增加数据库事务。
可选地,关系型数据库为MySQL数据库;
非关系型数据库为MongoDB数据库。
本发明实施例中,基于Mysql与MongoDB结合,使得数据可以动态拓展,数据接收任何没有规则的数据存储到MongoDB数据库之内,通过提供一套稳定的架构和方法,解决数据系统接收其他某第三方系统接口返回的数据差异结构无限制存储,当其他系统进行数据返回时,解决了由于数据库类型不同、数据结构不同导致的数据无法快速、准确、完整地进行数据保存所遇到的问题。本发明以庞大的MongoDB数据库与Mysql数据库进行融合,即精简核心配置,具体功能以可动态扩展配置的形式进行实现,使用不同的数据库进行隔离,从而使数据系统在确保接收数据正确、有序的同时,保证自身数据库的安全与稳定,实现了业务系统与其他三方系统的低耦合以及保证了数据存储的准确性。对于三方系统数据返回的数据格式不同的问题,本发明提供了相应的逻辑扩展方式将数据进行保存。与此同时,本发明将关联数据还可以作为一个集合进行整体发布,基于此方法可以确保接收数据返回时,在使用Spring Boot进行事务管理时,还可以保证两种数据库中数据的完整性和事务性的需求,保证数据的一致性。
本发明实施例提供了一种执行数据库事务的方法,该方法可以由电子设备实现,该电子设备可以是终端或服务器,该电子设备至少包括一个数据库应用系统,数据库应用系统至少包括关系型数据库和非关系型数据库,关系型数据库为MySQL,非关系型数据库为MongoDB,且MongoDB嵌套在MySQL中。如图3所示的执行数据库事务的方法流程图,该方法的处理流程可以包括如下的步骤:
步骤301、接收指示数据操作的事务,事务至少包括指示MySQL进行操作的指令。
其中,MySQL的最大特点就是事务的一致性;它的特点是容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;使用方便:通用的SQL(Structured Query Language,结构化查询语言)语言使得操作MySQL非常方便;易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;支持SQL,可用于复杂的查询。
其中,MongoDB作为NoSql(Not Only Structured Query Language,非关系型数据库)技术的代表,其特点是使用键值对存储数据,支持分布式部署和分布式事务,复本集(Replica-set)的部署方式支持ACID(atomicity、consistency、isolation、durability,数据库事务正确执行的四个基本要素:原子性、一致性、隔离性、持久性的缩写)特性,是一种数据结构化存储方法的集合无需经过SQL层的解析,读写性能很高。MongoDB基于键值对,数据没有耦合性,是专为可扩展性、高性能和高可用性而设计的数据库。它可以从单服务器部署扩展到大型、复杂的多数据中心架构。利用内存计算的优势,MongoDB能够提供高性能的数据读写操作。MongoDB的本地复制和自动故障转移功能使应用程序具有企业级的可靠性和操作灵活性。利用数据库这一点,可以接收第三方数据平台返回的信息,如订单信息,付款成功信息等。结合MySQL数据库业务结构从而实现数据横向扩展,也可支持数据事务回滚,从而达到数据一致性。
一种可行的实施方式中,在存储数据时,电子设备将该数据按照其格式类型,存储到对应的数据库中。举例来说,假设电子设备上的应用系统接收到第三方系统产生的数据,则电子设备将第三方数据按照数据的格式类型的不同分别将其存储到相应的MySQL数据库和MongoDB数据库中,实现第三方数据的存储,也即,将第三方会频繁变化格式的数据存放到MongoDB数据库中,将数据格式固定不变的数据存放到MySQL中,此过程可称为数据格式的动态扩展。
当数据库应用系统接收到指示数据进行操作的事务时,数据库应用系统对事务进行解析,事务至少包括指示MySQL进行操作的指令。
需要说明的是,本发明实施例中,MongoDB嵌套在MySQL中,因此,在执行事务时,先根据事务中指示MySQL进行操作的指令对MySQL进行数据操作,然后再对MongoDB进行数据操作。
步骤302、根据事务中的指示MySQL进行操作的指令,对MySQL进行数据操作。
一种可行的实施方式中,MySQL事务主要用于处理操作量大、复杂度高的数据。举例来说,假设本发明中的数据库应用系统是人员管理系统,当需要删除一个人员时,既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务。
可选地,具体来讲,指示MySQL进行操作的指令通常可以包括含有@Transactional注解的方法所在的类。
一种可行的实施方式中,根据Spring机制,当将数据库应用系统的事务管理器配置为MySQL时,含有@Transactional注解的方法所在的类会将MySQL的所有事务进行管理。
步骤303、如果指示MySQL进行操作的指令执行成功,则对指示MySQL进行操作的指令进行标记。
一种可行的实施方式中,当指示MySQL进行操作的指令执行成功时,数据库应用系统不会提交业务,而是对指示MySQL进行操作的指令进行标记,使得指示MySQL进行操作的指令成为指示MongoDB进行操作的指令,使得数据库应用系统执行对MongoDB进行操作的指令。
可选地,当指示MySQL进行操作的指令包括含有@Transactional注解的方法所在的类时,对指示关系型数据进行操作的指令进行标记可以包括:基于AOP技术,在含有@Transactional注解的方法所在的类上增加代理对象,在执行事务方法的前后增加数据库事务。
其中,AOP(Aspect Oriented Programming,面向切面编程)技术,是一种通过预编译方式和运行期间动态代理实现程序功能的统一维护的技术。
下面例举一段可行的代码:
//注入MongoDB的事务管理器
@Configuration
public class TransactionConfig {
@Bean
MongoTransactionManager transactionManager(MongoDbFactoryfactory){
return new MongoTransactionManager(factory);
}
}
//注入MySQL的事务管理器
@Bean(name = "mysqlTransactionManager")
PlatformTransactionManager mysqlTransactionManager(EntityManagerFactoryBuilder builder) {
JpaTransactionManager pm = new JpaTransactionManager(mysqlEntityManagerFactory(builder).getObject());
pm.setGlobalRollbackOnParticipationFailure(false);
return pm;
}
步骤304、如果指示MySQL进行操作的指令执行失败,则对事务进行回滚。
步骤305、当指示MySQL进行操作的指令执行成功时,根据标记后的指示MySQL进行操作的指令,对MongoDB进行数据操作。
一种可行的实施方式中,由于MongoDB嵌套在MySQL中,因此,只有当指示MySQL进行操作的指令执行成功时,数据库应用系统才会将指示MySQL进行操作的指令进行标记,得到指示MongoDB进行操作的指令。
步骤306、如果指示MongoDB进行操作的指令执行成功,则对事务进行提交。
一种可行的实施方式中,指示MongoDB进行操作的指令执行成功时,说明事务已完全被成功执行,因此,可以对事务进行提交。
步骤307、如果指示MongoDB进行操作的指令执行失败,则对事务进行全部回滚。
一种可行的实施方式中,如果MongoDB抛出异常,将异常抛给Transactional注解所在的方法,当该方法检测到有异常后,控制MySQL的事务进行回滚,即对该事务进行全部回滚。
下面例举一段代码:
@Transactional(rollbackFor = Throwable.class)
public void saveTest(Mongo test) {
mongoTemplate.save(test);
int i = 1/0;
}
本发明实施例中,基于Mysql与MongoDB结合,使得数据可以动态拓展,数据接收任何没有规则的数据存储到MongoDB数据库之内,通过提供一套稳定的架构和方法,解决数据系统接收其他某第三方系统接口返回的数据差异结构无限制存储,当其他系统进行数据返回时,解决了由于数据库类型不同、数据结构不同导致的数据无法快速、准确、完整地进行数据保存所遇到的问题。本发明以庞大的MongoDB数据库与Mysql数据库进行融合,即精简核心配置,具体功能以可动态扩展配置的形式进行实现,使用不同的数据库进行隔离,从而使数据系统在确保接收数据正确、有序的同时,保证自身数据库的安全与稳定,实现了业务系统与其他三方系统的低耦合以及保证了数据存储的准确性。对于三方系统数据返回的数据格式不同的问题,本发明提供了相应的逻辑扩展方式将数据进行保存。与此同时,本发明将关联数据还可以作为一个集合进行整体发布,基于此方法可以确保接收数据返回时,在使用Spring Boot进行事务管理时,还可以保证两种数据库中数据的完整性和事务性的需求,保证数据的一致性。
图4是根据一示例性实施例示出的一种执行数据库事务的框图。装置应用于数据库应用系统,数据库应用系统包括关系型数据库以及非关系型数据库,非关系型数据库嵌套在关系型数据库中。参照图4,该装置包括接收单元410,操作单元420和提交单元430。
接收单元410,用于接收指示数据操作的事务,事务至少包括指示关系型数据库进行操作的指令;
操作单元420,用于根据事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作,并对指示关系型数据库进行操作的指令进行标记;
操作单元420,用于根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作;
提交单元430,用于对全部执行成功的事务进行提交。
可选地,操作单元420,用于:
根据事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作;
如果指示关系型数据库进行操作的指令执行成功,则对指示关系型数据进行操作的指令进行标记;
如果指示关系型数据库进行操作的指令执行失败,则对事务进行回滚。
可选地,操作单元420,用于:
当指示关系型数据库进行操作的指令执行成功时,根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作;
如果标记后的指示关系型数据库进行操作的指令执行成功,则对事务进行提交;
如果标记后的指示关系型数据库进行操作的指令执行失败,则对事务进行全部回滚。
可选地,指示关系型数据库进行操作的指令包括含有@Transactional注解的装置所在的类;
操作单元420,用于:
基于面向切面编程AOP技术,在含有@Transactional注解的装置所在的类上增加代理对象,在执行事务装置的前后增加数据库事务。
可选地,关系型数据库为MySQL数据库;
非关系型数据库为MongoDB数据库。
本发明实施例中,基于Mysql与MongoDB结合,使得数据可以动态拓展,数据接收任何没有规则的数据存储到MongoDB数据库之内,通过提供一套稳定的架构和方法,解决数据系统接收其他某第三方系统接口返回的数据差异结构无限制存储,当其他系统进行数据返回时,解决了由于数据库类型不同、数据结构不同导致的数据无法快速、准确、完整地进行数据保存所遇到的问题。本发明以庞大的MongoDB数据库与Mysql数据库进行融合,即精简核心配置,具体功能以可动态扩展配置的形式进行实现,使用不同的数据库进行隔离,从而使数据系统在确保接收数据正确、有序的同时,保证自身数据库的安全与稳定,实现了业务系统与其他三方系统的低耦合以及保证了数据存储的准确性。对于三方系统数据返回的数据格式不同的问题,本发明提供了相应的逻辑扩展方式将数据进行保存。与此同时,本发明将关联数据还可以作为一个集合进行整体发布,基于此方法可以确保接收数据返回时,在使用Spring Boot进行事务管理时,还可以保证两种数据库中数据的完整性和事务性的需求,保证数据的一致性。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种执行数据库事务的方法,所述方法应用于数据库应用系统,其特征在于,所述数据库应用系统包括关系型数据库以及非关系型数据库,所述非关系型数据库嵌套在所述关系型数据库中,所述方法包括:
接收指示数据操作的事务,所述事务至少包括指示关系型数据库进行操作的指令;
根据所述事务中的指示关系型数据库进行操作的指令,对所述关系型数据库进行数据操作,并对所述指示关系型数据库进行操作的指令进行标记;
根据标记后的指示关系型数据库进行操作的指令,对所述非关系型数据库进行数据操作;
对全部执行成功的事务进行提交。
2.根据权利要求1所述的方法,其特征在于,所述根据所述事务中的指示关系型数据库进行操作的指令,对所述关系型数据库进行数据操作,并对所述指示关系型数据库进行操作的指令进行标记,包括:
根据所述事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作;
如果所述指示关系型数据库进行操作的指令执行成功,则对所述指示关系型数据进行操作的指令进行标记;
如果所述指示关系型数据库进行操作的指令执行失败,则对所述事务进行回滚。
3.根据权利要求2所述的方法,其特征在于,所述根据标记后的指示关系型数据库进行操作的指令,对所述非关系型数据库进行数据操作,包括:
当所述指示关系型数据库进行操作的指令执行成功时,根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作;
如果所述标记后的指示关系型数据库进行操作的指令执行成功,则对所述事务进行提交;
如果所述标记后的指示关系型数据库进行操作的指令执行失败,则对所述事务进行全部回滚。
4.根据权利要求3所述的方法,其特征在于,所述指示关系型数据库进行操作的指令包括含有@Transactional注解的方法所在的类;
所述对所述指示关系型数据库进行操作的指令进行标记,包括:
基于面向切面编程AOP技术,在含有@Transactional注解的方法所在的类上增加代理对象,在执行事务方法的前后增加数据库事务。
5.根据权利要求1-4任一所述的方法,其特征在于,所述关系型数据库为MySQL数据库;
所述非关系型数据库为MongoDB数据库。
6.一种执行数据库事务的装置,所述装置应用于数据库应用系统,其特征在于,所述数据库应用系统包括关系型数据库以及非关系型数据库,所述非关系型数据库嵌套在所述关系型数据库中,所述装置包括:
接收单元,用于接收指示数据操作的事务,所述事务至少包括指示关系型数据库进行操作的指令;
操作单元,用于根据所述事务中的指示关系型数据库进行操作的指令,对所述关系型数据库进行数据操作,并对所述指示关系型数据库进行操作的指令进行标记;
所述操作单元,用于根据标记后的指示关系型数据库进行操作的指令,对所述非关系型数据库进行数据操作;
提交单元,用于对全部执行成功的事务进行提交。
7.根据权利要求6所述的装置,其特征在于,所述操作单元,用于:
根据所述事务中的指示关系型数据库进行操作的指令,对关系型数据库进行数据操作;
如果所述指示关系型数据库进行操作的指令执行成功,则对所述指示关系型数据进行操作的指令进行标记;
如果所述指示关系型数据库进行操作的指令执行失败,则对所述事务进行回滚。
8.根据权利要求7所述的装置,其特征在于,所述操作单元,用于:
当所述指示关系型数据库进行操作的指令执行成功时,根据标记后的指示关系型数据库进行操作的指令,对非关系型数据库进行数据操作;
如果所述标记后的指示关系型数据库进行操作的指令执行成功,则对所述事务进行提交;
如果所述标记后的指示关系型数据库进行操作的指令执行失败,则对所述事务进行全部回滚。
9.根据权利要求8所述的装置,其特征在于,所述指示关系型数据库进行操作的指令包括含有@Transactional注解的装置所在的类;
所述操作单元,用于:
基于面向切面编程AOP技术,在含有@Transactional注解的装置所在的类上增加代理对象,在执行事务装置的前后增加数据库事务。
10.根据权利要求6-9任一所述的装置,其特征在于,所述关系型数据库为MySQL数据库;
所述非关系型数据库为MongoDB数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110538014.9A CN112965984A (zh) | 2021-05-18 | 2021-05-18 | 一种执行数据库事务的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110538014.9A CN112965984A (zh) | 2021-05-18 | 2021-05-18 | 一种执行数据库事务的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112965984A true CN112965984A (zh) | 2021-06-15 |
Family
ID=76279791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110538014.9A Pending CN112965984A (zh) | 2021-05-18 | 2021-05-18 | 一种执行数据库事务的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112965984A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420011A (zh) * | 2021-06-29 | 2021-09-21 | 平安消费金融有限公司 | redis事务回滚方法、装置、计算机设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105681477A (zh) * | 2016-04-08 | 2016-06-15 | 四川师范大学 | 一种数据访问方法和一种服务器 |
CN106156174A (zh) * | 2015-04-16 | 2016-11-23 | 中国移动通信集团山西有限公司 | 一种数据库事务处理的系统和方法 |
CN110968603A (zh) * | 2019-11-29 | 2020-04-07 | 中国银行股份有限公司 | 一种数据访问方法及装置 |
-
2021
- 2021-05-18 CN CN202110538014.9A patent/CN112965984A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106156174A (zh) * | 2015-04-16 | 2016-11-23 | 中国移动通信集团山西有限公司 | 一种数据库事务处理的系统和方法 |
CN105681477A (zh) * | 2016-04-08 | 2016-06-15 | 四川师范大学 | 一种数据访问方法和一种服务器 |
CN110968603A (zh) * | 2019-11-29 | 2020-04-07 | 中国银行股份有限公司 | 一种数据访问方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420011A (zh) * | 2021-06-29 | 2021-09-21 | 平安消费金融有限公司 | redis事务回滚方法、装置、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11874746B2 (en) | Transaction commit protocol with recoverable commit identifier | |
EP3117349B1 (en) | System and method for massively parallel processing database | |
US10678808B2 (en) | Eager replication of uncommitted transactions | |
CN105630863B (zh) | 用于多版本并发提交状态的事务控制块 | |
US9652519B2 (en) | Replicating data across multiple copies of a table in a database system | |
CN105608086B (zh) | 分布式数据库系统的事务处理方法及装置 | |
US9589041B2 (en) | Client and server integration for replicating data | |
US9336262B2 (en) | Accelerated transactions with precommit-time early lock release | |
US10621156B1 (en) | Application schemas for journal-based databases | |
US7478112B2 (en) | Method and apparatus for initializing data propagation execution for large database replication | |
US10324905B1 (en) | Proactive state change acceptability verification in journal-based storage systems | |
US11048669B2 (en) | Replicated state management using journal-based registers | |
US20050262170A1 (en) | Real-time apply mechanism in standby database environments | |
US8108627B2 (en) | Array comparison and swap operations | |
CN111259004B (zh) | 一种存储引擎中数据索引的方法以及相关装置 | |
US20230031418A1 (en) | Methods and systems for garbage deletion in a document database | |
US10997158B2 (en) | Techniques for updating big data tables using snapshot isolation | |
Padhye et al. | Scalable transaction management with snapshot isolation for NoSQL data storage systems | |
CN115774754A (zh) | 基于分布式事务的元数据管理方法、装置、设备及介质 | |
CN112965984A (zh) | 一种执行数据库事务的方法及装置 | |
CN114564500A (zh) | 在区块链系统中实现结构化数据存储和查询的方法和系统 | |
CN112559496B (zh) | 一种分布式数据库事务原子性实现方法及装置 | |
CN111026772B (zh) | 用于保证数据库修改永久性的方法及装置 | |
US8630976B2 (en) | Fast search replication synchronization processes | |
CN111913973A (zh) | 一种数据同步方法、装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210615 |