카테고리 없음

UUID란? (Universally Unique Identifier, 범용 고유 식별자)

idea9329 2025. 3. 5. 14:13
반응형

 

🔹 UUID (범용 고유 식별자)란?

UUID(Universally Unique Identifier)는 전 세계적으로 고유한 식별자를 생성하는 표준입니다.

  • 128비트(16바이트) 길이의 고유한 값
  • 중복 가능성이 거의 없음 (사실상 유일함)
  • 네트워크, 데이터베이스, 파일 시스템 등에서 객체를 식별하는 데 사용됨

🔹 UUID 형식 (표준 구조)

UUID는 8-4-4-4-12 형식으로 구성된 32자리 16진수 문자열입니다.

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx

 예제 UUID

550e8400-e29b-41d4-a716-446655440000
  • M: UUID 버전을 나타냄 (예: 4 → 랜덤 방식 UUID)
  • N: UUID 변형을 나타냄 (RFC 4122 규격)

🔹 UUID 버전별 차이점

UUID는 여러 가지 생성 방식(버전)이 있으며, 가장 많이 사용하는 버전은 v1, v4입니다.

버전방식특징

v1 시간 기반 - 현재 시간 + MAC 주소 기반
- 특정 하드웨어에서 UUID 추적 가능 (보안 취약)
v2 DCE 보안 - v1과 비슷하지만 보안 향상
v3 MD5 해시 - 입력 값(Namespace + 데이터)으로 MD5 해시 생성
v4 랜덤 기반 - 완전한 난수 기반 (충돌 확률 매우 낮음)
v5 SHA-1 해시 - v3과 유사하지만 SHA-1 사용 (더 보안성 높음)

 UUID v4가 가장 많이 사용됨 (랜덤 방식이라 보안성이 높고, 중복 가능성이 거의 없음)


🔹 UUID 생성 방법

📌 1. Python에서 UUID 생성

import uuid

# UUID v4 (랜덤)
print(uuid.uuid4())

# UUID v1 (시간 기반)
print(uuid.uuid1())

 출력 예시

f47ac10b-58cc-4372-a567-0e02b2c3d479  # UUID v4
6b27b35e-9db5-11eb-9d3e-0242ac130003  # UUID v1

📌 2. Linux에서 UUID 생성

 UUID v4 생성

uuidgen

 UUID v1 생성

uuidgen -t

📌 3. MySQL에서 UUID 사용

MySQL에서도 기본적으로 UUID를 생성할 수 있습니다.

SELECT UUID();

 출력 예시

550e8400-e29b-41d4-a716-446655440000

🔹 UUID가 사용되는 곳

 데이터베이스 (PK, 식별자)

  • 분산 환경에서 중복 없는 ID 생성 가능
  • 예: MySQL, PostgreSQL, MongoDB의 UUID()

 파일/디렉터리 명명

  • 중복 없는 파일명 필요할 때 사용
  • 예: backup_550e8400-e29b-41d4-a716.zip

 네트워크 시스템

  • 세션 ID, API 키, 토큰 등에 사용
  • 예: OAuth, JWT에서 클라이언트 식별용으로 사용

 IoT & 분산 시스템

  • 여러 서버 간 데이터 충돌 방지
  • 예: Kafka, Kubernetes, Docker 컨테이너 ID

🔹 UUID vs AUTO_INCREMENT (DB에서 PK 선택)

UUID를 데이터베이스의 기본 키(PK)로 사용할지 AUTO_INCREMENT(자동 증가 ID)를 사용할지 고민될 수 있습니다.

구분UUIDAUTO_INCREMENT

고유성 글로벌 고유 테이블 내에서만 고유
충돌 가능성 매우 낮음 없음
정렬 성능 느림 (랜덤) 빠름 (연속된 숫자)
인덱스 성능 크기 큼 (16바이트) 작음 (4~8바이트)
보안성 높음 낮음

 추천 선택

  • UUID: 글로벌 식별자 필요할 때 (분산 환경, 마이크로서비스)
  • AUTO_INCREMENT: 성능이 중요한 경우 (순차적 정렬 가능, 작은 테이블)

📌 정리 – UUID란?

  • UUID(범용 고유 식별자) 128비트(16바이트) 고유한 식별자
  • 가장 많이 사용되는 형식은 UUID v4 (완전 랜덤)
  • 데이터베이스 PK, 파일명, API 키, 네트워크 식별자 등에 활용
  • 분산 시스템에서는 UUID가 필수이지만, 성능을 고려해야 함

🚀 중복 없는 식별자를 원한다면? → UUID 사용하면 안전함! 😊

반응형