Search

UUID

대분류
CS
소분류
컴퓨터 해부 노트
유형
고유 식별자
주요 레퍼런스
https://docs.tosspayments.com/resources/glossary/uuid
https://f-lab.kr/insight/database-design-using-uuid
https://developer.mozilla.org/ko/docs/Glossary/UUID
최종 편집 일시
2024/11/01 04:49
생성 일시
2024/11/01 03:40
14 more properties

UUID(Universally Unique Identifier)

128-bit의 고유 식별자
해당 타입의 다른 모든 리소스 중에서 리소스를 고유하게 식별하는 데 사용되는 레이블
중앙 시스템에 등록하고 발급하는 과정이 없어서 상대적으로 더 빠르고 간단하게 만들 수 있다.
완전히 고유하지 않을 확률 -  RFC 4122 문서에 정의된 UUID 버전 4 표준 규약을 따르면 1조 개의 UUID 중에 중복이 일어날 확률은 10억 분의 1
다른 고유 식별자에 비해 정렬, 차수, 해싱 등 다양한 알고리즘에 사용하기 쉽고 데이터베이스에 보관하기도 용이하다.

구조

128-bit의 숫자 문자열
36자리의 길이
32개의 16진수 숫자가 4개의 하이픈으로 나누어진 8-4-4-4-12 형태
ex) 9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

필드

필드
사이즈
설명
time-low
4hexOctet / 32bit
타임스탬프의 low field
time-mid
2hexOctet / 16bit
타임스탬프의 mid field
time-high-and-version
2hexOctet / 16bit
타임스탬프의 high field & UUID 버전
clock-seq-hi-and-reserved
hexOctet / 8bit
클락 시퀀스의 high field & variant
clock-seq-low
hexOctet / 8bit
클락 시퀀스의 low field
node
6hexOctet / 48bit
node 식별자

UUID 버전

버전 1, 2 : 타임스탬프(Timestamp) UUID
만들어진 시점과 기기 정보를 알 수 있다.
버전 3, 5 : 네임스페이스(Namespace) 기반으로 만드는 UUID
다른 정보와 연결된 값을 만들고 싶을 때 사용
버전 4 : 다른 버전과 달리 외부 정보에 의존하지 않고 완전히 랜덤한 값으로 생성
시간, 기기 정보, 네임스페이스 등 정보가 없기 때문에 어디서 어떻게 생성됐는지 알 수 없다.
보안 측면에서 뛰어나고 생성도 빠르기 때문에 대중적으로 사용되고 있다.

UUID 생성 방법

Java

UUID 클래스를 호출
randomUUID()를 호출하면 버전 4 UUID 값을 가진 객체가 반환
import java.util.UUID; UUID.randomUUID().toString() // '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
Java
복사

JavaScript

필요한 UUID 버전을 불러와서 메서드를 호출
npm install uuid import { v4 as uuidv4 } from 'uuid'; uuidv4(); // '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
JavaScript
복사

Python

파이썬 uuid 표준 라이브러리를 사용
UUID 객체(UUID 클래스)와 각 버전을 생성할 수 있는  uuid1()uuid3()uuid4()uuid5() 메서드를 제공
import uuiduuid.uuid4() # UUID('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d')
Python
복사