wangzhuangwei commented on issue #9250:
URL: https://github.com/apache/shardingsphere/issues/9250#issuecomment-770735809


   public class ClickTableComplexShardingAlgorithm implements 
ComplexKeysShardingAlgorithm<Long> {
   
       @Override
       public Collection<String> doSharding(Collection<String> 
availableTargetNames, ComplexKeysShardingValue<Long> shardingValue) {
           try {
               Long startTime = SystemClock.getInstance().getCurrentTime();
               Set<String> availableTargetNameList = new HashSet<String>();
               Map<String, Collection<Long>> columnNameAndShardingValuesMap = 
shardingValue.getColumnNameAndShardingValuesMap();
               if(log.isDebugEnabled()) {
                   log.debug("get click table name by 
columnNameAndShardingValuesMap:{}", 
JSON.toJSONString(columnNameAndShardingValuesMap));
               }
               Map<String, Range<Long>> columnNameAndRangeValuesMap = 
shardingValue.getColumnNameAndRangeValuesMap();
               if(log.isDebugEnabled()) {
                   log.debug("get click table name by 
columnNameAndRangeValuesMap:{}", 
JSON.toJSONString(columnNameAndRangeValuesMap));
               }
               Collection<Long> shardClickTimes = 
columnNameAndShardingValuesMap.get(ClickConstants.SHARDING_COLUMN_CLICK_TIME);
               Range<Long> rangeClickTimes = 
columnNameAndRangeValuesMap.get(ClickConstants.SHARDING_COLUMN_CLICK_TIME);
               Collection<Long> crcs = 
columnNameAndShardingValuesMap.get(ClickConstants.SHARDING_COLUMN_CRC);
               Iterator<Long> crcIterator = crcs.iterator();
               while (crcIterator.hasNext()) {
                   Long crc = crcIterator.next();
                   log.info("click table column crc's values:{}", crc);
                   Long serialNo = crc % ClickConstants.SHARDING_CRC_COUNT;
                   serialNo = Math.abs(serialNo);
                   setStandardTableName(availableTargetNameList, 
shardClickTimes, serialNo);
                   setRangeTableName(availableTargetNameList, rangeClickTimes, 
serialNo);
               }
               if (availableTargetNameList.size() > 0) {
                   if(log.isDebugEnabled()) {
                       log.debug("get click tables:{}", 
JSON.toJSONString(availableTargetNameList));
                   }
                   Long timeRegion = SystemClock.getInstance().getCurrentTime() 
- startTime;
                   if(timeRegion > 3) {
                       log.error("get click table name waste time:{}ms", 
timeRegion);
                   }
                   return availableTargetNameList;
               }
               log.error("not found click table");
               throw new RuntimeException("dot found real table name");
           } catch (Exception e) {
               log.error(e.getMessage(), e);
               throw new UnsupportedOperationException();
           }
       }


----------------------------------------------------------------
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.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to