업무에서 종종 식별자 필요할 때 UUID를 사용하는 데,
UUID 가 무엇이고 왜 사용하는 지 정리해보았다.
명칭 UUID universally unique identifier (or GUID Globally Unique Identifier)
길이 128 비트, 16 octet(8비트)
동기 영구적이고 고유한 값인 URN 을 위해 제안됨
장점
- UUID 를 부여하기 위해 어떤 중앙 처리 과정이나 권한이 필요하지 않음
- 완전히 자동으로 생성될 수 있음
- 트랜잭션의 식별자로 사용될 수 있을 만큼 할당 속도가 빠름
- 다른 방법들에 비해 상대적으로 작은 길이로 소팅, 해싱, 할당, DB 저장, 프로그래밍 등을 쉽게 가능하도록 함
형태
uuid | time-low | "-" | time-mid | "-" | time-high-and-version | "-" | clock-seq-high-and-reversed, clock-seq-low | "-" | node |
hex octet | 4 | 2 | 2 | 2 | 6 |
버전
uuid 의 3번째 부분인 time-hight-and-version 에서 version 은 아래 다섯가지 중 하나를 사용할 수 있음
버전 1) 시각 기반 버전
버전 2) DCE Security 버전
버전 3) MD5 해시된 이름 버전
버전 4) 임의 생성 버전
버전 5) SHA-1 해시된 이름 버전
언어별 모듈
import uuid
uuid.uuid1()
uuid.uuid3(uuid.NAMESPACE_DNS, 'python.org')
uuid.uuid4()
uuid.uuid5(uuid.NAMESPACE_DNS, 'python.org')
import * as uuid from 'uuid';
uuid.v1();
uuid.v3('https://www.w3.org/', uuidv5.URL); // v5 와 동일함
uuid.v4();
uuid.v5('https://www.w3.org/', uuidv5.URL);
import java.util.UUID;
public class UUIDTest {
public static void main(String args[]) {
UUID uuidv3 = UUID.nameUUIDFromBytes(byte[] name);
UUID uuidv4 = UUID.randomUUID();
}
}
출처
rfc4122
datatracker.ietf.org
uuid — UUID objects according to RFC 4122 — Python 3.9.5 documentation
uuid — UUID objects according to RFC 4122 Source code: Lib/uuid.py This module provides immutable UUID objects (the UUID class) and the functions uuid1(), uuid3(), uuid4(), uuid5() for generating version 1, 3, 4, and 5 UUIDs as specified in RFC 4122. If
docs.python.org
uuid
RFC4122 (v1, v4, and v5) UUIDs
www.npmjs.com
'개발 > 알고리즘' 카테고리의 다른 글
Base64 를 정리해본다면... (0) | 2022.03.18 |
---|