数据事务处理方法、装置、计算机设备及存储介质制造方法及图纸

技术编号:38620315 阅读:8 留言:0更新日期:2023-08-31 18:24
本申请提供一种数据事务处理方法、装置、计算机设备及存储介质,可适用于大数据技术领域,包括:拦截一个业务数据;根据预置的代理数据库对业务数据进行业务处理得到代理事务信息,并将代理事务信息载入预置的代理连接中;根据业务数据得到数据库名,并将数据集群中与数据库名对应的数据库设为真实数据库,及将具有代理事务信息的代理连接与数据库名关联;创建与真实数据库之间的真实连接;将代理连接中的代理事务信息输出至真实连接,并执行具有代理事务信息的真实连接。本申请避免了进行业务处理时需要与所有数据库连接的情况发生,进而避免了无效占用过多的数据库连接的情况发生。避免了无效占用过多的数据库连接的情况发生。避免了无效占用过多的数据库连接的情况发生。

【技术实现步骤摘要】
数据事务处理方法、装置、计算机设备及存储介质


[0001]本申请涉及大数据
,尤其涉及一种数据事务处理方法、装置、计算机设备及存储介质。

技术介绍

[0002]关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到一定数量级以后,通过数据库本身的优化措施仍不能满足性能要求。因此,当前会基于分库分表将业务数据进行切分,并分散给多个数据库,以减少单个数据库的负担,从而提高性能,其中,分库分表是水平分片的解决方案,能有效的缓解单机和单库带来的性能瓶颈和压力,突破网络IO、硬件资源、连接数的瓶颈,分库分表是将数据按某字段根据一定的策略例如哈希,范围等进行数据分片,将一份数据拆成多份并保存在多个数据库或多张表中,解决单库数据量过大、高并发的性能瓶颈,提升系统稳定性和负载能力。
[0003]对于数据库访问层事务处理,SpringJDBC提供的声明式事务已经成为了事实标准,SpringJDBC的声明式事务管理在SpringBoot自动装配情况下仅支持单一数据库事务处理,即在业务开始前获取数据库获取连接并开启事务。而对于基于分库分表创建的具有多数据库的场景,SpringJDBC因无法定位业务即将访问的数据库,无法开启相应的事务。
[0004]为实现基于SpringJDBC的多数据库的事务处理,现有技术采用SpringJDBC提供事务管理器开启所有的数据库的方式,在以确保基于SpringJDBC处理的业务数据能够在目标数据库中进行数据处理,目标数据库是多数据库中的其中一个数据库。
[0005]然而,专利技术人发现,这种方式将会导致每次处理一个业务数据时,均需开启所有的数据库,导致无效占用过多的数据库连接的情况发生,造成降低多数据库的性能的情况发生。

技术实现思路

