웹툴.com

UUID 생성기 - 범용 고유 식별자 생성 도구

UUID Generator

UUID (범용 고유 식별자) 가이드

UUID란?

UUID(Universally Unique Identifier)는 정보 시스템에서 개체를 고유하게 식별하는 128비트 길이의 식별자입니다. 32개의 16진수로 표현되며, 8-4-4-4-12 형식으로 하이픈으로 구분됩니다.

UUID 버전별 특징

Version 1 (시간 기반)

  • 타임스탬프와 노드 ID 사용
  • 시간 순서 보장
  • 생성 시점 추적 가능
  • MAC 주소 노출 가능성
예시: 550e8400-e29b-11d4-a716-446655440000

Version 4 (랜덤)

  • 랜덤 또는 의사 랜덤 숫자 사용
  • 높은 고유성 보장
  • 가장 널리 사용되는 버전
  • 시간 정보 없음
예시: 123e4567-e89b-12d3-a456-426614174000

Version 5 (이름 기반, SHA-1)

  • 네임스페이스와 이름 사용
  • SHA-1 해시 알고리즘 적용
  • 동일 입력 시 동일 UUID 생성
  • 결정적 생성 방식
예시: 123e4567-e89b-52d3-a456-426614174000

UUID 활용 사례

1. 데이터베이스

  • 기본 키(Primary Key)
  • 분산 시스템에서의 레코드 식별
  • 데이터 동기화 식별자

2. 분산 시스템

  • 마이크로서비스 간 트랜잭션 ID
  • 이벤트 소싱에서의 이벤트 ID
  • 분산 추적 식별자

3. 파일 시스템

  • 파일 이름 충돌 방지
  • 임시 파일 식별
  • 업로드 파일 관리

UUID 생성 시 고려사항

1. 성능

  • 버전 1: 빠른 생성, 시간 정렬 가능
  • 버전 4: 중간 수준의 성능
  • 버전 5: 해시 계산 필요

2. 보안

  • MAC 주소 노출 위험
  • 예측 가능성 고려
  • 랜덤성 보장 필요성

3. 저장 공간

  • 문자열: 36바이트
  • 바이너리: 16바이트
  • 인덱싱 영향 고려

모범 사례

1. 생성

// 버전 4 UUID 생성
const uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
  const r = (Math.random() * 16) | 0
  const v = c === 'x' ? r : (r & 0x3) | 0x8
  return v.toString(16)
})

2. 검증

const isValidUUID = (uuid: string): boolean => {
  const regex =
    /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i
  return regex.test(uuid)
}

3. 저장

-- PostgreSQL
CREATE TABLE items (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL
);

일반적인 실수

1. 생성 관련

  • 불충분한 랜덤성
  • 잘못된 버전 선택
  • 중복 검사 누락

2. 사용 관련

  • 불필요한 UUID 사용
  • 부적절한 버전 선택
  • 과도한 저장 공간 사용

3. 성능 관련

  • 인덱싱 최적화 부족
  • 불필요한 문자열 변환
  • 과도한 UUID 생성

결론

UUID는 분산 시스템에서 고유 식별자가 필요한 경우에 매우 유용한 도구입니다. 각 버전의 특성을 이해하고 적절한 상황에 맞는 버전을 선택하는 것이 중요합니다.

키워드

UUID, 고유식별자, 개발도구, 식별자생성, 데이터베이스, 분산시스템, 마이크로서비스