UUID v6란 무엇인가?
UUID 버전 6 은 UUID v1을 개선하기 위해 제안된 시간 기반 128비트 식별자(36자 문자열)입니다. 구성 요소는 다음과 같습니다:
- 재정렬된 타임스탬프: 가장 중요한 비트부터 가장 덜 중요한 비트까지 60비트 타임스탬프
- 클럭 시퀀스: 클럭 조정을 위한 14비트 카운터
- 노드 ID: 48비트 값 (일반적으로 MAC 주소)
형식 예시: 1eb527d6-e927-6511-9a03-0242ac130003
UUID v6 작동 방식
- 현재 타임스탬프 계산 (1582-10-15 이후 100ns 간격)
- 더 나은 정렬을 위해 타임스탬프 비트 재정렬 (가장 중요한 비트 우선)
- 고유성을 위해 클럭이 뒤로 이동할 경우 14비트 클럭 시퀀스 가져오기/증가
- 48비트 노드 ID 획득 (보통 MAC 주소에서)
- 버전 비트(0110) 및 변형 비트(10) 설정
- 하이픈 포함 32진수 32자리 조립: 8-4-4-4-12 형식
장점 및 고려사항
Advantages | Considerations |
---|---|
|
|
UUID v6 구조
Bits | Content |
---|---|
0-47 | 타임스탬프 상위 48비트 |
48-51 | 버전 (v6의 경우 0110) |
52-59 | 타임스탬프 하위 8비트 |
60-63 | 타임스탬프 상위 4비트 |
64-65 | 변형 (RFC4122의 경우 10) |
66-79 | 클럭 시퀀스 (14비트) |
80-127 | 노드 ID (48비트) |
UUID v6와 다른 버전 비교
Version | 기반 | 사용 사례 | Privacy |
---|---|---|---|
UUID v1 | 시간 + MAC | 시간 순서 ID | ⚠️ MAC 노출 |
UUID v3 | 네임스페이스 + MD5 | 결정적 ID | ✅ 비공개 |
UUID v4 | Random | 보안 무작위 ID | ✅ 비공개 |
UUID v5 | 네임스페이스 + SHA-1 | 결정적 ID | ✅ 비공개 |
UUID v6 | 시간 (재정렬됨) | 정렬 가능한 ID | ⚠️ MAC 노출 |
UUID v7 | 시간 + 무작위 | 정렬 가능한 ID | ✅ 비공개 |
일반 사용 사례
- 시간 정렬 가능한 데이터베이스 키: 연대기적 정렬용
- 분산 데이터베이스: 시간 순서 인덱싱 포함
- 로그 항목: 자연스러운 연대기 순서 포함
- 감사 추적: 내장 타임스탬프 포함
- 메시지 큐잉: 시간 기반 처리용
- 거래 기록: 연대기 순서 포함
자주 묻는 질문
UUID v1과 v6의 차이점은 무엇인가?
UUID v6는 UUID v1의 타임스탬프 비트를 재배열하여 사전식 순서로 자연스럽게 정렬되도록 합니다. 내용은 v1과 동일하며 단지 재정렬된 것입니다.
UUID v6는 공식 표준인가?
UUID v6는 현재 제안된 RFC 4122bis 문서의 초안 명세입니다. 아직 공식 RFC 표준은 아니지만 많은 UUID 라이브러리에서 구현되어 있습니다.
UUID v6에서 생성 시간을 추출할 수 있나요?
예. 타임스탬프 구성 요소는 0-59 비트에서 추출하여 다시 날짜/시간 값으로 변환할 수 있습니다.
UUID v6는 생성 시간에 따라 정렬 가능한가?
예. v1과 달리 UUID v6는 타임스탬프 비트를 가장 중요한 비트부터 가장 덜 중요한 비트 순서로 배치하여 사전식(문자열) 비교가 연대기 순서와 일치하도록 합니다.
UUID v6가 내 MAC 주소를 노출하나요?
기본적으로는 예입니다. UUID v1과 마찬가지로 대부분 구현체는 노드 ID에 MAC 주소를 사용합니다. 개인정보 보호를 중시하는 구현체는 대신 무작위 노드 ID를 사용할 수 있습니다.