| @@ -18,6 +18,9 @@ | |||||
| package org.dubhe.utils; | package org.dubhe.utils; | ||||
| import java.util.Collection; | import java.util.Collection; | ||||
| import java.util.HashSet; | |||||
| import java.util.Set; | |||||
| import java.util.concurrent.ConcurrentHashMap; | |||||
| import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm; | import org.apache.shardingsphere.api.sharding.standard.PreciseShardingAlgorithm; | ||||
| import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue; | import org.apache.shardingsphere.api.sharding.standard.PreciseShardingValue; | ||||
| @@ -38,6 +41,8 @@ public class MyPreciseShardingAlgorithm implements PreciseShardingAlgorithm<Long | |||||
| */ | */ | ||||
| private long INTERVAL_NUMBER = 50; | private long INTERVAL_NUMBER = 50; | ||||
| private static Set<String> tableNames = new HashSet<>(); | |||||
| /** | /** | ||||
| * 分表策略处理 | * 分表策略处理 | ||||
| * | * | ||||
| @@ -49,10 +54,17 @@ public class MyPreciseShardingAlgorithm implements PreciseShardingAlgorithm<Long | |||||
| public String doSharding(Collection<String> collection, PreciseShardingValue<Long> preciseShardingValue) { | public String doSharding(Collection<String> collection, PreciseShardingValue<Long> preciseShardingValue) { | ||||
| long startIndex = 1; | long startIndex = 1; | ||||
| long endIndex = 50; | long endIndex = 50; | ||||
| dataSequenceService = SpringContextHolder.getBean(DataSequenceService.class); | |||||
| String tableName = preciseShardingValue.getLogicTableName()+ "_" + preciseSharding(preciseShardingValue.getValue(),startIndex ,endIndex); | String tableName = preciseShardingValue.getLogicTableName()+ "_" + preciseSharding(preciseShardingValue.getValue(),startIndex ,endIndex); | ||||
| if(!dataSequenceService.checkTableExist(tableName)){ | |||||
| dataSequenceService.createTable(tableName); | |||||
| if(!tableNames.contains(tableName)) { | |||||
| dataSequenceService = SpringContextHolder.getBean(DataSequenceService.class); | |||||
| if(!dataSequenceService.checkTableExist(tableName)){ | |||||
| try{ | |||||
| dataSequenceService.createTable(tableName); | |||||
| } catch (Exception e) { | |||||
| LogUtil.info(LogEnum.DATA_SEQUENCE, "table name repeat {}", tableName); | |||||
| } | |||||
| } | |||||
| tableNames.add(tableName); | |||||
| } | } | ||||
| return tableName; | return tableName; | ||||
| } | } | ||||