본문 바로가기

알아야 할 지식

UUID(Universally Unique IDentifier) 범용 고유 식별자

728x90

UUID란?

범용 고유 식별자로 전 세계적으로 중복되지 않는 ID를 생성하기 위한 표준

주로 분산 컴퓨팅 환경에서 사용되는 식별자입니다.

 

 

UUID를 왜 사용할까?

일반적인 로컬 환경이거나 중앙 관리 시스템이 있는 환경이라면 각 세션에 일련번호를 부여해줌으로써 유일성을 보장 받을 수 있지만 분산 컴퓨팅 시스템일 경우 개별 시스템이 id를 발급하더라도 유일성을 보장할 수 없습니다. 분산 컴퓨팅 시스템에서도 유일성을 보장받기 위해 UUID를 사용합니다.

 

 

UUID의 구조

128비트의 숫자 문자열이고 총 길이는 36자리입니다. 32개의 16진수 숫자가 4개의 하이픈으로 나누어진 8,4,4,4,12 형태입니다. 

 

총 36자 → 32자리의 16진수 + 4개의 하이픈

참고 : https://docs.tosspayments.com/resources/glossary/uuid

 

UUID(Universally Unique Identifier) | 토스페이먼츠 개발자센터

UUID는 128-bit의 고유 식별자에요. UUID는 중앙 시스템에 등록하고 발급하는 과정이 없어서 상대적으로 빠르고 간단하게 만들 수 있어요.

docs.tosspayments.com

 

UUID v1 필드

필드 사이즈 설명
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-lo hexOctet/8bit 클락 시퀀스의 low field
node 6hexOctet/48bit node 식별자

 

 

 

UUID의 여러 버전과 특징

5개의 버전이 존재하며 v1, v2는 타임스탬프 UUID라고도 부릅니다.

v1, v2는 UUID를 만든 시점과 기기 정보를 알 수 있으므로 보안에 취약합니다.

v3, v5는 네임스페이스 기반으로 네임스페이스를 해싱 알고리즘으로 암호화해서 UUID를 생성합니다.

가장 대중적으로 사용하는 v4는 외부 정보에 의존하지 않고 완전히 랜덤한 값으로 생성됩니다.

보안 측면에서 뛰어나고 생성도 빠릅니다.

최근에는 v6~8까지 나왔으며 v7이 실무에서 가장 많이 사용된다고 합니다.

v7에 대해서는 시간이 생겼을 때 정리하겠습니다.

 

 

 

UUID로 PK를 사용하는 이유

1. 불변성 보장

이메일을 PK로 사용했을 때 이메일은 변경이 가능하므로 불변성을 보장받지 못합니다.

2. 비지니스 키 변동 시 위험

이메일을 PK로 사용했을 때 DB 내 모든 외래키가 이메일을 참조하며 이메일 변경 시 모든 테이블에서 업데이트를 해야합니다.

3. 보안 문제

이메일/ID가 노출되면 사용자 정보가 유추될 수 있습니다.

ex) /users/shs00925@naver.com -> 해당 사용자가 식별이 가능함

4. 분산 시스템 친화적

자동 증가 키는 DB 서버 하나에서만 안전하게 증가할 수 있음

UUID는 서버 간 충돌 없이 동시 생성이 가능함

 

타입 장점 단점
자동 증가(Auto Increment) 간단하고 성능이 좋다 분산 시스템에서 충돌 위험
UUID v4 고유, 분산 시스템에 적합함 인덱스가 크고 랜덤한 삽입으로 성능 저하
이메일, ID 사람이 읽기 쉬움 변경/보안 문제, 인덱스 부하

 

728x90

'알아야 할 지식' 카테고리의 다른 글