UUID 버전 6 생성기 (정렬된 타임스탬프)

데이터베이스 인덱싱에 최적화된 타임스탬프 순서 UUID 생성

다음 예시를 시도해보세요:

UUID v6란 무엇인가?

UUID 버전 6 은 UUID v1을 개선하기 위해 제안된 시간 기반 128비트 식별자(36자 문자열)입니다. 구성 요소는 다음과 같습니다:

  • 재정렬된 타임스탬프: 가장 중요한 비트부터 가장 덜 중요한 비트까지 60비트 타임스탬프
  • 클럭 시퀀스: 클럭 조정을 위한 14비트 카운터
  • 노드 ID: 48비트 값 (일반적으로 MAC 주소)

형식 예시: 1eb527d6-e927-6511-9a03-0242ac130003

UUID v6 작동 방식

  1. 현재 타임스탬프 계산 (1582-10-15 이후 100ns 간격)
  2. 더 나은 정렬을 위해 타임스탬프 비트 재정렬 (가장 중요한 비트 우선)
  3. 고유성을 위해 클럭이 뒤로 이동할 경우 14비트 클럭 시퀀스 가져오기/증가
  4. 48비트 노드 ID 획득 (보통 MAC 주소에서)
  5. 버전 비트(0110) 및 변형 비트(10) 설정
  6. 하이픈 포함 32진수 32자리 조립: 8-4-4-4-12 형식

장점 및 고려사항

AdvantagesConsiderations
  • 사전식 정렬 가능
  • 내장된 생성 시간
  • 고성능 생성
  • 분산 생성
  • MAC 주소 개인정보 보호 문제
  • 클럭 동기화 문제
  • 무작위 UUID보다 예측 가능
  • 초안 명세 상태

UUID v6 구조

BitsContent
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 v4Random보안 무작위 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를 사용할 수 있습니다.

Resources