UUID란 ?

범용 고유 식별자라는 뜻으로 네트워크상에서 중복되지 않는 ID를 만들기 위한 표준 규약이다.

128비트 길이의 값으로 표현되는 식별자로, 전 세계적으로 고유하게 유지되도록 설계되었다.

 

UUID의 구성

UUID는 하이픈(-)으로 구분된 36자리의 16진수 숫자로 표현된다.

123e4567-e89b-12d3-a456-426655440000

 

UUID의 사용 용도
  • 데이터베이스의 레코드 식별자
  • 세션 식별자
  • 파일 이름
  • 객체 식별자
  • 소프트웨어 구성 요소 식별자
나는 S3에 사진을 저장할 때 이름의 중복을 피하고자 이용하게 됐다.

 

UUID의 장점
  • 고유성 : 전 세계적으로 고유한 값을 보장
  • 분산성 : 중앙 등록 기관 없이 생성이 가능
  • 무작위성 : 충돌 가능성이 매우 낮음
  • 간단성 : 생성 및 사용이 비교적 간단

UUID의 구성 깊게 보기

위와 같이 UUID는 5개의 필드로 구성된다.

  1. time_low (4바이트)
    - UUID가 생성된 시간의 하위 32비트
    - 16진수 표현
  2. time_mid (2바이트)
    - UUID가 생성된 시간의 중간 16비트
    - 16진수 표현
  3. time_hi_and_version (2바이트)
    - UUID가 생성된 시간의 상위 12비트와 UUID 버전을 나타냄
      - 상위 4비트는 UUID의 버전 (가장 많이 사용되는 것은 [1] 타임스탬프 기반과 [4] 랜덤 생성)
      - 하위 12비트는 시간의 상위 12비트
    - 16진수 표현
  4. clock_seq_hi_and_res (2바이트)
    - UUID를 생성한 시스템 클럭의 시퀀스 번호의 상위 3비트와 예약된 3비트
      - 상위 3비트는 시퀀스 번호의 상위 3비트
      - 하위 3비트는 예약된 비트
    - 16진수 표현
  5. node (6바이트)
    - UUID를 생성한 시스템의 고유 식별자
    - 48비트로 표현
    - MAC 주소와 같은 네트워크 어드레스로 생성되거나 임의로 생성 됨

UUID 레코드 레이아웃 예시

- 123e4567은 time_low 필드

- e89b는 time_mid 필드

- 12d3는 time_hi_and_version 필드

(상위 4비트 > 버전)
(하위 12비트 time_hi 필드)

- a456은 clock_seq_hi_and_res 필드

(상위 3비트 > 시퀀스 번호의 상위 3비트)
(하위 3비트 > 예약된 비트)
- 426655440000은 node 필드

 

+ Recent posts