当前位置: 首页 > news >正文

预计5.2.1版本的SharedingSphere Hint指定数据库未生效问题

配置文件展示

shardingsphere:props:sql-show: falsedatasource:names:datacenter1,datacenter2,datacenter3rules:sharding:tables:shape:actual-data-nodes: datacenter$->{1..3}.shape$->{0..7}key-generate-strategy:column: idkey-generator-name: snowflaketable-strategy:hint:sharding-algorithm-name: myTest       sharding-algorithms:myTest:type: CLASS_BASEprops:strategy: hintalgorithmClassName: com.config.CustomDataSourceSelector

 com.config.CustomDataSourceSelector如下所示


public class CustomDataSourceSelector  implements HintShardingAlgorithm<Integer> {@Overridepublic Collection<String> doSharding(Collection<String> availableTargetNames, HintShardingValue<Integer> shardingValue) {Collection<Integer> values = shardingValue.getValues();Collection<String> dbs= Lists.newArrayList();for(Integer one: values){availableTargetNames.forEach(db->{if(db.endsWith(one.toString())){dbs.add(db);}});}return dbs;}@Overridepublic Properties getProps() {return null;}@Overridepublic void init(Properties properties) {}
}

 测试类:

@Test
public void test() {//创建HintManager示例HintManager hintManager = HintManager.getInstance();//配置分表路由//hintManager.addTableShardingValue("shape", 1);//配置分库路由hintManager.addDatabaseShardingValue("datacenter", 0);// sql查询数据库//关闭强制路由hintManager.close();
}

结果这里的sql查询并没有走datacenter0。经过排查,分库分表最终其实要落到表上,而配置文件中数据库的路由策略配置在逻辑表下,所以猜想用逻辑表名。(未读源码下的排查)

解决方式:

hintManager.addDatabaseShardingValue("shape", 0);

hintManager.addDatabaseShardingValue("shape", 0); 这里的还是得用逻辑表名才可以。


http://www.mrgr.cn/news/81944.html

相关文章:

  • WGCLOUD使用介绍 - 如何监控ActiveMQ和RabbitMQ
  • java定时任务备份数据库
  • 0164__【GNU】gcc -O编译选项 -Og -O0 -O1 -O2 -O3 -Os
  • ubuntu20.04有亮度调节条但是调节时亮度不变
  • 【CSS】HTML页面定位CSS - position 属性 relative 、absolute、fixed 、sticky
  • android 启用lint检查
  • 计算机网络500题2024-2025学年度第一学期复习题库(选择、判断、填空)
  • 前端项目 npm报错解决记录
  • ROUGE指标在自然语言处理中的应用:从理论到实践
  • 数字图像处理
  • C++算法知识点
  • sqlalchemy-access库操作MS Access
  • FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.4,SDP协议分析
  • 若依数据权限控制
  • Diffusion Transformer(DiT)——将扩散过程中的U-Net换成ViT:近频繁用于视频生成与机器人动作预测(含清华PAD详解)
  • Three.js 字体
  • html转PDF
  • NFS网络文件共享新认识——筑梦之路
  • HarmonyOS NEXT应用开发实战:一分钟写一个网络接口,JsonFormat插件推荐
  • ESP-IDF学习记录(3)ESP-IDF组件管理
  • 深入解析 Oracle 的聚合函数 ROLLUP
  • uniapp使用ucharts组件
  • 云计算学习架构篇之HTTP协议、Nginx常用模块与Nginx服务实战
  • SOME/IP 协议详解——远程过程调用(RPC)
  • Netty网络模型
  • SCAU高程进阶题(自用)