[0006]本申请提供一种数据事务处理方法、装置、计算机设备及存储介质,用以解决当前采用SpringJDBC提供事务管理器开启所有的数据库的方式,在以确保基于SpringJDBC处理的业务数据能够在目标数据库中进行数据处理,导致每次处理一个业务数据时,均需开启所有的数据库,导致无效占用过多的数据库连接的情况发生,造成降低多数据库的性能的情况发生的问题。
[0007]第一方面,本申请提供一种基于Spring JDBC的数据事务处理方法,应用于具有至少一个数据库的数据集群,所述方法包括:
[0008]调用Spring JDBC组件拦截一个业务数据;
[0009]调用所述Spring JDBC组件中的事务管理器根据预置的代理数据库对所述业务数据进行业务处理得到代理事务信息,并将所述代理事务信息载入预置的代理连接中,其中,所述代理事务信息是定义了在数据库中对业务数据进行数据处理的事务上下文,所述数据
处理包括:新增处理、和/或删除处理、和/或修改处理、和/或查询处理;
[0010]调用预置的Mybatis组件根据所述业务数据得到数据库名,并将所述数据集群中与所述数据库名对应的数据库设为真实数据库,及将具有所述代理事务信息的代理连接与所述数据库名关联;
[0011]调用所述Mybatis组件创建与所述真实数据库之间的真实连接;
[0012]将所述代理连接中的代理事务信息输出至所述真实连接,并执行具有所述代理事务信息的真实连接,以根据所述代理事务信息对所述真实数据库中的数据进行数据处理。
[0013]上述方案中,所述调用Spring JDBC组件拦截一个业务数据,包括:
[0014]调用所述Spring JDBC组件创建注解和与所述注解关联的拦截器,其中,所述注解是所述Spring JDBC组件用于接收业务数据的入口;
[0015]若调用所述事务管理器通过所述拦截器拦截所述注解接收到的一个业务数据。
[0016]上述方案中,所述调用所述Spring JDBC组件中的事务管理器根据预置的代理数据库对所述业务数据进行业务处理得到代理事务信息,包括:
[0017]调用所述事务管理器根据所述代理数据库构建代理连接,所述代理连接是与所述代理数据库之间的通信连接;
[0018]调用所述事务管理器根据预置的业务运算规则对所述业务数据进行业务处理,得到代理事务信息。
[0019]上述方案中,所述调用预置的Mybatis组件根据所述业务数据得到数据库名,包括:
[0020]调用所述Mybatis组件中的映射接口提取所述业务数据中的业务要素;
[0021]根据预置的分库分表规则对所述业务要素进行计算,得到所述业务数据的数据库名;或
[0022]对所述业务要素进行哈希运算得到哈希摘要,并根据预置的计算规则对所述哈希摘要进行计算,得到所述业务数据的数据库名。
[0023]上述方案中,所述调用所述Mybatis组件创建与所述真实数据库之间的真实连接,包括:
[0024]若确定所述Spring JDBC组件生成代理事务信息,则调用所述Mybatis组件中的事务工厂生成真实事务,所述真实事务用于对所述真实数据库进行事务提交、或事务关闭、或事务回滚;
[0025]调用所述Mybatis组件中的事务工厂根据所述真实事务创建真实连接,所述真实连接是与所述真实数据库之间的通信连接。
[0026]上述方案中,所述调用所述Mybatis组件中的事务工厂生成真实事务,包括:
[0027]所述事务工厂若确定所述代理事务信息的类型为提交类型,则根据所述提交类型生成事务提交的真实事务;
[0028]所述事务工厂若确定所述代理事务信息的类型为关闭类型,则根据所述提交类型生成事务关闭的真实事务;
[0029]所述事务工厂若确定所述代理事务信息的类型为回滚类型,则根据所述提交类型生成事务回滚的真实事务。
[0030]上述方案中,所述调用所述Mybatis组件中的事务工厂根据所述真实事务创建真
实连接,包括:
[0031]所述事务工厂提取所述真实事务中的数据库名,并与所述数据库名对应的真实数据库之间构建连接线路,或将连接线路切换至所述真实数据库;
[0032]将所述真实事务载入所述连接线路得到真实连接,所述真实连接用于对所述真实数据库执行所述真实事务。
[0033]上述方案中,所述将所述代理连接中的代理事务信息输出至所述真实连接,包括:
[0034]获取与所述真实连接对应的真实数据库的数据库名,并获取与所述数据库名关联的代理连接;
[0035]从所述代理连接中提取代理事务信息,并将提取到的代理事务信息载入所述真实连接。
[0036]上述方案中,所述执行具有所述代理事务信息的真实连接,包括:
[0037]调用所述Spring JDBC组件,通过所述真实连接访问所述真实数据库;
[0038]调用所述Spring JDBC组件根据所述代理事务信息,对所述真实数据库中与所述代理事务信息对应的数据进行数据处理。
[0039]上述方本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Spring JDBC的数据事务处理方法,其特征在于,应用于具有至少一个数据库的数据集群,所述方法包括:调用Spring JDBC组件拦截一个业务数据;调用所述Spring JDBC组件中的事务管理器根据预置的代理数据库对所述业务数据进行业务处理得到代理事务信息,并将所述代理事务信息载入预置的代理连接中,其中,所述代理事务信息是定义了在数据库中对业务数据进行数据处理的事务上下文,所述数据处理包括:新增处理、和/或删除处理、和/或修改处理、和/或查询处理;调用预置的Mybatis组件根据所述业务数据得到数据库名,并将所述数据集群中与所述数据库名对应的数据库设为真实数据库,及将具有所述代理事务信息的代理连接与所述数据库名关联;调用所述Mybatis组件创建与所述真实数据库之间的真实连接;将所述代理连接中的代理事务信息输出至所述真实连接,并执行具有所述代理事务信息的真实连接,以根据所述代理事务信息对所述真实数据库中的数据进行数据处理。2.根据权利要求1所述的数据事务处理方法,其特征在于,所述调用Spring JDBC组件拦截一个业务数据,包括:调用所述Spring JDBC组件创建注解和与所述注解关联的拦截器,其中,所述注解是所述Spring JDBC组件用于接收业务数据的入口;若调用所述事务管理器通过所述拦截器拦截所述注解接收到的一个业务数据。3.根据权利要求1所述的数据事务处理方法,其特征在于,所述调用所述Spring JDBC组件中的事务管理器根据预置的代理数据库对所述业务数据进行业务处理得到代理事务信息,包括:调用所述事务管理器根据所述代理数据库构建代理连接,所述代理连接是与所述代理数据库之间的通信连接;调用所述事务管理器根据预置的业务运算规则对所述业务数据进行业务处理,得到代理事务信息。4.根据权利要求1所述的数据事务处理方法,其特征在于,所述调用预置的Mybatis组件根据所述业务数据得到数据库名,包括:调用所述Mybatis组件中的映射接口提取所述业务数据中的业务要素;根据预置的分库分表规则对所述业务要素进行计算,得到所述业务数据的数据库名;或对所述业务要素进行哈希运算得到哈希摘要,并根据预置的计算规则对所述哈希摘要进行计算,得到所述业务数据的数据库名。5.根据权利要求1所述的数据事务处理方法,其特征在于,所述调用所述Mybatis组件创建与所述真实数据库之间的真实连接,包括:若确定所述Spring JDBC组件生成代理事务信息,则调用所述Mybatis组件中的事务工厂生成真实事务,所述真实事务用于对所述真实数据库进行事务提交、或事务关闭、或事务回滚;调用所述Mybatis组件中的事务工厂根据所述真实事务创建真实连接,所述真实连接是与所述真实数据库之间的通信连接。6.根据权利要求5所述的数据事务处理方法,其特征在于,调用所述Mybatis组件中的
事务工厂生成真实事务,包括:所述事务工厂若确定所述代理事务信息的类型为提交类型,则根据所述提交类型生成事务提交的真实事务;所述事务工厂若确定所述代理事务信息的类型为关闭类型,则根据所述提交类型生成事务关闭的真实事务;所述事务工厂若确定所述代理事务信息的类型为回滚类型,则根据所述提交类型生成事务回滚...

【专利技术属性】
技术研发人员:杨林杨涛王丹李小平杨硕朱伟张煌辉李艳静薛欣妹秦璐琪
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1