UUID(Universally Unique Identifier)
•
128-bit의 고유 식별자
•
해당 타입의 다른 모든 리소스 중에서 리소스를 고유하게 식별하는 데 사용되는 레이블
•
중앙 시스템에 등록하고 발급하는 과정이 없어서 상대적으로 더 빠르고 간단하게 만들 수 있다.
◦
•
다른 고유 식별자에 비해 정렬, 차수, 해싱 등 다양한 알고리즘에 사용하기 쉽고 데이터베이스에 보관하기도 용이하다.
구조
•
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 패키지를 설치
•
필요한 UUID 버전을 불러와서 메서드를 호출
npm install uuid
import { v4 as uuidv4 } from 'uuid';
uuidv4(); // '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
JavaScript
복사
Python
•
•
UUID 객체(UUID 클래스)와 각 버전을 생성할 수 있는 uuid1(), uuid3(), uuid4(), uuid5() 메서드를 제공
import uuiduuid.uuid4() # UUID('9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d')
Python
복사