“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”- Jef Raskin
맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도
javscript,uuid
고유 식별을 할 수 있도록 나눠봅시다.
개발을 하다 보면 유일성이 필요한 경우가 굉장히 많다 물론 날짜를 기준으로 나눌 수 있겠지만 날짜 기준과 함께 한번 더 고한 식별자를 가지는 것도 분명 필요합니다. 이럴 때 사용을 할 수 있는 것은 바로 UUID라는 것입니다. UUID가 어떤 것인지 알아보겠습니다.
목차
JavaScript UUID
UUID
범용 고유 식별자(UUID :: Universally Unique identifier)라고 하며 우리말로 쉽게 생각하면 소프트웨어 구축에 쓰이는 식별자로써 분산환경에서 개별 시스템이 id를 발급을 하도록 유일성이 보장이 되어야 하는데 이럴 때 사용을 할 수 있는 것이 바로 UUID를 사용을 하고 있는 것입니다. UUID는 128비트의 숫자와 함께 32자리의 16진수로 표현을 하고 있으며 아래와 같은 형태를 유지하고 있습니다.
8자리-4자리-4자리-4자리-12자리 패턴으로 하이픈을 집어넣어 5개의 그룹으로 구분을 하고 있습니다.
Name | Lengths (Bytes) | Lengths (a hexadecimal number) | Descr |
Time_low | 4 | 8 | 시간 low 32비트 부여 정수 |
Time_mid | 2 | 4 | 시간 middle 16비트 부여 정수 |
Time_hi_and_version | 2 | 4 | 최상위 비트 4비트 version 그리고 시간 high 12비트 |
Clock_seq_hi_and_res_clock_seq_low | 2 | 4 | 최상위 비트 1-3비트, 13~15비트 클릭 시퀀스 |
node | 6 | 12 | 48비트 노드 id |
종류
UUID는 국제인터넷표준화 기구인 ietf에서 정식 표준으로 채택된 표준 프로토콜로 RFC4122 문서를 기반으로 생성이 되었습니다.
- UUID 버전 1, 3, 4, 5가 있고 이중 많이 사용하는 것은 버전 1과 4가 많이 쓰입니다.
v 버전 1: 타임스탬프를 기준으로 생성하는 방식
v 버전 3: MD5 해시를 이용해 생성하는 방식
v 버전 4: 랜덤으로 생성하는 방식
v 버전 5: SHA-1 해시를 이용해 생성하는 방식
SOURCE
function UUID_version4()
{
([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
);
}
console.log(UUID_version4());
---------------------------------------------------------------------------------
example : https://developer.mozilla.org/en-US/docs/Web/API/Crypto/randomUUID
let uuid = self.crypto.randomUUID();
console.log(uuid);
마무리
UUID에 대해서 알아봤습니다. 최대한 간단하고 쉽게 설명을 하기 위해 정리를 했는데 혹시 추가할 내용이나 궁금한 내용 또는 수정할 내용이 있다면 댓글을 남겨주시면 답변드리도록 하겠습니다 :D