Unique한 값이 필요할 때 사용하는 UUID, UUID란?

2025. 3. 19. 13:15·공부하기/ETC

🏷️ UUID (Universally Unique Identifier)

이름 그대로 UUID는 전세계적으로 고유한 식별자이다. 

이론상으로 중복될 가능성이 거의 없기 때문에 데이터베이스에서 고유한 값을 보장하는 데 매우 유용하게 사용된다.

  • 128비트 길이의 값이다.
  • 보통 8-4-4-4-12 형태의 36자 문자열로 표현된다. (ex. ``550e8400-e29b-41d4-a716-446655440000``)

▶︎ 장점

  • 데이터의 고유성을 보장한다.
  • 서버간 동기화 없이도 고유한 ID를 생성할 수 있으므로 분산 시스템에 적합하다. 

▶︎ 단점

  • 길이가 길어 저장 공간을 많이 차지한다. (128비트 = 16바이트 = 문자열로 36자)
  • DB에서 인덱싱 효율이 낮을 수 있다.
    • UUID는 무작위성을 기반으로 생성되기 때문에 순차적인 값이 아니다.
    • 인덱스는 일반적으로 값의 순차적인 증가를 기반으로 최적화되어 있기 때문에 UUID를 기본 키로 사용하는 경우 인덱싱 전략을 고려해보아야 한다.

 

어떻게 전세계적인 고유성을 보장할 수 있을까?

  • UUID는 128비트 숫자이다.
    • 가능한 조합의 수는 ``2^128``
    • 이 숫자는 약 ``3.4 * 10^38``으로, (1조*1조*1조*340개)의 조합이다.
  • 완전히 무작위가 아니라, 충돌이 거의 없도록 설계된 알고리즘을 따른다.
    • UUID에도 여러 버전이 있는데 v1, v7 에서는 랜덤성 + 시간 정보 + 기기 정보를 함께 사용해서 생성한다.
  • 즉, 충분히 많은 비트 수 + 고유성을 극대화하는 비트 조합 방식을 통해 전세계적인 고유성을 보장한다. 
    • 충분히 많은 많은 비트 수로 인해 가능한 조합의 수 자체가 많다.
    • 충돌이 없을 만한 정보들을 조합하여 중복 가능성이 더욱 낮게 설계되어 있다.

 

Java에서는 `java.util.UUID`로 UUID를 생성하고 사용할 수 있다.

 


🔗 Reference

  • UUID의 사용과 데이터베이스 설계에서의 중요성
  • What is a UUID, and what is it used for?

 

저작자표시 비영리 변경금지 (새창열림)

'공부하기 > ETC' 카테고리의 다른 글

RAG와 벡터 데이터베이스  (0) 2026.01.14
실시간 데이터 전송 기술 정리 | Polling, Long-Polling, SSE, WebSocket  (1) 2025.04.18
JWT 찐하게 이해하기 👀 | JWT 구성과 인증 원리  (0) 2025.03.13
Servlet 이해하기 (Web Server, WAS, Servlet)  (0) 2025.01.22
도메인 로직(Domain Login)이 뭔데?  (2) 2024.11.11
'공부하기/ETC' 카테고리의 다른 글
  • RAG와 벡터 데이터베이스
  • 실시간 데이터 전송 기술 정리 | Polling, Long-Polling, SSE, WebSocket
  • JWT 찐하게 이해하기 👀 | JWT 구성과 인증 원리
  • Servlet 이해하기 (Web Server, WAS, Servlet)
다섯자두
다섯자두
All I need is 💻 , ☕️ and a dash of luck
  • 다섯자두
    subbni
    다섯자두
  • 전체
    오늘
    어제
    • 전체 글 (88) N
      • 개발 이야기 (0)
      • 만들어보기 (17)
        • FromBookToBook (5)
        • Spring (5)
        • Node.js & React (3)
        • TroubleShooting (4)
      • 공부하기 (71) N
        • Network (3)
        • Cloud (1)
        • Database (5)
        • Java (13)
        • Javascript (0)
        • Spring (9)
        • React (18)
        • Algorithm (8)
        • 자료구조 (7)
        • ETC (7) N
      • 회고 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • velog
  • 공지사항

  • 인기 글

  • 태그

    SQL
    Spring
    티스토리챌린지
    Express
    outbox
    로그인
    재시도 로직
    서명알고리즘
    Database
    java
    pdf 자동 다운로드
    자료구조
    HTTP
    network
    최단거리
    실시간 데이터 전송 기술
    오블완
    Til
    redis
    SSE
    프로젝트
    SQS
    aws
    pdf 프리뷰 실패
    알고리즘
    outbox 패턴
    mysql
    springboot
    JPA
    알림 기능
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
다섯자두
Unique한 값이 필요할 때 사용하는 UUID, UUID란?
상단으로

티스토리툴바