Afsalmc commented on issue #29841:
URL:
https://github.com/apache/shardingsphere/issues/29841#issuecomment-1958425446
@strongduanmu Forgot to mention that I am using java API to add default
sharding strategy.
` shardingRuleConfig.setDefaultDatabaseShardingStrategy(new
StandardShardingStrategyConfiguration("Accountid", "shardingLogic"));`
shardingLogic is a custom sharding Logic
```
public final class ShardingLogic implements
StandardShardingAlgorithm<Integer> {
private Map<Integer,String> shardMap = new HashMap<>();
private shardMapLoader shardMapLoader;
private AbstractConfiguration config;
public ShardingLogic() throws ConfigurationException {
config = Main.getConfig();
var shardConnection = config.getString("shardMapJdbcUrl");
var shardUser = config.getString("shardMapUserName");
var shardPass = config.getString("shardMapPass");
shardMapLoader = new
shardMapLoader(shardConnection,shardUser,shardPass);
shardMap = shardMapLoader.LoadtoJavaMap();
}
@Override
public String doSharding(final Collection<String> availableTargetNames,
final PreciseShardingValue<Integer> shardingValue) {
for (String each : availableTargetNames) {
if(!shardMap.containsKey(shardingValue.getValue()))
break;
if(availableTargetNames.size() ==1){
return each;
}
var dbSource = shardMap.get(shardingValue.getValue());
if(!each.contains(">")){
for (var dataSources: each.split("\\|")) {
if(dbSource.equals(dataSources)){
return each;
}
}
}
var shardingSchema =
shardingValue.getLogicTableName().split("__",2)[0];
var targetSchemaSet = each.split(">")[0];
String[] targetSchemas = null !=
config.getString(targetSchemaSet+"Schema") ?
config.getString(targetSchemaSet+"Schema").split(",") : new String[]{""};
var isMatchingSchema = (null !=shardingSchema) &&
Arrays.asList(targetSchemas).contains(shardingSchema);
if(isMatchingSchema){
var targetSources = each.split(">")[1].split("\\|");
for(var targetSource:targetSources){
if(dbSource.equals(targetSource))
return each;
}
}
}
return null;
}
@Override
public Collection<String> doSharding(final Collection<String>
availableTargetNames, final RangeShardingValue<Integer> shardingValue) {
return availableTargetNames;
}
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]