유틸리티

UUID란, 고유 식별자가 필요한 이유와 생성 방법

데이터베이스에 새 레코드를 추가하려는데, 고유 ID를 뭘로 잡을지 고민이다. 숫자 자동증가(auto-increment)가 가장 간단하지만, 서버가 여러 대인 분산 환경에서는 같은 번호가 동시에 발급될 수 있다. 이 문제를 해결하는 표준 방식이 UUID다.

UUID가 뭔데

UUID(Universally Unique Identifier)는 128비트 길이의 고유 식별자다. 550e8400-e29b-41d4-a716-446655440000처럼 하이픈으로 구분된 16진수 32자리로 표현된다. 중앙 서버 없이도 어디서든 생성할 수 있고, 다른 곳에서 생성한 것과 겹칠 확률이 사실상 0에 가깝다.

참고 Microsoft에서는 같은 개념을 GUID(Globally Unique Identifier)라고 부른다. UUID와 GUID는 형식이 같고, 용어만 다르다.

왜 v4가 가장 많이 쓰일까

UUID에는 여러 버전이 있지만, 실무에서는 v4가 압도적으로 많이 쓰인다.

버전생성 기준특징
v1타임스탬프 + MAC 주소생성 시각 추적 가능, MAC 주소 노출 우려
v3이름 기반 (MD5)같은 이름이면 같은 UUID 생성
v4완전 랜덤구현 간단, 개인정보 노출 없음
v5이름 기반 (SHA-1)v3의 보안 강화 버전

v4는 122비트의 랜덤 값으로 만들어진다. 이론적으로 충돌하려면 약 2.71 × 1018개를 생성해야 50% 확률에 도달한다. 매초 10억 개씩 만들어도 86년이 걸리는 양이니, 실용적으로는 충돌이 일어나지 않는다고 봐도 된다.

UUID 포맷 종류

  • 기본 형식: 550e8400-e29b-41d4-a716-446655440000 (하이픈 포함 36자)
  • 하이픈 제거: 550e8400e29b41d4a716446655440000 (32자, DB 저장 시 용량 절약)
  • 중괄호 형식: {550e8400-e29b-41d4-a716-446655440000} (Windows 레지스트리 스타일)
  • URN 형식: urn:uuid:550e8400-... (RFC 4122 표준 표기)

UUID 빠르게 뽑는 법

코드 한 줄로도 생성할 수 있지만, 테스트 데이터용으로 100개, 1,000개씩 뽑아야 할 때는 UUID 생성기가 빠르다. 개수와 포맷(하이픈 포함, 중괄호, URN 등)을 선택하면 한 번에 최대 1,000개까지 생성되고, 결과를 텍스트 파일로 다운로드할 수 있어서 SQL INSERT 문에 바로 붙여넣기 좋다.

고유 ID 체계를 뭘로 할지 정할 때, 단일 서버라면 auto-increment로 충분하고, 분산 환경이거나 외부 노출이 필요하면 UUID v4가 안전한 선택이다.