complex複雑アルゴリズム
1716 ワード
complex複雑アルゴリズム CoplexKeys Sharding Algorithm CoplexKeys Sharding Algorithm
複数のスライスキーのID、user_をサポートします.idは範囲ごとにIDを検索することができます.5 and id<10は各スライスキーに複数の値があります.
複数のスライスキーのID、user_をサポートします.idは範囲ごとにIDを検索することができます.5 and id<10は各スライスキーに複数の値があります.
import org.apache.shardingsphere.api.sharding.complex.ComplexKeysShardingValue;
import java.util.Collection;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
public class ComplexDbAlgorithm implements ComplexKeysShardingAlgorithm {
@Override
public Collection doSharding(Collection availableTargetNames, ComplexKeysShardingValue shardingValue) {
Map columnNameAndShardingValuesMap = shardingValue.getColumnNameAndShardingValuesMap();
System.out.println(" sharding "+columnNameAndShardingValuesMap);
for (Map.Entry entry: columnNameAndShardingValuesMap.entrySet()) {
String shardColumn = entry.getKey();
Object shardValue = entry.getValue();
}
Set result = new HashSet<>();
Collection idColl = (Collection)columnNameAndShardingValuesMap.get("id");
for (Object idObj: idColl) {
if (idObj instanceof Integer || idObj instanceof Long) {
long idTemp = Long.parseLong(idObj.toString());
long target = idTemp % 2;
for (Object targetNames:availableTargetNames) {
if (targetNames.toString().endsWith(target + "")) {
result.add(targetNames.toString());
}
}
}
}
System.out.println("complex result="+result);
return result;
}
}