spring 分库事物实现

在spring的事物控制中一般是针对一个库的。我们现在又这样一个情况。为了应对业务的增长,数据量将来的膨胀。我们的数据将这样保存:

1.我们的数据将按照id进行哈希,然后存放到1000张明细表中。

2.由于使用的是mysql,需要考虑到性能,我们还需要记录数据的统计值。这个数据也要通过同一个id的哈希值,分别存放到1000张统计表中。

      *3.保证数据的事物性操作,即统计表的值要和明细表的数值保持一致。

  4.为了降低数据库的压力,我们将1000张明细表和1000张总表,分成8个库(这个数量可以在数据库压力增大时,再次分库)。每个库125*2张表。

 

spring的事物控制管理是由一个事物代理完成的。代理只支持单个库。也就是我们只能注入一个dataSource。

 

   这样是不能支持我们的分库设计的。所以我们将数据库分别生成不同的事物代理,然后通过一个事物管理器控制。


 

当外部进行操作时,我们将针对id的哈希值来定位数据库,通过一个事物管理器,采用相对应的spring事物代理。

 

将按照数据库的事物代理,封装到一个map中。并且注入到一个事物管理器中。

 


下面是分库事物管理器类的实现:

com.du.service.support.DubaiServiceManager

 

当调用时,使用public Object getServiceBean(String objId) 方法获取相应的事物管理器。

 

 

以上是我实现spring分库事物的方法,其实还很不成熟。有些冗余,有些笨重,希望有更好实现方法的牛人留言!谢谢了!


 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值