본문 바로가기

로딩 중...


ULID 생성기

ULID 생성기는 생성된 시각 순서대로 정렬되는 26자리 식별자를 즉시 만들어주는 도구입니다. UUID 대신 시간 순 정렬이 필요한 게시글 ID, 로그 순번, URL에 넣기 짧고 안전한 식별자가 필요할 때 씁니다.

메시지 로그 테이블에 UUID v4를 기본키로 쓰다 보니 값이 시간 순으로 정렬되지 않아 인덱스가 파편화되고, 최근 데이터만 조회하는 쿼리가 자꾸 느려졌습니다. ULID로 바꾸면 해결된다는 걸 알고 나서, 실제로 몇 개 뽑아 정렬이 되는지부터 눈으로 확인해 볼 도구가 필요해서 만들었습니다.

사용 방법

지원하는 형식

따로 입력할 값은 없고, 결과는 앞 10자리 타임스탬프(밀리초)와 뒤 16자리 무작위 값을 Crockford Base32(대문자, 혼동하기 쉬운 I·L·O·U 제외)로 이어붙인 26자 문자열입니다. 개수는 1~50개까지 지정할 수 있고, 같은 밀리초 안에서 여러 개를 만들면 monotonic 규칙에 따라 뒷부분 난수를 1씩 증가시켜 생성 순서대로 정렬되게 합니다.

  1. 개수를 정하고 다시 생성 버튼을 누르면 목록이 만들어집니다.
  2. 각 줄을 클릭하면 그 값만, 전체 복사 버튼을 누르면 목록 전체가 줄바꿈으로 구분되어 복사됩니다.

자주 묻는 질문

ULID는 UUID 시스템과 비교했을 때 어떤 장점이 있나요?

가장 큰 장점은 '정렬 가능성'과 '가독성'입니다. 타임스탬프를 기반으로 생성되기 때문에 데이터베이스에 저장할 때 시간 순서대로 정렬하기 유리하여 인덱싱 효율이 좋습니다. 또한, 길이가 26자로 더 짧고, 헷갈리기 쉬운 영문자(I, L, O 등)와 특수기호(하이픈)를 제외하여 URL이나 텍스트 식별자로 사용하기 훨씬 편리합니다.

생성되는 값의 중복 가능성은 어느 정도인가요?

중복 확률은 사실상 0에 가깝습니다. 뒷부분의 16자리는 암호학적으로 안전한 무작위 난수로 생성되며, 이는 1밀리초라는 아주 짧은 시간 동안 약 1.21e24개의 고유한 조합을 만들어낼 수 있는 크기입니다. 따라서 어떠한 대규모 분산 환경에서도 안심하고 사용할 수 있습니다.

이 도구에서 식별자를 생성할 때 서버에 로그가 남나요?

아니요, 전혀 남지 않습니다. utilzip의 생성 기능은 사용자가 접속한 기기의 웹 브라우저 메모리 안에서 자체적으로 연산을 수행합니다. 외부 서버와의 데이터 통신 없이 독립적으로 동작하므로, 민감한 프로젝트나 실무 환경에서도 정보 유출 걱정 없이 안전하게 활용할 수 있습니다.