多数据源配置

本文探讨了分库分表的不同模式,如多库多表、多库一表、一库多表,并详细介绍了抽象的路由接口和实现类。讲解了配置文件的使用,数据源映射,以及如何通过算法确定数据存储位置和表名。还涉及到了线程安全性和插件应用,以及配置检查和数据插入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分库分表:
多个库多个表
多个库一个表
一个库多个表;
库:Order —>一个order表;

一个接口IRouting–定义行为
1.根据某种算法去计算出示那个库的行为
2.根据某种算法去计算出示具体库中的那个表的行为
3.表明的后缀为order-0001 计算表的生存后缀行为;

接口-ItulingRouting
抽象类:AbstractTulingRouting implements ITulingRouting,InittalizingBean{
具体实现类

接口类:
calDataSoureKey
getRoutingFileHashCode
calTableKey
getFormatTableSuffix

抽象类:getRoutingFileHashCode
getFormatTableSuffix

配置:
几个库,几个表,路由字段,表后缀风格,连接风格,默认规则;
DataSouteConfiguration
TulingMutiDataSource

路由类:AbstractRoutirgDataSource extends AbstractDataSource implement InitializingBear()

MutiDataSourceHolder;
保存数据源和表
final ThreadLocal dataSourceHolder = new ThreadLocal();
final ThreadLocal tableIndexHolder = new ThreadLocal();
setDataSourceKeyMapping(setMapping)–设置和保存数据源;
多数据源和映射关系配置
holder风格,
抽象类 afterPropertiesSet:工程在启动的时候,检查配置路由参数和 策略是否相匹配;

静态数据检查;
分库分表插件;

hasMap = 局部变量–为什么没有出现线程安全问题;
栈封闭

使用@ConditionOnProperty()注解 配置是否符合条件,根据配置文件的读取;
determineTargetDataSource(){
清除线程缓存:
MutiDataSourceHolder.clearDataSourceKey();
MutiDataSourceHolder.clearTableIndex();

insert into order${tableSuffix}(order_id,user_id,money) values(#{orderid},#{userid},#{money})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值