MycatスライスアルゴリズムLatestMonthPartion


スライスアルゴリズムについてxmlの構成は次のとおりです.

    24

このスライスアルゴリズムは、提供された時間数に基づいてスライスされ、splitOneDayパラメータは、1日に何個のスライスに分割するか、最大24個、最低1個を構成するために使用される.このパラメータの正当な値は0~24です.そうしないと、異常情報が放出されます.「invalid splitOnDay param」です.関連コードは次のとおりです.
public void setSplitOneDay(int split) {
    splitOneDay = split;
    hourSpan = 24 / splitOneDay;
    if (hourSpan * 24 < 24) {
        throw new java.lang.IllegalArgumentException(
            "invalid splitOnDay param:" + splitOneDay 
                + " should be an even number and less or equals than 24");
    }
}

このアルゴリズムは、より多くのdataNodeを構成する必要があります.dataNodeの総数は31*splitOneDayです.(31は、自然月ごとに最大31日まであるので、データが正しく挿入されていることを確認するために31を使用します).
public Integer calculate(String columnValue)  {
    try {
        int valueLen = columnValue.length();
        //     
        int day = Integer.parseInt(columnValue.substring(valueLen - 4, valueLen - 2));
        //     
        int hour = Integer.parseInt(columnValue.substring(valueLen - 2));
        // hourSpan = hourSpan = 24 / splitOneDay;
        int dnIndex = (day - 1) * splitOneDay + hour / hourSpan;
        return dnIndex;
    }catch (NumberFormatException e){
        throw new IllegalArgumentException(new StringBuilder().append("columnValue:").
            append(columnValue).append(" Please check if the format satisfied.").toString(),e);
    }
}

このセグメントコードによると、1、時間フォーマットは「yyyyyMMddHH」に合致しなければならない.そうしないと、日付と時間数を正確に解析できない.2、多くのdataNodeを配置する必要があり、毎日1枚ずつスライスしても、データがすべて挿入されることを確保するために、31個のdataNodeが必要である.3、自然月循環でノードに格納され、例えば033123がインデックス743のノードに格納されると、040100はインデックス0のノードに格納される.