ULID 발생기

ULID(보편적으로 고유한 사전식 정렬 가능한 식별자) 생성. 26자, URL 안전, 시간 정렬 가능, UUID와 호환됩니다.

ULID 생성

정렬 가능한 고유 식별자 생성

생성된 ULID

고유 식별자를 생성하려면 "ULID 생성"을 클릭하세요

자주 묻는 질문

What is a ULID?

48비트 밀리초 타임스탬프와 80비트 난수를 담은 26자 식별자로, ID가 생성 시간 순서대로 정렬됩니다.

UUID 대신 ULID를 선택하는 이유는 무엇인가요?

ULID는 시간순으로 사전식 정렬이 가능하고 더 짧으며, 하이픈을 관리할 필요 없는 URL 안전 Crockford base32를 사용합니다.

Can I trust the ordering?

다른 밀리초 간에는 보장됩니다. 같은 밀리초 안에서 생성된 두 ULID 사이의 순서는 보장되지 않습니다.

UUID가 사용되는 곳에서도 ULID를 쓸 수 있나요?

대부분의 문자열 컬럼과 API에 그대로 사용할 수 있으며, 두 형식을 함께 사용해야 하는 경우에도 ULID와 UUID 간 변환은 간단합니다.

ULID의 길이는 얼마이며 어떤 문자를 사용하나요?

모든 ULID는 Crockford Base32를 사용하여 정확히 26자입니다. Crockford Base32는 숫자 0-9와 알파벳 A-Z 중 I, L, O, U를 제외한 문자로 구성됩니다. 이 고정 길이 덕분에 데이터베이스 컬럼 크기를 예측 가능하게 유지할 수 있고, ID를 소리 내어 읽거나 수동으로 입력할 때 혼동되기 쉬운 문자도 피할 수 있습니다.

ULID는 URL과 파일명에 사용해도 안전한가요?

네. ULID는 하이픈, 슬래시, 기호 없이 대문자와 숫자만 포함하므로 퍼센트 인코딩 없이도 URL, 경로 세그먼트, 파일명에 그대로 사용할 수 있습니다. 26자 길이는 라우트 패턴이나 로그 한 줄에도 부담 없이 들어갑니다.

같은 밀리초에 몇 개의 ULID를 생성할 수 있나요?

80비트 난수 부분이 밀리초당 약 2^80개의 값을 제공하므로 사실상 충돌이 발생하지 않습니다. 애플리케이션이 한 밀리초 안에 여러 ID를 생성하는 경우에는 단조(monotonic) 모드를 사용하세요. 이 모드는 난수 부분을 1씩 증가시켜 정렬 순서를 그대로 유지합니다.

ULID에서 타임스탬프를 읽으려면 어떻게 하나요?

처음 10자는 밀리초 단위의 Unix 타임스탬프를 인코딩하며, 나머지 16자는 난수입니다. 해당 10자를 Crockford Base32에서 숫자로 디코딩한 뒤, 아무 Unix 타임스탬프 도구로 변환하면 정확한 생성 시각을 얻을 수 있습니다.

ULID 구조

각 ULID는 타임스탬프와 무작위성 두 부분으로 구성됩니다

타임스탬프 (10자형) 랜덤성 (16캐릭터)

01ARZ3NDEKTSV4RRFFQ69G5FAV

예시: 이 ULID는 특정 밀리초에 생성되었으며 80비트의 무작위성을 포함하고 있습니다

타임스탬프 (48비트)

유닉스 시대(1970-01-01) 이후 밀리초 단위. 시간 순서에 따라 정렬 방식을 제공하며 10889년까지 지속됩니다.

무작위성 (80비트)

암호학적으로 안전한 임의 값. 밀리초당 1.21 조 개의 고유 ID를 제공합니다.

기술 사양

ULID는 정렬 가능하고 URL 안전하며 UUID와 호환되도록 설계되었습니다

특징

  • 암호학적으로 안전한 무작위성
  • 클라이언트 측 생성만 가능합니다
  • 사전식 정렬 가능
  • 특수 문자 사용 금지 (URL 안전)

제원

  • 26자 (128비트)
  • 크록포드의 Base32 인코딩
  • 48비트 타임스탬프 + 80비트 무작위성
  • 밀리초당 1.21만 명의 ID

참고 문헌 및 리소스