Curious TechieDev Toolbox
전체 가이드/식별자8 min read

UUID란 무엇인가? 버전별 특징, 엔트로피 및 RFC 9562 표준

분산 시스템의 128비트 식별자 생성 원리: UUID v4의 무작위 난수성과 UUID v7의 시계열 인덱싱 최적화.

핵심 요약 (Key Takeaways)
  • UUID는 RFC 9562(구 RFC 4122)로 표준화된 128비트 범용 고유 식별자입니다.
  • UUID v4는 122비트의 암호학적 난수 엔트로피를 바탕으로 생성되어 충돌 위험이 사실상 0에 가깝습니다.
  • UUID v7은 앞단에 48비트 타임스탬프를 포함하여 데이터베이스 B-Tree 인덱스 성능을 대폭 향상시킵니다.
  • 중앙 데이터베이스와의 통신 없이도 여러 마이크로서비스가 독립적으로 고유 기본키(PK)를 발급할 수 있습니다.

분산 데이터베이스 환경에서는 중앙 조정 서버 없이 각 노드가 독립적으로 고유 기본 키를 발급할 수 있어야 합니다. 이를 실현하는 범용 표준이 바로 UUID (Universally Unique Identifier / GUID)입니다.

1. 128비트 UUID의 구조

RFC 9562로 규정된 UUID는 16옥텟(128비트)으로 구성되며, 하이픈으로 구분된 5개 블록(32자리 16진수)으로 표기됩니다:

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx
M = 버전 번호 (예: 4 또는 7) | N = 변형 규격 (주로 8, 9, a, b)

2. 충돌 수학과 보안성

UUID v4의 122비트 난수 엔트로피(약 5.3 × 10^36 조합) 환경에서는 매초 10억 개의 UUID를 85년 동안 계속 생성해야 단 50%의 충돌 확률에 도달합니다.

3. UUID v4 (난수) vs UUID v7 (시간 정렬)

UUID v4가 순수 난수인데 반해, 차세대 표준 UUID v7은 상위 48비트에 유닉스 밀리초 타임스탬프를 내장하여 데이터가 시간순으로 자연 정렬됩니다.

4. 데이터베이스 인덱싱 및 B-Tree 단편화 방지

랜덤 UUID v4는 B-Tree 페이지 분할을 일으켜 성능을 저하시킵니다. 반면 UUID v7은 순차적으로 삽입되어 PostgreSQL 및 MySQL에서 최대 10배 빠른 삽입 성능을 보장합니다.