본문 바로가기

Information Technology/terminology

UUID(Universally Unique IDentifier)


UUID(GUID 와 같은 뜻임)는 마이크로스프트가 워드 문서와 같은 실체에 고유한 정체성을 부여하기 위해 프로그램에서 생성하는 고유번호를 지칭하는 용어이다. 종전의 대부분의 프로그래밍 언어들은 식별자(Identifier)로서 이름(Name)을 사용하였다. 즉 프로그램을 구성하는 각 요소(Elements)들은 이름에 의해 다른 요소와 구별되었다. 따라서 함수, 변수, 상수, 레이블, 자료형 등등 프로그램에서 구별이 필요한 모든 요소들은 각각 서로 다른 이름을 사용하여야 했으며, 그리고 이름은 자신의 영역범위(Scope) 내에서 유일하여야 했다.
인터페이스와 클래스에 이름을 붙을 경우에 유일하면서도 모든 이가 자유롭게 생성할 수 있어야 한다.
그래서 나온 것이 GUID와 UUID이다. 둘은 같은 말이다.
GUID는 전세계적(Global)으로 유일(Unique) 아이디(ID)이다. 128비트 크기의 구조체이고, UuidCreate()함수로 생성하면 항상 유일한 아이디를 생성하게 해 준다. 자기 컴퓨터의 랜 카드와 네트워크 어댑터는 유일하다. 그리고, 시간과 Random값으로 만들어낸다. 외부와 연결이 없을 경우는 이 컴퓨터에서만 유일하다는 리턴값을 내보낸다.
그러나 컴포넌트의 경우에는, 구성요소들을 구별하는 식별자로 이러한 이름을 사용하는 데에는 문제가 있다. 왜냐하면 제작되는 컴포넌트는 단독으로 운영되는 프로그램이 아니고, 클라이언트들과 연결되어 사용되는 프로그램이기 때문이다. 즉 이러한 컴포넌트의 구성요소들은 그 사용범위(Scope)가 이제는 프로그램 밖으로 확대되어, 그 범위가 무한대가 되었다. 이와 같은 경우에는 자신의 컴포넌트 내에서만 유일하다고 해서 식별자로 사용할 수 있는 것은 아니다.
따라서 어떤 대안이 있어야 하는 데, 다행히 OSF(Open Software Foundation)에 의해 고안된 알고리즘은 이러한 문제를 해결해 준다. COM은 이 알고리즘을 통해 만든 값 즉 GUID(Globally Unique IDentifier)를 사용하여 각 구성요소들을 구별해 준다.
GUID는 128 비트(16바이트)의 크기를 갖는 구조체로서, 전세계적으로 시간과 장소에 관계없이 고유하다는 것을 보장할 수 있는 값을 가지는 식별자이다. 이러한 GUID는 UUID(Universally Unique IDentifier) 라고도 하며, GUID를 함수의 매개변수로 사용할 때에는, 길이가 128비트나 되는 이러한 GUID의 값을 피호출 함수에게 값 전달방식(call by value)으로 그대로 넘기는 것보다는, 매개변수의 자료형을 REFGUID, REFCLSID, REFIID 등과 같은 GUID의 참조형으로 바꾸어 사용하면 매개변수를 효율적으로 전달할 수 있다.
한편 컴포넌트를 제작할 때, 모든 구성요소들에 대해 이러한 GUID를 전부 부여할 필요는 없다. 인터페이스, COM 클래스, 인터페이스의 라이브러리 등과 같이, 클라이언트가 컴포넌트를 사용할 때 직접 그 구성요소를 지정할 필요가 있는 부분들에 대해서만 GUID를 부여하면 된다. 따라서 컴포넌트의 구성요소들 중에서 서버와 클래스 팩토리 클래스 등과 같은 부분들에 대해서는 클라이언트가 이들을 직접 지정할 일이 없기 때문에 이와 같은 구성요소들에 대해서는 GUID를 부여하지 않는다.

출처 : http://cafe.naver.com/womendevel.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=1056&

'Information Technology > terminology' 카테고리의 다른 글

웹 사이트 기획안 용어 (네비게이션)  (0) 2011.03.09
RIA(Rich Internet Application)  (0) 2011.03.07
LCMS (학습 콘텐츠 관리시스템)  (0) 2011.03.07
LMS(학습관리시스템)  (0) 2011.03.07
CRUD  (0) 2010.08.25