uuidv5 함수
uuidv5 함수
uuidv5 함수는 RFC 4122 섹션 4.3에 설명된 "버전 5" UUID라고도 불리는, 이름 기반 UUID를 생성하는 내장 함수예요.
출처: 문서
본문
uuidv5(namespace, name)를 사용해요. uuid가 생성하는 의사 난수 UUID와 달리, 이름 기반 UUID는 namespace와 name에서 파생돼요. 그래서 namespace와 name이 바뀌지 않으면 매번 같은 UUID 값을 생성해요.
이름 기반 UUID의 namespace는 그 자체가 UUID예요. 하지만 가독성을 위해 이 함수는 RFC 4122가 할당한 namespace에 대한 별칭(alias)으로 일부 키워드를 받아들여요:
| 키워드 | Namespace ID | 이름 형식 |
| "dns" | 6ba7b810-9dad-11d1-80b4-00c04fd430c8 | 정규화된(fully-qualified) 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를 사용하려면, 할당된 namespace ID를 일반적인 UUID 문자열 형식으로 첫 번째 인자에 직접 전달하면 돼요.
예시
가능하면 namespace 키워드를 사용해서, 미래에 코드를 읽는 사람들이 의도를 더 명확하게 알아보게 하세요:
> uuidv5("dns", "www.terraform.io")
a5008fae-b28c-5ba5-96cd-82b4c53552d6
> uuidv5("url", "https://www.terraform.io/")
9db6f67c-dd95-5ea0-aa5b-e70e5c5f7cf5
> 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", "www.terraform.io")
a5008fae-b28c-5ba5-96cd-82b4c53552d6
RFC 4122 밖에서 정의된 namespace를 사용하고 싶다면, 해당하는 키워드가 없으므로 namespace UUID를 사용해야 해요:
> uuidv5("743ac3c0-3bf7-4a5b-9e6c-59360447c757", "LIBS:diskfont.library")
ede1a974-df7e-5f17-84b9-76208818b2c8
원시(raw) UUID namespace를 사용할 때는, 이 namespace가 무엇을 나타내는지 사람이 의미 있게 알 수 있도록 (예: 정의한 표준을 참조해서) 표현식 옆에 주석을 포함하는 걸 고려해 보세요.
관련 함수
uuid함수는 의사 난수 UUID를 생성해요.