24시간마다(자연일이 아님) 사용자 구성에 따라 두 가지 작업 모드가 있습니다. 스트립 모드에서는 사용자가 시작 날짜만 정의하는 경우 시작 날짜(포함) ) 처음에는 각 타임 슬라이스가 무한히 증가하며, 링 모드에서는 사용자가 시작 날짜와 종료 날짜를 정의할 때 종료 날짜(포함)와 시작 날짜(포함) 사이의 타임 슬라이스 수가 슬라이스로 사용됩니다. 총 개수(샤드 수는 고정되어 있음)는 모듈로 방식으로 이러한 샤드로 라우팅됩니다.
1. DBLE이 시작되면 rule.xml에서 사용자가 구성한 sBeginDate를 읽어 시작 시간을 결정합니다.
2. 사용자가 rule.xml에서 구성한 sPartionDay를 읽어옵니다. 시작 시간을 결정합니다. 각 MySQL 샤드는 며칠 동안의 데이터를 전달합니까?
3. 샤딩된 인덱스의 날짜 형식을 결정하려면 rule.xml에서 사용자가 구성한 dateFormat을 읽어보세요.
4. DBLE 실행 과정에서 사용자가 이 알고리즘을 사용하여 테이블에 접근하면 WHERE 절의 샤드 인덱스 값(문자열)을 추출하여 Java 내부 시간 유형으로 변환하려고 시도합니다.
5. 그런 다음 샤드를 찾습니다. 인덱스 값과 시작 시간의 차이를 MySQL 샤드가 호스팅된 일수로 나누어 해당 샤드가 속한 샤드를 결정합니다.
1 DBLE이 시작될 때. , rule.xml에서 사용자가 구성한 시작 시간 sBeginDate 및 종료 시간 sEndDate 및 각 MySQL 샤드가 sPartionDay를 운반하는 데이터 일수를 읽습니다.
2 사용자 설정에 따라 링이 시작됩니다. sBeginDate에서, 매 sPartionDay일마다 하나의 샤드가 있고 sEndDate로 끝나며 샤드를 직렬로 연결합니다. 이들을 직렬로 연결합니다.
3. rule.xml에서 사용자가 구성한 defaultNode를 읽습니다.
4. DBLE 실행 과정에서 사용자가 이 알고리즘을 사용하여 테이블에 접근하면 WHERE 절에서 샤드 인덱스 값(문자열)을 추출하여 Java 내부 날짜 유형으로 변환하려고 시도합니다.
5. 그런 다음 샤드 인덱스 값과 시작 날짜의 차이를 찾습니다. 샤드 인덱스 값이 sBeginDate보다 이전이 아닌 경우(sEndDate보다 늦음) MySQL 샤드가 운반된 일 수는 다음과 같이 사용됩니다. 모듈러스이며, 샤드 인덱스 값은 자신이 속한 샤드를 얻기 위해 모듈로입니다. 샤드 인덱스 값이 sBeginDate보다 이전인 경우에는 defaultNode 분기에 배치됩니다.
유사한 비교. MyCat을 사용한 샤딩 알고리즘
미들웨어
DBLE
MyCat
샤딩 알고리즘 유형 날짜 파티션 알고리즘은 날짜(일)별로 샤딩됩니다. p>
두 미들웨어의 모듈로 범위 샤딩 알고리즘 사용에는 차이가 없습니다.
개발 노트
샤딩된 인덱스 1. 문자열이어야 하며 java. text.SimpleDateFormat은 사용자가 지정한 dateFormat을 기준으로 java.util.Date로 변환 가능
샤딩 인덱스 2. 밴드 모드와 링 모드 두 가지 모드 제공
샤딩 인덱스 3. 스트라이프 인덱스 모드는 sBeginDate(포함)부터 시작하여 86400000밀리초(24시간)를 하나의 부분으로 하고, 각 sPartionDay 부분은 하나의 샤드입니다. 이론적으로 샤딩 개수는 무한정 늘어날 수 있지만, sBeginDate 이전의 데이터가 나타나고 defaultNode가 설정되지 않은 경우 라우팅됩니다. 실패합니다(defaultNode가 있는 경우 defaultNode로 라우팅)
조각화된 인덱스 4. 86400000밀리초(24시간)의 링 모드는 하나의 부분이고 각 sPartionDay 부분은 sBeginDate의 시간 길이입니다. (inclusive) to sEndDate (inclusive)를 단일 조각의 길이로 나누어 일정한 수의 조각을 얻었으나 sBeginDate 이전의 데이터가 나타나고 존재하지 않습니다. defaultNode가 설정된 경우 라우팅이 실패합니다(defaultNode가 있는 경우, defaultNode로 경로 지정)
조각화된 인덱스 5. 모드에 관계없이 조각화된 인덱스 필드의 형식 문자열 dateFormat은 사용자가 지정합니다.
p>
조각화된 인덱스 6. 모드에 관계없이 구분은 달력 시간을 기준으로 하지 않고, 자연월과 자연년을 대응할 수 없으며, 윤초 문제의 영향을 받습니다.
작동 및 유지 관리 지점
>
확장 1. 스트라이프 모드에서는 sBeginDate 이후의 데이터가 나오므로 리밸런싱 없이 샤드 수가 증가합니다.
확장 2. 스트라이프 모드에는 샤드를 자동으로 추가하는 기능이 없습니다. 미리 수동으로 샤드를 추가해야 하며, 라우팅 정책에 따라 계산된 샤드가 없으면 실패하게 됩니다.
확장 3. 링 모드에서 기존과 신규가 중복되는 경우 [sBeginDate, sEndDate] , 부분 데이터 마이그레이션이 필요하며, 기존 [sBeginDate,sEndDate] 사이에 중복이 없으면 데이터 재조정이 필요합니다.
구성 참고 사항
구성 항목 1. 규칙에 있습니다. xml, 구성 가능한 항목은
구성 항목 3. rule.xml의
구성 항목 4. rule.xml에서
구성 항목 5.
구성 항목 6 .규칙에서 필수 구성 항목이 아닌 .xml에