범용 고유 식별자

섬네일
범용 고유 식별자(汎用固有識別子, , UUID)는 소프트웨어 구축에 쓰이는 식별자 표준으로, 개방 소프트웨어 재단(OSF)이 분산 컴퓨팅 환경(DCE)의 일부로 표준화하였다.

 역사 
UUID는 원래 아폴로 네트워크 컴퓨팅 시스템(NCS)에서 사용되었다가 나중에 개방 소프트웨어 재단(OSF)의 분산 컴퓨팅 환경(DCE)에서 사용되었다. DCE UUID의 초기 설계는 NCS UUID에 기반을 두었으며, 여기서 디자인은 아폴로 컴퓨터가 설계한 운영 체제인 도메인/OS에 정의되고 사용된 64비트 고유 식별자의 영향을 받았다.

 개요 
네트워크 상에서 서로 모르는 개체들을 식별하고 구별하기 위해서는 각각의 고유한 이름이 필요하다. 이 이름은 고유성(유일성)이 매우 중요하다. 같은 이름을 갖는 개체가 존재한다면 구별이 불가능해 지기 때문이다. 고유성을 완벽하게 보장하려면 중앙관리시스템이 있어서 일련번호를 부여해 주면 간단하지만 동시다발적이고 독립적으로 개발되고 있는 시스템들의 경우 중앙관리시스템은 불가능하다. 개발주체가 스스로 이름을 짓도록 하되 고유성을 충족할 수 있는 방법이 필요하다. 이를 위하여 탄생한 것이 범용고유식별자(UUID)이며 국제기구에서 표준으로 정하고 있다.

UUID 표준에 따라 이름을 부여하면 고유성을 완벽하게 보장할 수는 없지만 실제 사용상에서 중복될 가능성이 거의 없다고 인정되기 때문에 많이 사용되고 있다.

 정의 
UUID는 16 옥텟 (128비트)의 수이다. 표준 형식에서 UUID는 32개의 십육진수로 표현되며 총 36개 문자(32개 문자와 4개의 하이픈)로 된 8-4-4-4-12라는 5개의 그룹을 하이픈으로 구분한다. 이를테면 다음과 같다.
 8be4df61-93ca-11d2-aa0d-00e098032b8c
340,282,366,920,938,463,463,374,607,431,768,211,456개의 사용 가능한 UUID가 있다.

8-4-4-4-12 포맷 문자열은 16바이트의 UUID를 위한 레코드 레이아웃에 기반을 둔다:
+ UUID 레코드 레이아웃 이름 길이 (byte)길이 (hex)길이 (bits) 내용 time_low 4832 시간의 low 32비트를 부여하는 정수 time_mid 2416 시간의 middle 16비트를 부여하는 정수 time_hi_and_version 2416 최상위 비트에서 4비트 "version", 그리고 시간의 high 12비트 clock_seq_hi_and_res  clock_seq_low 2416 최상위 비트에서 1-3비트는 UUID의 레이아웃형식, 그리고 13-15비트 클럭 시퀀스 node 61248 48비트 노드 id

 버전 
 버전 1 (MAC 주소)
 버전 2 (DCE 보안)
 버전 3 (MD5 해시)
 버전 4 (랜덤)
 버전 5 (SHA-1 해시)

 이 식별자를 사용하는 언어 / 시스템 
 액션스크립트
 아파치 Solr
 C
 C++
 Caché 오브젝트스크립트
 CakePHP
 코코아/카본 (OS X)
 코드기어 라드 스튜디오 (델파이/C++빌더)
 코드퓨전
 커먼 리스프
 CouchDB
 D
 에펠
 Erlang
 파이어버드 서버
 프리 파스칼 & 라자루스 IDE
 해스켈
 Haxe
 자바
 자바스크립트
 KohanaPHP
 Lasso
 루아
 OS X
 MySQL
 닷넷 프레임워크
 OCaml
 오라클 데이터베이스
 펄
 PHP
 PostgreSQL
 프로그레스 오픈에지 ABL
 파이썬
 레볼루션/RunRev
 루비
 SAP 비즈니스오브젝트 데이터 서비스
 SQL 서버
 Tcl
 유닉스
 Openstack

 같이 보기 
 생일 공격
 통합 자원 식별자
 각주 

 외부 링크 
 International Standard "X.667 : … Generation … of Universally Unique Identifiers (UUIDs)…" (ITU-T Rec. X.667 as of 2008-08, freely available)
 International Standard "Generation and registration of Universally Unique Identifiers (UUIDs) and their use as ASN.1 Object Identifier components" (ITU-T Rec. X.667 | ISO/IEC 9834-8, freely available)
 A Universally Unique IDentifier (UUID) URN Namespace (IETF RFC 4122)
 Extract the time from a version 1 UUID / GUID
 Global UUID registration function at ITU-T

분류:식별자
분류:고유 식별자