본문 바로가기
Python

UUID란?

by Shark_상어 2023. 5. 5.
728x90

오늘은 이미지 프리셋 을 완성 이후 UUID 에 관련하여 정리가 필요하고자 하여 이 글을 쓴다.

 

UUID란?

UUID(Universally Unique IDentifier)는 네트워크상에서 고유성을 보장하는 ID를 만들기 위한 표준 규약이다. UUID는 다음과 같이 32개의 16진수로 구성되며 5개의 그룹으로 표시되고 각 그룹은 붙임표(-)로 구분한다.

280a8a4d-a27f-4d01-b031-2a003cc4c039

네트워크상에서 데이터를 구분하는 고유 키로 중복되지 않는 UUID를 사용하여 구분하고자 한다. 이를 만들려면 어떻게 해야 할까?

 

파이썬 에서는

라이브러리가 존재한다

import uuid를 선언해준다.

 

UUID 버전에는 1, 3, 4, 5 등 총 4가지가 있다. 이 중 많이 쓰이는 것은 버전 1과 4이다. 버전 1은 타임스탬프를 기준으로 생성하는 방식이고 버전 4는 랜덤 생성 방식이다. 버전 3과 5는 각각 MD5, SHA-1 해시를 이용해 생성하는 방식이다.

버전 1의 생성 방법은 다음과 같다.

>>> a = uuid.uuid1()
>>> a
UUID('35f86ed0-c7ef-11eb-bf10-b42e99073dab')

uuid.uuid1()은 UUID 객체를 반환하며 이 객체는 다음과 같은 변수를 제공한다.

bytes는 16자리의 바이트 문자열을 반환한다.

>>> a.bytes
b'5\xf8n\xd0\xc7\xef\x11\xeb\xbf\x10\xb4.\x99\x07=\xab'

hex는 32자리의 16진수 문자열을 반환한다.

>>> a.hex
'35f86ed0c7ef11ebbf10b42e99073dab'

int는 128비트의 정수를 반환한다.

>>> a.int
71739021003907918020824524267087936939

version은 생성한 UUID의 버전을 반환한다.

>>> a.version
1

버전 4의 생성 방법은 다음과 같다.

>>> uuid.uuid4()
UUID('74d18bfc-14c5-46d2-a1a8-1eb627918859')

 

필자는 버전4를 이용하여

이미지의 프리셋을 만들었다.

 

서버 와 DB에 저장될 URL 이름이 버전4의 UUID로 동일하게 저장하였고

 

MYSQL 에서는 이미지 저장하는 방식을 바이너리 형태로만 지원 하다보니

컬럼 필드를 varchar 필드로 두어

url 자체를 chr으로 바라보게 하게 하고 불러 올때 그대로 불러와서 이미지를 불러오면 된다.

728x90