赞
踩
在ShardingJdbc 5.x版本中,已经去除了 分片策略的yml配置方式,改用SPI方式进行分片策略的注入了,所以之前4.x版本时的分片方法已经不实用了,经过源码阅读,采用以下方式可以自定义分片策略。
public class MonthShardingAlgorithm implements StandardShardingAlgorithm<Date> { private static final Logger logger = LoggerFactory.getLogger(MonthShardingAlgorithm.class); private Properties props = new Properties(); @Override public String doSharding(Collection<String> collection, PreciseShardingValue<Date> preciseShardingValue) { // 实现精确分片 } @Override public Collection<String> doSharding(Collection<String> collection, RangeShardingValue<Date> rangeShardingValue) { // 实现范围分片 } @Override public void init() { logger.info("初始化按月分片算法"); } @Override public String getType() { // MONTH_SHARD 作为该分片策略的 key return ShardingConstants.MONTH_SHARD; } @Override public Properties getProps() { return props; } @Override public void setProps(Properties props) { this.props = props; } }
在 resource 文件夹下创建 META-INF/services文件夹,并在该文件夹下创建org.apache.shardingsphere.sharding.spi.ShardingAlgorithm文件
在文件中指明分片策略类 MonthShardingAlgorithm
的全类名
在ShardingJdbcConfig中,配置分表算法时指定该分片策略名称
// 配置分表算法 设置按月分表
shardingRuleConfig.getShardingAlgorithms().put(ShardingConstants.TABLE_SHARDING_ALGORITHM_KEY,
// MONTH_SHARD 即上述分片算法的Key
new ShardingSphereAlgorithmConfiguration(ShardingConstants.MONTH_SHARD, new Properties()));
https://gitee.com/airtrioa/sharding-jdbc-demo
Oracle
分库分表,并且还特么同时拿了MySQL
做备库)MySQL
和 Oracle
直接做分库,Sharding-Jdbc
也是不支持的,至少 5.0.0
不支持Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。