본문으로 건너뛰기

사용자 정의 순서(User Defined Order)

LexoRank


  • Bucket
    • Rank 값을 저장하는 곳입니다.
    • 0 -> 1 -> 2 -> 0 순으로 순환하는 3 개의 Bucket이 존재합니다.
    • 1 개의 Bucket만 사용되며, Balancing을 하는 동안에만 2 개의 Bucket이 존재할 수 있습니다.
  • Balancing
    • Rank를 변경할 수 없는 경우가 발생한 경우, 전체 Rank를 다시 계산하는 것을 의미합니다.
  • Marker Row
    • Type 0: 가장 작은 Rank 값을 가진 Row
    • Type 1
    • Type 2: 가장 큰 Rank 값을 가진 Row

  • <bucket>|<rank> 형태로 저장합니다.
  • base36(JIRA): 0123456789abcdefghijklmnopqrstuvwxyz
  • base64: 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^_abcdefghijklmnopqrstuvwxyz
  • 소숫점 대신 : 문자를 사용합니다.
  • 숫자 범위
    • 231<366<2322^{31} < 36^{6} < 2^{32}
    • 21271<36246<212722^{1271} < 36^{246} < 2^{1272}
    • 21302<36252<213032^{1302} < 36^{252} < 2^{1303}
    • 646=23664^{6} = 2^{36}
    • 64246=2147664^{246} = 2^{1476}
    • 64252=2151264^{252} = 2^{1512}
idrank
10|000001:
20|hzzzzz:
30|i00000:
40|zzzzzz:

Linked List

TODO