기능 소개
이 도구는 브라우저에서 ULID를 생성합니다. ULID는 UUID처럼 128비트 식별자이지만 26자로 쓰이고 생성 시간순으로 정렬됩니다. 그래서 데이터베이스 기본 키, 이벤트와 로그 ID, 파일 이름처럼 별도의 타임스탬프 열 없이 생성 순서대로 나열하고 싶은 모든 곳에 잘 맞습니다.
ULID는 두 부분으로 이루어집니다.
- 타임스탬프(앞 10자): Unix 에포크 이후의 밀리초, 48비트입니다. 10889년까지 쓸 수 있습니다.
- 무작위 값(뒤 16자): 브라우저의 암호학적 난수 생성기에서 얻은 80비트입니다.
ULID는 Crockford의 Base32 알파벳 0123456789ABCDEFGHJKMNPQRSTVWXYZ를 씁니다. I, L, O, U를 빼서 소리 내어 읽기 쉽고 잘못 입력하기 어려우며, URL에서 이스케이프해야 하는 문자도 없습니다.
사용 방법
- 필요한 ID 개수를 1개에서 1000개 사이로 고릅니다.
- 같은 밀리초에 여러 개가 만들어져도 순서를 유지해야 한다면 단조 증가를 켭니다. 그러면 새 ID마다 무작위 부분이 1씩 증가합니다.
- 시스템이 ID를 소문자로 저장한다면 소문자를 켭니다. ULID는 대소문자를 구분하지 않으며, 정식 표기는 대문자입니다.
- 목록을 복사하거나 텍스트 파일로 다운로드합니다. 다시 생성을 누르면 새 묶음이 만들어집니다.
예시
01ARZ3NDEKTSV4RRFFQ69G5FAV
여기서 01ARZ3NDEK는 타임스탬프 1469922850259(2016-07-30 23:54:10.259 UTC)이고, TSV4RRFFQ69G5FAV는 무작위 부분입니다. 1초 간격으로 만들어진 두 ULID는 앞 몇 글자가 같기 때문에, 단순한 문자열 정렬만으로 시간순으로 정렬됩니다.
ULID와 UUID 비교
무작위 UUID v4는 새 행을 B-tree 인덱스 곳곳에 흩뿌려 큰 테이블에서 삽입을 느리게 만듭니다. ULID는 대체로 증가하므로 자동 증가 정수처럼 새 행이 인덱스 끝에 쌓이면서도, 별도의 조정 없이 여러 머신에서 고유성이 보장됩니다. 대신 ULID는 생성된 대략적인 시점을 드러냅니다. 그것이 문제라면 UUID v4를 쓰세요.
자주 묻는 질문
› ULID란 무엇인가요?
ULID(Universally Unique Lexicographically Sortable Identifier)는 Crockford Base32 문자 26자로 쓰는 128비트 ID입니다. 앞 10자는 밀리초 타임스탬프를, 뒤 16자는 무작위 값을 나타냅니다.
› ULID와 UUID 중 무엇을 써야 하나요?
데이터베이스 키나 로그 ID처럼 생성 시간순으로 정렬되는 ID가 필요하면 ULID를 쓰세요. 생성 시점이 드러나면 안 되는 ID에는 UUID v4를 쓰세요. UUID v7도 시간순으로 정렬되는 표준 대안입니다.
› 단조 증가 모드는 무엇을 하나요?
같은 밀리초에 만들어진 ID는 보통 서로 독립적인 무작위 부분을 가지므로, 그 밀리초 안에서의 순서는 무작위입니다. 단조 증가 모드에서는 대신 무작위 부분을 1씩 증가시키므로, 묶음 안의 모든 ID가 앞의 ID보다 엄격하게 뒤에 정렬됩니다.
› ID가 안전하게 생성되나요?
네. 무작위 부분은 브라우저의 암호학적 난수 생성기에서 얻으며, 서버로 전송되는 것은 없습니다.