유틸리티

UUID란? 고유 ID가 필요한 이유와 생성 방법

DB 테이블에 새 레코드를 넣을 때 auto increment 대신 UUID를 쓰는 프로젝트가 점점 많아지고 있다. 분산 시스템에서 각 서버가 독립적으로 ID를 만들어도 충돌할 확률이 사실상 0에 가까운 게 UUID의 핵심 장점이다.

UUID의 구조

UUID(Universally Unique Identifier)는 128비트 길이의 고유 식별자다. 표준 형식으로 표기하면 32개의 16진수 문자를 하이픈으로 구분한 모양이 된다.

550e8400-e29b-41d4-a716-446655440000

총 5개 구간(8-4-4-4-12)으로 나뉘며, 세 번째 구간 첫 자리가 버전을 나타낸다. 위 예시에서 "4"는 UUID v4(랜덤 기반)라는 뜻이다.

UUID 버전별 차이

버전생성 방식특징
v1타임스탬프 + MAC 주소시간 순서 보장, MAC 노출 위험
v4랜덤 난수가장 많이 사용, 충돌 확률 극히 낮음
v5네임스페이스 + 이름 해시(SHA-1)같은 입력이면 같은 UUID 생성
v7타임스탬프 + 랜덤시간 순서 + 고유성 동시 확보 (최신)

실무에서 가장 많이 쓰이는 건 v4다. 완전 랜덤이라 생성 시점이나 장비 정보가 노출되지 않는다.

충돌 확률은 얼마나 되나

UUID v4의 랜덤 비트는 122비트다. 가능한 조합은 약 5.3 × 10의 36제곱. 매초 10억 개씩 100년 동안 생성해도 충돌 확률은 50%에 한참 못 미친다. 실질적으로 중복이 발생할 가능성은 무시해도 되는 수준이다.

어떤 형식으로 쓸까

  • 기본 형식xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx (가장 표준적)
  • 하이픈 제거 — 32자리 연속 문자열. URL이나 파일명에 쓸 때 편하다
  • 중괄호 형식 — Windows GUID 표기에서 사용
  • URN 형식urn:uuid: 접두어 포함. XML 문서 등에서 사용

UUID 생성기에서 형식을 선택하고 생성 버튼을 누르면 바로 결과가 나온다. 대량 생성(최대 1,000개)도 지원하고, 텍스트 파일로 다운로드할 수 있어서 테스트 데이터 준비에 유용하다.

ID 체계를 처음 설계할 때 UUID를 선택하면 나중에 시스템을 확장하거나 병합할 때 충돌 걱정 없이 합칠 수 있다.