개발 마라톤

10/19 - uuid 모듈 본문

--- Project ---/CharFlyer : 캐플라이어

10/19 - uuid 모듈

망__고 2023. 10. 19. 08:46

UUID 모듈이란?

범용 고유 식별자 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)

 

범용 고유 식별자 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 범용 고유 식별자(汎用固有識別子, 영어: universally unique identifier, UUID)는 소프트웨어 구축에 쓰이는 식별자 표준으로, 개방 소프트웨어 재단(OSF)이 분산 컴퓨팅

ko.wikipedia.org

... 같은 이름을 갖는 개체가 존재한다면 구별이 불가능해 지기 때문이다. ... 개발주체가 스스로 이름을 짓도록 하되 고유성을 충족할 수 있는 방법이 필요하다. 이를 위하여 탄생한 것이 범용고유식별자(UUID)이며 국제기구에서 표준으로 정하고 있다.

위키백과에선 다음과 같이 정의하고 있으며, 간단하게 말하면 같은 이름을 같지 않도록 생성하는 체계이다.

 

자바스크립트에서는 간단하게 UUID 모듈을 설치해서 사용가능하다.

uuid - npm (npmjs.com)

npm install --save uuid

타입스크립트 경우
npm install --save @types/uuid 도 설치

uuid npm 모듈에선 다음 API 를 소개한다.

uuid.NIL nil UUID 문자열(모두 0) 새로운 기능 uuid@8.3
uuid.parse() UUID 문자열을 바이트 배열로 변환 새로운 기능 uuid@8.3
uuid.stringify() 바이트 배열을 UUID 문자열로 변환 새로운 기능 uuid@8.3
uuid.v1() 버전 1(타임스탬프) UUID 만들기  
uuid.v3() 버전 3(MD5가 있는 네임스페이스) UUID 만들기  
uuid.v4() 버전 4(임의) UUID 만들기  
uuid.v5() 버전 5(SHA-1이 있는 네임스페이스) UUID 만들기  
uuid.validate() 문자열을 테스트하여 유효한 UUID인지 확인합니다. 새로운 기능 uuid@8.3
uuid.version() UUID의 RFC 버전 검색 새로운 기능 uuid@8.3

uuid 모듈은 uuid를 만드는 여러 알고리즘을 중심으로 다양한 API를 지원하는 듯하다.

v4를 import하는 방식은 다음과 같다.

import { v4 as uuidv4 } from 'uuid';
uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'

나의 경우는 S3Client에 보낼 Command의 Key가 중복되면 안되므로 다음과 같이 구성하였다.

const key = `${folder}/${uuidv4()}_${file.name}`;

const command = new PutObjectCommand({
  Bucket: AWS_S3_BUCKET,
  Key: key,
  Body: buffer,
});

uuid를 붙여줌으로써 중복 Key가 생성되는 것을 방지할 수 있다.

Comments