uuid 2025-02-05
UUID 버전: 어떤 것을 언제 사용해야 할까
UUID 버전(v1, v4, v5, v7)의 포괄적인 비교와 올바른 선택을 위한 실용적인 가이드입니다.
UUID(범용 고유 식별자)는 소프트웨어 개발에서 광범위하게 사용되는 128비트 식별자입니다. 여러 버전이 있으므로, 올바른 것을 선택하는 것이 중요합니다.
UUID 형식
모든 UUID는 동일한 형식을 따릅니다: xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx 여기서 M은 버전을, N은 변형을 나타냅니다.
UUID 버전 1: 시간 기반
UUID v1은 현재 타임스탬프와 기기의 MAC 주소를 사용합니다.
장점:
- 생성 시간별로 자연 정렬 가능
- 기기 간 고유성 보장 (MAC 주소 사용)
- 조율 없는 분산 시스템에 적합
단점:
- MAC 주소 노출 (개인정보 문제)
- 생성 타임스탬프 노출
- 개인정보가 중요한 경우 부적합
UUID 버전 4: 랜덤
UUID v4는 완전히 난수로 생성됩니다.
장점:
- 정보 유출 없음
- 구현이 간단
- 가장 널리 사용되는 버전
단점:
- 정렬 불가
- 데이터베이스 인덱스 성능 저하 (무작위 분포)
UUID 버전 5: 이름 기반 (SHA-1)
UUID v5는 SHA-1을 사용하여 네임스페이스와 이름으로부터 결정론적 UUID를 생성합니다.
장점:
- 결정론적: 동일한 입력은 항상 동일한 출력을 생성
- 동일한 명명된 리소스에 대해 조율 불필요
UUID 버전 7: 시간 순서 (최신)
UUID v7은 Unix 타임스탬프와 랜덤 데이터를 결합한 최신 추가 버전입니다.
장점:
- 사전식 정렬 가능 (데이터베이스 인덱스에 적합)
- 밀리초 정밀도 타임스탬프 포함
- v4보다 더 나은 데이터베이스 성능
- 개인정보 문제 없음 (MAC 주소 없음)
올바른 버전 선택
|----------|----------|
데이터베이스에서의 UUID
UUID를 기본 키로 사용할 때 고려사항:
1. 정렬된 삽입을 위한 v7: B-트리 단편화 감소
2. 바이너리 저장: CHAR(36) 대신 BINARY(16)으로 저장하여 공간 절약
3. 인덱싱: v7 UUID는 범위 쿼리에서 v4보다 훨씬 더 나은 성능
UUID Generator 도구를 사용하여 UUID를 즉시 생성하세요.