Sharding-JDBC单库分表配置问题

weixin_38055995 2017-08-19 11:37:54
Sharding-JDBC(V1.5.0)单库分表除了配置需要拆分的表之外其他的不拆分的表是否也需要配置,只是不需要配置规则即可? 目前我是没有配置不需要拆分的数据表,在系统查询过程中一些存在外键关联的表查询出现了“Unable to find com.**.Module with id 0; nested exception is javax.persistence.EntityNotFoundException: Unable to find com.**.Module with id 0”错误 以下是我的配置之根据demo简单配置了需要拆分的表(applicationContext-sharding-JDBC.xml): <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:rdb="http://www.dangdang.com/schema/ddframe/rdb" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.dangdang.com/schema/ddframe/rdb http://www.dangdang.com/schema/ddframe/rdb/rdb.xsd "> <!--分表规则--> <rdb:strategy id="pcardIndexStrategy" sharding-columns="wyidh" algorithm-class="com.****.algorithm.SingleKeyModuloTableShardingAlgorithm"/> <rdb:data-source id="dataSource"> <rdb:sharding-rule data-sources="db-node-0" default-data-source="db-node-0"> <rdb:table-rules> <rdb:table-rule logic-table="tb_pcard_index" actual-tables="tb_pcard_index,tb_pcard_index1,tb_pcard_index2,tb_pcard_index3" table-strategy="pcardIndexStrategy"/> </rdb:table-rules> <rdb:binding-table-rules> <rdb:binding-table-rule logic-tables="tb_pcard_index"/> </rdb:binding-table-rules> <rdb:default-database-strategy sharding-columns="none" algorithm-class="com.dangdang.ddframe.rdb.sharding.api.strategy.database.NoneDatabaseShardingAlgorithm"/> </rdb:sharding-rule> <rdb:props> <prop key="metrics.enable">true</prop> </rdb:props> </rdb:data-source> </beans>
...全文
480 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38068785 2019-01-02
  • 打赏
  • 举报
回复
方法1:配置default-data-source,凡是在默认数据源中的表可以无需配置在分片规则中,Sharding-JDBC将在找不到分片数据源的情况下将表路由至默认数据源。 re: 版本:1.5.4 单表查询可以,多表关联查询就不行,会报错:Cannot find table rule and default data source with logic tables: '%s'。
weixin_38067813 2017-09-12
  • 打赏
  • 举报
回复
引用来自“AN安分分”的评论引用Sharding-Jdbc作者回答  10. 如果只有部分数据库分库分表,是否需要将不分库分表的表也配置在分片规则中? 回答: 是的。因为Sharding-JDBC是将多个数据源合并为一个统一的逻辑数据源。因此即使不分库分表的部分,不配置分片规则Sharding-JDBC即无法精确的断定应该路由至哪个数据源。 但是Sharding-JDBC提供了两种变通的方式,有助于简化配置。 方法1:配置default-data-source,凡是在默认数据源中的表可以无需配置在分片规则中,Sharding-JDBC将在找不到分片数据源的情况下将表路由至默认数据源。 方法2:将不参与分库分表的数据源独立于Sharding-JDBC之外,在应用中使用多个数据源分别处理分片和不分片的情况。 以上回答是在讨论群sharding-jdbc作者张亮哥的回答,怕我理解有误就将原话搬了过来
weixin_38067090 2017-09-12
  • 打赏
  • 举报
回复
引用Sharding-Jdbc作者回答  10. 如果只有部分数据库分库分表,是否需要将不分库分表的表也配置在分片规则中? 回答: 是的。因为Sharding-JDBC是将多个数据源合并为一个统一的逻辑数据源。因此即使不分库分表的部分,不配置分片规则Sharding-JDBC即无法精确的断定应该路由至哪个数据源。 但是Sharding-JDBC提供了两种变通的方式,有助于简化配置。 方法1:配置default-data-source,凡是在默认数据源中的表可以无需配置在分片规则中,Sharding-JDBC将在找不到分片数据源的情况下将表路由至默认数据源。 方法2:将不参与分库分表的数据源独立于Sharding-JDBC之外,在应用中使用多个数据源分别处理分片和不分片的情况。

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