본문 바로가기

알고리즘

UUID

업무에서 종종 식별자 필요할 때 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   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