- lexicographical rank" 줄임말로 문자열의 사전적 순서를 활용해 순위를 결정하는 알고리즘이다
Todo-A와 Todo-B 사이에 Todo-E를 삽입시 Todo-E에 Todo-A와 Todo-B 두 순위값의 중간에 해당하는 0|AAAB:를 FixedKey 값으로 할당
Todo-A와 Todo-B 사이의 순위값이 고갈됐다면, Todo-A의 FixedKey(AAAA) 뒤에 규칙에 따라 VariableKey를 추가해 Todo-A의 뒤에, Todo-B의 앞에 오는 값을 할당(예를 들어 규칙에 따른 VariableKey가 5라면 0|AAAA:5가 할당하고 이 때 LexoRank는 FixedKey와 VariableKey를 조합해 대상 항목만 변경하므로 O(1)에 순서를 정렬)
LexoRank의 순위값 고갈을 사전에 감지하고 무중단으로 재조정하는 방법
- 감지 방법
- 재조정 방법
재조정이 필요할 때 세 개의 Bucket(0, 1, 2)을 순환하며 사용합니다. Bucket 증가 시(예: 0 → 1 또는 1 → 2)에는 낮은 순위의 순위값(0|DDD)부터 간격을 넓혀가며 다음 버킷으로 재할당하고 이 방법을 통해 기존 순위를 유지하면서 무중단으로 순위값을 재조정이 가능( 재조정 상황을 제외하고는 일반적으로 하나의 Bucket만 사용 )
출처: https://techblog.lycorp.co.jp/ko/about-atlassian-jira-ranking-algorithm-lexorank