UUID(Universally Unique Identifier)에 관련 조사
UUID (Universally Unique Identifier) 는 전 세계적으로 중복되지 않는 식별자를 생성하기 위한 표준 규격입니다.
특정 시스템·데이터·객체를 구분하기 위해 사용되며,
서로 다른 장비/시간/환경에서 생성해도 중복될 확률이 극도로 낮습니다.
특징요약
1.128비트 숫자
총 128bit(16byte) 길이이며, 일반적으로 문자열 형태로 표현됨
예:
550e8400-e29b-41d4-a716-446655440000
2.재현 불가 구조
다른 장비나 시간대에 생성해도 동일한 UUID가 생성될 확률이 거의 없음
3.표준화된 규격 (RFC 4122)
운영체제/언어/시스템에 관계없이 사용 가능
4.중앙 관리 불필요
DB 시퀀스처럼 관리 서버가 필요 없음
UUID 구성
UUID는 다음과 같이 5개의 블록으로 구성됩니다:
8자리 - 4자리 - 4자리 - 4자리 - 12자리
총 32자리의 16진수 + 4개의 하이픈 = 36문자
주요 버전 종류 (UUID Version)
버전 생성 방식 특징
v1 시간 + MAC 주소 기반 재현 가능성 O, 보안 취약
v3 이름 기반 (MD5) 동일 입력 → 동일 UUID
v4 랜덤 기반 가장 대중적, 충돌 확률 극저
v5 이름 기반 (SHA-1) v3의 보안 강화판
대부분 시스템은 UUID v4 를 기본으로 사용합니다.
예:
8e52c74c-c7c6-4f61-be3b-977438f6d09f
(4번째 블록 첫 숫자 = 4 → v4)
장점
전역 유일성 보장
분산 시스템에 적합
시퀀스 관리 불필요
충돌 가능성 무시 가능 수준
단점
숫자보다 길어 인덱스 비효율
DB 저장시 공간 많이 사용
정렬 의미 없음
시각적 가독성 낮음
DB에서 UUID 사용 시 고려사항
1. PRIMARY KEY 로 UUID가 적합한가?
장점: 분산 생성 가능
단점: 성능 하락 가능
추천 형태:
BINARY(16) 로 저장 → 공간 절감, 인덱스 효율 ↑
가능하면 v1 또는 v7 사용 → 순차성 ↑
2. MySQL/MariaDB 예시
SELECT UUID();
3. PostgreSQL 예시
SELECT gen_random_uuid();
충돌 확률
UUID의 총 경우의 수는:
2^128 = 3.4 × 10^38 개
비유:
매초 1조개씩 10억년 생성해도 충돌 확률 거의 0
현실적으로 충돌 걱정할 필요 없음
실무 활용 예
사용자 ID
API 키
트랜잭션 ID
세션 ID
분산 서비스 객체 식별자
Kafka 메시지 키
로그 상관관계 추적 (Correlation ID)
'뒷이야기들 > 팁_노하우' 카테고리의 다른 글
| case네이밍표기법 snake_case camelCase PascalCase kebab-case 정리 (0) | 2026.01.26 |
|---|---|
| WPS(WI-FI Protected Setup) (0) | 2025.09.19 |