uuidv5 함수

uuidv5 함수

RFC 4122 4.3절에서 설명하는 이름 기반 UUID를 생성하는 함수예요. "version 5" UUID라고도 불러요.

출처: 문서

본문

uuidv5는 RFC 4122 4.3절에서 설명하는 이름 기반 UUID를 생성해요. "version 5" UUID라고도 알려져 있어요.

uuidv5(namespace, name)

uuidv4가 생성하는 의사 난수 UUID와 달리 이름 기반 UUID는 namespace와 name에서 파생되며, namespace와 name이 바뀌지 않으면 매번 같은 UUID 값을 생성해요.

이름 기반 UUID의 namespace는 그 자체로 UUID지만, 가독성을 위해 이 함수는 RFC 4122가 할당한 namespace에 대해 일부 키워드를 별칭으로 허용해요.

키워드 Namespace ID 이름 형식
"dns" 6ba7b810-9dad-11d1-80b4-00c04fd430c8 정규화된 DNS 도메인 이름.
"url" 6ba7b811-9dad-11d1-80b4-00c04fd430c8 RFC 3986에 정의된 유효한 URL.
"oid" 6ba7b812-9dad-11d1-80b4-00c04fd430c8 ISO/IEC 객체 식별자
"x500" 6ba7b814-9dad-11d1-80b4-00c04fd430c8 X.500 Distinguished Name

위 표에 없는 다른 namespace를 사용하려면 첫 번째 인자에 일반 UUID 문자열 형식으로 할당된 namespace ID를 직접 전달하면 돼요.

예제

미래에 이 코드를 읽는 사람에게 의도를 더 명확하게 전달할 수 있도록 가능하면 namespace 키워드를 사용해요.

> uuidv5("dns", "developer.hashicorp.com/nomad")
d2616d48-e1cb-5b87-8a8c-46355decc76a

> uuidv5("url", "https://developer.hashicorp.com/nomad/")
a1572394-3948-5251-b0c7-b4ded43587b4

> uuidv5("oid", "1.3.6.1.4")
af9d40a5-7a36-5c07-b23a-851cd99fbfa5

> uuidv5("x500", "CN=Example,C=GB")
84e09961-4aa4-57f8-95b7-03edb1073253

namespace 키워드는 해당 namespace UUID와 동일하게 취급되며, 어떤 특별한 경우에는 UUID 형식을 사용하는 것이 더 적절할 수도 있어요.

> uuidv5("6ba7b810-9dad-11d1-80b4-00c04fd430c8", "developer.hashicorp.com/nomad")
d2616d48-e1cb-5b87-8a8c-46355decc76a

RFC 4122 밖에서 정의된 namespace를 사용하려면 해당 키워드가 없으므로 namespace UUID를 사용해야 해요.

> uuidv5("743ac3c0-3bf7-4a5b-9e6c-59360447c757", "LIBS:diskfont.library")
ede1a974-df7e-5f17-84b9-76208818b2c8

원시 UUID namespace를 사용할 때는 이 namespace가 정의한 표준에 대한 언급 등 사람이 이해할 수 있는 방식으로 어떤 namespace를 나타내는지 알려주는 주석을 표현식 옆에 포함하는 것을 고려해 보세요.

더 알아보기 (Learn more)

  • uuidv4 함수는 의사 난수 UUID를 생성해요.