MycatスライスアルゴリズムLatestMonthPartion
1817 ワード
スライスアルゴリズムについてxmlの構成は次のとおりです.
このスライスアルゴリズムは、提供された時間数に基づいてスライスされ、splitOneDayパラメータは、1日に何個のスライスに分割するか、最大24個、最低1個を構成するために使用される.このパラメータの正当な値は0~24です.そうしないと、異常情報が放出されます.「invalid splitOnDay param」です.関連コードは次のとおりです.
このアルゴリズムは、より多くのdataNodeを構成する必要があります.dataNodeの総数は31*splitOneDayです.(31は、自然月ごとに最大31日まであるので、データが正しく挿入されていることを確認するために31を使用します).
このセグメントコードによると、1、時間フォーマットは「yyyyyMMddHH」に合致しなければならない.そうしないと、日付と時間数を正確に解析できない.2、多くのdataNodeを配置する必要があり、毎日1枚ずつスライスしても、データがすべて挿入されることを確保するために、31個のdataNodeが必要である.3、自然月循環でノードに格納され、例えば033123がインデックス743のノードに格納されると、040100はインデックス0のノードに格納される.
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のノードに格納される.